언리얼 엔진으로 사실적인 조명 만들기 4. VR용 UE4.18의 건축 시각화를 위한 조명. 불필요한 텍스처를 추가하지 마십시오

이번 글에서는 UE4에서 경로 선택을 생성하는 방법을 보여드리겠습니다. 일반적으로 개발자는 두 가지 방법으로 이 작업을 수행합니다.

  • 메쉬를 두 번 렌더링합니다. 이 경우 하나의 메시가 먼저 렌더링되고(표준 재질 사용) 두 번째 메시(약간 증가된 스케일과 발광 재질 사용)
  • 가장자리 인식 알고리즘이 사용됩니다. 후가공재료로 지정되어 있습니다

이번 글에서는 두 번째 방법에 대해 이야기하겠습니다. 왜냐하면... 기존 프로젝트에 통합하는 것이 더 쉽습니다. 본 매뉴얼 UE4의 기본 사항(특히 머티리얼 에디터 작동 방식)에 익숙하다는 가정하에 작성되었습니다. 또한 윤곽 인식 알고리즘을 UE4 소재 형태로 구현하는 방법을 이해하기 위해서는 영상 처리 분야의 기본 지식도 도움이 될 것입니다.

기본 단계

후처리 재료 형태의 윤곽선 선택 효과 구현은 여러 단계로 이루어집니다.

  • Render Custom Depth 옵션이 활성화된 개체의 윤곽을 강조하는 사후 처리 재질을 만듭니다.
  • Post Process Volume 블록의 매개변수에 있는 Blendables 목록에 이 포스트 프로세스 머티리얼을 추가합니다.
  • 아웃라인을 선택하려는 모든 스켈레탈 및 스태틱 메시에 대해 Render Custom Depth 매개변수 활성화

아래에서는 각 단계를 더 자세히 설명하겠습니다. 자료를 다운로드하기 위해 여기에 오신 경우 기사 맨 끝에 있는 "다운로드" 섹션으로 바로 이동하실 수 있습니다.

깊이 지도

UE4에는 개별 메시를 별도의 깊이 맵으로 렌더링한 다음 이를 머티리얼에 사용할 수 있는 훌륭한 기능이 있습니다. 이 깊이 맵에는 세계 좌표와 카메라 시야 모두에서 각 픽셀 사이의 거리에 대한 정보가 포함되어 있습니다. 일반적인 깊이 맵은 다음과 같습니다.

우리의 깊이 맵은 Render Custom Depth 옵션이 활성화된 객체만 표시한다는 점을 제외하면 비슷해 보입니다.

깊이 맵은 윤곽선 선택과 같은 효과의 사용을 크게 단순화합니다. 이 기사에서는 그 생성에 중점을 두고 있습니다.

소재의 창조

가장 어려운 단계. 사용자 정의 깊이 맵으로 접힌 Sobel 연산자를 구현할 머티리얼을 생성하겠습니다. 즉, 사용자 정의 깊이 맵에 가장자리 감지 필터를 적용합니다.

컨볼루션 알고리즘부터 시작해 보겠습니다. 그 뒤에는 꽤 멋진 수학이 있지만 실제로는 몇 가지 간단한 단계로 귀결됩니다.

  • 픽셀 P를 사용하세요.
  • 픽셀 P에 인접한 8개의 픽셀 PN을 취합니다.
  • 픽셀 값 P와 PN에 컨볼루션 커널의 값을 곱합니다(즉, 9번 곱셈을 수행합니다).
  • 결과 값을 더하세요.
  • 결과 반환

먼저 깊이 맵을 사용해야 합니다. 이 작업은 간단하게 수행됩니다. Scene Texture 노드를 추가하고 이를 재질의 Emissive Color에 연결합니다. 또한 Scene Texture ID를 CustomDepth로 설정합니다.

이제 인접한 픽셀을 사용해 보겠습니다. 이를 위해 Scene Texture 노드에서 UVs 매개변수를 사용할 수 있습니다. 그러나 문제는 UV 매개변수가 텍스처 좌표에서 작동한다는 것입니다. "0.0"(텍스처의 왼쪽 위 모서리)에서 "1.1"(텍스처의 오른쪽 아래 모서리)까지의 값을 사용합니다. 따라서 반전된 텍스처 높이와 너비 값을 가져와 셀 중심의 오프셋(-1,-1)을 곱한 다음 이를 현재 픽셀의 UV 좌표에 추가해야 합니다. 이런 식으로 왼쪽 상단 픽셀을 선택합니다.

Material Editor에서는 다음과 같이 보입니다:

이제 나머지 7개의 인접한 픽셀에 대해서도 동일한 작업을 수행합니다. 결과적으로 인접한 8개 픽셀 모두에 대한 변위 계산은 다음과 같습니다.

따라서 모든 인접 픽셀에 대한 UV 매개변수 세트가 있으므로 이제 사용자 정의 깊이 맵의 데이터를 사용할 수 있습니다. 나는 이것을 위해 창조했다 간단한 기능재질: UV 좌표를 입력으로 사용하고 처리된 픽셀의 값을 반환합니다.

이 기능을 사용하여 인접한 픽셀의 데이터를 처리하면 실제로 윤곽 인식에 필요한 모든 데이터를 갖게 됩니다. 이제 컨볼루션을 수행할 또 다른 머티리얼 함수를 만들어 보겠습니다.

왼쪽에는 두 개의 입력 매개변수 세트가 있습니다. 처음 9개의 벡터는 단순히 우리가 처리할 픽셀 값입니다. 나머지 3개의 벡터는 컨볼루션 커널 값에 사용됩니다. 기본적으로는 3x3 행렬이지만 UE4 머티리얼 에디터에는 행렬에 대한 데이터 유형이 없기 때문에 Vector3 매개변수를 사용하여 직접 만들었습니다.

그래서 우리는 알고리즘의 모든 부분을 수집했습니다. 이제 남은 것은 최종 재료 내부에서 이들을 결합하는 것입니다.

Sobel 연산자에는 기본적으로 수직 및 수평이라는 두 가지 컨볼루션 함수가 포함됩니다. 둘 사이의 유일한 차이점은 컨볼루션 커널 입력이라는 점을 눈치챘을 것입니다.

이제 이 두 값을 결합해 보겠습니다.

그런 다음 머티리얼 에디터를 열고 계산된 값을 사용하여 벡터를 만든 다음 벡터의 길이를 반환합니다. 결과는 다음과 같습니다 검은색 이미지 Render Custom Depth가 활성화된 메시 주위에 윤곽선이 있습니다. 남은 것은 결과 효과를 최종 사진과 혼합하는 것입니다. 내 경우에는 "IF" 연산자를 사용하겠지만, 알고리즘을 원하는 방식으로 삽입할 수 있습니다. 그것에 대해 복잡한 것은 없습니다.

메모:머티리얼이 표면 도메인("머티리얼 도메인"을 의미하며 머티리얼이 사용될 용도를 구성하는 설정)이 아닌 포스트 프로세스 도메인에 있는지 확인하세요. 이는 재료 속성에서 변경할 수 있습니다.

장면 설정

이제 자료가 준비되었으므로 이를 장면의 후반 작업 효과 목록에 추가해야 합니다. 장면의 Post Process Volume 블록을 선택하고 Blendables 항목을 찾으세요. 블렌더블 목록에 추가 새 구성 요소을 클릭한 다음 목록에서 생성한 자료를 선택합니다. 장면에 후처리 블록이 없으면 새로 만듭니다. 또한 Post Process 블록의 Unbound 속성이 true로 설정되어 있는지 확인하세요. 그렇지 않으면 플레이어는 포스트 프로세스 볼륨 블록 안에 있는 경우에만 행 효과를 볼 수 있습니다.

결과를 확인하려면 장면에 메시를 배치하고 Render Custom Depth 매개변수를 켭니다.

청사진

