【问题标题】:Loaded OBJ in Three.js doesn't receive shadows even though the property is set to true即使属性设置为 true,在 Three.js 中加载的 OBJ 也不会收到阴影
【发布时间】:2015-05-18 12:20:42
【问题描述】:

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

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

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

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

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

有什么想法吗?提前致谢

【问题讨论】:

    标签: javascript three.js shadows directional-light


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2015-03-04
      • 2016-09-21
      • 1970-01-01
      相关资源
      最近更新 更多