Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jMonkey优化类似于Java3D';s_Java_Opengl_Java 3d_Jmonkeyengine_Aparapi - Fatal编程技术网

jMonkey优化类似于Java3D';s

jMonkey优化类似于Java3D';s,java,opengl,java-3d,jmonkeyengine,aparapi,Java,Opengl,Java 3d,Jmonkeyengine,Aparapi,编辑:为了实现实时绘制,在opengl和opencl之间的“互操作性”中开始使用lwjgl,lwjgl是jmonkeyengine和jocl的基础,现在可以实时计算和绘制100k粒子。也许mantle版本的jmonkey引擎可以解决这个drawcall开销问题。 几天来,我一直在学习Eclipse(Java64位)中的jMonkey引擎(版本:3.0),并尝试如何使用GeometryBatchFactory.optimize(rootNode)优化场景命令 无需优化(能够改变球体位置): 好的

编辑:为了实现实时绘制,在opengl和opencl之间的“互操作性”中开始使用lwjgl,lwjgl是jmonkeyengine和jocl的基础,现在可以实时计算和绘制100k粒子。也许mantle版本的jmonkey引擎可以解决这个drawcall开销问题。

几天来,我一直在学习Eclipse(Java64位)中的jMonkey引擎(版本:3.0),并尝试如何使用
GeometryBatchFactory.optimize(rootNode)优化场景命令

无需优化(能够改变球体位置):

好的,只有1-fps来自pci express带宽和jvm开销

具有优化功能(无法更改球体的位置):

现在它是29 fps,即使增加了三角形数

Java3D有一个
setCapability()
方法,它使场景对象能够以优化的形式进行读/写。jMonkey engine 3.0必须能够处理这个主题,但我找不到任何线索(搜索了教程和示例,失败)

问题:如何设置jMonkey 3.0中场景的
优化节点的
读/写位置/旋转/缩放功能?若你们不能回答第一个问题,你们能告诉我为什么在我使用优化命令时三角形的数目会增加吗?我是否必须创建一个新方法来访问图形卡并自己更改变量(jogl可能?)

场景信息:16k粒子(16x16分辨率的球体)+1个点光源(及其4096分辨率阴影)

我相信我们可以轻松地通过pci express在毫秒内发送数千个浮点数

  • 附加信息:我正在使用Aparabi内核更新粒子 需要10毫秒(16k*16k)的位置 计算力)。(在优化模式下不会更改任何内容:() Aparabi能否访问这些优化的数据
对于
batchNode.batch();
优化的情况,这里是1 fps,对象数量减少:

对象数量现在只有几百,但fps仍然是1

只向gpu发送球体位置并让它计算顶点位置可能比在cpu上计算顶点并向gpu发送大量数据要好

这里没有人帮助?已尝试batchNode,但帮助不足

我不想改变3d api,因为jMonkey的人已经重新发明了方向盘,我对目前的情况很满意。只是想提高一点性能(取消阴影可以提高100%的速度,但质量也很重要!)

这个java程序将成为一个小行星撞击场景模拟器(可以选择小行星的大小、质量、速度、角度),带有LOD的marching cubes算法(将有数百万个粒子)

Marching cubes算法将大大减少三角形数。如果您不能给出任何答案,将接受java的任何Marching cubes(或任何O(n)凸包)算法!数据:x、y、z阵列作为源,三角形条阵列作为目标(等值面网格点)

谢谢

以下是有关流的一些示例(分辨率要低得多):

1) 立方体岩石群因重力而坍塌:

2) 排除力开始显现:

3) 排除力+重力使组形成更平滑的形状:

4) 组形成一个球体(如预期):

5) 然后,一个巨大的恒星体靠近:

6) 即将接触:

7) 撞击时刻:

借助Barnes-Hutt算法和截断势,粒子数将增加10倍(可能是100倍)

与Marching Cubes算法不同,包裹NBBody的鬼布可以提供低分辨率外壳(比BH更容易,但需要更多计算)

鬼布将受到NBBody(重力+排斥)的影响,但NBBody不会受到包裹它的布的影响。不会渲染Nbody,但将使用较低的三角形计数渲染cloth网格

如果MC或更高版本起作用,这将允许程序渲染一块约200倍粒子的包装布。

非常抱歉

可以批处理保持静态的场景(或子节点)中的所有几何体

批处理意味着将具有相同材质的所有几何体组合到一个网格中。这种优化只有在总共只使用很少的(大约32种)材质时才有效。结果是,当游戏初始化时,批处理需要额外的时间

因此,三角形的变化是因为它们已全部组装成一个网格。。。。唯一的建议,如果这是必要的,是试图获得网格和改变它的点,但在这一点上,我认为这是没有意义的

也许可以尝试另一种优化方法

祝你好运,有一点没有使用JMonkey了,但是很高兴看到其他人这么做,并且它继续增长

编辑

顺便说一句,将数学最小化的一种方法可能是使用半个立方体球体,对地球的影响可能不会影响到地球的另一侧(除非球体不是地球,但已经是地球作为球体的一个小样本)

也许可以尝试使用2d形状作为冲击面,虽然我知道这不是您的最佳选择,但它可能会让您了解形状的数量可能会产生多大的影响。如果是这样,那么如果你不需要担心的话,一个途径可能是考虑如何去除一些粒子。我几乎可以肯定会的

最后:


也许不实时渲染?花一分钟将帧绘制到缓冲区,然后播放,到播放时,您将有另外40帧左右,等等。。。您可能只需要大约30秒的时间。

JMonkeyEngine wiki中有一组非常可靠的文档,其中详细介绍了如何利用tr