标签: jmonkeyengine

jMonkey优化类似于Java3D的

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

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

没有优化(具有改变球体位置的能力):

在此输入图像描述

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

通过优化(无法改变球体位置):

在此输入图像描述

现在即使三角形数量增加也是29 fps.

Java3D有一种setCapability()方法,即使在优化的形式下也能够读/写场景对象.jMonkey引擎3.0必须能够满足这个主题,但我找不到它的任何痕迹(搜索过的教程和示例,失败了).

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

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

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

  • 附加信息:我正在使用Aparapi内核来更新粒子位置,这需要10毫秒(16k*16k的交互来计算力).(在优化模式下不会改变任何东西:()aparapi可以访问那些优化数据吗?

对于batchNode.batch();优化的情况,这里再次使用减少的对象数1 fps:

在此输入图像描述

对象编号现在只有几百个,但fps仍然是1!

将球体位置发送到gpu并让它计算顶点位置可能比计算cpu上的顶点以及向gpu发送大量数据更好.

这里没有人帮忙吗?已经尝试过batchNode但没有帮助.

我不想改变3d api,因为jMonkey人已经重新发明了轮子,我对目前的情况很满意.只是试图挤出更多的性能(取消阴影给出100%的速度,但质量也很重要!).

这个java程序将成为一个小行星撞击场景模拟器(将有小行星大小,质量,速度,角度的选择)与带有LOD的行进立方体算法(将是数百万个粒子).

Marching-cubes算法会大大减少三角形数.如果你无法回答这个问题,那么任何行进立方体(或任何O(n)凸包)算法都将被接受!数据:作为源的x,y,z数组和作为目标的三角形条形阵列(等面网格点)

谢谢.

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

1)通过引力折叠立方体形状的岩石组: 在此输入图像描述

2)排斥力开始显现: 在此输入图像描述

3)排斥力+引力使得组形成更平滑的形状: 在此输入图像描述

4)组形成一个球体(如预期的那样): 在此输入图像描述

5)然后,一个大的恒星身体接近: 在此输入图像描述

6)即将触摸: 在此输入图像描述

7)影响的时刻: 在此输入图像描述

借助Barnes-Hutt算法和截断电位,粒子数将增加10倍(可能超过100倍).

不是Marching-Cubes算法,包裹nbody的鬼布可以给出低分辨率的船体(比BH更容易但需要更多的计算)

鬼布会受到nbody(重力+排除)的影响,但是不会受到包裹它的布的影响.Nbody不会被渲染,但布料网格将以较低的triange数量渲染.

在此输入图像描述 在此输入图像描述

如果MC或以上工作,这将使程序渲染一个包裹布,大约200倍的粒子.

java opengl java-3d jmonkeyengine aparapi

34
推荐指数
1
解决办法
3090
查看次数

你知道好的JMonkeyEngine教程和文档吗?

我对JMonkey感兴趣的一些有趣的项目,但当我搜索谷歌找到教程和文档时,我只能找到真正的基本和/或不完整的东西,比如这些在http://jmonkeyengine.org/上,或者真的具体那些.你知道JMonkey的一些"从初学者到专家"的教程吗?

java documentation jmonkeyengine

16
推荐指数
2
解决办法
1万
查看次数

Clojure和64位lwjgl(lein 2)

在64位JVM上,在Linux中,无论本机库加载是什么,都会尝试加载32位库.

我问这是一个clojure和(甚至更多)java n00b.

我到目前为止找到的答案(在Leiningen/Clojure中使用lwjgl似乎是搜索结果中最突出的)似乎是旧版本的lein,问题围绕着:native-dependencies或project.clj中的LD_LIBRARY_PATH.

我正在重新发明轮子并将基本的jME教程翻译成clojure作为一个小的个人家庭作业,以学习它们.在迄今为止我发现人们如何做到这一点的所有教程和示例中,这部分似乎"正常工作".

(在Windows下,它对我来说很好用).

我正在使用lein构建一个新的空项目.我已经在clojars上设置了各种版本的jMonkeyEngine库的依赖项.在'lein deps'之后,liblwjgl64.so和libopenal64.so结束在我的项目目录的根目录中.

