언리얼 엔진 4용 커스텀 천 재질

25
언리얼 엔진 4커스텀 재질 김동석 2016-04-11

Upload: -

Post on 14-Apr-2017

1.491 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 언리얼 엔진 4용 커스텀 천 재질

언리얼 엔진 4용 커스텀 천 재질

김동석2016-04-11

Page 2: 언리얼 엔진 4용 커스텀 천 재질

■ 두 가지 천 재질⚬ 비 금속성: 면, 데님, 아마나 일반 천⚬ 금속성: 비단, 새틴, 벨뱃, 나일론이나 폴리에스테르

■ The Order approach■ 언리얼 매테리얼 에디터의 한계■ My approach

⚬ Oren-nayar diffuse shading⚬ Specular Term⚬ Fiber Scatter Term

■ 결과

목차

2

Page 3: 언리얼 엔진 4용 커스텀 천 재질

두 가지 천 재질: 비 금속성

■ 면, 데님, 아마나 일반 천 재질⚬ 각 섬유에 작은 털들이 있음

⬝ 물에 젖지 않는 한, 이런 천 재질들의 Roughness 값은 1.0⬝ 빛을 랜덤한 방향으로 반사⬝ 이런 성질은 Front Scattering과 Back Scattering 효과를 만듬

� 섬유의 잔털 때문에 생기는 림 라이트 효과⚬ Specular는 보는 면에 넓게 생김

⬝ Specular의 색은 흰색이나, Front Scattering 때문에 약간 낮은 채도의 Base Color처럼 보임

3

Page 4: 언리얼 엔진 4용 커스텀 천 재질

두 가지 천 재질: 금속성 (1)

■ 실크, 새틴, 벨뱃, 나일론이나 폴리에스테르⚬ 실크는 둥근 삼각형 모양의 단면과 매끈한 표면을 가짐

⬝ 이런 섬유 구조는 금속의 반사 성질과 유사⬝ 매끈한 표면: 빛을 금속처럼 완벽하게 반사⬝ 삼각형 모양의 단면: 특정 파동의 빛을 반사

⚬ 실크는 0.3 - 0.7의 Rouness값을 가질 수 있음⬝ 각 섬유의 굵기는 5 - 10 μm⬝ 이 굵기는 금속같이 매끈한 표면을 만들기에 충분히 가는 수치

4

Page 5: 언리얼 엔진 4용 커스텀 천 재질

두 가지 천 재질: 금속성 (2)

■ 실크와 사틴의 특징⚬ 면이나 일반 천과 달리, 잔털들이 훨씬 적음

⬝ 치밀한 구조를 갖기 때문에 금속과 비슷한 Specular 성질을 보임

⚬ 다양한 Specular 색을 가질 수 있음⬝ 다른 색의 섬유로 직조된 경우

⬝ Specular Color는 보는 각도에 따라 다르게 보일 수 있음

⚬ Anistropic specular 모양을 가짐

5

Page 6: 언리얼 엔진 4용 커스텀 천 재질

두 가지 천 재질: 금속 (3)

■ 벨뱃의 특징⚬ 작은 섬유들이 표면에 수직으로 세워져 있음

⬝ Roughness 값은 무조건 1.0

⬝ 빛이 뒤쪽에 있다면, 이 섬유들이 Back scattering을 일으켜 Rim Light 효과를 일으킴

⚬ 표면 반사가 금속과 비슷 함⬝ 표면 색이 원래 섬유색보다 어둡게 보임

6

Page 7: 언리얼 엔진 4용 커스텀 천 재질

The Order approach1

■ Custom microfiber model⚬ Fresnel Term에 Ashikhmin’s Distribution BRDF 사용⚬ Specular term에 Inverse Gausian 사용⚬ Rim Light 효과를 높이기 위해 Geometry term은 사용하지 않음⚬ GGX Distribution보다 부드러운 specular

■ 향후 과제⚬ Ambient specular⚬ fresnel term을 빛의 방향과 일치시키는 것