플레이어가 고정 조준선을 조준하는 경우에만 행 효과가 정적 조준선에 나타나도록 장면을 설정했습니다. 저는 FPS 템플릿을 사용하기로 결정했습니다. 또한 MyCharacter 블루프린트에 Trace 기능을 추가했습니다. 0.1초마다 틱하고 플레이어가 정적 그리드를 보고 있는지 확인하는 타이머에 의해 호출됩니다. 보이는 경우 Render Custom Depth 매개변수가 "true"로 설정되어 있습니다. 플레이어가 조준선 조준을 멈추면 Render Custom Depth 변수가 "false"로 변경됩니다. 아래의 "다운로드" 섹션에서 찾을 수 있는 링크인 파일에서 모든 것이 어떻게 작동하는지 확인할 수 있습니다.

프로젝트 작업을 할 때 건축가와 디자이너는 3D 시각화와 같은 프레젠테이션 방법을 사용합니다. 대부분 이는 vRay, MentalRay, Corona 및 기타 시각화 도구를 사용하여 얻은 정적 이미지입니다.

이 글은 Unreal Engine을 사용하여 건축 프로젝트를 시각화하는 데 중점을 둘 것입니다. 모든 장단점을 살펴보고 완성된 프로젝트의 예를 사용하여 내 인상과 경험을 공유해 보겠습니다.

모델링

UE4는 .obj 및 .fbx 형식의 3D 모델을 허용합니다.

모든 3D 편집기(3ds Max, Blender, Maya 등)에서 객체를 모델링하고 내보낼 수 있습니다. 모델은 합리적인 제한 내에서 좋은 토폴로지와 다각형을 갖는 것이 바람직합니다(인테리어에 대해 이야기하면 다음과 같은 주요 객체). 소파, 침대 등은 성능에 큰 영향을 미치므로 삼각형 10만 개를 초과해서는 안 됩니다. 물론 각 모델의 리토폴로지를 수동으로 수행하는 것이 더 좋지만 허용 가능한 결과를 얻으려면 다음을 수행할 수 있습니다. 자동 수단으로, 프로그램 또는 플러그인.

모든 모델에는 스캔이 있어야 합니다. 스캔이 매끄러울수록 텍스처 품질이 향상되고, Unreal Engine에서 미리 계산되는 빛과 그림자도 향상됩니다.

재료

UE4에서 로직을 구축하기 위해 노드 시스템을 사용합니다. 청사진. 이는 프로그래밍의 필요성을 대체하지만 C++로 작성하는 능력을 배제하지는 않습니다.

아래는 씬에 사용된 주요 셰이더입니다. 청사진:

나무:



릴리프 표면을 생성하려면 엔진에 노멀 맵만 필요하므로 다음에서 절차적으로 이 맵을 생성할 수 있습니다. 흑백 이미지 NormalFromHeightmap 노드 사용

스테인드 메탈:



안에 이 예에서는흑백 지도가 혼합되어 사용되었습니다. 수치 Metallic 및 Roughness 속성에 적용됩니다.

유리:



재료의 투명도가 영향을 받습니다. 불투명도 속성, 이는 float 노드에 의해 규제됩니다(0에서 1까지의 값).

다음은 재료의 물리적 특성을 결정하는 네 가지 기본 특성의 예입니다. 다양한 방법으로 결합하면 거의 모든 것을 만들 수 있습니다. 가능한 유형현실 세계의 물리적 표면.

기본 색상 메탈릭 반사광 거칠기

조명

장면에서는 세 가지 유형의 조명을 사용합니다.

모든 객체와 광원을 배치한 후 장면을 계산해야 합니다.

이는 모든 정적 광원과 정적 모델의 상호 작용을 계산하는 일종의 렌더링 아날로그입니다. 간단히 말해서 그림자를 투사하고 굽는 것입니다.

렌더링 후 모델이나 광원이 이동되거나 제거되면 그림자가 남아 있으므로 장면을 다시 계산해야 합니다.

예:

인터렉티브

개선을 위해 건축 프로젝트, 문 열기 및 닫기, 음악, 다양한 소리 및 시각 효과. 아래에서 그 중 일부를 살펴보겠습니다.

1. 문을 열고 닫는다
플레이어가 접근하면 문이 자동으로 열리고 플레이어가 멀어지면 문이 닫히는 간단한 옵션을 생각해 보세요.

문 자체는 출입구의 정적 모델과 대화형 문 리프의 두 가지 요소로 구성됩니다. 그 논리는 다음과 같습니다. 청사진.

안에 구성요소도면에는 문짝의 정적 3D 모델과 그림이 포함되어 있습니다. 상자, 트리거 역할을 합니다.

노드 구조는 다음과 같습니다.


OnComponentBeginOverlap 및 OnComponentEndOverlap 노드는 트리거와의 충돌을 담당합니다.
Timeline_0은 Float Track 기능(New Track 0)이 포함된 애니메이션입니다.
Make Rot는 임의의 축(이 경우 Z(Yaw) 축)을 따라 회전을 생성합니다.

플로트 트랙 기능(새 트랙 0):


값은 1초 이내에 0도에서 -90도까지 변경됩니다.

우리가 해야 할 일은 컴파일하는 것뿐이다. 청사진장면에 추가하여 출입구와 정확하게 정렬합니다.

2. 음향 효과
추가하여 프로젝트를 더욱 멋지게 꾸밀 수 있습니다. 주변 소리. 예를 들어, 배경에서 눈에 띄지 않는 음악을 재생하거나 음향 효과문을 열거나 닫을 때.

3. 후처리
넓은 의미에서 후처리는 이미지 구성의 주요 단계 이후에 발생하는 모든 작업을 의미합니다.
카메라나 블록을 사용하여 후처리를 수행할 수 있습니다. 포스트 프로세스 볼륨, 프로젝트에 추가하고 치수를 조정합니다. 이 블록을 입력하면 후처리 프로세스가 시작됩니다.

예를 들어, 블록 포스트 프로세스 볼륨밝기가 증가하면 조명이 어두운 방에 설치하는 것이 좋습니다.

그래서 포스트 프로세스 볼륨장면의 모습은 다음과 같습니다.

언리얼 엔진 4는 후처리를 위한 많은 효과를 지원하며, 모든 효과가 여러분에게 유용할 수는 없지만 그 중 일부를 나열하겠습니다:

  • 삽화- 프레임 가장자리를 어둡게 하거나 밝게 합니다.
  • 피사계 심도- 초점 거리보다 가깝거나 먼 모든 것은 점차 선명도를 잃고 흐려집니다.
  • - 밝은 광원으로부터 받은 빛
  • 렌즈 플레어- 굴절 효과를 재현합니다. 태양 광선카메라 렌즈 속으로
  • 필름(소음)- 필름 카메라를 시뮬레이션하여 애니메이션 노이즈를 생성합니다.

요약하자면

작업의 겉보기 복잡성에도 불구하고 Unreal Editor 4는 친숙해 보입니다. 그리고 컴퓨터 장비의 생산성이 향상되면서 GPU 렌더링시각화 전문가, 디자이너, 건축가의 작업에 대한 전통적인 접근 방식을 바꿀 수 있습니다.

단점 중 몇 가지 사항에 주목하고 싶습니다. ~에 이 순간사실적인 사진을 얻는 것은 쉽지 않지만, 프로젝트에 푹 빠져서 더 많은 시간을 투자한다면

여러 가지 글로우 컨트롤이 있습니다. 예를 들어, 조명의 밝기를 변경하려는 경우(명도), ' 대신 새 번호를 입력할 수 있습니다.1,000000 ". 또는 오른쪽에 있는 두 개의 검은색 화살표 사이에 마우스를 놓습니다. 마우스를 클릭하고 위나 아래로 드래그하면 밝기가 동적으로 변경됩니다.


필드 근처 밝은 색(밝은 색상) 돋보기를 클릭하여 열 수 있습니다. 색상 팔레트, 이 탭을 확장할 수도 있습니다밝은 색색상 설정을 열어서RGB. 마우스 커서 아이콘을 클릭하면 지도의 어딘가에서 마우스로 선택할 수 있는 색상을 얻을 수도 있습니다. 지금 두 가지 방법을 모두 시도해 보세요.

