jMonkey优化类似于Java3D的
编辑:为了进行实时绘制,开始使用lwjgl,这是jmonkeyengine和jocl的基础,在opengl和opencl之间的“互操作性”中,现在可以实时计算和绘制100k粒子。也许jmonkey引擎的地幔版本可以解决这个拉呼开销问题。
几天来,我一直在学习Eclipse(java 64 bit)中的jMonkey引擎(ver:3.0),并尝试如何使用使用命令来优化场景。GeometryBatchFactory.optimize(rootNode);
无优化(具有改变球体位置的能力):
好的,只有 1 fps 来自 pci-express 带宽 + jvm 开销。
具有优化(无法更改球体位置):
现在,即使三角形数增加,它也是29 fps。
Java3D有一种方法,即使以优化的形式也可以读取/写入场景对象。jMonkey引擎3.0必须能够完成这个主题,但我找不到它的任何痕迹(搜索教程和示例,失败)。setCapability()
问题:如何在jMonkey 3.0中设置场景节点的功能?如果你不能回答第一个问题,你能告诉我为什么当我使用优化命令时三角形数字增加吗?我是否必须创建一个新方法来访问图形卡并自己更改变量(也许是jogl?)?read/write position/rotation/scale
optimized
场景信息:16k粒子(16x16分辨率的球体)+1点光(及其4096分辨阴影)。
我相信我们可以通过pci-express在一毫秒内轻松发送数千个浮点数。
- 附加信息:我正在使用Aparapi核来更新粒子位置,这需要10毫秒(16k * 16k交互来计算力)。(在优化模式下不会更改任何内容:()aparapi可以访问这些优化的数据吗?
对于优化的情况,这里是1 fps,对象编号减少:batchNode.batch();
对象数量现在只有几百个,但fps仍然在1!
仅将球体位置发送到 gpu 并让它计算顶点位置可能比在 cpu 上计算顶点以及向 GPU 发送大量数据更好。
没有人在这里帮忙?已经尝试过 batchNode,但帮助不够。
我不想改变3d api,因为jMonkey人已经重新发明了轮子,我对目前的情况感到满意。只是试图压缩更多的性能(取消阴影可以达到%100的速度,但质量也很重要!
这个java程序将成为一个小行星撞击场景模拟器(将有小行星大小,质量,速度,角度的选择),使用带有LOD(将有数百万个粒子)的行进立方体算法。
行进立方体算法将大大减少三角形数。如果你不能给出任何答案,任何行进立方体(或任何O(n)凸壳)算法的java都将被接受!数据:x,y,z 数组作为源,三角形条阵列作为目标(等值面网格点)
谢谢。
以下是有关流的一些示例(分辨率要低得多):
1)立方体形岩群被重力坍塌:
2)排斥力开始显现:
3)排除力+引力使群形成更平滑的形状:
4)组形成一个球体(如预期):
5)然后,一个巨大的恒星体接近:
6)即将触摸:
7)冲击时刻:
在Barnes-Hutt算法和截断电位的帮助下,粒子数量将增加10倍(也许是100倍)。
与行进立方体算法不同,包裹n体的鬼布可以给出低分辨率的船体(比BH更容易,但需要更多的计算)
鬼布会受到nbody(重力+排斥)的影响,但nbody不会受到包裹它的布料的影响。不会渲染 Nbody,但布网将以较低的三角计数渲染。
如果MC或更高版本有效,这将使程序渲染约200倍的颗粒的包装布。