javascript - 从点 Three.js 生成网格

标签 javascript three.js

我正在尝试从鼠标单击生成的一堆点中创建一个可点击的形状。

这段代码有点工作:

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/

相关文章:

javascript - Three.js 单击时切换对象

javascript - SVG 中的曲线 + 路径动画 + 响应式

javascript - WordPress 作品集 - 两级排序?

以相机为原点的 Three.js 光线转换

javascript - 如何确定某个点是否被遮挡?

Three.js:如何在鼠标悬停时将立方体变形为球体?

three.js - 如何在three.js中使用GLTF Loader?纹理和 Material 显示为黑色

javascript - 如何使扩展运算符仅通过非函数属性进行枚举?

javascript - 遍历对象并更改所有值

c# - 将 onblur 事件添加到 ASP.Net MVC Html.TextBox