我被难住了。
我创建了一个弹簧形状的线几何体,我希望能够变换这个弹簧,使一端保持固定在原位,而另一端遵循 vector3 位置。object3D.lookAt(( 方法让它指向正确的方向,但我想不出一种方法来将其拉伸到那个点。
我认为这将是一个matrix4.makeTransform((,但我不知道如何计算每个方向上缩放的数量。我以为这只是简单地将弹簧端点和目标点的 x、y 和 z 坐标分开,但这根本没有奏效。
有没有一种方法可以做到这一点,我不知何故错过了?
您的 .lookAt 调用,使弹簧点成为自己的 z 轴(希望轴沿着弹簧的长度运行!
一旦你把它指向目标,你需要弄清楚目标有多远......
使用类似的东西
distance = new THREE.Vector3().copy(targetPoint).sub( springObject.position).length()
一旦你知道了这个距离,并假设你知道弹簧模型的默认长度,那么它应该只是通过距离/defaultLength设置弹簧的z轴刻度的问题。
springObject.scale.z = defaultLength/distance
如果您已经将弹簧模型缩放了一定数量,这可能会有点复杂,您还必须考虑到这一点。