물리 기반 렌더링 (PBR) 텍스처는 여러 유형의 텍스처 이미지 또는 맵을 사용하여 단일 객체에서 사실적인 음영 및 조명을 표현할 수 있게 해줍니다. 여러 텍스처 맵을 결합하면 어떤 조명 환경에서도 색상, 거칠기 및 반사율을 보다 정확하게 시뮬레이션할 수 있으며, 자산 및 환경의 시각적 요소를 향상시킬 수 있습니다.


PBR 텍스처를 생성하기 위한 다양한 애플리케이션 및 워크플로가 있습니다. Roblox Studio는 사용 중인 특정 텍스처 맵을 지원합니다.
이 가이드는 PBR 텍스처 맵을 사용하기 위해 메쉬 객체를 설정하는 방법에 대한 지침을 제공하며, Roblox에서 지원하는 PBR 텍스처 맵의 일반적인 사용 사례 및 모범 사례를 설명합니다. 사용자 자신의 표면을 생성할 때는 재료 참조를 참조하여 일반적인 재료 값, 이미지 비교 및 의류 예제를 확인하십시오.
표면 표현 활성화
MeshPart에 PBR 텍스처를 추가하려면 원래 할당된 텍스처를 덮어쓰는 SurfaceAppearance 객체를 추가합니다. 일반적으로 게임 중에 스크립트를 사용하여 SurfaceAppearance 속성을 수정할 수 없습니다. 엔진은 이러한 그래픽을 표시하기 위해 일부 전처리가 필요하기 때문입니다. 기본 텍스처를 추가하는 것과 유사하게 각 텍스처 이미지 맵은 적절한 업로드된 이미지 자산 ID를 가리켜야 합니다.
MeshPart에 대해 표면 표현을 활성화하려면:
Explorer 창에서 MeshPart 위에 마우스를 올리고 ⊕ 버튼을 클릭합니다.
컨텍스트 메뉴에서 SurfaceAppearance를 삽입합니다.

SurfaceAppearance 객체에 텍스처 맵을 추가할 준비가 되었으면 속성 창에서 각 맵 속성을 클릭하고 자산 ID를 입력할 수 있습니다.
텍스처 맵
Studio는 현재 4가지 유형의 PBR 텍스처 맵을 지원합니다: 색상, 노멀, 거칠기, 금속성. 이러한 각 맵은 객체의 표면 외관의 중요한 측면에 해당합니다. 텍스처 맵은 시각적 외관만 변경하며 MeshPart 객체의 기하학에는 영향을 주지 않습니다.
Roblox의 지원 텍스처 맵 및 추가 리소스에 대한 개요는 다음의 예를 참조하십시오.
ColorMap 속성은 표면의 색상 데이터를 설정하며, 맵에 존재하는 투명성을 포함합니다. 추가 정보는 색상 (알베도)를 참조하십시오.



색상 (알베도)
색상 또는 알베도 맵은 텍스처의 색상을 결정하며, 대부분 색상 정보로 구성되고 조명 또는 텍스처 정보는 거의 없습니다. 추가 사용자 정의를 위해 이미지 맵에 불투명도를 추가하여 투명도를 알베도 텍스처에 추가할 수 있습니다.
알파 모드
잔디, 잎, 레이스 또는 먼지 및 얼룩과 같은 데칼과 같이 부분적으로 또는 전체적으로 투명한 섹션이 필요한 객체의 경우 다양한 알파 모드를 사용하여 색상 맵에 투명성을 적용할 수 있습니다. 색상 맵 이미지 형식이 알파 채널을 지원하는 경우, 0.0은 투명하고 1.0은 불투명한 회색조 알파 맵을 적용할 수 있습니다. 유사하게, .png와 같은 이미지 형식을 사용할 때에는 색상 맵의 불투명도가 자산의 투명성으로 적용됩니다.
다음 AlphaMode 값을 설정하여 두 가지 다른 방식으로 투명성을 적용할 수 있습니다:
- 오버레이 — ColorMap를 기본 메쉬의 MeshPart.Color 위에 오버레이합니다. 오버레이 모드에서 사용하는 색상 맵은 투명성이 존재하는 곳에서 메쉬의 기본 색상을 드러냅니다. 이것이 기본 설정입니다.
- 투명도 — ColorMap의 투명성을 기반으로 가시적인 메쉬를 제거합니다. 이로 인해 투명성이 존재할 경우 메쉬가 투명해지고 원래 메쉬 색상이 드러나지 않습니다.
불투명
Enum.AlphaMode.Opaque 모드를 사용하여 ColorMap의 알파 채널을 완전히 무시할 수 있습니다. 이 경우 알파 값은 1(완전히 불투명)으로 가정됩니다.
다음 예시는 흰색 객체를 참조로 사용하여 Opaque 모드가 작동하는 방식을 보여줍니다:
오버레이
Enum.AlphaMode.Overlay를 사용하여 메쉬의 원래 색상의 일부를 드러낼 수 있습니다. 색상 맵의 투명한 영역이 기본 색상을 노출시키므로, 기본 메쉬의 Color 속성을 특정 피부 톤이나 다른 고유한 색상이 있는 경우 부분적으로 또는 완전히 드러내는 독특한 텍스처 맵을 설계할 수 있습니다.
다음 예시는 흰색 구를 참조로 사용하여 Overlay 모드가 작동하는 방식을 보여줍니다:
아래의 예시는 Overlay 모드를 사용하여 커스텀 캐릭터의 원래 피부 톤을 드러냅니다:


