Three.js ThreeJS MeshPhongMaterial渲染黑色(MeshLambertMaterial渲染正确)

Three.js ThreeJS MeshPhongMaterial渲染黑色(MeshLambertMaterial渲染正确),three.js,Three.js,这个问题有解决办法吗?如果我将materialdefinition从MeshPhone更改为MeshLambert,一切都会按预期工作,否则就不会(但仅在某些计算机上,我的开发机器工作正常) “MaterialConfService”中的函数“loadDefaultMaterialForObject”就是加载该函数的地方 var threeMaterial = new THREE.MeshPhongMaterial({ specular: material.properties.spe

这个问题有解决办法吗?如果我将materialdefinition从MeshPhone更改为MeshLambert,一切都会按预期工作,否则就不会(但仅在某些计算机上,我的开发机器工作正常)

“MaterialConfService”中的函数“loadDefaultMaterialForObject”就是加载该函数的地方

var threeMaterial = new THREE.MeshPhongMaterial({
    specular: material.properties.specular,
    emissive: material.properties.emissive,
    shininess: material.properties.shininess,
});
将“MeshPhongMaterial”替换为“MeshLambertMaterial”效果不错,但我需要使用phong进行高光处理


有人知道这里可能发生了什么吗?

无法重现错误,但我从这里开始:

尝试注释掉light.castShadow=true:

  var pLight = new THREE.PointLight(0xffffff,0.25);
  //pLight.castShadow = true;
  pLight.position.set(50,100,50);
  _this.scene.add(pLight);

  var pLight02 = new THREE.PointLight(0xefeeeee,0.2);
  //pLight02.castShadow = true;
  pLight02.position.set(-50,100,50);
  _this.scene.add(pLight02);

  var pLight03 = new THREE.PointLight(0xffffff,0.2);
  //pLight03.castShadow = true;
  pLight03.position.set(0,75,-75);
  _this.scene.add(pLight03);  
三.点光源无法投射阴影,并导致错误


有关更多信息,请参见

,您希望我们如何调试缩小的代码?我深表歉意。我上传了一个带有未统一源代码的版本(确实将其全部放在一个文件中)。在第560行的“MaterialConfService”中,它构建了材料。如果我把“MeshPhongMaterial”换成“MeshLambertMaterial”,一切都会按预期进行。现在,所有的东西都呈现黑色。它在呈现黑色的机器上会出现任何错误吗?渲染循环中有一个错误,表明Three.ShadowMapPlugin的点光源设置有问题。但我无法对其进行堆栈跟踪,因为打开调试器会导致chrome崩溃;渲染循环在每一帧都会遇到此错误。与此相关的是,出现黑色的meshlambert和Meshfong材质不会被灯光照亮。他们需要一个有效的光来计算他们的视觉效果。有些浏览器可能无法像其他浏览器一样处理观察到的错误。我会切换到方向灯,看看问题是否依然存在。小提琴也会有帮助。