我不明白为什么照明不能在我的代码中工作。我下载了一个简单的OBJ。文件来测试OBJLoader,但该模型不受影响。在我更多地编辑照明之前,至少环境光照会起作用。也许是OBJ。模型需要纹理?为什么照明在Three.js中不起作用?
var container, stats;
var camera, scene, renderer, controls;
init();
animate();
function init() {
container = document.createElement('div');
document.body.appendChild(container);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 2000);
camera.position.z = 2.5;
scene.add(camera);
controls = new THREE.TrackballControls(camera);
controls.rotateSpeed = 2.0;
controls.zoomSpeed = 1.2;
controls.panSpeed = 0.0;
controls.noZoom = false;
controls.noPan = true;
controls.staticMoving = true;
controls.dynamicDampingFactor = 0.3;
controls.keys = [ 65, 83, 68 ];
controls.addEventListener('change', render);
var ambient = new THREE.AmbientLight(0x020202);
scene.add(ambient);
directionalLight = new THREE.DirectionalLight(0xffffff);
directionalLight.position.set(1, 1, 0.5).normalize();
scene.add(directionalLight);
pointLight = new THREE.PointLight(0xffaa00);
pointLight.position.set(0, 0, 0);
scene.add(pointLight);
sphere = new THREE.SphereGeometry(100, 16, 8);
lightMesh = new THREE.Mesh(sphere, new THREE.MeshBasicMaterial({ color: 0xffaa00 }));
lightMesh.scale.set(0.05, 0.05, 0.05);
lightMesh.position = pointLight.position;
scene.add(lightMesh);
var loader = new THREE.OBJLoader();
loader.load("originalMeanModel.obj", function (object) {
scene.add(object);
});
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
container.appendChild(renderer.domElement);
}
function animate() {
requestAnimationFrame(animate);
controls.update();
}
function render() {
camera.lookAt(scene.position);
renderer.render(scene, camera);
}
您能分享您正在加载的obj文件吗? – mrdoob
照明根本不起作用吗?或者只是阴影?您可以拥有定向照明,而不会有任何物体投射的实际阴影。 –