[자체번역]게임용 VFX 설명 (VFX for Games Explained)



[자체번역]게임용 VFX 설명 (VFX for Games Explained)

 

게임용 VFX 설명

 

 

VFX 마스터 인 Francisco García-Obledo Ordóñez는 언리얼 엔진(UE)4에서 라이팅 및 기타 멋진 대상들을 만드는 방법에 대해 이야기하였습니다. UE4 사용자를 위한 아주 좋은 세부 설명이 있습니다.

 

 

원문 : https://80.lv/articles/vfx-for-games-explained/

번역 : http://cafe.naver.com/unrealfx (금별)

 

 

 

소개

 

 

안녕하세요, 저는 Francisco García-Obledo Ordóñez입니다. 나이는 34 살이고, 킹 바르셀로나에서 수석 VFX 아티스트로 근무하고 있습니다. 2005 년 바르셀로나에서 소규모 회사의 3D 아티스트로 일하기 시작했습니다. 당시의 비디오 게임 프로덕션은 지금처럼 대규모로 이루어지는 일이 아니었기 때문에, 아티스트가 된다는 것은 모델링, uv 매핑, 리깅, 텍스처링, 라이팅 등 다양한 작업을 처리해야 함을 의미했습니다.


 

VFX 아티스트로의 전환은 제가 다닌 두 번째 회사인 Grin의 Barcelona 스튜디오에서 시작되었습니다. Grin은 Bionic Commando와 Wanted:Weapons of Fate(제가 참여한 게임입니다)를 제작한 스웨덴 회사입니다. 여기서 처음으로 강도 높은 아트 작업에서 벗어나, 환경/소품 팀이 asset을 export하고, 프로그래머들이 새로운 기능(쉐이더, 게임 플레이, 툴 등)을 구현할 수 있도록 도움을 주는 등의 전보다  더 테크니컬한 업무를 맡게 되었습니다. 2011 년에 Mercury Steam에 합류하였을 때는 공식적으로 VFX 아티스트가 되어 있었습니다. Castlevania Lords of Shadow 2에 참여했고 거의 모든 VFX 작업 (파워 업, 마술, 캐릭터 이펙트, 게임 플레이 이펙트 등)에 대한 책임을 맡았습니다. 이 경험으로 인해 VFX 커뮤니티에 깊이 들어갈 수 있었고, 용어, 플러그인, 소프트웨어, 그리고 가장 중요한 VFX 아티스트로 활동하고 있는 업계의 사람들을 알 수 있었습니다.

 


 

 

 

 

게임을 마쳤을 때 저는 편안한 지역을 벗어나 새로운 국가에서 4 명의 VFX 아티스트 팀에 합류하기로 결정했습니다. 2014 년에 스플래쉬 데미지 (Splash Damage, 런던)에 고용되어 Gears of War Ultimate Edition을 개발했습니다. 처음으로, 프로젝트의 처음부터 끝까지 상용 엔진 (오리지널 Unreal Engine)을 사용하였습니다. VFX가 어떻게 수행되어야 하는지에 대한 또 다른 관점을 갖게 되었습니다. 언리얼 스크립트, 쉐이더 제작 등과 같은 작업을 맡았습니다. 엄청난 책임감을 느끼며 Gears of War 4와 같은 상징적인 게임을 제작하였지만, 결국엔 저도 얻은 바가 많았습니다. Rockstar North (에든버러)로 회사를 옮겨, 레드 데드 리뎀션 (Red Dead Redemption) 2과 같은 거대한 게임에 참여할 수 있었기 때문입니다. 저는 FX 아티스트와 그래픽 / 게임 플레이 프로그래머를 포함하여 10-12 명으로 구성된 팀의 일원이었습니다. 자체적인 엔진으로 작업하고 새로운 기능, 쉐이더 등을 구현하는 것은 매우 도전적인 일이었습니다. 개인적으로 이유로 바르셀로나의 킹으로 이사했고, 현재는 VFX 전문가로서 게임을 개발하고 있습니다. 과거에는 다양한 일들을 처리해야 했지만, 지금은 회사 내에서 새로운 역할을 맡아, 모바일 게임 개발 업무를 전문적으로 담당하고 있습니다.

 

 

 

 

 

