【发布时间】:2019-04-25 10:16:31
【问题描述】:
我有以下代码:
// coordinate values
var x1 = -815723.5125568421;
var y1 = 20538442.534868136;
var z1 = -17.439584224846456;
var x2 = -815723.5125568421;
var y2 = 20538443.164575472;
var z2 = -16.620415776398275;
// make a rectangular face parallel to y-z plane
var dummySquare = new THREE.Geometry();
dummySquare.vertices.push(new THREE.Vector3(x1,y1,z1));
dummySquare.vertices.push(new THREE.Vector3(x1,y1,z2));
dummySquare.vertices.push(new THREE.Vector3(x2,y2,z1));
dummySquare.vertices.push(new THREE.Vector3(x2,y2,z2));
dummySquare.faces.push(new THREE.Face3(0,1,2));
dummySquare.faces.push(new THREE.Face3(1,2,3));
var dummySquareMaterial = new THREE.MeshBasicMaterial( { color: "#0000FF", side: THREE.DoubleSide } );
var dummySquareMesh = new THREE.Mesh(dummySquare, dummySquareMaterial);
所以,我正在制作一个平行于 y-z 平面的矩形面。 在调试期间,我观察到以下内容:
顶点:数组(4)
0: p {x: -815723.5125568421, y: 20538442.534868136, z: -17.439584224846456}
1: p {x: -815723.5125568421, y: 20538442.534868136, z: -16.620415776398275}
2: p {x: -815723.5125568421, y: 20538443.164575472, z: -17.439584224846456}
3: p {x: -815723.5125568421, y: 20538443.164575472, z: -16.620415776398275}
位置:p {x: 0, y: 0, z: 0}
所以顶点符合预期。但是位置在(0,0,0)。我希望位置是由以上四个顶点定义的平面的中点。
我的理解中缺少什么?
另一个观察如下。
我像上面一样制作了两张脸(相同的顶点)。
对于两个面之一,我确定几何中心,将几何移动到原点(按中心的负值平移),用它创建一个网格,然后我移回原始位置:
var face = new THREE.Geometry();
....add vertices as code snippet above
var faceCentre = new THREE.Vector3();
face.boundingBox.getCenter(faceCentre );
face.translate(-faceCentre .x,-faceCentre .y,-faceCentre .z);
//make mesh
var faceMaterial = new THREE.MeshBasicMaterial( { color: "#FF0000", side:
THREE.DoubleSide } );
var faceMesh= new THREE.Mesh(face, faceMaterial);
// move mesh back by setting its position to original centre of face
faceMesh.position.x = faceCentre .x;
faceMesh.position.y = faceCentre .y;
faceMesh.position.z = faceCentre .z;
如预期的那样,未移动的面与上面的面具有相同的顶点。
但其他面现在具有完全不同的顶点,即使两者都显示在相同的位置和相同的方向。
为什么顶点有这种差异?
【问题讨论】:
标签: three.js