been told在three.js中几何的标准法线向量是(0, 0, 1)

但是,当我创建GridHelper构造函数的实例时,它将创建一个由X和Z轴跨越的平面。这样的平面的法向矢量为(0, 1, 0)

可以从此屏幕快照中看到,该屏幕显示了GridHelper的几何形状的顶点:

javascript - three.js:GridHelper使非标准网格吗?-LMLPHP

并通过目视检查确认:

javascript - three.js:GridHelper使非标准网格吗?-LMLPHP

这就是我实例化GridHelper的方法:

var myGridHelper = new THREE.GridHelper(10, 20);


为什么GridHelper不符合标准法线向量?

如果此功能/错误不会改变:
我是否可以通过始终使用以下代码启动GridHelper实例来解决此问题:

var standardPlaneNormal   = new THREE.Vector3(0, 0, 1);
var GridHelperPlaneNormal = new THREE.Vector3(0, 1, 0);
var quaternion  = new THREE.Quaternion();
quaternion.setFromUnitVectors(standardPlaneNormal, GridHelperPlaneNormal);
var myGridHelper = new THREE.GridHelper(10, 20);
myGridHelper.rotation.setFromQuaternion(quaternion);


最佳答案

如果要将lookAt()方法与GridHelper一起使用,则需要旋转网格几何形状,以便网格位于XY平面而不是XZ平面中。完成后,lookAt()将按预期工作。

var grid = new THREE.GridHelper( 10, 2 );

grid.geometry.rotateX( Math.PI / 2 );

var vector = new THREE.Vector3( 1, 1, 1 );
grid.lookAt( vector );

scene.add( grid );


three.js r.76

关于javascript - three.js:GridHelper使非标准网格吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37083229/

10-09 04:02