작성
·
369
0
결과물을 보니 텍스처가 적용이 안되어서 검은색으로만 보이더라고요. 텍스처경로도 맞고 오탈자도 없는데 텍스처 적용이 안 되네요.
// Planet
const texturePlanet = textureLoader.load('/public/jupiter2_1k.jpg');
texturePlanet.anisotropy = 16;
const planetGeometry = new THREE.SphereGeometry(10, 50, 50);
const planetMaterial = new THREE.MeshPhongMaterial({
map: texturePlanet,
fog: false
});
planet = new THREE.Mesh(planetGeometry, planetMaterial);
console.log(planetMaterial);
planet.position.set(0, 8, -30);
scene.add(planet);
//Moon
const textureMoon = textureLoader.load('/texture/moon.jpg');
textureMoon.anisotropy = 16;
let moonGeometry = new THREE.SphereGeometry(2, 32, 32);
let moonMaterial = new THREE.MeshPhongMaterial({
map: textureMoon,
fog: false
});
moon = new THREE.Mesh(moonGeometry, moonMaterial);
moon.position.set(0, 8, 0);
scene.add(moon);
// Sphere Background
const textureSphereBg = textureLoader.load('/texture/starlight.jpg');
textureSphereBg.anisotropy = 16;
const geometrySphereBg = new THREE.SphereGeometry(150, 32, 32);
const materialSphereBg = new THREE.MeshBasicMaterial({
side: THREE.BackSide,
map: textureSphereBg,
fog: false
});
sphereBg = new THREE.Mesh(geometrySphereBg, materialSphereBg);
sphereBg.position.set(0, 50, 0);
scene.add(sphereBg);
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
텍스처가 적용되지 않아 검은색으로만 보인다는 문제가 발생하고 있는 것 같네요. 몇 가지 가능한 원인을 알려드릴게요.
텍스처 경로 확인: 코드에 작성된 텍스처 경로(‘/public/jupiter2_1k.jpg’, ‘/texture/moon.jpg’, ‘/texture/starlight.jpg’)가 실제 해당 텍스처 파일이 있는 경로와 일치하는지 확인해주세요. 오타나 경로 문제가 있는 경우 텍스처가 로딩되지 않을 수 있어요.
CORS 정책 확인: 다른 도메인에 위치한 텍스처 파일을 로딩하는 경우, 동일 출처 정책(CORS) 문제가 발생할 수 있어요. 이 문제를 해결하기 위해서는 서버 측에서 CORS 정책을 설정해야 합니다. 로컬 디렉토리에서 텍스처를 로딩하는 경우에도 동일한 문제가 발생할 수 있으니, 이 부분도 확인해보세요.
텍스처 로딩 문제: THREE.TextureLoader를 사용하여 텍스처를 로딩하고 있지만, 텍스처 로딩 도중 오류가 발생하는 경우도 있을 수 있어요. textureLoader.load() 메서드를 사용하여 텍스처를 로딩하기 전에, 텍스처 로딩이 완료될 때까지 기다려야 할 수도 있습니다.
이러한 원인을 확인하고, 문제를 해결해보세요. 만약 더 자세한 정보가 필요하다면, 콘솔로 출력된 에러 메시지를 확인해보시는 것도 도움이 될 수 있어요. 문제가 해결되지 않으면, 좀 더 자세한 정보를 제공해주시면 도움을 드릴 수 있을 것 같아요.