Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d Three.js-盒子所有侧面的平行灯?_3d_Three.js - Fatal编程技术网

3d Three.js-盒子所有侧面的平行灯?

3d Three.js-盒子所有侧面的平行灯?,3d,three.js,3d,Three.js,我有一个用户自定义的3D框,可以使用Three.js使用OrbitControl进行旋转/旋转。该功能按预期工作,但是,由于用户需要在自定义框颜色时查看框颜色,因此很难获得正确的照明,我使用的环境光设置如下: var light = new THREE.AmbientLight(0xffffff); // White light scene.add(light); 环境光的问题在于,虽然它似乎保留了用户选择的颜色,但深度/清晰度会丢失,因为框显示为打开状态,用户希望看到深度: 如果我将环境光

我有一个用户自定义的3D框,可以使用Three.js使用OrbitControl进行旋转/旋转。该功能按预期工作,但是,由于用户需要在自定义框颜色时查看框颜色,因此很难获得正确的照明,我使用的环境光设置如下:

var light = new THREE.AmbientLight(0xffffff); // White light
scene.add(light);
环境光的问题在于,虽然它似乎保留了用户选择的颜色,但深度/清晰度会丢失,因为框显示为打开状态,用户希望看到深度:

如果我将环境光设置为示例中所示的默认值,我会获得更高的深度/清晰度,但会因为灯光不同而丢失颜色:

这让我尝试了平行光,目标是我可以在顶部、底部和侧面使用平行光。然而,我对如何实现这一点感到困惑,这样我就可以在各个方面都有灯光。深度/锐度看起来很棒,但我不知道position.set(0,0,0)的坐标代表什么。我怀疑是x,y,z。有了下面的代码,我可以覆盖部分盒子,但不是全部。我需要它像环境灯一样全部点亮,但要有使用定向灯的深度。这是我目前的代码:

var directionalLight = new THREE.DirectionalLight(0xffffff, 0.5);
directionalLight.position.set(0, 1, 0);
scene.add(directionalLight);

var directionalLight2 = new THREE.DirectionalLight(0xffffff, 0.5);
directionalLight2.position.set(1, 0, 0);
scene.add(directionalLight2);

var directionalLight3 = new THREE.DirectionalLight(0xffffff, 0.5);
directionalLight3.position.set(0, 0, 1);
scene.add(directionalLight3);
顶部和两侧的照明效果良好:

但不包括其他侧面和底部:

可以为我的箱子的每一侧、顶部和底部提供方向灯吗?如果是,我需要做什么?是否需要添加更多具有不同坐标的灯光? 更新:

更新:使用此处的帖子,我可以获得光线,因为我使用的是轨道控制

这就给了我:

唯一的问题是,在第一次加载时,在用户交互之前,它都是黑色的。有没有关于如何更改此行为以便在加载时显示颜色的想法


如果您希望使用与
轨道控制
轨迹球控制
配合良好的均匀照明,可以使用以下模式:

// light
var light = new THREE.PointLight( 0xffffff, 0.9 );
camera.add( light );
将灯光添加为摄影机的子对象时,必须记住将摄影机添加为场景的子对象:

scene.add( camera );
如果使用此图案,则场景中不需要任何其他灯光


three.js r.73

如果您希望使用与
轨道控制装置
轨迹球控制装置
配合使用的均匀照明,可以使用以下模式:

// light
var light = new THREE.PointLight( 0xffffff, 0.9 );
camera.add( light );
将灯光添加为摄影机的子对象时,必须记住将摄影机添加为场景的子对象:

scene.add( camera );
如果使用此图案,则场景中不需要任何其他灯光


three.js r.73

非常有效。灯光是否会影响边缘的像素化程度,或者这是另一个问题?请尝试
renderer=new THREE.WebGLRenderer({antialas:true})工作起来很有魅力。灯光是否会影响边缘的像素化程度,或者这是另一个问题?请尝试
renderer=new THREE.WebGLRenderer({antialas:true})