다음은 가장 중요한 속성 목록입니다.각각의 방법을 직접 시도해 보세요.


명도(밝기) - 모든 것이 아주 분명합니다.
폴오프 지수- 반경 내의 빛이 거칠거나 부패합니다. 조명을 벽 가까이로 이동하고 이 값을 가지고 실험해 보면 어떻게 작동하는지 확인할 수 있습니다.
밝은 색- 빛의 색깔.
반지름- 빛의 영역.
다른 속성은 변경하지 않고 그대로 두는 것이 가장 좋지만 일부 속성은 나중에 논의하겠습니다.
방을 가득 채울 만큼 밝기가 충분히 높고 반경이 큰 밝은 주황색을 만들어 보겠습니다. 반드시 "재구축(rebuild)"(라이트 구축) 조명을 사용하여 최종적으로 빛의 모양을 만듭니다.


4) 스포츠라이트

숙소 스포트라이트스포트라이트를 배치하는 것보다 조금 더 복잡합니다. 배우'오 일반적인'ㅏ. 브라우저를 엽니다( 일반적인) 탭으로 이동 액터 클래스. 열려 있는 " "를 선택하고 스포츠 라이트. (두 개의 하위 카테고리가 표시됩니다. 스포트라이트무버블그리고 스포트라이트토글 가능. 주로 애니메이션에 사용되거나 게임 플레이와 연결되어 있으므로 지금은 건드리지 않겠습니다.)
장면을 마우스 오른쪽 버튼으로 클릭하고 "를 선택합니다. 여기에 SpotLight 추가"당신은 스포트라이트를 보게 될 것입니다 하얀색아래를 가리키고 있습니다. 어딘가에 빛의 원을 던지는 것처럼 보이도록 이동하세요.

스포츠 라이트속성(색상, 밝기, 반경, 감소)은 모두 동일하지만 몇 가지 추가 속성이 있습니다. 스포트라이트가 선택되었는지 확인하고 해당 속성을 엽니다. 두 가지 새로운 속성을 찾으십시오.


외부 원뿔 각도 - 외부 코너원뿔(여기서 각도는 원뿔 축에서 모선까지, 0도에서 90도 사이입니다).
내부 원뿔 각도- 콘 중앙에서 핫스팟 제어. 0이면 "부드러운" 빛이 있게 됩니다. 이것이 동일한 반경이면 다음과 같습니다.외부 원뿔 각도, 스포트라이트는 밝은 빛의 원을 갖게 됩니다. (이 값을 조작해 보면 어떻게 작동하는지 알 수 있습니다)


편집기의 표준 회전 도구를 사용하여 스포트라이트를 회전할 수 있습니다. 1인칭 모드에서도 제어할 수 있습니다("선택한 액터를 카메라에 고정 "를 퍼스 뷰어 상단에 표시합니다.


원뿔의 각도 변경 스포트라이트더 넓은 지역을 커버하기 위해. 최종 모습을 얻으려면 조명을 조정하십시오.

5) 방향성 조명

이 빛은 내부와 외부 모두 레벨의 모든 영역에 영향을 미치며 방의 벽이나 다른 것에서 그림자가 생깁니다. 이 조명은 다음에 가장 잘 사용됩니다. 오픈 레벨.

이 빛은 같은 장소에서 찾을 수 있습니다. 스포츠라이트. 큰 버그는 아닐 수도 있습니다. 레벨을 이동할 때 벽의 조명이 깜박일 수 있습니다. 조명을 "재구축"하거나 조명을 바꾼 후에는 일반적으로 깜박임이 사라집니다.

빛이 바로 아래로 비치지 않도록 조명을 켜세요. 회전하려면 방향성 조명섹션에 설명된 것과 동일한 방식으로 수행할 수 있습니다. 스포츠라이트. 하지만 방향을 나타내는 빛의 원뿔 대신 작은 파란색 화살표가 나타납니다.
가까운 물체가 여러 개 있는 경우 빛이 특정 회전하면 물체에서 그림자가 나타납니다.

라이트를 "재구성"할 때 그림자는 다음과 같이 보일 수 있습니다.

이 그림자는 별로 좋아 보이지는 않지만, 아주 멀리서 보면 보입니다.


하지만 체크박스를 선택하면 망하게 됩니다bForceDynamicLight조명 설정과bCastDynamicShadows원하는 개체의 설정에서 빛을 "재구축"한 후 그림자가 깨끗해집니다.

하지만 이 그림자는 물체에서 멀어지면 사라집니다. (다른 물체의 그림자는 거리에 따라 사라지는 것을 볼 수 있습니다.) 하지만 Epic의 맵과 같은 그림자는 이러한 매개변수로는 구현되지 않습니다. 그들은 손으로 만들었습니다.
그림자가 필요하지 않으면 "를 비활성화하십시오.그림자를 드리 우다"그림자가 없어야 하는 필요한 물체 또는 이 빛의 그림자를 전혀 원하지 않는 경우 원하는 광원에.

6) 스카이라이트

이 빛은 그림자를 만들지 않고 모든 곳을 비춥니다.FPS), 따라서 개방된 레벨에서 사용하거나 레벨에 어두운 곳이 없는지 확인하는 것이 좋습니다.
추가해 보겠습니다(다음에서 찾을 수 있습니다.일반적인'e, 에 '오).

즉시 레벨이 훨씬 더 밝아집니다(변경되지 않은 천장 제외). 표면은 "위에서" 조명이 비춰지므로 바닥은 많은 빛을 받고 벽은 평균적인 양의 빛을 받으며 천장은 조명이 없는 상태로 유지됩니다.여기에는 두 가지 설정이 있습니다(무엇을 하는지 설명하기 어렵습니다).

낮은 밝기- 밝기(색상 혼합, 그와 유사한 것, 어쨌든 Hz는 무엇입니까)(기본값 0)낮은색상- 색상(조도가 낮은 영역, 벽, 특히 천장의 보조 색상).

속성을 조정하여스카이라이트, 아래 색상은 밝은 빨간색이고 위 색상은 밝은 파란색입니다(상당히 밝음).낮은 밝기, 알겠어요.)빨간색으로 눈에 띄고 파란색그러나 그들은 연합하여 보라색 벽을 만들었습니다. 제거하면 이것이 분명해집니다.포인트라이트.

마지막으로 아이콘은 스카이라이트매우 작으며 큰 수준에서 손실될 가능성이 높습니다. 속성에서 표시하다카테고리, 변경 DrawScale~에 10 .

7) 모든 것을 함께 배치


얼마나 다른지 봅시다장면에서 객체가 사용됩니다.
열어봅시다(Unreal Tournament 2007\UTGame\CookedPC\Private\Maps\DM-RisingSun.ut3), Epic이 실제 환경에서 이러한 유형의 조명을 어떻게 사용했는지 확인할 수 있습니다.
지도를 로드하면 다음과 같은 내용이 표시됩니다.

주위를 둘러보세요. 어떤 종류의 빛이 무엇을 비추는지 아시나요? 무리가 있다포인트라이트그리고 스포츠라이트근처에는 램프와 빛나는 문이 있습니다. 그러면 배경에 있는 암석의 활동을 밝히는 것은 무엇입니까? 알아 보자.
"를 클릭하세요.;Toggle 표시 플래그"버튼을 누르고 켜세요"빛의 영향". 바위를 선택하면 두 개의 파란색 선이 나오는 것을 볼 수 있습니다.

선은 두 개로 이어집니다방향성 조명무대 위에.

둘 다 보면 알겠지만방향성 조명반대 방향으로 향합니다. 그리고 속성을 살펴보면 그들이 무대에서 무엇을 하고 있는지 알 수 있습니다. 하나의 밝기(명도) 2.5 노란색을 발산합니다. 태양처럼 작용합니다. 다른 밝기 0.25 그리고 옅은 푸른색을 발산하는데, 마치 하늘에서 오는 듯한 빛입니다. 모든 항목을 삭제한 경우(이렇게 하려면 광원을 마우스 오른쪽 버튼으로 클릭하고모든 조명 선택), 이 두 가지 광원을 제외하고는 다른 광원에 의해 특별히 조명된 수십 개의 개체를 제외하고는 공간이 여전히 좋아 보입니다.

