컴퓨터 3D 그래픽/미니 프로젝트(화염방사기)

최종 화염방사기의 아지랑이 효과 구현하기

JongSeok_12 2025. 2. 20. 22:30

2️⃣ 핵심 개념: Normal Map과 벡터(3Vector)

(1) Normal Map(노멀 맵)이란?

Normal Map은 3D 표면의 굴곡을 가짜로 표현하는 특수한 텍스처입니다.
이 텍스처를 사용하면 실제로 표면이 기울어진 것처럼 보이게 만들 수 있어요.

🟢 RGB 값이 표면 기울기를 나타냄

  • X축 (Red 채널) → 좌우 방향 기울기
  • Y축 (Green 채널) → 위아래 방향 기울기
  • Z축 (Blue 채널) → 표면이 얼마나 평평한지 (보통 1.0)

🔹 예제:
만약 Normal Map이 (1,1,1) 값이라면, X와 Y 방향으로 강하게 기울어져 있는 것입니다.
이 값을 이용해 빛이 굴절되는 효과(Heat Distortion)를 만들 수 있습니다.

(2) 3Vector (3벡터)와 Normal Map의 관계

강의에서 설명한 것처럼 3벡터(Vector3)에서 X, Y 값을 조절하면 왜곡 강도가 달라집니다.

  • Vector3(0,0,1) → 평평한 표면 (왜곡 없음)
  • Vector3(0.5,0.5,1) → 살짝 기울어진 표면 (약한 왜곡)
  • Vector3(1,1,1) → 강하게 기울어진 표면 (강한 왜곡)

👉 X, Y 값이 클수록 더 많이 기울어져서, 굴절(Refraction) 효과가 강해짐!
👉 반대로 X, Y 값을 0에 가깝게 하면 왜곡이 줄어듦.


3️⃣ Heat Distortion 머티리얼 제작 과정

머티리얼에서 열 왜곡 효과를 만들기 위해 3가지 핵심 작업을 수행해야 합니다.

📌 1. 기본 설정 (반투명 & Unlit)

  1. 새로운 머티리얼 생성 (M_HeatDistortion_Master)
  2. Blend Mode: Opaque → Translucent (반투명)
  3. Shading Model: Default Lit → Unlit (조명 영향 X)
  4. Opacity를 0으로 설정 → 완전히 투명한 오브젝트 생성

💡 🔎 용어 설명:

  • Blend Mode (블렌드 모드) → 오브젝트의 투명도를 결정 (Opaque: 불투명, Translucent: 반투명)
  • Shading Model (쉐이딩 모델) → 표면이 조명에 어떻게 반응할지 결정 (Unlit: 빛 영향을 받지 않음)

📌 2. Refraction (굴절) 효과 추가

🔥 Refraction(굴절) 값을 조정하여 빛을 휘게 만듦

  1. Refraction 값 1.33 (물의 굴절율) 설정
  2. 굴절 효과를 적용할 Normal Map 추가
    • HT_Noise_Normal_B 또는 T_Noise_Normal_A 사용
  3. Normal Map을 Normal 소켓에 연결

💡 🔎 용어 설명:

  • Refraction (굴절) → 빛이 다른 매질을 통과하면서 방향이 바뀌는 현상
  • Normal Map → 표면의 기울기를 가짜로 표현하는 텍스처

📌 3. Panner (패너) 노드를 활용한 왜곡 애니메이션

🔥 Panner 노드를 사용하여 텍스처가 움직이게 만들어 동적인 왜곡 효과 추가

  1. Panner 노드 추가
    • Speed X: 0.1
    • Speed Y: 0.1
  2. Normal Map의 UV 입력에 연결
  3. Texture가 부드럽게 흐르면서 왜곡 효과 생성

💡 🔎 용어 설명:

  • Panner (패너) → 텍스처를 지속적으로 이동시키는 노드
  • UV → 텍스처가 모델에 어떻게 매핑되는지 결정하는 좌표 시스템

📌 4. 네모난 왜곡 제거 - 3Vector + Lerp 사용

🔥 Lerp(Linear Interpolation) 노드를 사용하여 불필요한 네모난 왜곡 제거!

✅ A 값 (기본값 - 왜곡 없는 상태)

  • Vector3(0,0,1) → Z 값만 1.0으로 설정하여 완전히 평평한 상태 유지
  • 즉, X, Y 값을 0으로 하면 Normal Map이 적용되지 않아 왜곡이 사라짐

✅ B 값 (적용할 왜곡 텍스처)

  • 원래 적용하려던 **울렁이는 텍스처(Normal Map)**을 연결

✅ Alpha 값 (마스크 - 왜곡이 적용될 영역)

  • Mask(마스크) 텍스처를 사용하여 왜곡이 적용될 부분을 지정
  • 테두리 부분은 0 (A값 사용 → 왜곡 없음),
    중앙 부분은 1 (B값 사용 → 왜곡 적용)

이렇게 하면 테두리는 평평하게 유지되면서, 원하는 부분에만 왜곡이 적용됨!


4️⃣ 최종 조정 및 테스트

🔥 Material Instance를 사용하여 세부 값 조정 가능

  • Speed X, Speed Y → 왜곡 이동 속도
  • Refraction Rate → 왜곡 강도 (1.2~1.5)
  • Mask Contrast → 왜곡이 적용될 범위