当我尝试'lein run'时,它会显示设置的Monkey splash屏幕,然后在尝试实际运行时抛出异常,因为它正在尝试加载liblwjgl.so.

该文件存在于target/native/linux和target/native/linux64下(但奇怪的是,不在target/native/linux32下).

如果我将它想要的文件复制到项目的根目录中,则错误会更改为"错误的ELF类:ELFCLASS32(可能的原因:架构字宽度不匹配)",这是Google一直在给我的另一组讨论.这里提到的解决方案似乎都相当于"切换到32位JVM以使Minecraft正常工作",但我更倾向于获得有关正在发生的事情的实际线索.

这个问题在我可以在clojars中得到的每一组依赖库都非常一致(回到版本2,无论如何......那些有更大的问题,似乎不值得深入研究).查尔斯污渍在窗户上为我设置了"Just Worked".

到目前为止,我能够提出的最好的假设是这样的:

我怀疑某个版本必须在某个时候指定.http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html#resources提到了一个看起来非常合适的资源属性,但这似乎没什么用与JNLP合作.我想知道是否有一个明显的文件坐在.jar的某个地方我无法找到(这里是我的n00bishness发挥作用...我真的不知道我在寻找什么).

那么,有没有人有任何关于我应该看的地方或者我应该问什么的指示?我不知道甚至不知道从哪里开始.讨论jMonkeyEngine论坛,#clojure或者lwjgl邮件列表(或者他们使用的任何东西......我实际上根本没有考虑过他们的一面......我应该吗?)

接下来我将尝试将jME库捆绑到我自己的存储库中.这似乎是一项艰巨而艰巨的任务,当我正在解决这个问题时,我决定在这里提出要求.

我知道这很模糊,我为此道歉.我的google-fu让我失望了.我很感激任何人都可以提出任何建议.

提前致谢!

clojure leiningen jmonkeyengine

10
推荐指数
1
解决办法
923
查看次数

我可以在android上使用jmonkeyengine吗?

我正在尝试为Android制作一个简单的3D游戏,我想使用jmonkeyengine.我可以这样做吗?我该怎么做?有人能告诉我一个例子吗?

java 3d android jmonkeyengine

8
推荐指数
2
解决办法
1万
查看次数

相对重力

我最近开始使用jMonkey引擎,非常好.但是我试图实现相对引力.

我想制造围绕彼此旋转的行星(不一定是完美的圆形轨道,取决于速度).所以每个对象都应该影响其他对象.

我现在拥有的:

关闭全球引力

bulletAppState.getPhysicsSpace().setGravity(Vector3f.ZERO);
Run Code Online (Sandbox Code Playgroud)

初始化球体并添加到物理空间

Sphere sphere = new Sphere(50, 50, 5);
Geometry sun = new Geometry("Sun", sphere);

sun.setMaterial(stone_mat);
rootNode.attachChild(sun);
sun.setLocalTranslation(0, 0, 0);

sunPhysics = new RigidBodyControl((float) (50*Math.pow(10, 5)));
sun.addControl(sunPhysics);
bulletAppState.getPhysicsSpace().add(sunPhysics);

Geometry mercury = new Geometry("Mercury", sphere);

mercury.setMaterial(stone_mat);
rootNode.attachChild(mercury);
mercury.setLocalTranslation(15f, 0, 0);

mercuryPhysics = new RigidBodyControl((float) (5));
mercury.addControl(mercuryPhysics);
bulletAppState.getPhysicsSpace().add(mercuryPhysics);
Run Code Online (Sandbox Code Playgroud)

我注意到RigidBodyControl类中有方法setGravity,但它只是设置方向.所以对象就这样消失了.

我真的很期待找到答案.

java jmonkeyengine bulletphysics

8
推荐指数
1
解决办法
1283
查看次数

我应该使用jMonkeyEngine 3(jME 3)还是Unity 4.3来教我的孩子们进行游戏编程?

我正在教我的孩子编程,看起来我已经把它缩小到两个选项:

  • jMonkeyEngine 3(jME 3)
  • Unity 4.3

我找不到任何"当前"的比较,所以我想我会问:

哪个更好的jME3 +或Unity4.3 +用于教学编程与引擎优势?

我不是游戏开发人员,但作为一名企业和控制系统开发人员,我在C#和Java方面都有经验.

