three.js에서 3 가지 색상의 큐브를 채색하려고하는데 THREE 양에 약간의 모자를 치는 것처럼 보입니다. 장면에 추가 할 수있는 DirectionalLight 개체 . 문서에서 나는 이와 같은 한계에 대한 언급을 볼 수 없으므로 이것이 사실인지 아니면 내가 다른 것을 놓치고 있는지 궁금해하고 있습니까? 상단, 하단, 전면, 뒷면, 왼쪽 및 오른쪽 : 여기에서 Three.js에서 큐브를 채색하려고 시도합니다.
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800, 600);
document.body.appendChild(renderer.domElement);
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(
35, // Field of view
800/600, // Aspect ratio
0.1, // Near plane
10000 // Far plane
);
camera.position.set(-15, 10, 10);
camera.lookAt(scene.position);
scene.add(camera);
var cube = new THREE.Mesh(
new THREE.CubeGeometry(5, 5, 5),
new THREE.MeshLambertMaterial({ color: 0xFFFFFF })
);
scene.add(cube);
// top
light = new THREE.DirectionalLight(0x0DEDDF);
light.position.set(0, 1, 0);
scene.add(light);
// bottom
light = new THREE.DirectionalLight(0x0DEDDF);
light.position.set(0, -1, 0);
scene.add(light);
// back
light = new THREE.DirectionalLight(0xB685F3);
light.position.set(1, 0, 0);
scene.add(light);
// front
light = new THREE.DirectionalLight(0xB685F3);
light.position.set(-1, 0, 0);
scene.add(light);
// right
light = new THREE.DirectionalLight(0x89A7F5);
light.position.set(0, 0, 1);
scene.add(light);
// left
light = new THREE.DirectionalLight(0x89A7F5);
light.position.set(0, 0, -1);
scene.add(light);
renderer.render(scene, camera);
당신은 측면 착색되는 것을 볼 수 있습니다. 첫 번째 4 개가 그려지며 마지막 두 개는 그려지지 않습니다. 순서를 바꾸어보십시오. 이견있는 사람?
감사합니다, 존! 나는 이것이 성능상의 이유로 인한 것이라고 가정하고 있습니다. 큐브를 색칠하는 더 효율적인 방법이 있습니까? – stupidkid
답변을 수정하십시오 : 조명을 사용하지 않고 재료를 사용하여 다양한 색상의 얼굴을 만들 수 있습니다. –
그게 더 좋은 해결책이 될까요? 시간 내 주셔서 다시 한번 감사드립니다. – stupidkid