为什么我的定向光不影响整个场景?
Why doesn't my directional light affect the whole scene?
请看这个fiddle - http://jsfiddle.net/vnr2v6mL/
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.BoxGeometry(100, 100, 1);
var material = new THREE.MeshPhongMaterial({ color: 0x00ff00 });
var plane = new THREE.Mesh(geometry, material);
scene.add(plane);
camera.position.z = 5;
//scene.add(new THREE.AmbientLight(0xdddddd));
var dl = new THREE.DirectionalLight(0x0000ff, 1.0);
dl.position.set(0, 0, 10);
scene.add(dl);
scene.add( new THREE.DirectionalLightHelper(dl, 2.5) );
function render() {
requestAnimationFrame( render );
renderer.render( scene, camera );
}
render();
$(document).ready(function() {
$(document).bind("mousewheel DOMMouseScroll", function(e) {
var delta = e.type === 'DOMMouseScroll' ? -e.originalEvent.detail : e.originalEvent.wheelDelta;
camera.position.z += delta / 120;
});
});
按我的理解,光照应该是无限平行的,为什么我的场景只点亮了中间的一个圆圈?
提前致谢。
您正在使用 MeshPhongMaterial
。您看到的只是镜面高光。
你的灯是蓝色的。但是,您的 material 是绿色的,因此它只反射绿光。因此,没有从 material.
反射的漫射光
material specular
反射率默认为 0x111111
。所以所有的颜色都会被镜面反射。由于您的灯是蓝色的,因此您会得到镜面反射的蓝光。也就是说,一个蓝色的"hot spot".
考虑使用白光,0xffffff
,并调整光强度。
Fiddle: http://jsfiddle.net/vnr2v6mL/1/
three.js r.70
请看这个fiddle - http://jsfiddle.net/vnr2v6mL/
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.BoxGeometry(100, 100, 1);
var material = new THREE.MeshPhongMaterial({ color: 0x00ff00 });
var plane = new THREE.Mesh(geometry, material);
scene.add(plane);
camera.position.z = 5;
//scene.add(new THREE.AmbientLight(0xdddddd));
var dl = new THREE.DirectionalLight(0x0000ff, 1.0);
dl.position.set(0, 0, 10);
scene.add(dl);
scene.add( new THREE.DirectionalLightHelper(dl, 2.5) );
function render() {
requestAnimationFrame( render );
renderer.render( scene, camera );
}
render();
$(document).ready(function() {
$(document).bind("mousewheel DOMMouseScroll", function(e) {
var delta = e.type === 'DOMMouseScroll' ? -e.originalEvent.detail : e.originalEvent.wheelDelta;
camera.position.z += delta / 120;
});
});
按我的理解,光照应该是无限平行的,为什么我的场景只点亮了中间的一个圆圈?
提前致谢。
您正在使用 MeshPhongMaterial
。您看到的只是镜面高光。
你的灯是蓝色的。但是,您的 material 是绿色的,因此它只反射绿光。因此,没有从 material.
反射的漫射光material specular
反射率默认为 0x111111
。所以所有的颜色都会被镜面反射。由于您的灯是蓝色的,因此您会得到镜面反射的蓝光。也就是说,一个蓝色的"hot spot".
考虑使用白光,0xffffff
,并调整光强度。
Fiddle: http://jsfiddle.net/vnr2v6mL/1/
three.js r.70