8) 검색

2D 또는 3D 뷰포트에서 조명을 선택하여 그 역할을 확인할 수 있지만 도구를 살펴보겠습니다." 배우 검색". 창 상단의 쌍안경 아이콘을 클릭하여 열 수 있습니다. 지금 수행하세요..

배우 검색지도에 있는 모든 항목의 목록이 포함된 창을 엽니다. 하지만 우리는 단지 빛을 보고 싶을 뿐입니다. 누르다 " 함유" 그리고 섹션에서 " 검색 대상", 입력하다 " ". 발견된 개체의 수가 디스플레이 하단에 표시됩니다. 예를 들어 " 11개의 개체가 발견되었습니다.".

그럼 우리는 무엇을 가지고 있습니까? 일부 방향 조명, 방향 조명, 그리고 스포트라이트. 공고 채광창. 장면에서 사용 중인 목록의 조명을 두 번 클릭하면 카메라가 해당 조명으로 이동합니다.
몇 분 동안 각 소스의 속성을 살펴보고 장면에서 각각의 역할을 파악하세요.



9) 후처리 볼륨


영향을 미침 모습그리고 조명 수준. 포스트 프로세스 볼륨무대 전체에 위치해 있습니다. 3D 창을 축소하면 경기장의 미묘한 색상 변화를 확인할 수 있습니다. PostProcess 볼륨은 카메라가 내부에 있는 동안 밝기 및 기타 여러 효과를 제어합니다.
선택하다 포스트 프로세스 볼륨속성을 엽니다. (2D 투영에서는 보라색 필드처럼 보이거나 배우 검색.)

동적(이동) 조명

잘못된 그림자 품질


튜토리얼의 이 부분에서는 기하학에 해당하는 그림자의 품질을 향상시키는 것을 목표로 하는 솔루션을 살펴보겠습니다. 이는 또한 동적 그림자의 품질을 향상시키는 데도 도움이 됩니다.

잘못된 기하학 음영의 예입니다.

오직! 방향성 조명: 계단식 그림자 맵 설정:

계단식 그림자 맵 설정, 방향성 조명 세부정보

동적 그림자 거리 이동 가능:그림자가 사라지는 카메라로부터의 거리입니다. 값이 0이면 그림자가 비활성화됩니다.

동적 그림자 거리 고정:그림자가 사라지는 카메라로부터의 거리입니다. 방향성 고정 조명의 경우 기본값은 0입니다.

동적 그림자 캐스케이드 수:절두체가 분할될 캐스케이드 수입니다. 더 많은 캐스케이드 코드 - 더 나은 품질, 그러나 자원 집약도도 증가합니다.
주목! 절두체(frustum)가 무엇인지 모두가 아는 것은 아니기 때문에 아래 링크를 꼭 클릭하세요.

단계 수 = 0

단계 수 = 1

단계 수 = 2

단계 수 = 3

단계 수 = 4

캐스케이드 분포 지수:카메라로부터 어느 정도의 거리에서 분포가 더 가까우거나(더 높은 값) 더 먼지를 규제하는 매개변수( 가치가 낮음) 값이 1이면 전환이 화면 해상도에 비례한다는 의미입니다.

캐스케이드 분포 지수예:

분포 = 1

분포 = 2

분포 = 3

분포 = 4

캐스케이드 전환 지수:캐스케이드 사이의 감쇠 영역을 조절하는 매개변수입니다. 값이 낮으면 가장자리가 딱딱해지고, 값이 높으면 가장자리가 부드러워집니다.
캐스케이드 전환 지수예:

전환 효과

캐스케이드 전환 지수

단단한 가장자리(낮은 값)

면 혼합(높은 값)

그림자 거리 페이드아웃 비율:그림자가 희미해지는 거리를 조절하는 매개변수입니다. 값이 높으면 그림자가 약해지고, 값이 낮으면 그림자가 어두워집니다.
그림자 거리 페이드아웃 비율예:

감쇠 = 0

감쇠 = 1

Far Shadow 캐스케이드 카운트: 4.8에 출시됩니다. 더 많은 정보가 곧 제공될 예정입니다.
먼 그림자 거리: 4.8에 출시됩니다. 더 많은 정보가 곧 제공될 예정입니다.

캐스케이드 조절 최고의 품질:


섀도우 블리드와 정확도는 위에서 언급한 매개변수를 조정하여 조정할 수 있습니다. 이 섹션에서는 카메라가 가까울 때와 멀어질 때 최상의 결과를 얻기 위해 매개변수를 조정하는 최선의 방법을 보여줍니다. 피할 수 없는 시행착오의 과정.

이것은 기본 설정만 있는 기본 장면입니다.

기본 장면 기본 설정:

여기서는 이미 객체 가장자리의 그림자 정확도에 몇 가지 문제가 있습니다.

문제 영역은 빨간색 프레임으로 강조 표시됩니다.

문제 영역, 자세히 보기

합리적인 범위 내에서 그림자 간격을 최소화하는 데 중점을 두겠습니다. 기본적으로 동적 그림자의 거리는 20000 단위로 설정됩니다. 이 값은 항상 필요한 것은 아니며 위아래로 변경할 수 있습니다.
이 장면에서는 분포 설정, 그림자 거리, 조명 계단식 수 및 정확도가 허용 가능한 수준입니다.

기본 장면 최종 결과

모든 동적 조명(조명 설정 패널):


조명 정확도를 향상시킬 수 있는 설정이 2개 더 있습니다.

이 설정의 위치:

동일한 2가지 설정 - Shadow Bias 및 Filter Sharpness

섀도우 바이어스— 장면의 그림자 정확도를 제어하지만 값이 너무 낮으면 아티팩트가 발생할 수 있습니다. 기본값은 정확도와 효율성 사이에서 좋은 결과를 제공하는 0.5입니다.

섀도우 필터 선명도- 낮은 값에서 일부 아티팩트를 숨기고 가장자리에 더 선명한 그림자를 만드는 데 도움이 됩니다.

그런 점을 고려하면 이전 설정현재 예에는 사용되지 않았으며, 아래에는 이러한 매개 변수(Shadow Bias 및 Shadow Filter Sharpen)를 보여주는 2개의 예가 있습니다.

섀도우 바이어스

섀도우 바이어스 = 0.5(기본값)

섀도우 바이어스 = 0, 너무 낮게 설정하면 아티팩트 발생

이 문제에 대한 해결책은 값을 너무 낮지 않게 설정하는 것과 Cascaded Shadows에서 올바른 값을 선택하는 것 사이의 균형을 찾는 것입니다.

그림자 필터 선명 - 높은 값에서 그림자 가장자리를 더 선명하게 만듭니다.

필터 선명 = 0

필터 선명 = 1


매개변수의 값이 높을수록 그림자의 가장자리가 선명해지고, 값이 낮을수록 그림자의 가장자리가 부드러워집니다.

움직이는 광원이 멀리 있는 메쉬를 통해 빛나는 이유는 무엇입니까?


동적 조명, 특히 스팟 IC는 이런 종류의 문제를 일으킬 수 있습니다. Unreal Engine 4는 이와 같은 최적화를 매우 잘 처리하므로 크게 걱정할 필요가 없습니다. 그러나 때때로 이와 같은 문제가 발생하고 이에 대한 해결책이 있습니다. 항상 분명한 것은 아닙니다.

우리가 원하는 결과입니다.

결국에는 무슨 일이 일어나는가?

무엇을 해야 할까요?

무슨 일이 일어나고 있는지 이해하려면 엔진이 장면의 깊이를 사용하여 렌더링 시 표시되는 것과 보이지 않는 것을 결정한다는 점을 고려해야 합니다. 여기에는 만날 때까지 전체 반경을 따라 빛을 방출하는 점 광원이 있습니다. 장애물 또는 구의 경계와 충돌할 때까지.