VFX 아티스트가 하는 일

 

 

다른 것은 제외하고 VFX 작업만 이야기한다면, 크게 두 가지 작업으로 구성된다고 할 수 있습니다: 게임 플레이 이펙트와 배경 이펙트입니다. 우리가 작업하고 있는 프로젝트가 무엇인지에 달려 있다고 볼 수도 있습니다. 예를 들어, Castlevania (핵 앤 슬래시hack and slash)와 같은 게임에서 vfx 작업의 90 %는, 게임플레이에 임팩트를 불어 넣어주는 캐릭터 능력, 마법 등으로 구성되어 있습니다. 이러한 종류의 작업을 수행하려면 게임 메커니즘에 대한 이해가 필요하며 디자인 팀과의 지속적인 커뮤니케이션이 필요합니다. 협상을 해야 하는 것입니다. 예를 들어, 화염 방사기를 예로 들어 봅시다. 게임 플레이 디자이너는 공격의 피해 영역을 정의하고, 여러분은 디버그 실린더(debug cylinder) 위에 이펙트를 만들어야 합니다. 흩어지는 동안 불길이 남아있으므로, 그 불꽃은 데미지를 입히는 구역(damage area)을 완전히 따라 가지 않고, 이에 대해 디자이너는 불만을 토로합니다. 이것은 두 분야 간의 "갈등"의 한 예입니다. 왜냐하면 불이 불처럼 느껴지지 않을 것이기 때문입니다. 그러므로, 플레이어들이 남아있는 작은 불꽃은 데미지를 입힐 수 없다는 사실을 알아차리지 못할 것이라고 디자이너들을 설득할 수 있는 대안을 제시해야합니다. 

 

게임 플레이 이펙트가 더 "중요한", 유사한 게임 장르는 싸우는 게임이나 RPG입니다.

 

다른 게임 장르도 있는데요, 예를 들어 슈팅게임(특히 현실적인 것들)이 있습니다. 여기서는 배경(환경) 이펙트가 게임 플레이 이펙트와 똑같이 중요합니다. 배경 이펙트를 담당하는 VFX 아티스트는 거의 배경 아티스트가 되어야 하며, 대부분의 협업은 그의 팀과 함께 이루어집니다. 배경 이펙트의 예로는 폭포, 안개, 비 등이 있습니다. 제가 더 많은 배경 이펙트를 제작한 게임은 Gears of War 4였습니다. 여기서 우리는 멀티 플레이어 맵 작업을 하고 있었고, 이들 이펙트의 성능(퍼포먼스)에 많은 관심을 기울여야 했습니다 게임을 60fps, 1080p로 실행해야 했기 때문입니다.

 

 

 

 

 

 

 

현실적인 이펙트

 

 

기술이 더 강력해질수록 사실적인 비주얼을 구현하는 데 따르는 제약이 줄어듭니다. 특히 cutscenes에서 우리는 영화 VFX와 비슷한 퀄리티에 도달하고 있습니다.

 

이것은 부분적으로, 지난 몇 년 동안 우리가 놀라운 텍스처를 제작하기 위해 액세스해온 소프트웨어의 양 덕분입니다. 다음은 제작을 위해 사용된 툴들의 목록입니다. 

 

- 화재 / 연기 / 폭발 : Fume FX, Phoenix FD, Maya fluids 등

- 액체 : Phoenix FD, RealFlow, 블렌더 등

- 파괴 / 강체(rigid body) 시뮬레이션 : Rayfire, MassFX 등

 

