【问题标题】:Three.js: move object along face normal directionThree.js:沿面部法线方向移动对象
【发布时间】:2015-02-13 20:27:22
【问题描述】:

我有点卡住了。

我有一张脸,它的中心位置和正常的脸。我想沿法线方向在该面的前面放置另一个对象,可以说是 1 个单位。我要放置在脸部前面的对象尚未正确旋转,这实际上是另一个要解决的任务:垂直于脸部法线旋转对象(平面)。有什么提示吗?

【问题讨论】:

    标签: three.js


    【解决方案1】:

    我假设您有一个要放置的object,一个表示人脸所属对象位置的center,以及一个face

    您可以使用面部的法线定位对象:

    object.position.addVectors(center, new THREE.Vector3(1, 1, 1).multiplyScalar(1));
    

    要旋转它,您可以执行以下操作:

    object.lookAt(center);
    

    【讨论】:

    • Object3D.position 是不可变的,所以object.position = 在three.js 中不是一个有效的构造。
    • 感谢您的快速回复!我只是在当前的解决方案提案中没有看到对象是如何沿着面部的法线方向定位的。让我们假设center 是脸部的中心,我也有normal vector。与lookAt 一起旋转很酷而且很有效!
    • 人脸的法线向量是一个“单位向量”,它表示一个单位长的方向/光线,该方向/光线在人脸所面对的方向上。假设在某些情况下,这张脸指向正上方。然后它的单位向量将是 ,直接向上。如果人脸在 的位置,那么我们可以计算出人脸位置前面的两个单位是 + 2 = .这有意义吗?
    • 有道理!! :)
    猜你喜欢
    • 2014-06-25
    • 2016-03-16
    • 2016-07-07
    • 1970-01-01
    • 2017-01-11
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多