我在 Three.js 中创建了一个自定义几何体。现在,我想创建一个使用平滑阴影兰伯特材质的网格。使用循环,我创建了顶点数组,然后创建了面,然后我调用了
geometry.computeCentroids();
geometry.computeFaceNormals();
geometry.computeVertexNormals();
var colorMaterial = new THREE.MeshLambertMaterial( {color: 0x0000ff, side: THREE.DoubleSide} );
var mesh = new THREE.Mesh( geometry, colorMaterial );
scene.add(mesh);
结果几乎是完美的,除了看起来好像材料正在使用shading: THREE.FlatShading
如下所示:
虽然我期待人们通常期望的默认外观shading: THREE.SmoothShading
。我需要添加/更改什么才能获得平滑的兰伯特着色?
(如果有帮助,完整的实例位于http://stemkoski.github.io/Three.js/Marching-Cubes.html http://stemkoski.github.io/Three.js/Marching-Cubes.html并且几何体和网格是在第 250-280 行周围创建的。)
这是因为相邻面不共享模型中的顶点。
如果你打电话geometry.mergeVertices()
在完成几何体的创建之后,在调用之前geometry.computeVertexNormals()
,那么你的阴影会看起来更平滑。
三.js r.58
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)