그리고 최고는: 후디니. SideFX의 일원들은 특히 최신 버전 릴리즈에서, 놀라운 소프트웨어를 게임 개발에 접목시키는 데 큰 성과를 보여주고 있습니다. 소프트웨어가 제공하는 다양한 가능성을 보았을 때, 적어도 보다 현실적인 프로젝트에서는 Houdini가 게임 업계의 표준이 되어가는 것을 볼 수 있습니다. 일단 그들이 가파른 학습 곡선을 완화시킨다면, 이전에 Allegorithmic’s suit에서 일어났던 일과 같은 방식으로, 더 많은 사람들이 사용하게 될 것입니다. 그러나 이 모든 소프트웨어들은 주로 나중에 게임에서 사용될 사전 제작된(precooked) asset 생성 (텍스처, 메쉬, 애니메이션)에 초점을 맞추고 있습니다. 고품질의 사실적인 결과를 얻을 수 있지만 변형(variation)은 전혀 없습니다. 미리 제작된 폭발 텍스처는 항상 동일한 모양과 모션을 보여줄 것입니다. 진정한 도전은 실시간(real time)으로 그러한 퀄리티를 달성해내는 것입니다. 그리고 우리는 실시간 테크닉(real time technique)을 개선하고 있으며, 예를 들면 게릴라(핵폭발의 해부)가 제작한 모션 벡터 프레임 보간(interpolation), 또는 언차티드 4(Siggraph 2015 볼륨 셰이더)에서 불/연기를 구현한 실시간 레이마칭(raymarching)과 같은, 실시간 물리 및 유체 시뮬레이션으로부터 복잡한 쉐이더까지를 이미 보고 있습니다. 

 

 

 

 

파티클 이펙트

 

 

파티클 이펙트가 실시간으로 작동하는 방식을 이해하는 좋은 방법은 팝콘 기계가 작동하는 방식을 분석하는 것입니다.

 

 

1) 먼저 원하는 팝콘의 양을 결정해야 합니다. 이것은 우리의 spawnrate(생성속도) 일 것입니다.

2) 옥수수 알갱이는 파티클이 위치할 지점을 나타냅니다.

3) 팝(펑 터지는 것)은 실제 파티클의 렌더링입니다. 팝콘이 메쉬(3D)가 될 것인지 또는 스프라이트 (전통적으로 2 개의 삼각형으로 구성된 평면)일지 결정하는 것은 우리입니다.

4) 팝 후에, 팝콘은 날아가고 결국 떨어집니다. 이것은 초기 속도 + 중력 (다이나믹스)을 나타냅니다.

 

팝콘 기계와 실시간 파티클 이펙트의 차이점은, 현실에서는 팝콘을 충분히 얻을 수 없으며 버터 맛, 단맛, 짠맛 등은 선택할 수 있지만, 실시간 엔진에서는 타협을해야 한다는 것입니다. 셰이더가 더 정교해질수록 더 적은 수의 파티클이 화면에 표시되어야 프레임 속도에 해를 끼치지 않습니다.

 


 

 

프로덕션

 

 

 

 

 

저는 VFX 아티스트를 일종의 마술사로 보고 싶습니다. 그런 효과를 내기 위해 사용했던 모든 트릭을 보아야만 합니다.

 

 

이 이펙트는 아트 테스트의 결과로 만들어졌습니다. 테스트의 요구 사항은 다음과 같습니다:

 

이 테스트의 목적은  "AAA"이펙트를 만들 수 있는 여러분의 능력을 보여주는 것입니다.

 

- 큐브를 파괴하는 멀티 레이어, 마법 기반 공격을 만듭니다.

- 이펙트는 준비 동작(anticipation), 공격 및 충격(impact)으로 구성되어야하며 큐브의 파괴가 뒤따릅니다.

- 모든 텍스처는 여러분이 직접 만들어야 합니다.

- 단일 프레임 텍스처 및 / 또는 최대 1 개의 애니메이션 플립 북을 사용합니다.

 

위의 지침에 따라 제가 하는 첫 번째 작업은 레퍼런스 라이브러리 (비디오, 고정된 이미지, pinterest 등)를 만드는 것입니다. 저보다 그림을 잘 그리는 사람들은 스토리보드, 드로잉 또는 paintover(실제 사진을 그림처럼 보이게 하기 위해 덧칠하는 것)로 진행하는 것을 선호하지만, 저에게 있어서는 레퍼런스를 수집하고 마음 속에서 모든 것을 조합하는 편이 훨씬 빠릅니다.

 

이펙트의 전반적인 모양을 결정할 때 주 요소가 무엇인지를 식별합니다. 그것은 광선(rays)입니다. Castlevania LoS2에서 텔레포트 연기 효과를 만들 때 사용했던 것과 같은 기술을 사용하기로 결정했습니다.

 

 

 

 

 

3ds Max


 

 

Directional rays(디렉셔널 광선)

 

 