我目前倾向于使用Unity4.3 +,因为:

  1. 从编程的角度来看,我认为C#比Java更干净,但如果引擎编码和对象模型鼓励编程不好,这意味着很少

  2. 引擎优势:Unity4.3 +将"据称"即将支持XBox One和PS4

注意:为了公平对待jME,我会记下jME的这个"pre-alpha state"iOS选项,它比营销"假设"更好:(http://hub.jmonkeyengine.org/wiki/doku.php/jme3:ios)

如果在所有其他方面它们相同,哪一个具有更好的服务集成?

language-features unity-game-engine jmonkeyengine

7
推荐指数
3
解决办法
1万
查看次数

7
推荐指数
2
解决办法
5660
查看次数

类似于JMonkey Engine for C#的东西

我更喜欢C#作为Java语言,但我找不到类似jMonkey Engine for Java的东西.我希望能够简单地将块(在jMonkey引擎中称为Box)添加到我的世界而不是加载模型.

也许我只是遗漏了一些东西,但我没有在任何C#东西(OGRE,Axiom,XNA)中发现任何类似的东西.

.net c# java 3d jmonkeyengine

6
推荐指数
1
解决办法
1176
查看次数

JMonkeyEngine:动态加载模型的碰撞检测

我正在学习JME3,我设法创建自己的高度图并修改一些示例代码等.现在,我创建了一个非常简单的4墙无屋顶房间,带有Blender,将其导出为Wavefront .Obj文件并将其加载到我的场景(我将它攻击到terrain节点.

现在,我terrain已经应用了碰撞检测,因此玩家可以移动和跳跃,但它也可以穿过我模型的墙壁.我能找到的所有例子都加载了一个已经预先构建的场景,而我仍然无法知道为什么玩家会直接通过加载的模型?

对不起大代码,但我看不出别的怎么办.物理学应用于以下部分/** 6. Add physics: */:

public class Main extends SimpleApplication
        implements ActionListener {

    private BulletAppState bulletAppState;
    private RigidBodyControl landscape;
    private CharacterControl player;
    private Vector3f walkDirection = new Vector3f();
    private boolean left = false, right = false, up = false, down = false;
    private TerrainQuad terrain;
    private Material mat_terrain;

    public static void main(String[] args) {
        AppSettings settings = new AppSettings(true);
        settings.setResolution(1366, 768);
        settings.setFullscreen(true);

        Main app = new Main();
        app.setSettings(settings);
        app.setShowSettings(false);
        app.start();
    } …
Run Code Online (Sandbox Code Playgroud)

java opengl jmonkeyengine

6
推荐指数
1
解决办法
5130
查看次数

如何走楼梯和斜坡?

我们使用jme3,setMaxSlope并且没有实现BetterCharacterControl的问题.引擎的开发人员说我们可以使用新的控制器自己解决它:

http://hub.jmonkeyengine.org/forum/topic/setmaxslope-for-bettercharactercontrol/

我真的很喜欢解决方案,因为我的游戏需要它.之前我问过它,但我们没有解决它:

如何改善我的3D游戏角色控制?

你能帮助我们进步吗?我录制了一个有问题的视频:

http://www.youtube.com/watch?v=PF_UzoOXD0E

一些文档在这里:http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advance: walking_character?s [] = bettercharactercontrol#bettercharactercontrol

我努力将功能添加到控制器:

package adventure;

import com.jme3.math.Vector3f;
import com.jme3.bullet.control.BetterCharacterControl;

public class GameCharControl extends BetterCharacterControl {
    protected Vector3f lastlocation = new Vector3f();

    public GameCharControl(float x, float y, float z) {
        super(x, y, z);
    }

    @Override
    public void update(float tpf) {
        super.update(tpf);
        System.out.println("location " + location);
        System.out.println("lastlocation " + lastlocation);

        if (location.equals(lastlocation)) {
            System.out.println("update2");
            this.setHeightPercent(101);
        }
        rigidBody.getPhysicsLocation(location);
        applyPhysicsTransform(location, rotation);
        lastlocation = location;
    } …
Run Code Online (Sandbox Code Playgroud)

java 3d model-view-controller game-physics jmonkeyengine

5
推荐指数
1
解决办法
1058
查看次数