아래 그림에서는 빛이 경로에 있는 어떤 장애물도 만나지 않고 모든 방향으로 나오기 때문에 카메라가 멀어질 때 메시의 외부 가장자리 주위에 후광 효과가 어떻게 나타나는지 볼 수 있습니다.

메쉬를 통과하는 빛

멀리서 이러한 메시를 선택/선택하면 조명이 정상으로 돌아오는 것을 볼 수 있습니다. 이는 현재 이 메시에 초점이 맞춰져 있기 때문입니다.

경계 규모의 위치

기본적으로 값은 1.0으로 설정됩니다. 증가하다 이 매개변수작은 값(1.1, 1.2 등)으로. = 2 값을 사용하면 거리가 두 배로 늘어나 불필요해질 수 있습니다. 그림자의 성능과 품질에 영향을 미칠 수 있으므로 필요 이상으로 높은 값을 사용할 필요는 없습니다.

Viewport > Show > Advanced > Bounds로 이동하여 메시의 경계를 보거나 시각화할 수 있습니다.

다음과 같은 내용이 표시됩니다.

시각화된 객체 경계.

추가 참고 사항:

위의 문제가 있지만 성능 문제로 인해 메시 경계의 크기를 늘리고 싶지 않다면 Spotlight를 사용해 보세요. 메시가 빛을 전송할 때 모든 방향으로 빛을 투사하는 포인트 라이트와 달리 이 IC는 한 방향으로만 빛을 투사합니다. 이는 어느 정도 긍정적/원하는 효과를 가질 수 있지만 완벽한 솔루션을 얻을 수 있는 것은 시행착오를 통해서만 가능합니다. .

또는 동적/이동 대신 고정 조명을 사용해 볼 수 있습니다. 이렇게 하면 그림자를 구울 수 있어 궁극적으로 성능이 절약되고 매번 그림자 정보를 업데이트할 필요가 없습니다.

또는 완전히 이동 가능한/동적 조명을 포기하고 라이트맵 텍스처를 굽는 고정 조명을 사용할 수도 있습니다. 이렇게 하면 런타임 동안 그림자 정보 렌더링에 대한 오버헤드가 없어 성능을 절약할 수도 있습니다.

정적 조명


라이트맵 해상도/섀도우 품질


모든 프로젝트는 고유하고 고유한 목표를 갖고 있으므로 이 섹션에서는 정적 조명에서 얻고자 하는 것이 무엇인지 알 수 있는 기본 개념과 기초를 제공합니다.
제시된 설정은 항상 모든 프로젝트에 적용되는 것은 아닙니다.

3개의 정적 메쉬가 있는 간단한 장면입니다.

이 장면에는 벽 2개와 바닥 3개의 개체가 있습니다. 각 개체에는 라이트맵이라는 텍스처에 구워진 고유한 그림자가 있습니다. 이 라이트맵은 이 텍스처에 투영되는 그림자/조명에 대한 정보를 저장합니다. 자산을 생성하는 과정에서 아티스트가 만든 규칙입니다.
라이트맵에 대해 무엇을 알아야 하며 라이트맵을 효과적으로 생성하는 방법은 무엇입니까?

즉, 출입구가 있는 벽에 의해 드리워진 그림자의 해상도를 높이려면 출입구를 사용하여 벽을 조정하지 않고 바닥 라이트맵의 해상도를 높이면 그림자가 투사됩니다. 그리고 라이트맵에 구워졌습니다.

이제 일부 메시의 라이트맵 해상도를 높여야 합니다. 각 메시에는 자체 라이트맵이 있으며, 그 해상도는 메시 에디터에서 메시를 선택할 때 세부 정보 패널에서 설정할 수 있습니다.

이 예에서는 바닥 라인맵의 해상도만 고려합니다.
라이트맵 해상도를 변경할 때 아래 BSP를 제외하고 2의 배수(32(기본값), 64,128 등)만 사용하세요.

라이트맵의 해상도 품질은 두 가지 요소, 즉 메시 크기와 라이트맵의 UV 크기에 따라 달라집니다.

해상도 = 64

해상도 = 128

해상도 = 256

해상도 = 512

BSP 라이트맵과 정적 메시의 차이점은 BSP 라이트맵의 값이 더 나은 품질을 위해 감소된다는 것입니다.

해상도 = 32

해상도 = 24

해상도 = 16

해상도 = 8

모든 것과 마찬가지로 라이트맵을 설정하는 데에는 몇 가지 요령이 있습니다. 작은 메시를 사용하면 낮은 라이트맵 해상도로 바닥에 대한 더 나은 품질을 얻을 수 있는 반면, 더 큰 메시의 경우 라이트맵 해상도를 높여야 합니다. 더 많은 리소스가 필요합니다.

중첩 UV 란 무엇입니까?
정적 또는 고정 조명을 사용할 때는 2개의 스윕을 사용해야 합니다. 그렇지 않으면 다음과 같은 메시지가 표시됩니다:

조명 베이킹 후 로그

이 경우 라이트맵에 대한 두 번째 스캐닝 채널을 설정해야 합니다. 그렇지 않으면 편집자는 모든 기존 오류가 포함된 기존 스캔을 사용합니다.
이 작업은 편집기(아래 그림)나 3D 편집기에서 직접 수행할 수 있습니다.

원본 UV 및 결과

겹치는 UV

편집기의 결과

UV 및 결과 수정

올바른 UV

편집기의 결과

최종 UV에는 겹치는 부분이 없으므로 그림자/조명이 텍스처에 적절하게 구워질 수 있습니다.

편집기에서 UV를 생성하는 방법

편집해야 하는 라이트맵이 있는 메시를 엽니다.
다음과 유사한 패널을 찾으십시오.

라이트맵 UV 생성= 확실히 해라 이 체크박스소송 비용.
최소 라이트맵 해상도=원하는 최소 라이트맵 해상도.
소스 라이트맵 인덱스= 라이트맵을 생성하는 소스
대상 라이트맵 인덱스= 라이트맵으로 사용하려는 스캔의 인덱스입니다.

대부분의 자산에 대해 이것은 충분히 좋은 설정입니다. 여기서 핵심은 선택입니다. 원하는 인덱스라이트맵 소스는 일반적으로 텍스처에 사용되는 UV입니다. 이 UV의 UV 쉘은 다시 포장되며 겹치는 표면을 형성하지 않습니다. 라이트맵 해상도는 스캔 품질에 영향을 주지 않습니다. 생성 후 어떤 종류의 스캔을 얻었는지 확인하려면 UV 채널 1(그림 참조)을 선택하세요.

정적 메쉬 편집기, UV 채널 선택

이제 UV 라이트맵을 생성한 후 남은 것은 메시 자체 설정에서 원하는 ID를 선택하는 것뿐입니다.
메시 에디터에서 디테일 패널의 "Static Mesh Settings" 탭으로 이동하세요.

이 탭에서는 필요한 라이트맵 해상도를 설정해야 합니다.
32는 작은 물체의 경우 기본 해상도로 매우 적합하지만 물체가 클수록 더 높은 해상도표시할 필요가 있습니다.
값이 2의 배수인지 확인하세요(예: 32, 64, 128, 256 등).
다음 매개변수에서는 라이트맵의 좌표 인덱스가 올바른 채널로 설정되어 있는지 확인하세요.
일반적으로 라이트맵은 1로 설정됩니다.

스태틱 메시 에디터 세부정보, 라이트맵 설정

이 설정을 사용한 후에는 올바른 라이트맵 해상도를 갖게 됩니다.

일반적으로 사용 중인 3D 편집기에서 직접 라이트맵을 생성하는 것이 더 좋으며, 여기서는 라이트맵에 대한 이상적인 레이아웃을 만들 수 있습니다. 아무리 자동 생성이 가능하더라도 항상 오류가 발생합니다.
파이프라인에서 3ds Max 또는 Maya를 사용하는 경우 라이트맵을 훌륭하게 스캔하는 방법을 명확한 언어로 설명하는 아래 비디오를 시청하십시오.
좋아요와 채널 구독의 형태로 동영상 작성자에게 "감사합니다"라고 말할 수 있습니다. (원하는 대로 러시아어로 된 유용한 동영상도 많이 있습니다.)