먼저 공격자로부터 희생자에 도달하는 궤적(trajectory)을 정의하는 나선형 메쉬를 만듭니다. 이펙트는 다른 각도에서도 볼 수 있고, 트레일이나 빔(beam)을 사용하지 않는 것을 선호하므로, 메쉬는 60 도씩 회전된 세 개의 평면으로 구성됩니다.

 

 

텍스처 / 셰이더가 없으면 이상하게 보일 것입니다만 최종 결과는 3 차원 광선처럼 보일 것입니다.

 

 

다음 단계는 광선의 궤도를 정의하는 스플라인(spline)을 만드는 것입니다. 스플라인을 사용하여 경로 변형 수정자(path deform modifier)를 메쉬에 적용합니다.

 

 

이제 우리는 정적 광선(ray)을 보유하고 있습니다. 텍스처를 표시하고 사라지게 만드는 방법은, 셰이더를 통해 텍스처의 UV를 수직으로 스크롤하는 것만큼 간단합니다. 여기서 트릭은 Unreal에서 텍스처를 Clamped로 설정하는 것입니다. 이렇게하면 UV가 0-1 공간 밖에 있을 때 메쉬는 투명해집니다. 그렇지 않으면 광선이 반복되는 것을 보게 될 수도 있습니다.

 

여기서 타일로 설정된 텍스처와 

 

 

 

 

clamp로 설정된 텍스처 사이의 차이점을 확인할 수 있습니다 :

 


 

호(arc) 모양 광선

 

이제 우리는 이펙트의 주요 요소를 갖게 되었습니다. 좀 더 추가해 봅시다. 우리는 공격자로부터 어떤 종류의 준비 동작(antcipation) 필요합니다. 무언가가 일어날 것임을 플레이어에게 알릴 필요가 있습니다. 이 목적을 위해서 저는 같은 광선을 사용하지만, 다른 궤도를 적용하기로 결정했습니다. 이번에는 200도 호를 만들고, 횡단면(cross-section) 메쉬에 경로 변형(path deform)을 적용할 것입니다.

 

 

 

 

파괴

 

 

다음 요소는 큐브의 폭발입니다. 3dsmax에서도 이에 접근할 수 있는 몇 가지 방법이 있지만 Rayfire 플러그인으로 만들었습니다. 언리얼에서 나중에 사용할 애니메이션으로 내보냅니다(export).

 

 

 

 

언리얼

 

 

이제 모든 것을 합칠 시간입니다. 준비동작(anticipation) 이펙트를 추가함으로써 시작하였습니다. 그렇게 하기 위해 우리가 만든 호를 사용하여 파티클 이펙트를 만들었습니다. 메쉬를 360도 사방에서 무작위로 생성하고 그것들의UV를 이동시키면,  구체 주변을 둘러싸는, 마치 방패처럼 보이는 이펙트가 생겨납니다. 메시의 강성을 깨기 위해 벡터 필드와 함께 GPU 파티클을 추가하기로 결정했습니다. 처음에는 이 두 요소를 통해 언제 방향(디렉셔널) 광선을 트리거해야 하는지 명확하게 알 수 없었습니다.

 

아주 중요한 것을 놓쳤다는 사실을 깨달았고 그것은 상태(status) 변화로 판명되었습니다. 공격(attack)을 트리거할 때, 저는 항상 준비 동작에 짧게 지속되는 박력을 넣어 줍니다. 그런 다음 메쉬와 GPU 파티클의 색상을 더 해로워 보이는 것으로 변경하겠다고 결정합니다. 오렌지색은 불을 생각나게 하며, 붉은 색조는 항상 뭔가 위험한 것을 나타내므로, 저는 오렌지색을 선택했습니다. 또한 이펙트에 더 많은 파워를 주기 위해, 에너지가 축적되는 감각을 전달하는 데 도움을 주는 오렌지 빛을 추가했습니다.

 

준비 동작 이펙트가 완료되면, 이제 그 에너지를 적에게 방출할 차례입니다. 저는 효과가 강력해지기를 원하기 때문에 세 개의 이미터로 구성된 파티클 이펙트를 만들었습니다. 세 개의 이미터는 각각, 이전 에미터와 비교해서 60도 회전된 방향성(디렉셔널) 레이(ray) 복사본을 지니고 있습니다.

