Tag: 3d

四元数平滑旋转

四元数不仅可以描述旋转,还可以描述方向,即从初始(零)位置旋转。 我希望模拟从一个方向到另一个方向的平滑旋转。 我计算了起始方向startOrientation和end orientation endOrientation并且希望将中间方向描述为startOrientation*(1-argument) + endOrientation*argument而argument从0变为1 。 猴子引擎更新function的代码如下: @Override public void simpleUpdate(float tpf) { if( endOrientation != null ) { if( !started ) { started = true; } else { fraction += tpf * speed; argument = (float) ((1 – Math.cos(fraction * Math.PI)) / 2); orientation = startOrientation.mult(1-argument).add(endOrientation.mult(argument)); //orientation = startOrientation.mult(1-fraction).add(endOrientation.mult(fraction)); log.debug(“tpf = {}, […]

改变for循环的顺序?

我有一种情况,我需要根据用户输入循环不同顺序的xyz坐标。 所以我是3D空间中的一个区域,然后是一组像这样的for循环。 for(int x = 0; x < build.getWidth(); x++){ for(int y = 0; y < build.getHeight(); y++){ for(int z = 0; z < build.getLength(); z++){ //do stuff } } } 但根据用户输入,订单可能是这样的。 for(int z = 0; z < build.getLenght(); z++){ for(int y = 0; y < build.getHeight(); y++){ for(int x = 0; x < build.getWidth(); […]

Java的3D场景图库?

我正在为Java寻找一个可靠的3D场景图API,它具有良好的文档,活跃的社区和允许商业用途的许可。 我排除了com.sun.scenegraph,因为它是GPL(看似已经死了),Java3D因为这篇文章和JMonkeyEngine因为这篇文章。 有任何想法吗?

Libgdx旋转ModelInstance

我正在开发我的第一个libgdx 3D游戏。 到目前为止,我可以在迷宫般的(硬编码)世界中移动,碰撞检测工作。 我也有一些工作A *寻路的敌人。 我还使用FBX-Conv来获取.g3db文件,这是我的第一个(相当难看的)Blender模型。 由于某种原因,模特在地板上而不是站立。 当我将它导出为.fbx时,我可能有一些错误的设置。 为此我尝试rotate()他在z-Axis modelInstance.transform.rotate(Vector3.Z, 90) rotate() 90度,在我的Screen的show()方法中调用: modelInstance.transform.rotate(Vector3.Z, 90) ,加载Model并实例化我的ModelInstance (在给定的位置)。 由于某种原因,它没有旋转。 然后我将rotate方法放在render(delta) ,认为它现在每个渲染循环旋转90度。 但它反而停滞不前,就像它应该的那样。 好的,但是现在我希望modelInstance rotate到它实际看起来的位置,这意味着它应该旋转,这取决于我的enemie的Vector3 direction 。 我已经准备好使用modelInstance.transform.setTotranslation(enemie.getPosition())来完善自己的位置。 所以我想我也可以使用modelInstance.transform.setToRotation(Vector3 v1, Vector3 vs) ,其中v1 = enemie.getPosition()和v2 = enemie.getPosition().add(enemie.getDirection) 。 请注意, position Vector不会直接使用,因为它会在add()方法中更改其值。 这样做,我不再看到对象,这意味着它的位置也是错误的。 为什么会这样? 我如何通过使用direction向量来旋转我的modelInstance ? 非常感谢。

Libgdx为3D游戏渲染地板

在我的第一个3D游戏中,我现在想渲染地板,实际上是y = 0的平面(不是libgdx Plane )。 我想为它添加一个Texture ,所以我可以在每个级别有不同的楼层。 现在我的问题是:创建和渲染这个纹理地板的最佳方法是什么? 我想过使用用ModelBuilder制作的基本Block Models ,然后添加了Texture ,但因为我只能看到6个面中的一个,2d Texture就够了,所以我想到了一个Plane 。 我可以在Plane添加Texture ,因为它在3D房间是无限的脸吗? 我当时想到的最后一件事是Decal 。 Decal是我要找的吗? 我该如何使用它们? 或者你有其他解决方案吗? 任何教程或其他帮助都会很棒。 谢谢

3D到2D投影

我正在尝试使用一些很酷的3D效果在Java(实际上是处理 )中编写游戏。 我可以选择两个3D渲染器,但都没有默认渲染器的质量或灵活性。 我在想,如果我能得到一个function到proje 所以说我有一组浮动在3D空间中的坐标(x,y,z)。 如何在2D屏幕上显示应该绘制的点(透视图)? 只是为了澄清,我只需要最低限度 (不考虑相机的位置,我只能通过抵消点来获得这种效果) – 我不是在重写OpenGL。 是的,我看到还有很多其他问题 – 但它们似乎都没有真正的答案。

如何在JavaFX中将GUI叠加在3D场景上?

我在JavaFX中有一个3D场景,需要在3D场景上叠加GUI。 我尝试将按钮和文本添加到场景中,但它们总是作为3D对象出现在3d视图中。 我环顾四周,还没找到怎么做。 唯一的解决方法是创建一个全新的窗口并将设置放在那里但在这种情况下不是一个选项。 谢谢您的帮助!! 像这样的东西 或这个

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

由于我从辅助类CharacterControl更改为新的BetterCharacterControl我注意到一些改进,例如推动其他角色正在工作,但我的主角已经开始滑过步骤而无法爬上更高的台阶。 我必须跳过上面不是正确的比赛方式,它应该只是走过去。 旧的帮助器类CharacterControl有一个默认的不滑动方式,只是走过几步,我认为可以通过改变我创建主角的代码来纠正它。 private void createNinja() { ninjaNode = (Node) assetManager .loadModel(“Models/Ninja/Ninja.mesh.xml”); ninjaNode.setShadowMode(RenderQueue.ShadowMode.CastAndReceive); ninjaNode.setLocalScale(0.06f); ninjaNode.setLocalTranslation(new Vector3f(55, 3.3f, -60)); ninjaControl = new BetterCharacterControl(2, 4, 0.5f); ninjaControl.setJumpForce(new Vector3f(6, 6, 6)); ninjaNode.addControl(ninjaControl); rootNode.attachChild(ninjaNode); bulletAppState.getPhysicsSpace().add(ninjaControl); getPhysicsSpace().add(ninjaControl); animationControl = ninjaNode.getControl(AnimControl.class); animationChannel = animationControl.createChannel(); } 完整的代码是 package adventure; import com.jme3.system.AppSettings; import java.io.File; import com.jme3.renderer.queue.RenderQueue; import com.jme3.renderer.queue.RenderQueue.ShadowMode; import com.jme3.animation.AnimChannel; import com.jme3.animation.AnimControl; import […]

Java 3D数组赋值

我有一个看起来像这样的数组 static String[][][] School= new String[1000][20][5]; 在第一个括号中,我保存了类名 在第二个我保存学生的身份证 在第三部分,我保存了关于学生的信息(他的姓名,姓氏等)。 首先,我分配所有的class级名称,之后我将每个class级分配给学生ID,然后我可以填写他们的信息。 我该怎么做? 我试过这个例子 School[i] = “A1”; 但它不起作用。 编辑:或者还有另一种方法来保存这3件事吗? (class级名称,学生及其信息)

用于为3d打印创建3d对象的Java库

我正在寻找一个java库来创建3d几何,然后将其转换为.stl文件,这样我就可以使用3d打印机来打印我的对象。 我可以想象使用一个3D图形对象,可以像在graphics2d对象上一样绘制它: Buffered3DObject obj = new Buffered3DObject(200,200,200, Unit.MM); Graphics3D g3 = obj.getGraphics(); Stroke3d stroke = new Stroke(3); g3.setStroke(stroke); g3.drawpipe(x1,y1,z1,x2,y2,z2); obj.exportToSTL(“filename.stl”); 好的,我只是编写代码:)。 但是这样的事情。 谁知道我怎么能把这样的东西拉下来? 任何像这样做的开源库吗? 很高兴能够通过网站的用户输入生成自定义对象。 抢。 编辑:即使问题已经关闭(并且没有人关心我的问题回答我的原因)我找到了答案(我发布了它,所以其他人也有同样的问题可以找到它): 作为OpenScad的包装器,它有一个java库。 java包装器称为JavaScad。 可以在这里找到JavaScad