정적 조명을 사용할 때 전역 조명을 제어하는 ​​방법

정적 조명을 사용할 때 결과를 보려면 조명을 설정해야 합니다. 라이트매스는 라이트맵에 구워진 조명 및 그림자 정보를 저장할 텍스처를 생성하고 컴파일하는 데 사용됩니다.

기본적으로 정적 조명을 사용하여 GI(Global Illumination/Illumination)를 얻으려면 라이트매스 값 = 3개의 빛 바운스가 필요하면 변경하세요. 주어진 값, 월드 설정 탭에서 찾을 수 있습니다.

여기서는 조명이 장면에서 어떻게 반응하는지에 대한 많은 설정을 볼 수 있습니다. GI의 경우 "간접 조명 바운스 수"에만 중점을 둘 것입니다. 슬라이더는 1에서 4까지 제한됩니다. 그러나 거기에 입력하기만 하면 원하는 값을 설정할 수 있습니다.

라이트매스 월드 세팅 기본값

전역 조명 예시 장면 250개 단위(약 15w)의 단일 광원

장면 설정

0 바운스

1 바운스

2 바운스

3번의 바운스

100바운스

첫 번째 바운스는 렌더링하는 데 가장 오랜 시간이 걸립니다. 후속 바운스는 렌더링 시간에 덜 영향을 주지만 그 영향은 덜 눈에 띕니다.

그림자가 얼룩덜룩한 이유는 무엇이며 라이트맵에서 먼지를 제거하는 방법은 무엇입니까?
얼룩, 먼지 또는 무엇이라고 부르는 것이 문제가 아닙니다. 이 오류는 ue4에서 정적 조명을 사용할 때 자주 발생합니다. 라이트매스 설정을 통해 이 문제를 해결할 수 있기 때문입니다.
가장 먼저 떠오르는 것은 이것이 라이트매스를 만들 때 GI에서 반사되는 간접광 때문이라는 것입니다.
이 문제를 가장 효과적으로 해결하는 방법을 보여주기 위해 방 2개를 예로 들어 보겠습니다.

외부

내부

이 장면에서는 프로덕션( 생산) 조명 품질. 이 장면은 시작용 콘텐츠 팩의 자산을 사용합니다. 이 장면의 모든 메시는 라이트맵 해상도 = 256을 사용하며, 다른 경우에는 어두운 방을 더 잘 볼 수 있도록 눈이 조정된 후 프로세스가 기본값으로 설정됩니다. 위치.

조명을 구축한 후의 결과는 다음과 같습니다.

첫 번째 방의 내부는 한 번의 바운스로 직접 조명을 비춥니다.

간접 조명으로 전체를 조명한 두 번째 방 내부

무차별 대입을 사용하면 라이트맵 해상도를 높여 일부 아티팩트를 제거할 수 있지만 이 솔루션이 항상 올바른 것은 아니며 항상 도움이 되는 것도 아닙니다.
예를 들어 두 번째 실내 공간에서는 라이트맵 해상도가 1024로 높아졌습니다.

초기 조명, 기본 설정

두 번째 방의 내부, 라이트맵 해상도 256

두 번째 방의 내부, 라이트맵 해상도 1024

이 예에서는 라이트맵 해상도를 높여서 많은 아티팩트가 수정되었지만 이로 인해 메모리 소비도 증가합니다. 이는 간접 조명에 대한 가장 성능 친화적인 솔루션입니다.

월드 설정은 여기입니다:

라이트매스 설정은 여기서 변경됩니다:

간접 조명 품질:필요한 품질을 얻기 위해 전역 조명 값을 늘립니다.
간접 조명 부드러움:간접 조명에 사용되는 평활화 요소입니다.
주의하여! 간접 조명 품질에 1보다 큰 값을 사용하면 빌드 시간이 크게 늘어납니다.

기본 설정

예시 설정 #1

원하는 결과를 얻기 위해 간접 조명 바운스 수를 조정할 수도 있습니다.

간접 조명 바운스 수 = 4

간접 조명 바운스 수 = 5

이 시점에서 조명 설정은 텍스처 아티팩트를 숨기기에 충분한 값으로 설정됩니다. 그러나 이러한 조작을 수행하는 것이 불가능할 경우 간단히 라이트맵 해상도 값을 높일 수 있습니다. 여기서 이 값은 256에서 512로 변경되었으며 다음과 같은 결과를 얻었습니다.

라이트맵 해상도 = 512로 간접 매개변수를 변경했습니다.

라이트맵 해상도 = 1024인 변경되지 않은 간접 매개변수.

이 강의 시작 부분에서는 라이트맵 해상도 1024를 사용하여 일부 아티팩트를 수정하는 방법을 보여주었습니다. 그러나 일부 라이트매스 설정을 조정하면 다음과 같은 결과를 얻을 수 있습니다. 최고의 결과더 낮은 라이트맵 해상도를 사용합니다.

이 방법은 빛을 사용하지 않고 라이트맵 오염 문제를 해결하는 방법을 보여 주지만, 올바른 장소 작은 소스빛은 강도가 낮고 그림자가 없으면 더 나은 결과를 얻을 수 있습니다. 위에서 설명한 방법은 단지 시작점일 뿐이며 시행착오를 통해서만 원하는 결과를 얻을 수 있습니다.

왼쪽의 "조명을 재구축해야 합니다"란 무엇입니까? 상단 모서리?
모드에 있는 경우: 게임 편집기, 시뮬레이션, 독립형, 왼쪽 상단에 조명을 다시 구축해야 한다는 문구가 표시됩니다. 이는 장면에서 조명을 다시 굽거나 구축해야 함을 의미합니다. 정적 및 고정 조명에서 발생합니다. 동적 조명에는 조명 빌드가 필요하지 않습니다. 광원이 이동되거나 수정되면 이 메시지가 나타납니다.


에러 메시지

조명 품질 비교


필요한 품질로 조명을 베이킹해야 하는 경우 빌드>조명 품질>원하는 품질 선택으로 이동하여 품질을 선택할 수 있습니다.
기본적으로 품질은 다음과 같이 설정됩니다. 시사.이 품질 수준은 렌더링할 때보다 빠릅니다. 생산, 하지만 그렇게 깔끔하지는 않습니다.

시사

평균

높은

생산

이 예에서는 미리보기 품질과 제작 품질의 차이를 쉽게 알 수 있습니다. 다른 설정에 비해 이전 설정에 존재했던 단점/버그는 프로덕션에서 사라지기 때문에, 라이트를 베이킹할 때 오류/버그/아티팩트가 관찰되면 버그/오류가 발생하더라도 프로덕션에서 조명을 설정하는 것이 좋습니다. 오류가 사라지지 않은 경우 라이트맵으로 이동하여 올바른지 확인하세요.

이 조각상을 예로 들면 품질의 차이를 알아차리기가 쉽지 않지만 차이가 있습니다.

조명 품질

시사

평균

높은

생산

라이트맵 스캔을 개선하는 것은 고품질 그림자의 핵심입니다.


동상 조명 품질

소개

제 이름은 Lasse Rohde이고 xoio studio의 대표입니다. 우리는 건축 및 마케팅 작업을 렌더링하고 보여주는 소규모 에이전시로 일반적으로 3ds Max 등과 같은 응용 프로그램을 사용하는 일종의 "전통적인" 3D 환경에서 작업합니다. 우리는 지속적으로 새로운 렌더링 엔진을 테스트하고 있으며 현재 Corona Renderer, V-Ray 및 Octane을 선호합니다. 각 "엔진"에는 고유한 강점그리고 우리는 항상 각자의 목적을 위해 각각을 사용하려고 노력합니다. 제 생각에는 우리 업계에는 몇 가지 주요 트렌드가 있습니다. 빠른 결과– 실시간에 대해 이야기하지 않는 경우. 렌더팜에서 결과가 준비될 때까지 기다리지 않는 것은 항상 우리의 꿈이었습니다. 특히 애니메이션을 만들 때 "실시간"의 주요 단점은 더욱 그렇습니다. 오랫동안"사전 렌더링된" 이미지 및 애니메이션에 비해 품질이 부족했습니다. 따라서 매우 흥미로웠지만 시각화 측면에서 이를 적용하는 것은 상상하기 어려웠습니다. 솔직히 말해서 "게임적"으로 보이는 것은 건축 및 기업 분야의 안목 있는 고객에게 판매하기 어려운 일이었습니다. 그러나 상황은 극적으로 변했습니다. 오늘날 "실시간 엔진"에서 생성된 결과는 매우 아름답고 설득력이 있습니다!