에미터 지연(delay)과 UV 스크롤링을 조정하여 세 개가 같은 시간에 동일한 속도로 생성되지 않도록 합니다. 하지만 셋이 동일한 프레임에 충돌(impact)되어야 합니다. 이 미묘함은 VFX 아티스트가 추구하고, 시간을 소비해야 하는 것입니다. 대부분의 시청자 / 플레이어는 작은 조정을 인식하지 못하지만, 지연 / 스크롤 / 크기에 대한 변형이 있거나 없는 두 가지의 이펙트를 보여주면, 그들은 차이점을 알 수 있게 될 것입니다.

마지막 부분은 충돌(impact)입니다. Unreal에서의 첫 번째 단계는 Blueprints에서 정확한 시간에 애니메이션을 트리거하는 것입니다. 그런 다음 파괴를 위한 파티클 이펙트를 만듭니다. 파티클 이펙트는 빛, 불꽃(gpu 파티클 및 퍼포먼스 상의 이유로 모두 충돌하지는 않음), 조명(lighting), 잔해 연기(aftermath smoke), 스크린 디스토션-화면 왜곡(0.1 초 동안 큐브를 축소하고 폭발에 힘을 추가함) 등 다양한 요소로 구성됩니다. 이 이펙트의 특별한 요소는 번개였습니다. 셰이더를 통해 이를 애니메이션화하기 위해 UV 왜곡이 있는 단일 스프라이트 텍스처를 만들었습니다.

 

 

 

 

또한, 단순한 페이드 아웃이 아닌 방식으로 입자가 사라지게 하는 매우 편리한 쉐이더인 Erosion(조금씩 사라지게 하기)을 추가했습니다.

 

 

 

 

이렇게 하면 전체 시퀀스가 완료됩니다. 물론 모든 것을 합친 후에 아트적인 면과 타이밍 면에서 약간의 조정이 필요합니다.

 

 

 

 

효과를 시각화하려면 Unreal 4부터 시작하는 것이 가장 좋습니다. 최고의 툴은 아니지만 가장 큰 커뮤니티가 있고 많은 튜토리얼, 예제, 마켓 플레이스 등을 찾을 수 있기 때문입니다. 시작하기에 좋습니다. 그리고 수많은 튜토리얼을 youtube에서 검색 할 수 있습니다.

 

그동안 자체 제작 엔진을 주로 사용해왔고, 상용 엔진은 언리얼 3 또는 4 정도만 접해보았기에 Unity를 사용할 기회는 많지 않았습니다.

 

Asset 생성에 대해서는, VFX 아티스트에게 매우 유용한 몇 가지 소프트웨어가 있습니다. 예를 들어 Fume FX는 애니메이션화된 화재 / 폭발 / 연기 텍스쳐를 얻기에 매우 좋으며, 이 분야에서 시작했을 때 처음 발견한 플러그인 중 하나였기 때문에 저는 개발자들에게 감사해야 합니다. 빌드하는 방법도 꽤 인상적입니다. 아주 짧은 시간 안에 아주 좋은 결과를 얻을 수 있는 툴입니다.

 

 

 

요즘 저는 Blender를 많이 사용합니다. 공짜이기 때문에 시작했지만 지금은 정말로 좋아합니다. Fume FX와 같은 이펙트 그리고 액체, 강체 시뮬레이션(rigid body simulations), 파괴(fracture) 툴 등도 얻을 수 있습니다. 이 소프트웨어를 사용하여 Gears 4의 일부 멀티 플레이어 맵, Red Dead Redemption 2의 피 텍스처, 오일 스플래쉬 등을 만들 수 있었습니다.

 

 

Blender에서 시뮬레이션, 렌더링된 피 튀김

 

가장 많이 사용한 소프트웨어는 3D 스튜디오 max입니다. 주로 낮은 폴리 메쉬, UV 매핑, 리깅(rigging) 등을 생성하는 데 도움을 주었습니다. 그런 다음 Adobe Photoshop을 사용하여 렌더링된 일부 이미지를 수정하거나, 처음부터 텍스처를 만들어 파티클에 적용합니다.

 

 

애니메이션

 

