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