UDN
Search public documentation:

PhysicalMaterialMaskKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 피직스 > 피지컬 머티리얼 마스크

피지컬 머티리얼 마스크


문서 변경사항: Matt Kuhlenschmidt 작성. 홍성진 번역.

개요


피지컬 머티리얼 마스크를 통해 그래픽 머티리얼의 각기 다른 부분에 피지컬 머티리얼을 둘 사용할 수 있습니다. 즉 엘리먼트와 머티리얼을 여럿 만들지 않고도 피지컬 머티리얼 마스크로 스태틱 메시에 독특한 효과를 낼 수 있는 겁니다. 간단한 예로 일부(창틀)에 나무, 일부(창)에 유리 머티리얼을 갖는 유리창 메시 정도를 들 수 있겠습니다. 피지컬 머티리얼 마스크를 설정하여 머티리얼의 유리 부분이 맞았을 때는 유리 깨지는 소리가, 나무 부분이 맞았을 때는 나무가 갈라지는 소리가 나도록 설정할 수도 있습니다.

피지컬 머티리얼 마스크 사용하기


피지컬 머티리얼 마스크는 Material 또는 Material Instance의 네 가지 프로퍼티로 구성됩니다.

  • Phys Material Mask (피지컬 머티리얼 마스크) : 마스크로 사용될 텍스처 조각입니다. 사용될 피지컬 머티리얼은 충돌 동안의 타격 픽셀의 색(이 검정이냐 하양이냐)에 따라 결정됩니다.
  • Phys Material Mask UVChannel (피지컬 머티리얼 마스크 UV채널) : 마스크 텍스처에 사용될 UV 채널입니다. 이 UV 채널에는 마스크 텍스처를 지정된 스태틱 메시와 매핑시키는 데 사용된 텍스처 좌표가 포함되어야 합니다.
  • Black Physical Material (검정 피지컬 머티리얼) : 충돌 동안에 마스크 텍스처의 검정 부분이 맞았을 때 사용할 피지컬 머티리얼
  • White Physical Material (하양 피지컬 머티리얼) : 충돌 동안에 마스크 텍스처의 하양 부분이 맞았을 때 사용할 피지컬 머티리얼

1비트 모노크롬 텍스처


1비트 모노크롬 텍스처는 각 픽셀이 1비트로 표현되는 텍스처를 말합니다. 비트가 0이면 검정 픽셀, 비트가 1이면 하양 픽셀입니다. 스태틱 메시와의 충돌이 발생하면, 피지컬 머티리얼 마스크 시스템은 이 텍스처를 사용해 어느 머티리얼을 사용할 지 결정합니다.

1비트 텍스처 가져오기

1비트 텍스처를 가져오는 방법은 두 가지 있습니다.
  • 1비트 bmp 포맷 텍스처 저장을 지원하는 어도비 포토샵같은 프로그램을 사용할 수 있습니다. 평소와 같이 bmp 파일을 에디터로 가져오면 자동으로 1비트 텍스처로 인식합니다.
  • 알파 채널의 피지컬 머티리얼 마스크를 포함한 32비트 텍스처를 가져올 수도 있습니다. 텍스처 가져오기 창이 뜰 때, 압축 설정 범주를 TC_OneBitMonochrome 으로 설정하십시오. 나중에 텍스처 뷰어에서도 이 압축 설정을 사용할 수 있습니다.

OneBitCompressionSettings.png

OneBitMonochrome 압축을 사용하면 텍스처의 RGB 채널을 삭제하고 알파 채널을 1비트 텍스처로 변환합니다. 이 방법은 머티리얼의 확산 텍스처의 RGB 채널을 기준삼는 알파 채널에 1비트 텍스처를 만들 때 매우 좋습니다. ALERT! 주: 알파 채널은 8비트로, 값이 0-255란 소립니다. 1비트 텍스처 값은 0-1이므로, 압축시 128보다 작은 값은 0이, 128 이상인 값은 1이 됩니다.

예제 셋업


다음 유리창 메시를 사용한 예제 셋업입니다.

Window.png

메시를 가져오기 전에 먼저, 해당 마스크 텍스처용 UV 좌표 세트를 만들어 뒀습니다. 이런 작업방식은 다른 메시를 가져올 때의 UV 생성과 완전 똑같습니다. UV 채널 0의 기본 텍스처 좌표 세트가 쓸만하면 이 작업은 미리 하지 않아도 됩니다. 메시의 UV 채널 1로 만든 UV 좌표는 이와 같습니다:

UVs.PNG

그리고 포토샵같은 이미지 편집 프로그램으로 1비트 텍스처를 만든 후 에디터로 가져왔습니다.

TextureMask.PNG

검정은 유리를 나타내고, 하양은 틀을 나타냅니다. 빨강 원 부분을 주목해 보세요. 이 텍스처의 포맷은 A1이며, 피지컬 머티리얼 마스크가 작동하기 위한 필수 마스크 텍스처 포맷입니다.

유리창 메시에 매핑했을 때의 마스크 모습은 이렇습니다:

ALERT! 주: A1 포맷 텍스처는 일반 렌더링에 사용할 수 없습니다.

WindowMasked.png

검정 부분이 유리에, 하양 부분이 창틀에 맞게 일치된 걸 볼 수 있습니다.

남은 것은 머티리얼에 마스크 설정하기인데, 단순히 머티리얼에 프로퍼티 몇 개만 설정해 주면 되는 일입니다.

ALERT! 주: 저는 이 단계에서 메시의 실제 머티리얼을 부모로 갖는 머티리얼 인스턴스 불변을 사용했습니다. 실제 머티리얼에 손대고 싶지는 않았거든요.

MaskProperties.PNG

이제 여기다 하양 및 검정 머티리얼을 실제로 적용하기만 하면 되겠습니다. 피지컬 머티리얼에 대해 자세히 알아보시려면 이 링크 를 참고하십시오.

작동법


라인 체크가 스태틱 메시를 때리면, 언리얼이 맞은 트라이앵글 및 해당 트라이앵글의 그래픽 머티리얼을 찾아냅니다. 머티리얼에 사용 가능한 피지컬 머티리얼 마스크 세팅이 있으면, 1비트 텍스처를 살펴 어느 픽셀이 맞았는 지를 알아냅니다. 픽셀이 검정이면 라인 체크는 검정 피지컬 머티리얼을 반환합니다. 픽셀히 하양이면, 라인 체크는 하양 피지컬 머티리얼을 반환합니다. 라인 체크가 반환한 피지컬 머티리얼을 사용하도록 게임내에 적절히 코드를 설정해 둬야 피지컬 머티리얼 마스크의 결과를 확인할 수 있습니다.

주:


  • 머티리얼 인스턴스에 피지컬 머티리얼 마스크를 사용할 때, 인스턴스의 피지컬 머티리얼 마스크 일부만 덮어쓸 수 있습니다. 덮어쓰이지 않은 부분은 머티리얼 인스턴스 부모를 보면 찾아낼 수 있습니다.
  • A1 포맷 텍스처는 GPU 메모리를 사용하지 않으며, 시스템 메모리만 사용합니다. 절대 밉맵되지도 스트림되지도 않습니다.