지금까지 VFX 아티스트로 있으면서, 대부분은 게임 플레이 이펙트적인 측면에서의 작업을 맡아왔습니다. 즉, 대부분의 시간 동안 저에게는 애니메이션이 주어졌고, 거기에 레이어들을(피, 마법, 충돌, 폭발 등) 추가해야 했습니다. 제가 언급하는 애니메이션이란 인게임 애니메이션이거나 컷씬(cut scene)에 사용되는 맞춤형 애니메이션일 수 있습니다.

 

 

 

애니메이션 작업을 할 때, VFX는 보통 씬(scene)에 있는 뼈, helper(헬퍼), 오브젝트 등에 덧붙여집니다. 이것은 애니메이션과 VFX 팀 사이에서 오고 가는 워크 플로우로, 후자는 시퀀스에 대한 변경이나 추가를 요청할 수 있습니다. 예를 들면 여분의 키 프레임을 추가하여 검의 흔적(트레일)을 부드럽게 만들고, helper를 회전시키고 그 회전을 사용하여 피가 튀기는 방향을 얻거나 혹은 카메라 컷(camera cut)에 변화를 주어 메쉬 파티클의 뷰 포인트를 손상시키지 않아야 한다는 것 등의 요구들이 있습니다.

 


 

 

또한 애니메이션이나 이펙트의 역동성에 도움이 되는 게임 엔진의 기능도 있습니다. Mercury Steam에 있었을 때, 우리는 자체 제작 엔진을 사용하고 있었고, 저는 핵심 기술 팀과 매우 가까웠기 때문에, 그들에게 새로운 엔진 기능을 요청할 수 있었습니다. 이펙트를 뼈에 연결(link)하는 새로운 방법들을 요청할 수 있는 이점이 있었습니다: 포지션(position)을 사용하여 뼈에 이펙트를 연결할 수 있었습니다. 뼈 포지션을 이동시키거나 회전시키지 않고 항상 지면의 Z (높이)를 사용하여 그렇게 할 수 있었습니다 (Castlevania의 불 속성 선형 공격에 매우 편리합니다).

 

필자가 요구 한 것이 제대로 작동할지 확신하지 못하는 프로그래머가, 저의 요청을 들어주고 그것을 구현해주었을 때 특히 만족스러웠습니다. 저는 이미터의 수명 동안 파티클의 초기 속도를 설정하는 방법을 물었습니다. 이 방법을 흔적(트레일)과 함께 사용하면, 충격 지점으로부터 절대 끊어지지 않은 피가 뿜어질 수 있었습니다. 이 추가 레이어 덕분에 제가 요구하고 있던 점도가 있는 느낌을 얻을 수 있었고, 그것이 매우 자랑스러웠습니다. 사실, 제가 일한 모든 프로젝트에서 (저는 Castlevania에서 일한 후 피에 사로잡혔습니다.) 저는 그 기능이 물, 기름 등과 같은 다른 경우에도 매우 유용하므로 필요하다고 했습니다.

 

한 프로그래머가 언젠가 저에게 접근해서 물었습니다 : "이 컷신에서 적의 손에서 뿜어져 나오는 피 이펙트를 어떻게 만들었나요?" 그가 그 기능의 구현에 관여했으며 결국에는 그의 덕을 보았다는 사실을 상기시켜야 했습니다. 

 

 

프레임레이트 

 

최적화는, VFX 아티스트가 게임에서 asset을 구현하면서 수행하게 되는 중요한 작업들 중 하나입니다. 우리가 말하고 듣는 말은 대부분 overdraw(그린 것 위에 또 그리기)됩니다. 일반적으로 게임 엔진은 패스들(albedo, 거칠기, 금속성 등)에서 최종 이미지를 렌더링하며, 화면에 파티클이 있을 때마다, 그것의 렌더링 유형에 따라, 렌더링 파이프 라인에 영향을 줍니다. 예를 들어 화면에 2 개의 반투명 파티클이 오버랩(겹침)되는 경우, 겹쳐진 픽셀의 렌더링 비용은 두 배가 됩니다. 전체 화면 파티클이 있는 경우에는 엔진이 1920 × 1080 픽셀(Full HD 인 경우)의 x 배를 렌더링해야 하기 때문에 성능이 더 떨어집니다. 오버 드로 (overdraw)에 대해 더 알고 싶으시다면 여기에 좋은 스레드가 있습니다. 대부분의 경우, 우리의 요소(엘리먼트)는 가장 복잡한 것들이 아닙니다: 메쉬 파티클은 삼각형 카운트가 적고, 셰이더는 매우 복잡하지는 않으며 (보통), 파티클은 캐릭터나 배경보다 훨씬 더 저렴하게(가볍게) 조명(라이팅)됩니다. 파티클에 라이팅이 비춰지지 않는 경우도 있습니다, 등등. 이를 염두에 두고 있음에도, 파티클은 렌더링되는 방식으로 인해 실행 시간(runtime)에 매우 무거워질 수 있습니다. 파티클을 렌더링하는 방법은 크게 세 개로 나뉩니다(Unreal에서 Blend mode라고 함) :

 

