我正在尝试从鼠标单击生成的一堆点中创建一个可点击的形状。
这段代码有点工作:
mouse.x = ( ( event.clientX - renderer.domElement.offsetLeft ) / player.width ) * 2 - 1;
mouse.y = - ( ( event.clientY - renderer.domElement.offsetTop ) / player.height ) * 2 + 1
raycaster.setFromCamera( mouse, camera );
var objects = [];
objects.push(selectedHotspot);
var intersects = raycaster.intersectObjects( objects, true );
if ( intersects.length > 0 ) {
var point = new THREE.Mesh( new THREE.SphereGeometry(1, 1, 1), new THREE.MeshBasicMaterial( { color: 0x00ffff } ) );
point.position.copy(intersects[0].point);
scene.add(point);
points.push(intersects[0].point);
}
var geometry = new THREE.Geometry();
points.forEach( function( point ){
geometry.vertices.push( point );
});
geometry.vertices.push( points[0] );
geometry.faces.push( new THREE.Face3(0, 1, 2));
// material
var material = new THREE.MeshBasicMaterial( { color: 0xffffff } );
// line
var line = new THREE.Mesh( geometry, material );
scene.add( line );
hotspots.push( line );
点被添加了,我可以在它们之间画线我只是不能填充中心所以鼠标可以检测到它!
最佳答案
您可以使用 THREE.ConvexGeometry
从点创建网格。 .
var mesh = new THREE.ConvexGeometry( vertices_array );
例如,参见 http://threejs.org/examples/webgl_geometry_convex.html
这只是您的点的凸包,但对于您的用例来说应该足够了。
您必须包含三个.js 文件
examples/js/geometries/ConvexGeometry.js
在您的源代码中明确显示。三.js r.84
关于javascript - 从点 Three.js 生成网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41847752/