Articles of jmonkeyengine

JME3-JFX中的LWJGLexception!

在jMonkeyEngine 3.0中的video播放似乎已经有一段时间了,直到我偶然发现了通过将JavaFX 2集成到JME3框架来播放video 。 再加上JavaFX最近发布的MP4播放支持,使得JME3成为了我目前正在开发的一个项目的真正有力竞争者。 我遵循前一个线程中提到的规定的方法,从JME3-JFX项目页面获得源代码,并在eclipse中设置项目。 当我用Oracle的给定URL运行示例[ TestMovie.java ]时,运行顺利,没有问题。 但是,当我尝试播放MP4文件时,播放了一段时间, 颜色混乱 ,然后退出java.lang.IllegalArgumentExceptionexception。 这里是eclipse控制台输出: INFO: Audio effect extension version: 1.0 Nov 27, 2014 6:33:13 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread INFO: Audio max auxilary sends: 4 Nov 27, 2014 6:33:34 PM com.jme3.app.Application handleError SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main] java.lang.IllegalArgumentException: Number of remaining buffer elements is 6627840, […]

如何放置一个对象,使其不与场景中的对象重叠?

在我的游戏中,用户必须点击一个点放置一个对象(网格)。 我可以投射光线,find对象可以被翻译的水平点,然后附加到rootNode来显示它。 但是,问题是,如果用户点击太靠近另一个对象/ scene_wall,要放置的对象,将运行到它。 我怎样才能防止呢?

在Box上应用纹理 – jMonkeyEngine

我怎样才能包装一个纹理(如4×4像素)在一个盒子(1x1x1)以这样一种方式,纹理是重复的,而不是放大到覆盖所有的表面。 Geometry box = new Geometry("Box", new Box(1f,1f,1f));

如何防止一旦导入到jMonkeyEngine的Ogre3D对象的大小?

我在Blender中创建了一个对象: 然后我将它作为一个mesh.xml文件导出并附加到游戏场景中: [注意:灰色是地面。] 在游戏中,我有一个更小的,水平的塔。 有什么建议么? 注:我导出的文件与“强制相机”,“强制灯”和“出口场景”取消选中和“交换轴:x,y,z”。

如何在JME中加载带alpha通道的图片?

这段代码将一张图片加载到游戏中: Picture mypic= new Picture("mypic"); Texture2D tex = (Texture2D) assetManager.loadTexture("Textures/mypic.png"); mypic.setTexture(assetManager, tex, false); mypic.setHeight(settings.getHeight()); mypic.setWidth(settings.getWidth()); 需要修改或添加什么才能正确显示带有Alpha通道的图片?

Jmonkey加载纹理失败

我有以下基本的代码: public void simpleInitApp() { Box b = new Box(1, 1, 1); Geometry geom = new Geometry("Box", b); Texture cube1Tex = assetManager.loadTexture( "/home/glados/codes/3/assets/Textures/map/oldParchment.jpg"); Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); mat.setTexture("ColorMap", cube1Tex); geom.setMaterial(mat); rootNode.attachChild(geom); } 这应该只是简单地将纹理附加到从Textures / map / oldParchment.jpg加载的立方体 我的资源设置如下: 运行这个给出了以下错误: com.jme3.asset.AssetNotFoundException: /home/glados/codes/3/assets/Textures/map/oldParchment.jpg (Flipped) (Mipmapped) at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:283) at com.jme3.asset.DesktopAssetManager.loadTexture(DesktopAssetManager.java:346) at com.jme3.asset.DesktopAssetManager.loadTexture(DesktopAssetManager.java:356) at mygame.Main.simpleInitApp(Main.java:27) at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:226) […]

了解.obj文件

我下载了一辆汽车的3D模型。 通过可用的皮肤和图像判断模型将车轮和车身作为单独的节点。 我想访问它的子节点(轮子)来指定animation。 但是我不知道它的子节点的名字。 是否有可能通过查看文件内容来找出其子节点的名称。 我有一个3D模型的obj文件。 我正在使用JMonkey 2。 编辑 这里是链接thefree3dmodels 。 先谢谢你