불투명(opaque) :이는 가장 저렴하지만, 메시 파티클이 언급되지 않는 한 많이 사용되지 않습니다. 이것은 가장 값싼 방법입니다. 이유는 다른 파티클을 덮는(overlay) 파티클이 그것들을 가려서(occlude) 엔진이 픽셀을 더 쉽게 버릴 수 있기 때문입니다.

 

            

   

알파 마스크(alpha masked) : 0 또는 1의 투명도 값을 지니는 알파 테스트라고도합니다. 우리는 보이거나 보이지 않는 픽셀을 가지게 됩니다. 반 투명성이 전혀 없습니다. 이것은 적어도 콘솔 게임에서는 투명성을 달성하는 가장 저렴한 방법입니다. 스프라이트의 불투명한 픽셀은 위에 설명 된 불투명(opaque) 방식과 마찬가지로 픽셀을 폐색(occlude)합니다.

 

 

 

투명도 : 알파 블렌드라고도 합니다. 이 경우 우리는 어떤 occlusion도 가지지 않습니다. 이는 이펙트를 렌더링하는 데 가장 비용이 많이 드는 방법입니다. 퍼포먼스 이슈에 더해, 엔진이 반투명 픽셀의 렌더링을 분류하기는 어렵습니다. 이 방식에서는 보통 Z Depth (opaque와 alpha mask는 합니다)가 저장되지 않기 때문입니다. 일부 게임에서 (안개, 먼지, 창문 등)에서 터지는 모습(popping)을 보게 되는 이유는 이것일 가능성이 큽니다.

 

 

 

또한 두 가지 조명(라이팅) 방법이 있습니다.

 

- 꺼짐 : 파티클에 조명이 전혀 비치지 않습니다. 모든 조명은 텍스처에서 구워 지거나 쉐이더를 통해 수행되어야 합니다 (완전히 정확하지는 않음).

 

-켜짐(lit) : 파티클은 환경(배경) 및 소도구와 비슷한 라이팅을 받게 됩니다. 불투명/알파 마스크 된 파티클들의 경우에는 Z depth 정보가 저장되기 때문에, lit가 사소해집니다. 그러나 기본(default) 반투명 파티클은 해당 정보를 저장하지 않으므로, 엔진은 이 파티클이 세계 속 어디에 있는지 알지 못합니다. 반투명 파티클에 조명 쉐이딩(lit shading)을 적용하면, 모든 파티클 렌더링에 복잡성이 더해집니다.

 

반투명 파티클에 lit 쉐이딩(shading) 방법을 추가하면, 반투명 파티클이 Z 깊이(depth) 정보를 저장할 수 있습니다. 이것은 비싸지만, 요즘 그래픽 카드들은, 신중하게 사용된다면 그것을 처리 할 수 있습니다.

 

모범 사례:

 

-텍스처 공간을 현명하게 사용하십시오. 가능한 경우, 불투명한 픽셀을 가능한 한 테두리(border,경계)에 가깝게 가져 오려고 텍스처에 너무 많은 투명한 픽셀을 넣는 것은 피하십시오.

-가능하면 알파 마스크를 사용하십시오.

-엔진이 지원하는 경우 클리핑(clipping) 또는 육각형 모양을 사용하십시오.

-주의해서 spawn rate(생성 속도)를 사용하고 타협해야 합니다.

-VFX 최적화 가이드 (VFX Optimization guide)

 

예:

 