피부 및 유사한 응용 프로그램에 대해 오버레이를 최적화하는 방법에 대한 추가 세부 정보는 커스텀 피부 톤을 참조하십시오.
투명도
Enum.AlphaMode.Transparency 모드를 사용하여 레이스 또는 그물과 같은 복잡하거나 매우 섬세한 객체를 만들 수 있으며, 메쉬의 가시적인 부분을 제거하여 메쉬 기하학을 조각하는 대안으로 사용됩니다. 이는 메쉬 객체의 기하학에 영향을 주지 않기 때문에 복잡한 메쉬 모델의 성능 영향을 받지 않고도 상세한 객체를 생성할 수 있습니다.
다음 예시는 이 모드에서 부분적 및 전체 투명성이 메쉬의 섹션을 시각적으로 제거하는 방식을 보여줍니다:



Transparency 모드는 MeshPart.Transparency가 0으로 설정되어 있는지 또는 최소한 0.02로 설정되어 있는지에 따라 두 가지 결과가 있습니다. 다만 수치 정밀도 때문에 작은 값인 0.01도 불투명한 투명성을 유발할 수 있습니다.
- 알파가 주로 불투명한 객체의 형태를 자르는 데 사용될 때, 조각모, 레이스 직물, 그물 등과 같은 하드 엣지를 가진 객체의 경우 MeshPart.Transparency를 0으로 설정해야 합니다. 표면의 일부가 완전히 불투명할 경우 Roblox 엔진이 이를 깊이 기반 폐쇄에 적절하게 렌더링할 수 있습니다. 불투명 표면은 DepthOfFieldEffect, 유리 및 물 굴절, 물 반사와 같은 깊이 기반 효과에 더 잘 작동합니다.
- 알파가 반투명한 객체 또는 부드러운 투명도 그라데이션이 있는 객체의 세부정보를 추가하는 데 사용될 경우 MeshPart.Transparency를 최소한 0.02로 설정합니다. 이는 더러운 창문이나 부드러운 가장자리의 깃털과 같은 객체의 블렌딩 품질을 개선하지만, 모든 효과와 작동하지는 않습니다.
틴트 마스크
Enum.AlphaMode.TintMask 모드를 사용하여 표면의 선택적인 영역에 SurfaceAppearance.Color 틴팅을 적용할 수 있습니다. 틴팅은 알파 채널이 완전히 보이는 곳에서 가장 강하고, 알파 채널이 투명한 곳에서는 적용되지 않습니다.

색상 텐팅
SurfaceAppearance.Color 속성을 수정하여 색상 맵에 틴트를 적용할 수 있습니다. 틴팅은 성능에 영향을 미치지 않으며, 여러 가지 틴트가 있는 단일 색상 맵을 재사용하여 메모리를 절약할 수 있습니다. 색상 틴팅을 사용하여 MeshPart PBR 텍스처 사이에 추가적인 저비용 변화를 만들거나 PBR 표면 색상을 실시간으로 프로그래밍 방식으로 수정할 수 있습니다.
SurfaceAppearance.Color 텐팅은 곱셈으로 적용되어 최종 외관은 Color3 (텍셀 색상) 곱하기 SurfaceAppearance.Color의 함수입니다. 이것은 원래 SurfaceAppearance.ColorMap을 거의 흰색의 회색조 색상으로 작성하면 이 속성이 적용될 때 가장 강력한 틴팅 효과를 생성한다는 것을 의미합니다.
틴팅은 SurfaceAppearance.ColorMap에만 적용되며 MeshPart.Color에는 적용되지 않습니다. 투명도를 적용할 때 알파 채널을 계속 사용할 수 있습니다.
SurfaceAppearance.AlphaMode가 Overlay로 설정되고 알파 채널이 존재하는 경우, 기본 MeshPart.Color가 드러나고 SurfaceAppearance.Color 틴팅은 가시적인 SurfaceAppearance 색상 맵에만 적용됩니다.
SurfaceAppearance.AlphaMode가 TintMask로 설정되고 알파 채널이 존재하는 경우, 알파 채널은 SurfaceAppearance.Color 틴팅의 양을 제어합니다. 틴팅은 알파 채널이 완전히 보이는 곳에서 가장 강하게 적용되며 알파 채널이 투명한 곳에는 적용되지 않습니다.

