작성
·
81
·
수정됨
0
Material 수업강의 중
2:44초에 roughness이 안먹힙니다..
빛반사가 안되는데 확인 부탁드려요 ㅜ
<script async src="https://ga.jspm.io/npm:es-module-shims@2.0.10/dist/es-module-shims.js"></script>
<script type="importmap">
{
"imports":{
"three" : "https://cdn.jsdelivr.net/npm/three@0.174.0/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.174.0/examples/jsm/"
}
}
import * as THREE from "three";
const $result = document.querySelector("#result");
// 1. Scene : 화면에서 보여주려는 객체를 담는 공간
const scene = new THREE.Scene();
// scene.add(요소)
scene.background = new THREE.Color(0xffe287);
// 2. Camera : 신을 바라볼 시점을 결정
const camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(2, 2, 2);
camera.lookAt(0, 0, 0);
// 3. Renderer : Scene+Camera, 화면을 그려주는 역할
const renderer = new THREE.WebGLRenderer({
canvas: $result, antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
// console.log(renderer);
// document.body.appendChild(renderer.domElement)
const light = new THREE.DirectionalLight(0xffffff);
light.position.set(2, 4, 3);
scene.add(light);
const geometry = new THREE.BoxGeometry(1, 1, 1)
const basic = new THREE.MeshBasicMaterial({
color: 0x2e6ff2,
// wireframe: true,
transparent: true,
opacity: 0.5
});
// 가장 일반적으로 사용 됨.
const standard = new THREE.MeshStandardMaterial({
color: 0xffaaaa,
roughness: 0.2,
});
const mesh = new THREE.Mesh(geometry, standard);
scene.add(mesh);
function animate() {
// box.rotation.y += 0.01;
// box.rotation.x += 0.01;
// console.log(box.rotation.y);
renderer.render(scene, camera);
requestAnimationFrame(animate);
}
animate();
// 반응형을 위한 함수
window.addEventListener("resize", () => {
// 1. 카메라의 종횡비
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix(); //카메라 업데이트
// 2. renderer의 크기
renderer.setSize(window.innerWidth, window.innerHeight);
});
답변 2
0
조명 값이 변경된 듯 합니다. 다른 문제는 없었고 조명 값 변경했더니 해결했습니다.
const light = new THREE.DirectionalLight(0xffffff, 3.1);
0
안녕하세요, 인프런 AI 인턴입니다.
Three.js에서 roughness
속성이 작동하지 않는 문제를 겪고 계신 것 같습니다. roughness
속성은 MeshStandardMaterial
의 속성으로, 표면의 거칠기를 나타내며 빛 반사를 조절하는데 중요한 역할을 합니다. 이 속성이 효과를 보기 위해서는 광원 설정과 물체의 재질 모두가 적절히 구성되어야 하는데, 아래 몇 가지 점을 확인해 보실 수 있습니다:
광원 확인:
DirectionalLight
인데요, 이 광원은 이름대로 방향성을 갖는 빛을 주로 조사합니다. MeshStandardMaterial
와 같은 물리 기반 재질이 적용된 메쉬에서는 빛의 방향과 강도에 따라 roughness
효과가 다르게 나타날 수 있습니다.PointLight
또는 AmbientLight
를 추가적으로 사용해 보시면 각기 다른 빛의 영향을 확인할 수 있습니다. AmbientLight
는 전체적인 환경 빛을 추가하여 물체가 고르게 빛을 받을 수 있게 합니다.Material 설정 확인:
MeshStandardMaterial
의 roughness
와 함께 metalness
를 조정해보세요. 이 두 속성은 상호작용하며 표면의 반사광 느낌을 세밀하게 조절합니다. 예를 들어, metalness
를 0.5 정도로 낮게 설정하여 시작해 보시면 좀 더 광택있는 느낌을 받을 수 있습니다.렌더러 설정:
renderer
가 인스턴스화될 때 antialias: true
옵션이 설정되어 있습니다. 이 옵션은 가장자리에 있던 시각적 왜곡을 줄여줍니다.physicalCorrectLights
라는 속성(필요한 경우 추가)이나 toneMapping
설정(예를 들어 THREE.ACESFilmicToneMapping
)을 적용해주는 것도 반사광 조정을 도와줄 수 있습니다.관련된 질문과 답변은 아래에서 확인하실 수 있습니다:
- 떨어져보는 Three.js의 roughness 문제 해결 방법 (강의 자료에 포함된 내용은 외부에서 참고할 수 없습니다)
위의 설명이 도움이 되었기를 바랍니다. 문제 해결에 어려움이 있다면, 추가적인 정보를 주시면 더 많은 도움을 드릴 수 있습니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.