Gears of War 4 멀티 플레이 맵에서 작업할 때, 퍼포먼스에 주는 영향에 많은 주의를 기울여야 했습니다. 우리의 목표는 60fps에서 1080p를 얻는 것이었습니다.  퀄리티와 매끄러운 게임 플레이 모두를 달성해야 했습니다. 잔디밭이 있는 레벨이 있었으며, 프로파일링 단계가 끝난 이후에 테크니컬 아트 팀은 잔디를 지도에서 가장 값 비싼 요소로 지정하였습니다. 배경 아트, 테크니컬 아트 및 Vfx 아트 부서 간의 토론을 통해 우리는 하나의 기술을 시도하기로 결정했습니다. 저는 카메라에서 멀어질수록 덜 투명한 픽셀을 갖는 잔디 스프라이트를 만들었습니다. 잔디 칼날(블레이드)로 덮인 디퓨즈 텍스처를 만들었지만, 불투명도는 칼날을 그룹별로 분류하여 서로 다른 회색 값을 지니게 하는 방식으로 수행되었습니다. 이렇게 하면, 쉐이더는 카메라가 멀어질수록 블레이드가 보이도록 그레이의 값을 증가시킵니다. 셰이더는 알파 마스크로 설정 되었기 때문에, 알파가 1에 도달했을 때만 칼날들이 보입니다. 이렇게 하여 먼 곳에서 볼 때의 overdraw를 많이 절약할 수 있었습니다.

 

최적화 및 플레이어들의 눈을 속이는 방법의 또 다른 예는 파티클이 카메라에 가까워지면 그것을 삭제하는 것입니다. 실제로 입자는 삭제되지 않지만 축소되어 보이지 않게 됩니다. Gears 4에서도 연기 입자, 라이트샤프트(lightshaft) 등에 사용되었습니다. 쉐이더에서, 우리는 픽셀이 쉐이더에 설정된 X 거리만큼 카메라로부터 떨어지면 점진적으로 투명해지게 하였으며, 완전히 투명해지면 버텍스를 축소시켰습니다. 이 마지막 단계는 언리얼이 완전히 투명한 입자를 렌더링하지 않을만큼 영리하지 않아 오버 드로우 문제가 발생했기 때문에 수행되었습니다.

 

 

 

어드바이스(Advice)

 

 

저는 imbueFX를 모르는 VFX 아티스트를 모릅니다. 콘텐츠가 너무 오래되었어도 걱정할 필요가 없습니다. 이 동영상들로 이 사람들이 우리 모두에게 준 도움은 여전히 귀중합니다.

 

이 분야에 관심이 있고 3D 패키지(소프트웨어)에 대한 기본 지식이 있는 사람이 쉽게 따라할 수 있는 내용들이 있습니다. 또한 Unreal Engine 4 공식 웹 사이트도 좋은 정보를 제공합니다:

 

언리얼4 파티클 시스템 these videos.

 

몇 년 전에 저는 Real Time VFX라는 페이스 북 그룹에 초대되었습니다. 저는 이 플랫폼에서 많은 지식을 얻을 것이라고는 상상하지 못했습니다. 최근에 일부 사람들은 이를 위한 도메인을 만들기로 결정하였습니다. 현재 우리는 여전히 Facebook에서 지식을 공유하지만 더 많은 구조화 된 컨텐츠를 보유하고 있습니다.

 

실시간(real time) VFX Real TIme VFX

 

거기에는 업계 최고의 VFX 아티스트들이 있습니다. Naughty Dog, Epic, Infinity Ward 등의 사람들이 팁과 트릭을 보여주고 항상 도움을 청하고는 합니다.

 

Francisco Garcia-Obledo Ordoñez, 수석 VFX 아티스트 at King

Interview conducted by Kirill Tokarev. 

[이 게시물은 금별님에 의해 2018-11-17 02:14:41 이펙트팁게시판에서 이동 됨]

Comments

송로몬 2018.08.28 13:23
좋은글 감사합니다..!! ㅠㅠ
miracledk 2018.08.28 14:10
좋은글 감사합니다^^b
단무지 2018.08.28 23:23
좋은 자료 감사합니다~
금별 2018.09.02 23:04


 

Banner
 
Facebook Twitter GooglePlus KakaoStory NaverBand