Javascript three.js:GridHelper生成非标准网格?

Javascript three.js:GridHelper生成非标准网格?,javascript,three.js,Javascript,Three.js,我知道three.js中几何体的标准法向量是(0,0,1) 但是,当我创建GridHelper构造函数的实例时,它会创建一个由X轴和Z轴跨越的平面。这种平面的法向量为(0,1,0) 此屏幕截图显示了我的GridHelper几何体的顶点arry: var myGridHelper = new THREE.GridHelper(10, 20); 并通过目视检查确认: 以下是我实例化GridHelper的方式: var myGridHelper = new THREE.GridHelper(10

我知道three.js中几何体的标准法向量是
(0,0,1)

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

此屏幕截图显示了我的GridHelper几何体的顶点arry:

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

并通过目视检查确认:

以下是我实例化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);

如果要对
GridHelper
使用
lookAt()
方法,则需要旋转栅格几何图形,使栅格位于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

你能解决什么问题吗?你想做什么?看这篇帖子:默认情况下,Y是“向上”@WestLangley我希望事情能按照我的期望进行旋转……)。当我创建一个具有起始向量和结束向量的四元数时,四元数应该根据这些向量旋转。现在,如果我将
(0,0,1)
作为起始向量馈送,它将不会这样做。我建议增加一个额外的四元数旋转来补偿这一点,这是错误的。我可以简单地将替代(或真?)标准向量
(0,1,0)
作为开始向量馈送到
四元数.setFromUnitVectors()
。这使得事物按照我的期望旋转:)这是因为标准向量是(0,0,1),而
lookAt
因此期望事物(平面)位于XY.plane?这是因为
lookAt()
旋转对象,使对象的局部正z轴指向所需的方向。您需要确定几何体的方向,使其在默认情况下向上“查看”正z轴。例如,如果您的对象是一辆汽车,您将调整几何体的方向,使汽车朝向正z轴。然后
lookAt()
将按预期工作。