왜 언리얼 엔진인가?

UE4의 출시는 업계에서 많은 관심을 받았고 가능성은 무궁무진해 보였습니다. 언리얼 엔진에서 모델을 생성하기 위한 PBR(물리적 렌더링) 머티리얼 시스템과 간단한 워크플로우는 우리가 이를 시도하게 된 가장 설득력 있는 이유였습니다. 이는 추가적인 품질을 얻을 수 있는 기회입니다! 몇 주 전에 큰 인기를 끌었던 Koola의 작품(Unreal Engine Marketplace에서도 다운로드 가능)을 보신 분이라면 아마도 이 글에서 Unreal Engine 4의 뛰어난 품질을 확신하실 것입니다. , 베를린 아파트 씬을 제작하기 위한 워크플로를 간략하게 설명하고 싶습니다. 마켓플레이스(Unreal 브랜드 스토어)에서 다운로드할 수 있고 씬 작업을 하면서 제가 접한 몇 가지 기술과 테크닉을 볼 수 있습니다. 그 중에는 제가 직접 찾은 것도 있고, 인터넷에서 찾은 정보를 바탕으로 한 것도 있습니다. 언리얼 엔진의 포럼과 문서는 "엔진"과 함께 제공되는 핵심 콘텐츠와 마켓플레이스에서 얻을 수 있는 씬 팩과 마찬가지로 광범위하고 광범위한 리소스입니다.

베를린 아파트

저는 2013년부터 Corona Renderer가 포함된 3ds Max를 사용하여 베를린의 역사적인 건물에 있는 이 아파트의 이미지 시리즈를 만들어 왔습니다. 이것 유연한 방식현장의 밝은 분위기를 이끌어내는 데 큰 도움이 되는 연색성 처리. 이것이 테스트를 위해 UE4를 선택한 이유이기도 합니다. 변덕스러운 조명과 노이즈가 많은 텍스처가 있는 장면에서 UE4가 꽤 성공적으로 사용되었다는 것을 알았습니다. 울트라 화이트 인테리어에서 정확한 섀도우와 GI(Global Illumination)를 얻는 것이 그리 쉽지는 않을 것이라고 생각했습니다. 그리고 솔직히 말해서 쉬운 일이 아닙니다!

그림 1.

위는 3ds Max와 Corona Renderer로 만든 원본 렌더링입니다. 다른 이미지를 보려면 를 클릭하세요.

아래는 완성된 장면의 영상입니다

처음부터 시작하겠습니다.

원본 장면모델링은 급하게 3dsmax로 했습니다. 그래서 최종 이미지에 반영된 부분에 대해서만 자세히 다루도록 하겠습니다. 물론 이 접근 방식은 실시간 환경에서는 불가능합니다. 언리얼 엔진에서 사용할 때 타겟의 목적을 변경하려면 공간 전체를 꾸미고 디테일하게 만드는 데 테스트하는 데 너무 많은 시간이 걸리기 때문에 규모를 조금 줄여야 했습니다.


그림 2

저는 두 개의 방만 내보내기로 결정했습니다. 위 스크린샷 하단에서 볼 수 있습니다.

다음에 대한 형상 내보내기언리얼 엔진-아이디어가 여러 개인 경우 매우 어려운 작업입니다. 아이디어를 여러 부분으로 나누는 것이 좋습니다. 따라서 라이트매스는 다음과 같이 계산됩니다. 별도의 카드모든 개체는 특히 벽이나 천장 등 크고 평평한 개체의 경우 값이 높으므로 조금 주의하는 것이 좋습니다. 이 때문에 실제로 보이는 벽의 내부 표면만 내보냈고 나중에 천장과 교차하기 위해 벽의 상단과 하단에도 약간 추가했습니다. 내 생각엔 그럴 것 같아 좋은 방법"빛 누출"을 방지하기 위해 - 형상이 덮이지 않거나 교차하지 않을 때 나타나는 가벼운 아티팩트입니다. 텍스처가 많이 포함된 어두운 장면에서는 문제가 되지 않습니다. 하지만 우리는 초백색 공간을 원하기 때문에 특히 모서리에서 가능한 한 정확한 GI(전역 조명)를 생성하는 것이 중요합니다.


그림 3

두 번째로 중요한 것— UE에서 라이트매스 계산을 위해 저장될 GI 채널에 대해 조정된 스캔을 생성합니다. 3ds Max에서 이는 UV 채널 2입니다. 채널 1은 확산, 거칠기, 법선 등과 같은 다른 모든 텍스처를 사용하기 위한 것입니다. 언리얼 엔진은 0부터 시작하는 채널을 계산하는데, 처음에는 다소 혼란스러울 수 있지만, 익숙해지고 나면 간단해집니다. 참고: 언래핑은 라이트 맵 채널에만 중요합니다! 텍스처 채널의 경우 입방형이나 원통형 등 모든 종류의 매핑이 작동할 수 있습니다. 대부분의 경우 Unwrap 수정자를 사용하여 3ds Max에서 평면화 매핑 작업(펼침 임계값과 각도를 설정할 수 있는 스윕 얻기)은 UV 좌표를 얻는 데 충분합니다.


그림 4

UE4의 씬에 있는 모든 오브젝트를 max-scene에 있는 것처럼 가져오려면 모델을 수정하여 내보내는 동안 있던 위치에 삽입해야 합니다. 의자 등 단일 개체의 경우 언리얼 엔진으로 한 번 내보내고 내부에 복사하는 것이 편리합니다. 이렇게 하려면 UE의 객체 중심(피벗)이 거기에 있기 때문에 객체를 3ds Max 장면의 중심에 더 가깝게 이동해야 합니다.

그림 5


그림 6

보시다시피 저는 LOD(세부 수준) 단순화 없이 하이 폴리 지오메트리를 사용하고 있습니다. 물론 이것은 이와 같은 작은 장면에서만 권장되지만 형상을 부드럽게 한 경험이 있고 가구에 들쭉날쭉한 가장자리를 원하지 않기 때문에 이 방법이 이해가 됩니다. 방에 최적화가 필요하다는 것은 의심의 여지가 없습니다.) 나중에 UE4에서 다양한 머티리얼을 처리하기 위해 요소가 각각 다른 머티리얼 ID를 가지고 있는지 확인하세요. 음, 지오메트리를 .fbx에 저장하세요! 해상도를 높이고 Unreal Engine 편집기로 이동하세요! 다음으로 가져오기언리얼 엔진 4 FBX 파일을 Unreal Engine 4로 가져오는 것은 매우 원활하게 작동합니다! 저는 이 작업을 여러 단계로 나누어 다음과 같은 순서로 다양한 파일을 준비했습니다. 별도의 파일 FBX. - 각각 여러 개체가 포함된 모델용 파일이 서로 다르므로 개체를 하나의 개체로 결합하지 않고 분리하려면 메시 결합 확인란을 선택 취소하세요.

그림 7

재료

나는 꽤 솔직하고 열렬한 팬입니다. 간단한 설치! 따라서 예제 셰이더는 매우 간단하며 확산 맵, 채도 감소 및 검정색 혼합으로 구성됩니다. 동일한 맵은 거칠기 채널에서 색상이 교정되고 반전됩니다. 준비가 된.


그림 8

