본문 바로가기
프론트엔드/Three.js

[ Three.js ] MeshLambertMaterial의 특징

by CODESIGN 2025. 2. 2.

MeshLambertMaterial은 Three.js에서 사용되는 재질(Material) 중 하나로, 빛을 반사하는 표면을 표현하는 데 사용됩니다. 이 재질은 램버트 반사(Lambertian reflection) 모델을 기반으로 하며, 빛이 물체 표면에 부드럽게 퍼지는 효과를 만듭니다. 주로 빛의 영향을 받는 매트한 표면(예: 종이, 플라스틱, 벽 등)을 표현할 때 사용됩니다.

 

 

MeshLambertMaterial의 특징


  1. 램버트 반사 모델:
    • 빛이 물체 표면에 부드럽게 퍼지는 효과를 구현합니다.
    • 빛의 방향과 표면의 각도에 따라 밝기가 달라집니다.
  2. 빛의 영향을 받음:
    • MeshLambertMaterial은 조명(directionalLight, ambientLight 등)의 영향을 받습니다.
    • 조명이 없으면 물체가 완전히 검은색으로 보입니다.
  3. 성능 효율적:
    • 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 다른 재질


  1. MeshBasicMaterial:
    • 조명의 영향을 받지 않습니다.
    • 단순한 색상 표현에 적합합니다.
  2. MeshPhongMaterial:
    • 광택(반사) 효과를 표현할 수 있습니다.
    • MeshLambertMaterial보다 계산이 복잡합니다.
  3. MeshStandardMaterial:
    • 물리 기반 렌더링(PBR)을 지원합니다.
    • 현실적인 재질 표현에 적합하지만, 성능이 더 많이 요구됩니다.

 

 

활용 예시


  1. 매트한 표면 표현:
    • 벽, 바닥, 종이 등 빛을 반사하지만 광택이 없는 표면을 표현할 때 사용합니다.
  2. 빛나는 효과:
    • emissive 속성을 사용해 네온 사인이나 빛나는 장식품을 만들 수 있습니다.
  3. 와이어프레임 모드:
    • wireframe={true}를 사용해 3D 모델의 구조를 시각적으로 분석할 수 있습니다.

 

 

주의사항


  • MeshLambertMaterial은 광택이나 반사 효과를 표현할 수 없습니다. 이러한 효과가 필요하다면 MeshPhongMaterial이나 MeshStandardMaterial을 사용하세요.
  • 조명이 없으면 물체가 검은색으로 보이므로, 반드시 조명을 추가해야 합니다.

 

이제 MeshLambertMaterial을 활용해 다양한 3D 장면을 만들어보세요! 😊

댓글