three.js - 如何在使用 JSONLoader() 加载的模型上应用 THREE.FlatShading?

标签 three.js shader

我正在使用 three.js 的 JSONLoader() 加载模型。加载工作正常,但模型看起来有点奇怪。我猜这是因为它会自动使用平滑着色而不是平面着色。我尝试了几种应用平面阴影的方法,但都没有用。
这就是我最后尝试的:

loader.load("model.js", function(geometry, materials){
    var mat = new THREE.MeshFaceMaterial( materials );
    mat.shading = THREE.FlatShading;
    var object = new THREE.Mesh( geometry, mat);
    scene.add( object );
});

无论我在尝试什么,要么平滑着色,要么产生错误。
知道如何正确完成吗?

最佳答案

THREE.MeshFaceMaterial( materials )中,materials是一个数组。

您需要将阴影样式应用于该数组的每个元素,如下所示:

materials[ i ].shading = THREE.FlatShading;

three.js r.63

关于three.js - 如何在使用 JSONLoader() 加载的模型上应用 THREE.FlatShading?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146332/

相关文章:

Three.js地形阴影

opengl - OpenGL 计算着色器有时间限制吗?

macos - 在 Mac OSX Lion(10.7) 上设置和使用 OpenGL 3.0+

opengl-es - OpenGL 片段着色器如何知道要在纹理中采样哪个像素?

c++ - 使用多个着色器时的驱动程序错误

javascript - three.js - 如何让相机在补间期间注视对象

javascript - 鼠标按下时补间旋转停止并开始补间

three.js - 三个js二维矩阵可视化

javascript - Three.js - 头像动画

opengl - texelFetch() 中的 samplerBuffer