gpt4 book ai didi

javascript - 当 DirectionalLight 附加到玩家对象时出现徘徊的阴影

转载 作者:行者123 更新时间:2023-12-01 00:16:14 25 4
gpt4 key购买 nike

我正在尝试让定向光随玩家移动。我这样做是为了提高阴影质量,使阴影相机的尺寸可以更小。当玩家移动时,阴影会稍微移动。看起来它跟随玩家的距离不够近。

我在这张质量非常差的 gif 中遇到了以下问题; enter image description here

有更好的方法吗?或者我忘记更新什么了?如有任何建议,我们将不胜感激:)

在玩家类中,我有一个对象,我将相机附加到该对象上并将该对象用作灯光的目标。然后在player.update函数中我设置了灯光位置并偏移了对象的位置。

class Player{

constructor(){
this.object = new THREE.Object3D();
scene.add( this.object );
this.object.add( camera );

this.directionalLightOffset = new THREE.Vector3(-5000, 2, 5);

this.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.85 );
scene.add( this.directionalLight);

this.directionalLight.position.copy( this.directionalLightOffset );

this.directionalLight.castShadow = true;
this.directionalLight.shadow.mapSize.width = 750;
this.directionalLight.shadow.mapSize.height = 750;
this.directionalLight.shadow.camera.left = -2000;
this.directionalLight.shadow.camera.right = 2000;
this.directionalLight.shadow.camera.top = -2000;
this.directionalLight.shadow.camera.bottom = 2000;
this.directionalLight.shadow.camera.near = 0.5;
this.directionalLight.shadow.camera.far = 90000;

this.directionalLight.target = this.object;
}

update(){
this.directionalLight.position.copy( this.object.position );
this.directionalLight.add( this.directionalLightOffset );
}
}

最佳答案

尝试仅以阴影贴图像素大小或类似大小的增量移动相机。即使只是延迟移动相机的频率也可以最大限度地减少闪烁。因此,在玩家周围放置一个半径,并且仅在玩家走出该半径时重置相机位置。

关于javascript - 当 DirectionalLight 附加到玩家对象时出现徘徊的阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59741501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com