【发布时间】:2017-07-12 14:55:04
【问题描述】:
喂! 我在三个js中工作。我正在通过 THREE.JSONLoader 加载模型。现在我可以选择这些对象和他们的脸了。这是工作。 但是现在我想获取所选面的顶点,检查下面的代码:
intersections = raycaster.intersectObjects( objects );
if ( intersections.length > 0 ) {
if ( intersected != intersections[ 0 ].object ) {
intersected = intersections[ 0 ].object;
/*HERE*/
console.log("Hit-face a @ " + intersections[0].face.a);
console.log("Hit-face b @ " + intersections[0].face.b);
console.log("Hit-face c @ " + intersections[0].face.c);
var faceColorMaterial = new THREE.MeshBasicMaterial(
{ color: 0xffffff, vertexColors: THREE.FaceColors } );
var sphereGeometry = new THREE.SphereGeometry( 0.1, 32, 16 );
var sphereGeometryf = new THREE.SphereGeometry( 3, 32, 16 );
var sphereGeometrys = new THREE.SphereGeometry( 3, 32, 16 );
var sphereGeometryt = new THREE.SphereGeometry( 3, 32, 16 );
var sphere = new THREE.Mesh( sphereGeometry, faceColorMaterial );
sphere.position.set(intersections[0].point.x, intersections[0].point.y, intersections[0].point.z);
var spheref = new THREE.Mesh( sphereGeometryf, faceColorMaterial );
spheref.position.set(intersections[0].object.geometry.vertices[intersections[0].face.a].x + intersections[0].object.position.x,
intersections[0].object.geometry.vertices[intersections[0].face.a].y + intersections[0].object.position.y,
intersections[0].object.geometry.vertices[intersections[0].face.a].z + intersections[0].object.position.z);
var spheres = new THREE.Mesh( sphereGeometrys, faceColorMaterial );
spheres.position.set(intersections[0].object.geometry.vertices[intersections[0].face.b].x + intersections[0].object.position.x,
intersections[0].object.geometry.vertices[intersections[0].face.b].y + intersections[0].object.position.y,
intersections[0].object.geometry.vertices[intersections[0].face.b].z + intersections[0].object.position.z);
var spheret = new THREE.Mesh( sphereGeometryt, faceColorMaterial );
spheret.position.set(intersections[0].object.geometry.vertices[intersections[0].face.c].x + intersections[0].object.position.x,
intersections[0].object.geometry.vertices[intersections[0].face.c].y + intersections[0].object.position.y,
intersections[0].object.geometry.vertices[intersections[0].face.c].z + intersections[0].object.position.z);
scene.add(sphere);
scene.add(spheref);
scene.add(spheres);
scene.add(spheret);
/*HERE*/
}
}
所以在这个示例代码中,“球体”是光线与第一个对象相遇的交点。
spheref-spheres-spheret 是顶点可视化,但是当我将这些球体添加到这些顶点时,它们在其他地方(可见)。
上面的方法与这个例子一起工作,通过用我上面的代码替换 onDocumentMouseDown 事件:http://stemkoski.github.io/Three.js/Mouse-Click.html
但它不适用于加载的对象。
【问题讨论】:
标签: javascript three.js intersection vertex