【发布时间】:2014-12-30 06:06:43
【问题描述】:
我正在尝试使飞机始终面向相机或其他移动物体,但我希望飞机仅在 1 个轴上旋转。如何使用 lookAt 功能使其仅侧向旋转而不倾斜以向上或向下查看移动的对象?
【问题讨论】:
-
也许将相机和平面放在场景图中的同一节点下? jsfiddle.net/dmt23/yqkmpe5t
标签: three.js
我正在尝试使飞机始终面向相机或其他移动物体,但我希望飞机仅在 1 个轴上旋转。如何使用 lookAt 功能使其仅侧向旋转而不倾斜以向上或向下查看移动的对象?
【问题讨论】:
标签: three.js
谢谢,我只需要保持旋转对象的 y 位置不变就可以轻松解决。
if(planex){
var yaw_control = controls.getYawObject();
pos = new THREE.Vector3( yaw_control.position.x, planex.position.y, yaw_control.position.z );
planex.lookAt(pos);
}
【讨论】:
new。创建一个pos 向量并重复使用它:pos.set( x, y, z )。
http://www.lighthouse3d.com/opengl/billboarding/index.php?billCyl
也许这篇文章对你有什么帮助。您正在寻找我认为但从第一页阅读的那些圆柱形广告牌;)您可以自己修改特定的网格矩阵,尽管我不确定这是否是最有效的方法。我自己也做过一次。
让相机看起来 vec:
three.js set and read camera look vector
然后将相机 upVec ,然后根据上面的文章获取那些 = rightVec 的交叉产品。
使用这些向量,您可以像文章中解释的那样填写新的 Three.Matrix4(),然后用新创建的网格矩阵替换网格矩阵。正如我所说,我不太了解three.js 中的矩阵内容,但这可行,但可能效率不高。
为此,您必须使用
停用网格自动矩阵更新mesh.matrixAutoUpdate = false;
【讨论】: