【发布时间】:2017-06-29 04:32:22
【问题描述】:
我正在使用带 Three.js 的 MTL 和 OBJ 文件渲染一个带有纹理的对象。我的代码在这里有效,但我的模型显示为平面阴影。如何启用平滑着色?
var scene = new THREE.Scene();
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath('assets/');
mtlLoader.setBaseUrl('assets/');
mtlLoader.load('asset.mtl', function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('assets/');
objLoader.load('asset.obj', function(object) {
//
// This solved my problem
//
object.traverse(function(child) {
if(child instanceof THREE.Mesh)
{
child.material.shading = THREE.SmoothShading;
}
});
//
//
scene.add(object);
});
});
编辑: 我使用基于接受的答案解决我的问题的解决方案更新了我的代码。
【问题讨论】:
-
我已经尝试过那个,但它对我没有任何作用。
-
你看过asset.mtl吗?也许它被设置在某个地方
-
你能贴一张你正在渲染的图片吗?
-
阴影看起来“平坦”还是“多面”?如果您分享屏幕截图会更好。
标签: javascript three.js