2017-11-25 88 views
1

three.js材质具有side属性,该属性控制是否渲染网格的正面和/或背面。有没有办法用线框来做同样的事情,只有前端边缘才会被渲染?显示线框的单面 - three.js

显示的立方体的背面:

material = new THREE.MeshPhongMaterial({ 
    color: 0xFF9800, 
    side: THREE.BackSide, 
    opacity: 1//0 
    }); 

enter image description here https://jsfiddle.net/8p7jja9L/34/

试图显示线框的前侧:

var geo = new THREE.EdgesGeometry(mesh.geometry); 
    var mat = new THREE.LineBasicMaterial({ 
    color: 0x000000, 
    linewidth: 4, 
    side: THREE.FrontSide 
    }); 
    var wireframe = new THREE.LineSegments(geo, mat); 
    mesh.add(wireframe); 

    wireframe.renderOrder = 1; 

enter image description here https://jsfiddle.net/8p7jja9L/35/

+2

你需要清楚地说明你正在询问'THREE.SVGRenderer'。 – WestLangley

+0

@WestLangley'side'属性在材质上设置,不应该是渲染器特定的 – Yarin

回答

1

如果我理解正确的话,你可以简单地添加wireframe: true的材料,并指定要渲染的一面:

https://jsfiddle.net/8p7jja9L/39/

material = new THREE.MeshPhongMaterial({ 
    color: 0xFF9800, 
    side: THREE.FrontSide, 
    wireframe: true <--- 
    }); 

这将使线框的单面为three.js的箱子几何。如果这不是您想象的线框,您可能需要用飞机构建一个箱子或使用搅拌器等工具来创建您所需的线框。

+1

我希望能够使用EdgesGeometry来做到这一点,但我认为你演示的方式是我所能希望的。谢谢- – Yarin