여기서 노멀 맵은 과도하지만 장면의 자료 탐색에만 국한하지 마십시오.


그림 9

여기에서는 의자와 테이블에 사용된 목재 재료를 볼 수 있습니다. 무광택 반사가 있는 어두운 목재는 목재의 구조와 질감을 드러냅니다. 다음 이미지커튼, 백라이트 등 관심을 가질 만한 자료를 두 배 더 많이 볼 수 있습니다. 햇빛– 양면 소재로 제작되었습니다.


그림 10

이 효과를 얻으려면 셰이딩 모델을 "하위 표면"으로 설정하고 값이 1보다 작은 상수 노드를 추가하고 재료의 불투명도 속성에 연결해야 합니다. 전경에 있는 유리에는 매우 간단한 유리 재료가 적용되어 있습니다.


그림 11

그는 꽤 어두운 색확산, 거칠기 제로 및 높은 반사성. 또한 실제 생활처럼 불투명도와 굴절을 제어하기 위해 값이 1.5인 프레넬 노드를 적용했습니다. 보다 현실적인 유리를 얻기 위한 더 복잡한 방법이 많이 있습니다. 하지만 솔직히 매개변수를 제어하는 ​​데 약간의 어려움이 있었기 때문에 이 간단한 유리는 꽤 잘 작동하는 것 같았습니다. 참고: 저는 양면을 선택하고 반투명 조명 모드 "TLM 표면"을 설정했습니다. 왼쪽 패널의 세부정보 탭에서


그림 12

보여주고 싶은 재질은 바닥에 적용된 재질인데, 노멀맵이 적용된 유일한 재질이라 보여드리고 싶습니다.


그림 13

여기에서는 확산 색상, 거친 질감 및 노멀 맵이 있는 재질을 볼 수 있습니다. 색상은 밝은 회색이며 값은 4입니다. 거칠기는 좀 더 복잡해 보입니다. 왼쪽에는 TexCoord 노드가 있는 3배 더 큰 동일한 맵이 표시됩니다. 빨간색 채널에 다른 채널을 곱한 다음 선형(Lerp) 노드 보간에서 알파로 연결하여 해당 값을 혼합합니다. 이 예에서 0.3과 0.2에서는 보드 바닥에 미묘하고 시끄러운 반사가 나타납니다. 그런 다음 "Power" 노드로 수정하여 다음을 얻습니다. 필요 수량노멀은 다시 TexCoord에 노출된 다음 "FlattenNormal" 노드를 통해 펼쳐서 머티리얼에 얇은 릴리프만 얻습니다. 모델 준비장면에 개체를 추가하기 전에 항상 재료를 기하학적으로 분산시키는 것이 가장 좋습니다. 이 작업은 한 번만 수행하면 되며 다양한 재료를 적용할 수 있습니다. 이는 빠른 과정입니다. 여기에서는 개체가 속한 다양한 재료를 배치하기 위해 개체에 서로 다른 재료 ID를 적용하는 것이 얼마나 중요한지 확인할 수 있습니다!


그림 14

장면 구축 간단히 말해서 모든 것을 함께 가져옵니다. 먼저 형상을 방으로 끌어야 합니다. 가장 좋은 방법, 장면 조립 - 빈 장면으로 드래그 앤 드롭합니다.


그림 15

벽 바깥쪽 부분의 폴리곤은 여기에 표시되지 않습니다. 위에서 설명한 것처럼 폴리곤은 더 나은 라이트매스 계산을 위해 단면적일 뿐입니다. 이러한 경우 라이트맵(스캔으로 얻은) 해상도를 설정하는 것이 좋습니다. 예를 들어 벽과 같이 값이 높은 대형 객체의 경우 값을 2048 로 설정했습니다.

그림 16

위에서 언급한 것처럼 '빛샘'이 문제가 될 수 있습니다. 이를 방지하기 위해 무대 전체에 블랙박스를 배치했습니다. 겉은 좀 지저분해 보이지만, 내부는 깨끗해요 ;)


그림 17

조명 및 해당 매개변수

조명 설정도 매우 간단합니다. 저는 빛의 흐름을 시뮬레이션하기 위해 창 앞쪽에 태양과 빛의 반점을 조합하는 "쿨라 방법"을 사용했습니다. 매우 효과적이고 관리하기 쉽습니다! 이제 전역 조명 계산에는 몇 가지 설정만 중요합니다.

그림 18

반사 광선과 조명 품질이 크게 향상되었습니다. 또한 스무딩을 0.6으로 낮췄습니다. 세부 사항이 더 잘 정의되고 그림자가 많이 씻겨 나가지 않습니다. 또한 더 나은 그림자를 얻기 위해 동적 그림자의 직접 조명을 조정했습니다. 이는 애니메이션 후반의 가벼운 움직임에도 중요합니다!

그림 19

"만들기"를 클릭하기 전 마지막 단계는 조명 품질을 "프로덕션"으로 설정하는 것입니다.

그림 20

이렇게 하면 전체적으로 조명이 더 부드러워질 것입니다. 사실 처음 이 지점에 도달했을 때 정말 기뻤습니다! 사실 이 엔진의 가장 큰 장점은 바로 여러분을 흥분하게 만드는 것입니다! 실시간으로 내 "렌더링" 내부로 이동할 수 있다는 것은 정말 즐거운 순간이었습니다! 후처리가장 큰 기능 중 하나는 편집기에서 바로 색상 교정 및 카메라 효과를 적용할 수 있는 기능입니다. 이는 PostProcessVolume을 사용하여 수행할 수 있습니다. 전역 설정. 채도, 언저리 및 비네팅, 채도를 몇 가지 조정하고 최소 및 최소값을 설정하여 자동 노출을 끕니다. 최대값 1로 설정하고 노출 보정을 약 1.42로 설정하여 전체 밝기를 높였습니다. 하이라이트도 추가했는데, 모든 일이 실시간으로 일어나기 때문에 정말 놀랍습니다!


그림 21

애니메이션 설정장면 내에서 자유롭게 이동할 수 있는 기능은 실시간 환경의 즉각적인 피드백으로 인해 애니메이션을 매우 쉽고 즐거운 작업으로 만듭니다. 자주 이용하는 사용자로서 소프트웨어합성의 경우 통합 도구에 적응하고 애니메이션을 설정하는 데 오랜 시간이 걸리지 않았습니다. 가장 먼저 해야 할 일은 Matinee Actor(비디오 시퀀스 생성을 위한 툴킷)를 만드는 것이었습니다.

그림 22

Matinee를 열면 추적 섹션과 곡선 편집기가 있는 창이 표시됩니다.


그림 23

카메라와 애니메이션을 설정하는 것은 간단합니다. 움직임은 다른 애니메이션 프로그램과 마찬가지로 키프레임과 곡선으로 제어됩니다. 편집 작업은 마티네 에디터에서만 진행됩니다.


그림 24

편집기에서 카메라 경로를 확인하고 즉석에서 편집을 제어할 수 있습니다! Matinee에서 대략적인 애니메이션이 완료된 후 애니메이션을 .AVI로 내보내고 Premiere에서 마무리하여 음악에 맞춥니다.

결론

3ds Max에서 내보내고 Unreal Engine 4로 가져오는 것부터 그림자 및 조명 작업, 애니메이션 제작, YouTube에 게시하는 데까지 전체 프로세스가 하루 정도 걸렸습니다. 이 속도는 ArchVIZ에서는 전례가 없으며 그 뒤에 있는 주요 잠재력을 반영합니다. 언리얼을 사용하여작품 시각화를 위한 엔진 4. 이미지 '제작' 단계에서 시각화가 없기 때문에 생성 과정이 매우 유연하고 자유로워집니다. 우리 행동의 빠른 결과는 진정한 혁명입니다! 우리는 이러한 유형의 창조물을 사용할 가능성에 대해 끊임없이 테스트하고 생각하고 있습니다. 기술적 과정우리의 일상 업무에는 많은 응용이 가능하며 우리는 그것들을 탐구하고 싶습니다! 라세, xoio




질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: