MeshLambertMaterial은 Three.js에서 사용되는 재질(Material) 중 하나로, 빛을 반사하는 표면을 표현하는 데 사용됩니다. 이 재질은 램버트 반사(Lambertian reflection) 모델을 기반으로 하며, 빛이 물체 표면에 부드럽게 퍼지는 효과를 만듭니다. 주로 빛의 영향을 받는 매트한 표면(예: 종이, 플라스틱, 벽 등)을 표현할 때 사용됩니다.
MeshLambertMaterial의 특징
- 램버트 반사 모델:
- 빛이 물체 표면에 부드럽게 퍼지는 효과를 구현합니다.
- 빛의 방향과 표면의 각도에 따라 밝기가 달라집니다.
- 빛의 영향을 받음:
- MeshLambertMaterial은 조명(directionalLight, ambientLight 등)의 영향을 받습니다.
- 조명이 없으면 물체가 완전히 검은색으로 보입니다.
- 성능 효율적:
- MeshPhongMaterial이나 MeshStandardMaterial보다 계산이 간단해 성능이 좋습니다.
- 하지만 반사나 광택 효과는 표현할 수 없습니다.
MeshLambertMaterial의 주요 속성
MeshLambertMaterial은 다양한 속성을 통해 재질의 외관을 커스터마이징 할 수 있습니다. 주요 속성은 다음과 같습니다:
1. color
- 물체의 기본 색상을 설정합니다.
- 예: color="#468558", color={0x468558}, color="green"
2. emissive
- 물체가 스스로 빛을 내는 색상을 설정합니다.
- 조명의 영향을 받지 않습니다.
- 예: emissive="#468558", emissive={0x468558}
3. emissiveIntensity
- emissive의 강도를 설정합니다.
- 기본값은 1이며, 값을 높이면 더 밝아집니다.
- 예: emissiveIntensity={2}
4. wireframe
- 물체를 와이어프레임 형태로 표시합니다.
- 예: wireframe={true}
5. transparent
- 물체를 반투명하게 만듭니다.
- opacity 속성과 함께 사용됩니다.
- 예: transparent={true}, opacity={0.5}
6. opacity
- 물체의 투명도를 설정합니다.
- 0(완전 투명)부터 1(완전 불투명)까지 설정할 수 있습니다.
- transparent={true}일 때만 효과가 있습니다.
7. side
- 재질을 적용할 면을 설정합니다.
- THREE.FrontSide(기본값, 앞면만), THREE.BackSide(뒷면만), THREE.DoubleSide(양면) 중 선택할 수 있습니다.
사용 예제
아래는 MeshLambertMaterial을 사용해 원기둥을 만드는 예제입니다.
import { Canvas } from '@react-three/fiber';
import { OrbitControls } from '@react-three/drei';
const App = () => {
return (
<Canvas>
<OrbitControls />
<ambientLight intensity={0.5} /> {/* 주변 조명 */}
<directionalLight position={[1, 1, 1]} intensity={1} /> {/* 방향성 조명 */}
<mesh>
<cylinderGeometry args={[1, 1, 2]} /> {/* 원기둥 생성 */}
<meshLambertMaterial color="#468558" emissive="#468558" /> {/* 재질 설정 */}
</mesh>
</Canvas>
);
};
export default App;
결과
- 원기둥이 초록색으로 표시되며, 조명의 영향을 받아 부드러운 음영이 생깁니다.
- emissive 속성으로 인해 원기둥이 스스로 빛을 내는 것처럼 보입니다.
MeshLambertMaterial vs 다른 재질
- MeshBasicMaterial:
- 조명의 영향을 받지 않습니다.
- 단순한 색상 표현에 적합합니다.
- MeshPhongMaterial:
- 광택(반사) 효과를 표현할 수 있습니다.
- MeshLambertMaterial보다 계산이 복잡합니다.
- MeshStandardMaterial:
- 물리 기반 렌더링(PBR)을 지원합니다.
- 현실적인 재질 표현에 적합하지만, 성능이 더 많이 요구됩니다.
활용 예시
- 매트한 표면 표현:
- 벽, 바닥, 종이 등 빛을 반사하지만 광택이 없는 표면을 표현할 때 사용합니다.
- 빛나는 효과:
- emissive 속성을 사용해 네온 사인이나 빛나는 장식품을 만들 수 있습니다.
- 와이어프레임 모드:
- wireframe={true}를 사용해 3D 모델의 구조를 시각적으로 분석할 수 있습니다.
주의사항
- MeshLambertMaterial은 광택이나 반사 효과를 표현할 수 없습니다. 이러한 효과가 필요하다면 MeshPhongMaterial이나 MeshStandardMaterial을 사용하세요.
- 조명이 없으면 물체가 검은색으로 보이므로, 반드시 조명을 추가해야 합니다.
이제 MeshLambertMaterial을 활용해 다양한 3D 장면을 만들어보세요! 😊
'프론트엔드 > Three.js' 카테고리의 다른 글
[ Three.js ] 초보자를 위한 회전하는 3D 원기둥 만들기 (0) | 2025.01.31 |
---|---|
Three.js로 간단한 3D 장면 만들기 (0) | 2025.01.28 |
Three.js란 무엇인가? (0) | 2025.01.27 |
댓글