three js只有一些孩子的阴影显示

问题描述 投票:0回答:0

我目前有一个 GLB 模型的场景,该模型有子网格,但只有一些在投射阴影

可以看到peripherals这个词,大岛小岛和鲸鱼都有影子,其他的没有,

我目前正在使用这个。

  gltf.scene.traverse(function(child) {
  if (child.isMesh) {
  child.castShadow = true;
  child.receiveShadow = true;
}
})

这似乎工作正常,对于模型的某些部分而不是其他部分,我尝试了我在互联网上可以找到的一切,但没有任何效果,我也尝试了我在 c4d 中的一切,但仍然没有改变。

我正在使用这盏灯:

const sunLight = new THREE.DirectionalLight(0xe8c37b, 0.96);
sunLight.position.set(10, 30, -60);
sunLight.castShadow = true
scene.add(sunLight);

我也在使用水和太阳来反射/天空,(不确定这是不是它的原因,但我认为我添加它以供参考)

function updateSun() {
const phi = THREE.MathUtils.degToRad(90 - parameters.elevation);
const theta = THREE.MathUtils.degToRad(parameters.azimuth);

sun.setFromSphericalCoords(1, phi, theta);

sky.material.uniforms["sunPosition"].value.copy(sun);
water.material.uniforms["sunDirection"].value.copy(sun).normalize();
water.material.uniforms["size"].value = 100;

if (renderTarget !== undefined) renderTarget.dispose();

renderTarget = pmremGenerator.fromScene(sky);

scene.environment = renderTarget.texture;
}

updateSun();

请记住我在这个项目中有超过一千行代码,所以我不能全部发布,但如果人们有想法我可以抓取片段,

任何帮助将不胜感激

three.js shadow traversal
© www.soinside.com 2019 - 2024. All rights reserved.