노멀
노멀 또는 표면 맵은 표면에 깊이감을 추가하며 높이 맵과 유사하게 작동합니다. 결과적으로, 효과는 시청 각도와 조명 환경에 따라 사라지거나 강해질 수 있습니다. 노멀 맵이 없으면 값은 0.0으로 설정됩니다.
다음 그림에서는 메쉬 참조와 맵 참조 간에 전환하여 노멀 맵 값을 비교할 수 있습니다:



R, G, B 채널은 각각 로컬 표면 벡터의 X, Y, Z 구성 요소에 해당합니다. 색상이 균일한 이미지 [127, 127, 255]는 완전히 평평한 노멀 맵으로 변환됩니다. Roblox는 OpenGL 포맷 - 탄젠트 스페이스 노멀 맵만을 지원합니다.
노멀 맵은 메쉬의 시각적 표면에 현저한 영향을 미치며 텍스처의 어색한 이음새를 강조할 수 있습니다. 가능할 경우 텍스처 이음새가 숨겨지도록 유지하여 메쉬의 시각적 문제를 피하십시오.
거칠기
거칠기 또는 마이크로 표면 맵은 모델 표면에 빛이 어떻게 퍼지는지를 결정합니다. 거칠기가 0.0일 경우 표면은 빛을 전혀 산란시키지 않으며, 재료의 반사 및 광택이 훨씬 더 선명하고 밝아집니다. 1.0일 때는 빛과 반사가 모델 전반에 고르게 분산되어 반사율이 낮은 매트한 표면이 됩니다.
거칠기는 다양한 각도에서 물체의 반사율에 영향을 줄 수 있으며, 이를 프레넬 효과라고 합니다. 자세한 내용 및 일관된 반사 행동을 유지하기 위한 모범 사례는 프레넬을 참조하십시오.
다음 그림은 다양한 거칠기 맵 값의 비교를 보여줍니다:



프레넬
프레넬은 표면의 반사가 현재 시청 각도에 비례하는 양을 나타냅니다. Studio의 프레넬 처리는 실제 물리적 정확성을 목표로 하고 있지만, 거칠기 있는 표면으로도 특정 각도에서 예상치 못한 스페큘러 기여를 얻을 수 있습니다. 경우에 따라 일관된 조명 응답을 달성하기 위해 거칠기 맵을 약 0.1 더 거칠게 만드는 것으로 보상할 수 있습니다.
Roblox는 이 조명 효과를 정확하게 렌더링하지만, 표면의 밝기 및 반사율은 Substance Painter와 같은 텍스처 콘텐츠 생성 소프트웨어와 Studio 간의 일관되지 않은 반응을 보일 수 있습니다. 애플리케이션 간 렌더링에 차이를 확인하는 예시는 의류 예제를 참조하십시오.
금속성
금속성은 표면의 반사율을 결정합니다. 금속성 값은 0.0과 1.0 사이의 범위를 가집니다. 금속성 맵이 존재하지 않으면 Roblox는 기본 값을 0.0으로 설정합니다.
다음 그림은 다양한 금속성 맵 값의 비교를 보여줍니다:



다양한 PBR 렌더러는 반사성을 처리하기 위해 다양한 워크플로를 사용합니다. Studio는 금속성 워크플로만을 사용하여 재료가 비금속인지 금속인지를 결정합니다. 종종 비금속을 절연체 또는 금속을 전도체로 언급하기도 합니다.
대부분의 경우 이 값을 0.0(비금속) 또는 1.0(금속)으로 설정해야 합니다. 중간 반사 특성을 가진 드문 표면을 생성할 때 부분 금속성 값을 사용할 수 있으며, 이렇게 하면 재료에 색상을 강조하여 색상/알베도 맵에서 반사된 색상보다 우선시할 수 있습니다.







