是否可以在同一对象上显示对象的线框及其表面的纯色?我找到了使用对象克隆并分配不同 Material 的方法,例如

var geometry = new THREE.PlaneGeometry(plane.width, plane.height,width - 1, height - 1);
var materialWireframe = new THREE.MeshPhongMaterial({color:"red",wireframe:true});
var materialSolid = new THREE.MeshPhongMaterial({color:"green",wireframe:false});
var plane = new THREE.Mesh(geometry, materialWireframe );
var plane1 = plane.clone();
plane1.material = materialSolid ;
plane1.material.needsUpdate = true;

有什么想法吗?

最佳答案

要同时渲染模型及其线框,可以使用如下模式:

// mesh
var material = new THREE.MeshPhongMaterial( {
    color: 0xff0000,
    polygonOffset: true,
    polygonOffsetFactor: 1, // positive value pushes polygon further away
    polygonOffsetUnits: 1
} );
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh )

// wireframe
var geo = new THREE.EdgesGeometry( mesh.geometry ); // or WireframeGeometry
var mat = new THREE.LineBasicMaterial( { color: 0xffffff, linewidth: 2 } );
var wireframe = new THREE.LineSegments( geo, mat );
mesh.add( wireframe );
polygonOffset的使用将有助于防止网格物体 Material 与线框线之间发生z争斗。因此,线框看起来会好很多。

fiddle :http://jsfiddle.net/tfjvggfu/24/

编辑:更新为three.js r.82

关于three.js - 显示线框和纯色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31539130/

10-11 20:58