问题标签 [java-3d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2161 浏览

java - 在 Java3D 中渲染到 BufferedImage

有没有一种简单的渲染到BufferedImageJava3D 中的方法?

我知道你可以扩展Canvas3D,但如果我只想直接渲染,这似乎很麻烦。

0 投票
5 回答
19350 浏览

java - 如何在 Java 3D 中旋转对象?

我有一个用 Java 3D 绘制的圆锥体,代码如下:

假设我的圆锥位于点 (1,1,1),并且我希望圆锥的尖端指向一条穿过 (0,0,0) 和 (1,1,1) 的假想线......如何我可以这样做吗?

这是我一直在尝试的示例:

提前感谢所有帮助!

0 投票
1 回答
1764 浏览

java - 为什么我的离屏渲染 Canvas3D 不起作用?

我一直在尝试使用Java3D 1.5.2使屏幕外渲染正常工作。在我的源代码中,我一直在尝试附加一个扩展Canvas3D,它将进行屏幕外渲染SimpleUniverse,但这样做会破坏渲染:

完整的源代码有点太大,无法粘贴到 StackOverflow 上,所以我通过 Pastie 在这里提供了它。

第 63 行已被注释掉,并让普通的 Canvas3D 进行屏幕渲染。它将渲染一个立方体并将其显示在JFrame. 但是,如果您删除评论,屏幕外渲染将导致屏幕上的内容无法渲染。此外,屏幕外渲染将返回 "big black nothing" BufferedImage

我想知道如何使屏幕外渲染工作,即将旋转立方体的场景渲染为缓冲图像。我一直在查看 Java3D 提供的屏幕外渲染示例代码,他们也这样做(除了他们使用Raster对象将屏幕外缓冲区渲染回屏幕窗口之外)。

0 投票
1 回答
2164 浏览

java - 将对象附加到 Java3D 中的视图平台

在我的 Java3D 应用程序中,我有一个可移动的查看平台(例如,由于“OrbitBehavior”和“KeyNavigatorBehavior”行为),所以我可以改变我对场景的看法。现在,我想在我的视图上添加一个“静态”对象,即当我移动视图时总是以相同的方式查看(例如,就像 FPS 中玩家的枪)。到目前为止,我尝试了以下两种方法来解决这个问题,但都没有奏效。

1/将我的对象直接附加到 ViewingPlatform(通过专用的 BranchGroup 和 TransformGroup)。在这种情况下,我的对象根本不会显示(我绝对不确定它实际上是否允许执行这样的操作......)。这是我的代码的这一部分:

代码:(使用viewViewingPlatform)

2/对我的对象应用相同的转换(旋转+平移;通过 getViewPlatformTransform() 上的 getTransform() 检索 - 我在这里也尝试了更复杂的方法,在这些转换和视图 PF 和对象的初始位置之间进行操作)作为查看平台的转换. 我使用专门的行为(与修改视图位置的行为相同的唤醒条件)实时执行所有这些操作。在这里,当我移动视图时,我的对象会消失,然后有时会在我使用 KeyNavigator 的缩放/去缩放操作时再次出现(但以一种非常不稳定的方式)。

我确信我正在尝试做的事情是可行的,可能很简单,但现在,我不知道......

提前感谢您的帮助

(PS:由于英语不是我的母语,我在解释我的问题时可能会很混乱:请不要犹豫,让我再写一遍无法理解的部分)

0 投票
1 回答
457 浏览

java - Java3d重置到新场景

我正在开发 Java3D 游戏。我从一个文件中读取了我所有的关卡信息,它工作正常。但现在我想通过从不同文件中读取数据来重新初始化场景。

如何重置场景?

我应该只销毁整个 canvas3D 和 Universe 对象吗?

0 投票
2 回答
2807 浏览

java - 帮助调试 Java3d 应用程序中的 GL_VERSION 错误

我正在使用 java3d 进行渲染,使用 java 编写的 3d 地球应用程序。我有一个 Windows 安装程序,它基本上将文件从开发快照复制到程序文件目录。它在开发快照中运行良好,但是在安装后运行时它会这样做:

我已经比较了开发目录中的所有库和 jar,文件都完全相同,没有一个丢失。这是最奇怪的事情。我已经更新了我的图形驱动程序(尽管它们显然已经足够了,因为从开发快照中运行良好)。我编写了一个简单的 java3d 应用程序,它能够制作 Canvas3D 并向其添加 ColorCube。它运行良好。Ps 我们的开发快照包括所有的 dll、jar 和运行的 jre。我们记录所有库和 jvm 版本,它们在从开发快照和已安装应用程序生成的日志中完全相同。我们使用 java.exe 的显式路径 (..\jre\bin\java.exe) 运行,因此 PATH 变量不起作用。

我正在寻找调试这个的想法。我想编写一个简单的 java 应用程序来打印所有 GL 属性,尤其是 GL_VERSION,以尝试展示两种设置之间的一些可量化的差异。java3d 文档没有涵盖这一点,所有互联网搜索 GL_VERSION 问题只是告诉您更新驱动程序。

哦,我有 Nvidia Quadro FX 3800 卡。实际上有两个。

总之...
Q1:您如何为您的 java3d 应用程序打印 GL_VERSION?
Q2:这到底是怎么回事?

0 投票
1 回答
3132 浏览

java - 围绕 Java3D 中的特定点旋转

我在 Java3D 中导入 2 个模型,将它们按比例缩小,然后使用RotationInterpolator

但是,这会围绕原点旋转对象。我想围绕它的中心旋转对象,而不是场景的。简而言之,我希望它旋转到位。

如何围绕特定点旋转?

这是我进行当前轮换的代码。

0 投票
2 回答
562 浏览

macos - Java3d + osx + netbeans

我有一个在 solaris 上开发的 java3d 项目,出于各种原因,我正试图转移到我的 macbook 上(1 是我们的 solaris 机器非常缓慢)。

基本上我想要的是在这个项目中使用 osx + netbeans,但它似乎引用了 mac 1.6 JDK 中 java3d 过时版本中未包含的 java3d 方法。我解决此问题的第一次尝试是将 java3d 1.5.2 库作为项目的外部 jar 包含在内,但似乎 netbeans 仍在尝试引用 1.6 JDK 中的旧库而不是 1.5.2 j3d 库。

此外,当我在 netbeans 文件资源管理器中探索 1.5.2 jar 时,方法(未包含在 1.6 jdk 中)不会显示在它们各自的类下。但是,当我在 solaris 上做同样的事情时,方法确实出现了。所以基本上,我知道我试图包含的罐子实际上包含我需要的方法/类。netbeans 就是找不到它们

如果有任何不清楚的地方,请让我澄清一下。写到这里我就糊涂了。

在此先感谢您的帮助!

0 投票
1 回答
158 浏览

java - 在 java JMonkeyEngine 中,公共 GameSettings getNewSettings()?我该如何填写?

我正在尝试将 BaseGame 更改为 FixedFrameRateGame,这表示我需要一个公共 GameSettings getNewSettings() 方法。现在我尝试这样填写:

当我尝试运行它时,它给了我一个空指针异常。

0 投票
1 回答
277 浏览

java - Java3D 禁止在 PickMouseBehavior 中单击

当运行我的

运行的代码需要一点时间,用户可以在代码完成运行之前单击 java3D 对象,而我的 RotationInterpolator 跟不上我无法更改 RotationInterpolator 上的 Alpha,因为这是按钮更新的内容,所以我寻找一种禁用选择能力的方法,我已经尝试过

但这会使整个线程 sleep ,因此动画停止,并且在 PickMouseBehavior Java Doc 中找不到任何可能的方法

我现在看到的唯一解决方案是禁用用户选择编码长度的能力,例如

非常感谢^_^