0

我目前正在研究 Three.js,并在从原生原语切换到导入的 OBJ 对象时遇到了我的第一个真正问题。

我有一个简单的十二面体模型,我在 Cinema4D r15 中进行了 UV 映射并导出为 OBJ 文件。当在 DodecahedronGeometry 上使用这个模型时,几何不再被我的定向光照亮,但如果我使用基元的话。

看到这个 JSFiddle:https ://jsfiddle.net/xm3ttmxw/1/

在此处查看所需的结果(使用原语):https ://jsfiddle.net/84hbs7ed/1/

如您所见,我将receiveShadow属性设置true为 OBJ 中的所有网格。我为灯光和渲染器激活了阴影贴图。定向光跟随相机并指向原点(十二面体的中心)。环境光似乎工作正常。

任何想法?提前致谢

4

1 回答 1

1

经过更多研究,问题似乎来自于缺少顶点法线(OBJLoader 不计算这些)。解决方案是动态计算顶点法线,如下所示:https ://stackoverflow.com/a/28568522/3446439

object.traverse( function( child ) {
    if ( child instanceof THREE.Mesh ) {
        child.geometry.computeVertexNormals(); //add this
    }
} );

感谢塞巴斯蒂安·巴尔特斯!

于 2015-05-18T12:36:46.253 回答