从 Point Three.js 生成网格 [英] Generate Mesh from Points Three.js

查看:23
本文介绍了从 Point Three.js 生成网格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to create a clickable shape in Three from a bunch of points that are generated by mouse click.

这段代码有点用:

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 );

点被添加​​,我可以在它们之间画线我只是不能填充中心所以鼠标可以检测到它!

The points get added, I can draw lines between them I just can't fill in the center so the mouse can detect it!

推荐答案

您可以使用 THREE.ConvexGeometry 从点创建网格.

You can create a mesh from points using THREE.ConvexGeometry.

var mesh = new THREE.ConvexGeometry( vertices_array );

参见,例如,http://threejs.org/examples/webgl_geometry_convex.html

这只是您的点的凸包,但对于您的用例来说应该足够了.

This is just the convex hull of your points, but it should be sufficient for your use case.

您必须在源代码中明确包含three.js文件examples/js/geometries/ConvexGeometry.js.

You must include the three.js file examples/js/geometries/ConvexGeometry.js explicitly in your source code.

three.js r.84

three.js r.84

这篇关于从 Point Three.js 生成网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