조명이 내 코드에서 작동하지 않는 이유를 모르겠습니다. 나는 간단한 OBJ를 다운로드했다. 파일을 사용하여 OBJLoader를 테스트하지만 모델은 영향을받지 않습니다. 조명을 더 편집하기 전에 적어도 주변 조명이 효과적이었습니다. OBJ일지도 몰라. 모델에 텍스처가 필요합니까? 당신이 며칠 전에 나 같은 같은 문제가 발생하는 경우, 당신은 분명히 어딘가에보고의 당신의 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
조명이 전혀 작동하지 않습니까? 아니면 그냥 그림자 야? 실제 그림자가 객체에 의해 캐스트되지 않고 방향 조명을 가질 수 있습니다. –