물리 기반 렌더링
소개
물리 기반 렌더링(PBR)은 씬에서 머티리얼과 조명의 물리적 속성을 정확하게 시뮬레이션하는 것을 목표로 하는 렌더링 기법입니다. 물리학 원리를 기반으로 하며 알고리즘을 사용하여 빛이 다양한 머티리얼과 상호 작용하는 방식을 정확하게 모델링합니다.
물리 기반 렌더링은 금속, 유리, 플라스틱 등 다양한 표면에서 빛이 흡수, 반사, 산란되는 방식을 고려합니다. 이를 통해 머티리얼을 더욱 사실적이고 정확하게 렌더링할 수 있을 뿐만 아니라 반사, 굴절, 그림자와 같은 조명 효과를 더욱 정확하게 표현할 수 있습니다.
또한 머티리얼이 물리적 파라미터를 기반으로 하기 때문에 더 직관적으로 사용하고 조정할 수 있어 아티스트의 워크플로가 간소화됩니다. 또 다른 장점은 PBR 머티리얼을 사용하면 임포트한 에셋의 모양이 디자인된 방식과 더 일관성이 있다는 것입니다.
PBR의 이론에 대한 자세한 내용은 https://learnopengl.com/PBR/Theory 및 https://academy.substance3d.com/courses/the-pbr-guide-part-1 에서 자세한 설명을 참조하세요.
머티리얼 및 워크플로
물리 기반 렌더링을 활용하기 위해 Qt Quick 3D 에서는 세 가지 기본 제공 머티리얼을 제공합니다: PrincipledMaterial, SpecularGlossyMaterial, CustomMaterial 을 제공합니다. 이러한 각 머티리얼은 머티리얼 속성을 정의하기 위한 각기 다른 워크플로를 제공합니다. 어떤 워크플로와 머티리얼을 사용할지는 만들려는 머티리얼의 유형 또는 머티리얼을 만드는 데 사용하는 도구에 정의된 워크플로에 따라 달라집니다.
메탈릭 러프니스 워크플로
메탈릭 러프니스 워크플로우는 머티리얼의 외관을 표현하기 위해 두 가지 주요 파라미터인 메탈릭 반사율과 표면 러프니스를 사용하는 물리 기반 렌더링을 구현하는 방법입니다. 금속 반사율은 0(비금속)에서 1(완전 금속)까지의 값으로, 들어오는 빛 중 머티리얼이 반사하는 양과 흡수하는 양을 결정합니다. 표면 거칠기는 0(매끄러움)에서 1(거칠기)까지의 값으로 머티리얼 표면이 얼마나 거칠거나 매끄럽게 나타나는지를 결정합니다. 메탈릭/거칠기 워크플로에서 머티리얼의 모양은 텍스처 또는 상수 값으로 저장할 수 있는 기본 색상, 메탈릭 반사율 및 표면 거칠기 값에 의해 결정됩니다.
메탈릭 러프니스 워크플로우의 재질 기본 색상에는 비금속(유전체)의 반사 색상과 금속의 반사율 값이 모두 포함됩니다.
기본 재질
PrincipledMaterial 은 Qt Quick 3D 에서 메탈릭 러프니스 워크플로를 활성화하는 기본 머티리얼입니다. PrincipledMaterial 사용 방법의 예는 아래에 나와 있습니다:
import QtQuick import QtQuick3D import QtQuick3D.Helpers Window { visible: true width: 640 height: 480 title: qsTr("PrincipledMaterial") View3D { anchors.fill: parent environment.backgroundMode: SceneEnvironment.SkyBox environment.lightProbe: Texture { textureData: ProceduralSkyTextureData {} } PerspectiveCamera { z: 150 y: 40 eulerRotation.x: -15 } Model { x: -50 source: "#Sphere" materials: [ PrincipledMaterial { baseColor: "red" metalness: 0.0 roughness: 0.1 } ] } Model { x: 50 source: "#Sphere" materials: [ PrincipledMaterial { baseColor: "red" metalness: 1.0 roughness: 0.1 } ] } } }
이 예는 비금속 재질과 금속 재질로 된 두 개의 구를 보여 주며 금속성 양에 따라 기본 색이 갖는 다른 의미를 보여줍니다.
이전 예제에서는 메탈릭 러프니스 워크플로우의 모든 관련 프로퍼티가 상수 값을 통해 정의되었지만 텍스처를 사용하여 정의할 수도 있습니다. 다음 예는 텍스처를 사용하여 머티리얼의 기본 색상, 금속성 및 러프니스를 정의하는 방법을 보여줍니다:
import QtQuick import QtQuick3D import QtQuick3D.Helpers Window { visible: true width: 640 height: 480 title: qsTr("PrincipledMaterial with Textures") View3D { anchors.fill: parent environment.backgroundMode: SceneEnvironment.SkyBox environment.lightProbe: Texture { textureData: ProceduralSkyTextureData { } } PerspectiveCamera { z: 150 y: 40 eulerRotation.x: -15 } Model { source: "#Sphere" materials: [ PrincipledMaterial { baseColorMap: Texture { source: "red.png" } metalnessMap: Texture { source: "metalness.png" } roughnessMap: Texture { source: "roughness.png" } } ] } } }
CustomMaterial
PrincipledMaterial 은 매우 유연한 머티리얼 생성 방법이지만 때로는 머티리얼 속성을 보다 세밀하게 제어해야 할 수도 있습니다. 이를 위해 Qt Quick 3D 에서는 머티리얼에 사용되는 셰이더 코드를 조정하여 메탈릭 러프니스 워크플로에서 사용되는 값을 보강할 수 있는 CustomMaterial 을 제공합니다.
커스텀 셰이더 코드로 머티리얼과 내장된 PBR 조명 시스템을 보강하는 방법에 대한 소개는 프로그래밍 가능한 머티리얼, 효과, 지오메트리 및 텍스처 데이터를 참조하세요.
스페큘러 및 광택 워크플로
스페큘러/광택 워크플로우는 물리 기반 렌더링을 구현하는 방법으로, 두 가지 주요 파라미터인 스페큘러 반사율과 광택도를 사용하여 머티리얼의 외관을 표현합니다. 스페큘러 반사율은 머티리얼 표면의 스페큘러 하이라이트의 색상과 강도를 결정하는 색상 값입니다. 광택도는 0(거친)에서 1(매끄러운)까지의 값으로, 머티리얼 표면이 얼마나 거칠거나 매끄럽게 보이는지를 결정합니다. 스페큘러/광택 워크플로에서 머티리얼의 모양은 텍스처 또는 상수 값으로 저장할 수 있는 알베도, 스페큘러 반사율 및 광택 값에 의해 결정됩니다. 스페큘러 반사율이 높고 광택도가 낮은 머티리얼은 금속성이 강하고 스페큘러 하이라이트가 선명하며, 스페큘러 반사율이 낮고 광택도가 높은 머티리얼은 더 확산되어 보이고 스페큘러 하이라이트가 부드러워집니다.
스페큘러 글로시 머티리얼
SpecularGlossyMaterial 은 Qt Quick 3D 에서 스페큘러/광택을 활성화하는 머티리얼입니다.
더 많은 예제
더 많은 예제는 Qt Quick 3D - 원칙적인 머티리얼 예제 및 Qt Quick 3D - 사용자 정의 머티리얼 예제를 참조하십시오.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.