Questions tagged «orientation»


2
如何使用累积矩阵变换解决万向节锁定问题
我正在阅读Jason L. McKesson的在线“学习现代3D图形编程”书 到目前为止,我要解决万向节锁定问题以及如何使用四元数来解决它。 然而,就在这里,在四元数页面上。 问题的一部分是,我们试图将方向存储为一系列3个累积的轴向旋转。方向是方向,而不是旋转。方向当然不是一系列旋转。因此,我们需要将船舶的方向视为方向,作为特定数量。 我想这是我开始感到困惑的第一个地方,原因是因为我看不到方向和旋转之间的巨大差异。我也不明白为什么方向不能通过一系列旋转来表示... 也: 为此,首先想到的是将方向保持为矩阵。当需要修改方向时,我们只需对此矩阵进行转换,将结果存储为新的当前方向。 这意味着应用于当前方向的每个偏航,俯仰和横滚都将相对于该当前方向。正是我们所需要的。如果用户应用正偏航,则希望该偏航相对于它们当前指向的位置而不是相对于某个固定坐标系旋转它们。 我理解这个概念,但是我不理解如果累积矩阵变换可以解决此问题,那么上一页中给出的代码不仅如此。 这是代码: void display() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutil::MatrixStack currMatrix; currMatrix.Translate(glm::vec3(0.0f, 0.0f, -200.0f)); currMatrix.RotateX(g_angles.fAngleX); DrawGimbal(currMatrix, GIMBAL_X_AXIS, glm::vec4(0.4f, 0.4f, 1.0f, 1.0f)); currMatrix.RotateY(g_angles.fAngleY); DrawGimbal(currMatrix, GIMBAL_Y_AXIS, glm::vec4(0.0f, 1.0f, 0.0f, 1.0f)); currMatrix.RotateZ(g_angles.fAngleZ); DrawGimbal(currMatrix, GIMBAL_Z_AXIS, glm::vec4(1.0f, 0.3f, 0.3f, 1.0f)); glUseProgram(theProgram); …

4
X,Y,Z坐标标准?
尽管如此,我对任何类型的3D开发都是新手。通过阅读教程和示例,我发现X / Y / Z坐标似乎比我的第一个猜测要落后一些。 我曾想像过,如果一个人在田野上行走,他们的X / Y位置会发生变化,如果他们要跳,爬或爬下山坡,那么他们的Z位置将会发生变化。我的假设似乎是错误的,因为在田野上行走似乎会改变X / Z,而在山上跳跃或上/下会改变Y。 1)我的观察正确吗?3D对我来说是新手,我可能没有适当考虑问题。 2)水平运动为X / Z和垂直运动为Y背后的逻辑是什么? 3)在XNA Framework中将X / Y用作水平运动而将Z /用作垂直运动对我来说会错吗?

2
由于libGDX中不推荐使用Table.drawDebug,因此应该使用什么呢?
我正在按照“学习LibGDX游戏开发”一书来制作一个简单的游戏。我在菜单创建部分中,在其中创建一个舞台并使用调试边框对其进行渲染。 这本书说要使用,Table.drawDebug(stage)但是这个静态方法似乎已经从框架Table类中完全删除了。 我正在进口com.badlogic.gdx.scenes.scene2d.ui.Table; 下面是我的代码: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最后一行,Table.drawDebug(stage);有编译错误"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the arguments (Stage)" …

1
通过施加扭矩来改变方向
假设您有一个自由漂浮在太空中的物体。您有一个希望此对象指向的矢量,以及一个表示其当前朝向的矢量。从这两个向量中,您可以获得代表方向变化的旋转(矩阵,四元数等),以使两个向量对齐。 如果您仅能够对对象施加扭矩(角速度的导数),那么一种随时间施加扭矩而又不会超出目标的过高算法是什么呢? (在这种情况下,这是一艘太空船,它希望使用推进器自动将自己定位在行进方向上。滚动无关紧要。)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.