我正在尝试让3D对象跟随3D路径,使其始终面向行进的方向。我尝试这样做:
fishObject.quaternion.setFromAxisAngle(axis, radians)
其中radians
是up
向量与行进方向之间的角度
在下面的笔中,为了清楚起见,描绘了轴。蓝线是axis
,紫色线只是up
,移动的红线是鱼应该面对的方向(tangent
)。它们都以正确的方式移动,但是当我设置四元数时,对象的旋转似乎不跟随其轴
笔中有一点杂乱(建造鱼),但我所看到的只是第281行及其论点:
fishObject.quaternion.setFromAxisAngle(axis, radians)
我刚认识这个。熟悉3D旋转的人应该很简单。
https://codepen.io/nth-chile/pen/ELQqqb
谢谢,如果我能更清楚,请告诉我。
答案 0 :(得分:0)
获得表现良好的切线框架的一种方法是使用lookAt()
方法。
var axes = new THREE.AxesHelper( 10 );
scene.add( axes );
. . .
// then, in the render loop
pt = swimPath.spline.getPoint( t );
tangent = swimPath.spline.getTangent( t );
axes.position.copy( pt );
axes.lookAt( pt.add( tangent ) );
现在,确保您的“鱼”定向,使其默认面向局部正z轴。在您的情况下,它不是必须应用轮换。将对象添加为切线框架的子项。
fishObject.rotation.set( 0, - Math.PI / 2, 0 );
axes.add( fishObject );
three.js r.92