已知几何体生成网格EdgesGeometry、WireframeGeometry

 

边缘几何体(EdgesGeometry)

剔除集合体中的斜线,第二个参数为0时等效WireframeGeometry

geometry — 任何一个几何体对象。
thresholdAngle — 仅当相邻面的法线之间的角度(单位为角度)超过这个值时,才会渲染边缘。默认值为1。

const geometry = new THREE.BoxGeometry( 100, 100, 100 );
const edges = new THREE.EdgesGeometry( geometry );
const line = new THREE.LineSegments( edges, new THREE.LineBasicMaterial( { color: 0xffffff } ) );
scene.add( line );

 

网格几何体(WireframeGeometry)

完整展示几何网格

这个类可以被用作一个辅助物体,来对一个geometry以线框的形式进行查看。

const geometry = new THREE.SphereGeometry( 100, 100, 100 );

const wireframe = new THREE.WireframeGeometry( geometry );

const line = new THREE.LineSegments( wireframe );
line.material.depthTest = false;
line.material.opacity = 0.25;
line.material.transparent = true;

scene.add( line );

 

实例:

 const group = new THREE.Group();
    const gridGroup = new THREE.Group();
    const radius = this.length * Math.tan(THREE.MathUtils.degToRad(this.angle / 2));
    const geometry = new THREE.CircleGeometry(radius, this.topLineSteps - 1);
    const circleMesh = new THREE.Mesh(geometry, flatMaterial);
    //圆形纵线
    // const gridGeometry = new THREE.RingGeometry(0, radius, this.topLineSteps - 1, this.topCircleSteps - 1);
    // const mesh = new THREE.Mesh(gridGeometry, flatMaterial);
    group.add(circleMesh);
    // //圆锥侧面网格
    const gridGeometry = new THREE.WireframeGeometry(geometry);
    const gridMesh = new THREE.LineSegments(gridGeometry, gridMaterial);
    group.add(gridMesh);
    const edges = new THREE.EdgesGeometry(geometry, 0);
    const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial({ color: 0xffffff }));
    group.add(line);

    return group;

 

posted @ 2025-05-06 13:48  SimoonJia  阅读(33)  评论(0)    收藏  举报