如何使刚体绕Y和Z轴独立且同时旋转?使用three.js和ammo.jspyBullet.org物理学

问题描述

我一般来说对Bullet和3D还是陌生的,所以请原谅我的问题:)

我正在使用Ammo.js(Bullet的javascript版本)进行Three.js滑板仿真,我的目标是让滑板做一个变量(围绕局部Z_forward轴和局部Y_up轴在同时)。这是一个供参考的慢镜头视频:https://www.youtube.com/watch?v=K1FHvxXh5NU

在模拟中,我使用btRaycastVehicle作为滑板,并且成功使用扭矩使滑板绕Z轴或Y轴旋转,但仅在将扭矩施加到其中一个轴上时才成功一个时间。如果我在Z和Y轴上都施加扭矩,则会导致螺旋运动,这是不希望的。您可以通过进入模拟(https://skateboard.workroomvr.com)来了解我的意思,然后在停放区按一次以跳动,然后同时按住H和Y。我在网上搜索了此问题的解决方案,许多资料来源都指出,刚体(RB)一次只能绕1个轴旋转,尽管该轴可以移动。当我向滑板施加组合扭矩时,这似乎正是发生的情况。

因此,我发现的唯一可能的解决方案(https://answers.unity.com/questions/375589/how-to-rotate-two-axes-independently-simultaneousl.html)是使用两个不同的对象作为父对象,然后围绕一个轴旋转每个对象。该解决方案对我来说很有意义,但是当我尝试使用Bullet刚体实现这一目标时,我很沮丧。我发现没有办法在两个刚体之间建立父子关系。如果可以的话,请告诉我,即使这样,我仍然可以预见该解决方案存在问题,因为父级RB(假设它将接收Y轴扭矩),子级raycastVehicle RB(接收所有驱动输入和Z轴扭矩)和图形滑板(raycastVehicle RB的复制转换)。然后,我考虑将raycastVehicle RB设为父级,拥有一个子级RB(用于Y轴扭矩),并使图形滑板复制子级RB的变换。对我来说有些道理,但这将导致图形滑板和raycastVehicle RB具有单独的变换的问题,最终将导致不希望的效果

我尝试过的其他想法和解决方案:

我研究了使用复合形状,但我相信我需要两个刚体才能实现上述解决方案,因为我需要对两个刚体施加不同的扭矩。

我还尝试过在raycastVehicle RB和另一个RB之间使用p2p,铰链和6dof约束,以某种程度上充当父子关系,但是我无法理解如何用该方法组合适当的解决方方法

我现在要说的是,我想我可能不得不求助于某种基于图形的仅动画实现的变量(很容易在Blender中创建),但是我真的想弄清楚物理可能的话实施,我觉得这并非不可能。

任何人都可以提供一些有关我如何使用物理学实现目标的见解吗?如果没有,您是否愿意在Blender中创建动画并将其应用于图形滑板?我担心的是,动画发生时,图形和物理会有所不同。

这里有我完全不想要的东西吗?也许没有转矩或图形动画就可以实现我的目标吗?

在此先感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...