我目前有一个 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();
请记住我在这个项目中有超过一千行代码,所以我不能全部发布,但如果人们有想法我可以抓取片段,
任何帮助将不胜感激