【问题标题】:Generate Mesh from Points Three.js从点 Three.js 生成网格
【发布时间】:2017-01-26 02:32:51
【问题描述】:

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

这段代码有点工作:

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

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

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

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

    var mesh = new THREE.ConvexGeometry( vertices_array );
    

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

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

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

    three.js r.84

    【讨论】:

      【解决方案2】:

      从点云创建网格有多种方法 - 这完全取决于您的具体需求。我将尝试为您提供一些方法的高级概述。

      也许一个边界框就足够了?计算点云的边界框并针对 BBox 进行光线投射。

      如果 BBox 恰好包含其中没有点的大体积,那么您可能需要围绕这些点使用更紧密的网格。给定要投射的射线,将所有点投影到垂直于射线的平面上,然后使用Gift wrapping algorithm 在该平面上构造点的 2D 凸包。很可能存在实现此算法的现有库。使用该算法构建的多边形进行光线投射测试。

      【讨论】:

      • 有用的谢谢。当您看不到点时,我可能会在实时环境中使用边界框方法。
      • 是否有某种你可能知道的收缩包裹算法,在给定阈值的情况下收缩包裹凸包?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多