我的手臂、腿、头部和脊椎上有许多陀螺仪(在现实生活中)。每个陀螺仪都有一个唯一的 id,我将其映射到 3d 模型上的身体部位。
每个传感器的陀螺仪数据是一个四元数。
我基本上只是想根据这些数据为我的 3d 模型制作动画。
因此,如果我将头部向右旋转,3d 模型也应该类似地旋转头部。如果我单腿站立,3d 模型也应该这样做。
当使用像 Box2d 这样的 2d 物理引擎时,这就像应用变换一样简单。在 Unity 中执行此操作的等效方法是什么?
编辑:在 Godot 中它真的很简单。
https://docs.godotengine.org/en/3.0/tutorials/3d/working_with_3d_skeletons.html
extends Spatial
var skel
var id
func _ready():
skel = get_node("skel")
id = skel.find_bone("upperarm")
print("bone id:", id)
var parent = skel.get_bone_parent(id)
print("bone parent id:", id)
var t = skel.get_bone_pose(id)
print("bone transform: ", t)
set_process(true)
func _process(delta):
var t = skel.get_bone_pose(id)
t = t.rotated(Vector3(0.0, 1.0, 0.0), 0.1 * delta)
skel.set_bone_pose(id, t)