刚体将彼此举到空中

问题描述 投票:0回答:1

我正在 Godot 中制作一个类似于人类一败涂地的主动布娃娃控制器。我有一个布娃娃,它是由使用关节相互连接的物理骨骼(刚体)制成的。我使用胡克斯定律将布娃娃的物理骨骼旋转与动画骨骼相匹配。

我使用销接头将手固定在物体(Rigidbody)上以使其拾取。

它工作得很好,但问题是,举起你所站立的物体会使它漂浮到空中。知道为什么吗?

这是展示其实际操作的视频

以下是部分代码:

func hookes_law(displacement: Vector3, current_velocity: Vector3, stiffness: float, damping: float) -> Vector3:
    return (stiffness * displacement) - (damping * current_velocity)
    for b:PhysicalBone3D in physics_bones:
        var target_transform: Transform3D = animated_skel.global_transform * animated_skel.get_bone_global_pose(b.get_bone_id())
        var current_transform: Transform3D = global_transform * physical_skel.get_bone_global_pose(b.get_bone_id())
        var rotation_difference: Basis = (target_transform.basis * current_transform.basis.inverse())
        var torque = hookes_law(rotation_difference.get_euler(), b.angular_velocity, angular_spring_stiffness, angular_spring_damping)
        torque = torque.limit_length(max_angular_force)
        
        b.angular_velocity += torque * delta

我原以为物体会翻转或根本不动。

我的理论是,物体正在推动布娃娃,而布娃娃以某种方式反复拉动物体。

降低胡克斯定律的刚度有点帮助,但这也使布娃娃变得非常虚弱。

math physics godot rigid-bodies ragdoll
1个回答
0
投票

我想通了。事实证明,由于某种原因,改变物理骨骼的碰撞层和遮罩会弄乱它。

© www.soinside.com 2019 - 2024. All rights reserved.