标签: directional-light

在 THREE.js 中设置定向光的目标

我的模型远离原点,我希望有定向光像阳光一样照射到模型上。

我为 DirectionalLight 设置了位置和目标:

export const dirLight = getDirectional(); 
function getDirectional()  {
    const dirLight = new DirectionalLight( 0xffffff, 1 );
    dirLight.position.set( 585000 + 10000, 6135000 + 10000, -500 + 5000);

    return dirLight;
};


const helper = new THREE.DirectionalLightHelper( dirLight, 1000 );
let t = new THREE.Object3D();
t.translateX(585000);
t.translateY(6135000);
t.translateZ(1000);
dirLight.target = t;
scene.add(dirLight);
scene.add(dirLight.target);
scene.add(t);
helper.update();
scene.add( helper );
Run Code Online (Sandbox Code Playgroud)

我希望现在的光方向与光位置和光目标之间的矢量平行,但显然光方向仍然朝向场景的原点。我究竟做错了什么 ?

可以在这里看到一个运行示例

three.js directional-light

6
推荐指数
1
解决办法
6354
查看次数

在collada对象上剥离阴影

我有一个带有两个collada物体和一个定向灯的场景.第一个collada几乎是一个平面,第二个是由多个盒子组成.

看起来当渲染场景时,一些"侧面"阴影确实被剥离,尽管在地面上投射的阴影很好地渲染.

这是阴影的截图.

当我正在寻找答案时,我发现它可能是我的collada的一个问题,所以我在场景中添加了一个基本的立方体(最重要的一个),但似乎它有同样的问题.

有没有人有提示或已经知道这个问题?

我正在使用最后三个.js版本atm(r71),在Google Chrome和Mozilla Firefox(MacOS)上测试过.我已经尝试调整定向灯的所有阴影*属性,除了与shadowCascade(我不使用)相关的属性.我还测试了调整与阴影相关的渲染器的属性.

这是我的灯光设置:

var directionalLight = new THREE.DirectionalLight( 0xffffff, 1 );
directionalLight.target.position = THREE.Vector3(0, 0, 0);
directionalLight.position.set( 250, 500, 250 );
directionalLight.castShadow = true;
directionalLight.shadowCameraNear = 100;
directionalLight.shadowCameraFar = 1000;
directionalLight.shadowMapWidth = 2048;
directionalLight.shadowMapHeight = 2048;
directionalLight.shadowBias = 0.0001;
directionalLight.shadowDarkness = 0.5;
directionalLight.shadowCameraLeft = -300;
directionalLight.shadowCameraRight = 300;
directionalLight.shadowCameraTop = 300;
directionalLight.shadowCameraBottom = -300;
directionalLight.shadowCameraVisible = true;
Run Code Online (Sandbox Code Playgroud)

我的collada对象有点大,我的shadowCamera边界也是如此.

我的渲染器设置:

renderer = new THREE.WebGLRenderer( {antialias: true} );
renderer.setClearColor(0x222222);
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;
renderer.shadowMapType …
Run Code Online (Sandbox Code Playgroud)

javascript shadow three.js directional-light

5
推荐指数
1
解决办法
403
查看次数

三.js 光从相机直接照射到物体

在我的三个 js 设置中,我对定向光进行了以下设置:

private aLight: THREE.DirectionalLight;

this.aLight = new THREE.DirectionalLight(0xffffff, 1.0);
this.aLight.position.set(-5, 5, 5);

this.aScene.add(this.aLight);
Run Code Online (Sandbox Code Playgroud)

为了让光线跟随我的相机并始终照亮我的网格,我在渲染函数中设置了以下内容:private onRender() {

this.aLight.position.copy(this.aCamera.getWorldPosition());

window.requestAnimationFrame(_ => this.onRender());
this.aRenderer.render(this.aScene, this.aCamera);
Run Code Online (Sandbox Code Playgroud)

现在,物体总是被照亮:

在此处输入图片说明 在此处输入图片说明

但是如果我放大面向相机的表面是暗的:

在此处输入图片说明

我想让我的光总是从我的相机指向物体。我究竟做错了什么?

camera three.js directional-light

2
推荐指数
1
解决办法
1805
查看次数

标签 统计

directional-light ×3

three.js ×3

camera ×1

javascript ×1

shadow ×1