- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jmonkeyengine 3 并且我已经努力了好几天来实现对移动平面/盒子与其他空间的碰撞检测。最后,我在 collision_and_intersection 教程 (jme hub) 中读到 BoundingBox 不会旋转,而且还不支持 Oriented 边界框。
我搜索了 jme 论坛,但我发现了 JME3 中不存在的 OBB 类的非常旧的帖子。
我该如何解决这个问题,我有哪些选择?
提前致谢,非常感谢任何帮助。
最佳答案
显然,很多人不知道您可以使用轴对齐边界框作为定向边界框。数学计算结果完全相同。唯一的区别是您需要先使用旋转和平移矩阵对角进行变换。下面是一些示例代码:
public static BoundingBox CreateOrientedBoundingBox(Vector3 min, Vector3 max, Matrix transform)
{
Vector3[] corners = new Vector3[]
{
Vector3.TransformCoordinate(new Vector3(min.X, max.Y, max.Z), transform),
Vector3.TransformCoordinate(new Vector3(max.X, max.Y, max.Z), transform),
Vector3.TransformCoordinate(new Vector3(max.X, min.Y, max.Z), transform),
Vector3.TransformCoordinate(new Vector3(min.X, min.Y, max.Z), transform),
Vector3.TransformCoordinate(new Vector3(min.X, max.Y, min.Z), transform),
Vector3.TransformCoordinate(new Vector3(max.X, max.Y, min.Z), transform),
Vector3.TransformCoordinate(new Vector3(max.X, min.Y, min.Z), transform),
Vector3.TransformCoordinate(new Vector3(min.X, min.Y, min.Z), transform)
};
return BoundingBox.FromPoints(corners);
}
其中输入的变换矩阵定义为:
Matrix transform = VoidwalkerMath.CreateRotationMatrix(this.Rotation) * Matrix.Translation(this.Location);
此外,为了清晰和完整起见,我创建了一个旋转矩阵:
/// <summary>
/// Converts degrees to radians.
/// </summary>
/// <param name="degrees">The angle in degrees.</param>
public static float ToRadians(float degrees)
{
return degrees / 360.0f * TwoPi;
}
/// <summary>
/// Creates a rotation matrix using degrees.
/// </summary>
/// <param name="xDegrees"></param>
/// <param name="yDegrees"></param>
/// <param name="zDegrees"></param>
/// <returns></returns>
public static Matrix CreateRotationMatrix(float xDegrees, float yDegrees, float zDegrees)
{
return
Matrix.RotationX(ToRadians(xDegrees)) *
Matrix.RotationY(ToRadians(yDegrees)) *
Matrix.RotationZ(ToRadians(zDegrees));
}
然后您可以将它与传统 AABB 进行相同的碰撞测试。我目前在我的 Frustum 剔除游戏中使用此功能。所以为了减轻/打破这个神话:是的。 AABB 可以用作 OBB;唯一的区别是点的转换方式。
更新:这是一个直观的例子。两个 crate 。左边的是旋转的,右边的不是。两者都是 AABBS。
关于jmonkeyengine - 定向边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756405/
我正在使用 jmonkeyengine 3 并且我已经努力了好几天来实现对移动平面/盒子与其他空间的碰撞检测。最后,我在 collision_and_intersection 教程 (jme hub)
我是 JMonkeyEngine 的新手。我已经下载并安装了 jMonkeyEngine3 SDK,并尝试制作 Hello 示例应用程序,但它总是显示一个对话框,上面写着: JUnit library
我想截取渲染场景的屏幕截图,而不显示游戏本身。我想要遵循的程序是: createScene(); for(i = 0; i < num_screenshots; i++) { moveCame
有人可以给我可以轮换我的播放器的代码示例吗?我想实现与经典 fps(w、a、s、d + 鼠标)相同的控制。 FlyByCamera 的东西,但我不知道如何添加它。代码没有错误。谢谢。 这里是控制相关的
我正在用 jMonkeyEngine 测试一些东西,我试图让相机跟随一个盒子空间。我在这里遵循了官方说明: http://jmonkeyengine.org/wiki/doku.php/jme3:ad
我已经实现并添加了一个 PhysicsCollisionListener 以在射弹击中玩家时进行注册。但是当射弹击中玩家时。触发多个事件。我在我的 simpleInitApp() 方法中使用 bull
在 JMonkeyEngine 中使用 rotate 方法旋转几何有什么区别: float r = FastMath.DEG_TO_RAD * 45f; // convert degrees to r
我正在开发 JMonkeyEngine 3.0 我的 map 位于 Scene.j3o 我想添加细节级别,但我不知道如何获取地形的几何形状。我发现了一些代码,但都是基于高度图地形,并使用 Terrai
我不确定我的措辞是否正确,但我想在 jme3 中建立一个类似空间的物理系统。我有 BulletAppState 设置和几个启用了 RigidBodyControl 的球体。 // Settin
我正在使用 JMonkeyEngine 制作一个 Java 游戏,我已经按照他们网站上的教程向墙上射球(子弹)。我明白一切是如何运作的,但是当我增加子弹的速度时,它会直接穿过墙壁。 现在我知道发生这种
我创建了 2 个 Spartials 并将一个设置为 RigidBodyControl,第二个设置为 BetterCharacterControl。两者都是大小为 (10f, 1f, 10f) 和 (
我正在使用 jMonkeyEngine 开发桌面 PC 游戏。它仍处于早期阶段(总是开始,永远不会结束,是吗?)。 在没有物理学的情况下(只是移动相机),当你进入 Geometry 的内部时,面孔会消
我是 JMonkeyEngine 的初学者。我克隆了存储库 JMonkeyEngine SDK based on Netbeans ,然后我在终端中运行 ./gradlew build 并返回此错误:
我想将 jMonkeyEngine 游戏作为小程序托管,但我不知道如何。 These instructions建议让主类继承自 SimpleJMEApplet ,但 Eclipse 提示它找不到该类。
如果 2 个值大于 3,我想退出游戏。我想在这里输入: if(player.getWorldTranslation().y > 3){ if(player.ge
总的来说,我是 3d 引擎的新手,当我尝试碰撞 Geometry 和 BoundingVolume 对象时,我收到了 NullPointerException。 这是我声明对象的方式(抱歉,目前比较困
My Artist 在 3d studio Max 中创建了一个 3d 鞋模型作为 FBX。如下图所示。 我在我的程序中使用了 jMonkeyEngine,它不支持 FBX 文件,所以我将 FBX 导
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我正在尝试学习jmonkey引擎并想建立一个maven项目。我将 Maven 设置从 jmonkey 网站复制到我的 pom 中,但仍然收到错误: Failed to execute goal on
如何在 JMonkeyEngine 3 中将相机作为纹理投影到立方体上?你介意帮我吗? 我尝试通过这段代码来做到这一点,但它不起作用: private void addCamera() { C
我是一名优秀的程序员,十分优秀!