【问题标题】:Three.js normals not correctThree.js 法线不正确
【发布时间】:2015-01-01 21:23:15
【问题描述】:

我必须编写脚本以在网格上显示法线。在最小的脚本上,一切正常。如果我在现有应用程序之一中使用相同的模型,那么一切都是错误的。在镜头前,法线检测似乎是正确的,但是我一旋转网格,法线检测就不好了。 在这两个脚本中,我都使用 raycaster 来获取交集并使用:

                var p = intersects[ 0 ].point;
                intersection.point.copy( p );
                var n = intersects[ 0 ].face.normal.clone();
                n.multiplyScalar( 100 );
                n.add( intersects[ 0 ].point );
                intersection.normal.copy( intersects[ 0 ].face.normal );

                line.geometry.vertices[ 0 ].copy( intersection.point );
                line.geometry.vertices[ 1 ].copy( n );
                line.geometry.verticesNeedUpdate = true;

恢复正常。

什么可能导致这种差异,因为我在两个脚本中对法线使用相同的网格和相同的命令来获取法线?

【问题讨论】:

  • 哈,这很有趣,我刚刚在他们的 github 上发布了这个问题。

标签: three.js intersection normals


【解决方案1】:

我找到了问题的根源:

  • 在工作脚本中,我使用 Orbitcontrols 来转换网格;

  • 在非工作脚本中,我自己在变换网格,看来法线没有更新。发生的事情是原点是正确的,但法线方向与网格的任何变换之前相同。转换未应用于法线。我没有进一步挖掘并切换到 OrbitControls。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 2020-07-23
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2015-08-05
    • 2020-01-29
    • 2013-11-22
    相关资源
    最近更新 更多