如何在jmonkey中添加纹理

您好,我有一个非常简单的问题,我是新来的jmonkey,我想添加一个.jpg文件到/ assets / textures文件夹,拖放文件似乎没有为我工作。

AI for Minesweeper喜欢游戏

我目前正在开发一个有点像扫雷的益智/角色扮演游戏。 你有一块瓷砖和2,3或4种不同的颜色,你可以select。 现在你必须揭开瓦片来攻击敌人。 因此,您需要为要打开的图块select正确的颜色。 如果你尝试错误的颜色,敌人可能会尝试。 只要你打开瓦片,敌人可能不会尝试(如果是敌人的话)。 现在我写了一个非常简单的AI,其工作原理如下: 它遍历整个字段并查找所有未打开的图块。 对于每个未打开的图块,它根据图块的邻居来计算得分。 所以一个未开封的邻居给+0,一个开放的邻居有一个0给+4,一个开放的邻居有一个4给+4,3给+3等等。 最后,得分是加权的,这取决于邻居有多less种不同的颜色以及它实际上有多less种不同的颜色(因为在边缘的瓦片具有较less的邻居)。 当谈到select一个瓷砖,它工作得很好。 然后,对于所选瓷砖,它会尝试每种颜色,从相邻开放瓷砖的某种颜色开始。 但艾滋病却不了解邻居可以告诉的。 所以没有实际的策略,除了:寻找一个瓷砖,尝试颜色,直到它被打开。 我在人工智能开发方面真的很新颖,并且很难围绕这个话题进行讨论。 我之前写的唯一一个AI就是一些简单的追逐二维空间射手。 所以我的问题是:在这样的情况下,一个好的AI会怎么样呢? 我认为最好给AI提供与玩家相同的信息。 所以它只知道瓷砖的数量,打开/closures的瓷砖以及打开的颜色和它们的邻居的数量。 这是正确的还是AI应该知道一切? 另外,AI应该是可以打败的。 你能给我一些关于如何/应该/通常完成的提示吗? 还是有一些文献可以为这个话题推荐? (我已经看过一本关于AI游戏的书,我想我可以用minimax,但是我不知道怎么做,也许我看到这个问题,因为寻路问题是一个解决scheme,但是我不太清楚。 为了更好的理解,这是一个游戏,就像我正在建设的一样,除了这个游戏没有AI和没有敌人转身(玩家只要点击一个错误的瓦片就被击中): GameLink

当将AI附加到车辆上时,我应该定义所有步骤还是尝试视线?

这个问题与我为大学建设的交叉口模拟有关。 我会尽量使之尽可能通用。 我正尝试将AI分配给使用JMonkeyEngine平台的车辆。 AIGama_JmonkeyEngine解释说,如果你想创建一个跟随path的汽车,你可以逐步定义path。 如果没有任何物理附加,那么所有你需要做的就是定义你希望对象出现在所有后续步骤中的x,y,z值。 我附加了实现jBullet的vehicleControl。 在这种情况下,作者提到我需要在每一步定义转向和加速行为。 我试图使用代表航点的幽灵控件,当碰撞时,汽车会决定下一步做什么,比如停在红灯处。 这并没有那么好。 汽车不正确。 public void update(float tpf) { Vector3f currentPos = aiVehicle.getPhysicsLocation(); Vector3f baseforwardVector = currentPos.clone(); Vector3f forwardVector; Vector3f subsVector; if (currentState == ObjectState.Running) { aiVehicle.accelerate(-800); } else if (currentState == ObjectState.Seeking) { baseforwardVector = baseforwardVector.normalize(); forwardVector = aiVehicle.getForwardVector(baseforwardVector); subsVector = pointToSeek.subtract(currentPos.clone()); System.out.printf("baseforwardVector: %f, %f, %f\n", baseforwardVector.x, baseforwardVector.y, […]