7

Page 8: 언리얼 엔진 4용 커스텀 천 재질

목표

■ 모든 천 재질을 아우를 수 있는 Shading model⚬ 면부터 벨벳 재질까지⚬ 아티스트가 사용하기 쉬울 것

■ 기술적 관점에서의 목표⚬ Oren-nayar diffusion⚬ 천 재질용 Specular term⚬ 2 colors specular⚬ 빛의 방향으로 향하는 Fresnel term

8

Page 9: 언리얼 엔진 4용 커스텀 천 재질

언리얼 매테리얼 에디터의 한계

■ Custom shading 모델을 적용하기 어려움⚬ Diffuse shading: Lambert⚬ Specualr Term을 바꿀 방법이 없음

■ Base Color 슬롯이 Custom shading 모델을 적용할 만한 부분이지만,⚬ 값이 0.0 - 1.0으로 Clamping 됨⚬ 이건 Specular로 사용하기에는 범위가 너무 좁음

다행이, 천 재질은 Specular가 강하지 않아도 되므로, Base Color 슬롯에 전부 구현 하면 됨!

9

Page 10: 언리얼 엔진 4용 커스텀 천 재질

My approach - Diffuse term (1)

■ Oren-nayar diffuse shading⚬ Pope Kim’s approximation 기반

⚬ 실제 Oren-nayar shading과 수학적으로 일치하지 않으나, 효과가 뛰어나며, 싼, 다른 곳에 적용하기 쉬운 모델

■ 원래 코드에서 (n∙l) 부분을 제거

10

1

Page 11: 언리얼 엔진 4용 커스텀 천 재질

My approach - Diffuse term (2)

■ (n∙l)을 1.0으로 교체■ 최종 결과는 Base Color에 Multiply 됨■ 만약 표면에 매끈하다면(Roughness = 0.0), 언리얼의 기본 Diffuse shading인

Lambert diffusion을 사용

11

Page 12: 언리얼 엔진 4용 커스텀 천 재질

My approach - Specular (1)

(Fresnel Term × Specular) + Fiber Scatter

■ Fresnel Term⚬ Rim light 효과

■ Specular Term⚬ Customized inverse gausian specular⚬ Back scattering을 표현하기 위해⚬ Secondary specular lobe

■ Fiber Scatter Term⚬ Front scattering을 표현⚬ Primary specular lobe

12

Page 13: 언리얼 엔진 4용 커스텀 천 재질

My approach - Specular (2)

■ Fresnel term⚬ Schlick Fresnel approximation1 기반

⬝⚬ Rim lighting 효과를 강조하기 위해1 - cosθd 의 5제곱을 4제곱으로 변경

13

Page 14: 언리얼 엔진 4용 커스텀 천 재질

My approach - Specular (3)

■ Specular Term⚬ The Order’s approach 기반

⬝ iverse gausian specular⚬ Roughness 값의 영향을 받진 않으나 훨씬 간단하고 싼 방식

⬝ Roughness 값이 1.0일때 The Order’s approach와 비슷한 결과를 보임⬝ 모든 비 금속성 천들의 Roughness 값이 1.0 이라고 전제

� 만약 천 재질의 Roughness값이 1.0보다 작다면, 언리얼 기본 Specular 사용� Primary specular는 Fiber scatter term에 구현

⚬ Fresnel term을 마스킹 해 주어, 빛의 방향으로 향하는 Specular 구현

14

Page 15: 언리얼 엔진 4용 커스텀 천 재질

My approach - Specular (3)

■ Roughness value⚬ GGX: 0.65⚬ The Order: 1.0⚬ My approach: 1.0

15

Page 16: 언리얼 엔진 4용 커스텀 천 재질

My approach - Fiber Scatter Term (1)

■ Fiber Scatter Term⚬ Wrap lighting for front scattering

⬝ 시점과 수직 되는 면의 약한 투과 효과를 표현⬝ 실크나 새틴같은 재질의 Secondary specualr color로 사용

