最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Three.js - problems smooth shading a Lambert material on custom geometry - Stack Overflow

programmeradmin3浏览0评论

I have created a custom geometry in Three.js. Now, I would like to create a mesh that uses a smooth-shaded Lambert material. Using a loop, I have created the array of vertices, then faces, and afterwards I have called

geometryputeCentroids();
geometryputeFaceNormals();
geometryputeVertexNormals();

var colorMaterial =  new THREE.MeshLambertMaterial( {color: 0x0000ff, side: THREE.DoubleSide} );
var mesh = new THREE.Mesh( geometry, colorMaterial );
scene.add(mesh);

The result is almost perfect, except that it appears as though the material is using shading: THREE.FlatShading as seen below:

while I was expecting the default appearance one normally expects with shading: THREE.SmoothShading. What do I need to add/change to obtain a smooth Lambert shading?

(If it helps, a complete live example is at .js/Marching-Cubes.html and the geometry and mesh are created around lines 250-280.)

I have created a custom geometry in Three.js. Now, I would like to create a mesh that uses a smooth-shaded Lambert material. Using a loop, I have created the array of vertices, then faces, and afterwards I have called

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

The result is almost perfect, except that it appears as though the material is using shading: THREE.FlatShading as seen below:

while I was expecting the default appearance one normally expects with shading: THREE.SmoothShading. What do I need to add/change to obtain a smooth Lambert shading?

(If it helps, a complete live example is at http://stemkoski.github.io/Three.js/Marching-Cubes.html and the geometry and mesh are created around lines 250-280.)

Share Improve this question asked Jun 15, 2013 at 1:03 StemkoskiStemkoski 9,0453 gold badges48 silver badges62 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 25

It's because neighboring faces do not share vertices in your model.

If you call geometry.mergeVertices() right after you complete the creation of your geometry, and before you call geometry.computeVertexNormals(), then your shading will look smoother.

three.js r.58

发布评论

评论列表(0)

  1. 暂无评论