⚬ 두 가지 Fresnel을 Linear interpolate로 블랜딩⬝ 처음것이 기본 (n∙v) fresnel⬝ 두번째 것이 처음것보다 좀더 좁은 fresnel⬝ 이 두 값을 Fibric scatter amount 값으로 섞는 양을 조절

� 털 많은 면 재질부터 벨뱃 재질까지 표현 가능⬝ Fabric scattering color가 이 값에 multiply 됨

16

Page 17: 언리얼 엔진 4용 커스텀 천 재질

My approach - Fiber Scatter Term (2)

■ Wrap lighting

17

Page 18: 언리얼 엔진 4용 커스텀 천 재질

My approach - Fiber Scatter Term (3)

■ Linear interpolation between two types of fresnel

18

Page 19: 언리얼 엔진 4용 커스텀 천 재질

My approach - Final

19

Page 20: 언리얼 엔진 4용 커스텀 천 재질

Result - Fabric scatter amount compare

■ 어떤 부분이 Fabric scatter color를 사용 할지 조절⚬ 값이 0이면, rim light 부분에 fabric scatter color 사용⚬ 값이 커질수록, fabric scatter color가 표시되는 영역이 넓어짐

⚬ 값이 1.0이면, 대부분의 표면이 fabric scatter color가 표시되며 rim light 부분이 base color가 표시됨

20

Page 21: 언리얼 엔진 4용 커스텀 천 재질

Result - Fabric examples (1)

21

Cotton

Velvet

Page 22: 언리얼 엔진 4용 커스텀 천 재질

Result - Fabric examples (2)

■ 사용상의 Tip⚬ Metalic 값은 실크가 섞인 비율로 설정⚬ 금속성 천들만 1.0보다 작은 Roughness 값을 가질 수 있음⚬ 실크 표면의 문양을 묘사 하는 것에 노멀맵을 사용하지 말것

⬝ 문양 부분과 일반 표면 부분의 Roughness 값을 달리 하여 표현하는 것을 추천

22

Satin

Page 23: 언리얼 엔진 4용 커스텀 천 재질

Recomend values for fabrics

23

Fabric Types Metalic Roughness Fabric Scatter amount

Cotton or ordinary fabrics 0 1 0.5

Velvat 1 1 0

Silk, Satin 0.8 - 0.9 0.35 - 0.7 1

Page 24: 언리얼 엔진 4용 커스텀 천 재질

Bibliography■ Page 3

⚬ image 1: http://www.apparelsearch.com/fibers.htm⚬ image 2: http://www.trimfabric.com/nv-97.html

■ Page 4⚬ image 1: https://www.asahi-kasei.co.jp/fibers/en/cupro/what/function1.html⚬ image 2: https://quizlet.com/92490419/intro-2-textiles-test-1-flash-cards/⚬ image 3: https://quizlet.com/92490419/intro-2-textiles-test-1-flash-cards/

■ Page 5⚬ image 2: https://wallpaperscraft.com/download/silk_material_soft_light_50576/3840x2160

■ Page 6⚬ image 1: http://www.bloomsburgcarpet.com/resources/weave-structures⚬ image 2: http://www.textilestock.in/productdetail/47/Fabrics-HomeFurnishingFabrics-Velvet-Velvet-Stock.html

24

Page 25: 언리얼 엔진 4용 커스텀 천 재질

Bibliography

■ Page 7⚬ citation 1: Neubelt, David, Matt Pettineo, and Ready At Dawn Studios. "Crafting a Next-Gen

Material Pipeline for The Order: 1886." part of “Physically Based Shading in Theory and Practice,” SIGGRAPH (2013).

■ Page 10⚬ citation 1: http://www.slideshare.net/blindrenderer/rendering-tech-of-space-marinekgc-2011

■ Page 13⚬ citation 1: Schlick, Christophe. “An inexpensive BRDF Model for Physically-based Rendering.”

Computer graphics forum 1 Aug. 1994: 233-246

25