프로시져럴 재질들 (Procedural Materials)

유니티 3.4는 프로시져럴 재질들 (Procedural Materials)로 알려진 새로운 애셋 (asset) 타입을 통합했습니다. 이들은 기본적으로 기본 재질들과 같지만, 사용하는 텍스쳐(textures)들이 미리 정의되어서 저장된 것이 아니라 실시간으로 생성 되는 것 입니다.

텍스쳐들을 순차적으로 생성하는 스크립트 코드 들은 저장된 비트맵 이미지보다 보통 더 적은 메모리 공간을 가질 것입니다. 그러므로, 프로시져럴 재질들(Procedural Materials)은 다운로드 시간을 줄이는 것을 도울 수 있습니다. 추가적으로, 생성(generation) 스크립트는 실행(runtime)시 재질의 시각적 속성들을 바꾸기 위해서 변할 수 있는 매개변수(parameters)들이 포함되어 질 수 있습니다. 이러한 속성들은 색상 변화로부터 벽의 벽돌들의 크기까지 어떤것이든 될 수 있습니다. 이는 많은 변형들이 하나의 프로시져럴 재질들(Procedural Materials)로부터 생성될 수 있으나, 재질들은 프레임 단위로 애니메이션 될 수 있음을 의미합니다. 많은 흥미 있는 시각적 효과들도 가능합니다. 캐릭터가 점점 돌로 바뀌거나, 산(acid)이 닿아 있는 표면을 부식시키는 것을 상상해보십시오.

유니티의 프로시져럴 재질들 (Procedural Materials) 시스템은 업계 표준 제품인 Allegorithmic 사의 섭스턴스(Substance)에 기반합니다.

지원 플랫폼들(Supported Platforms)

유니티 3.4에서는 프로시져럴 재질들이 스탠드얼론(standalone) 플랫폼을 지원하며, 웹플레이어(webplayer)는 타겟들만 빌드합니다 (Windows 와 Mac OS X). 모든 다른 플랫폼들에 대해서는, 유니티는 빌드시에 그들을 미리 렌더(pre-render) 하거나 베이크(bake)합니다. 비록 이것은 순차적 생성(procedural generation)의 실행 이득을 상쇄시키지만, 에디터에서 어떤 한 기본 재질에 대해 변형들을 생성하는 데는 매우 유용합니다.

순차적 자료들을 프로젝트에 추가하기

프로시져럴 재질들은 다른 에셋들 처럼 사용자가 불러오기 할 수 있는 섭스턴스 아카이브 Substance Archive (SBSAR) 파일로 제공됩니다 (에셋 폴더 바로 위로 드래그앤드롭 혹은 Assets→Import New Asset…를 사용). 섭스턴스 아카이브 (SBSAR) 에셋은 하나 또는 다수의 프로시져럴 재질들을 포함하며, 이들에 의해 필요되는 모든 스크립트들과 이미지들을 포함합니다. 컴파일 되지 않은 SBS 파일들은 지원하지 않습니다.

비록 그들은 다르게 구현되지만, 유니티는 다른 재질들 처럼 프로시져럴 재질을 다룹니다. 프로시져럴 재질을 메쉬에 할당하려면, (예를 들어서) 메쉬를 다른 재질에서와 마찬가지로 드래그 앤 드롭을 합니다.

프로시져럴 속성들(Procedural Properties)

각각의 프로시져럴 속성은 특정 타입의 재질을 생성하는 사용자 기반 스크립트(custom script)입니다. 이 스크립트들은 인스펙터 내에서 할당을 위해 노출(expose)된 변수들을 가질 수 있다는 점에서 유니티 스크립트들과 비슷합니다. 예를 들어 "Brick Wall" 프로시져럴 재질은 벽돌 들의 진로의 개수를 정하고, 벽돌들의 색깔, 그리고, 벽돌 사이 반죽의 색상을 정하는 속성을 표시합니다. 이는 하나의 애셋으로부터 무한대의 재질 변형을 제공합니다. 이러한 속성들은 MonoBehaviour 스크립트의 공용 변수(public variable)들과 마찬가지로 실행 시에 스크립트로부터 설정됩니다.

프로시져럴 재질들은 복잡한 텍스쳐 애니메이션들도 통합할 수 있습니다. 예를 들어, 시계 바늘이나, 벽을 가로지르는 바퀴벌레를 애니메이션 할 수 있습니다.

프로시져럴 재질들을 기초부터 생성하기(Creating Procedural Materials From Scratch)

프로시져럴 재질들은 순차적으로 생성된 텍스쳐들이나 저장된 비트맵들과의 어떤 조합과도 작용합니다. 추가적으로, 추가된 비트맵 이미지들은 사용 전에 필터 될 수 있거나 변경 될 수 있습니다. 스탠다드 재질들과는 달리, 프로시져럴 재질은 해상도와 무관한 텍스쳐을 허용하는 SVG 파일들 형태의 벡터 이미지들을 사용할 수 있습니다.

프로시져럴 재질들을 기초부터 생성하는데 사용 가능한 디자인 툴들은 예술에 사용되는 툴들과 유사한 시각적, 노드(node) 기반의 에디팅을 사용합니다. 이는 코딩 경험이 전혀 없는 예술가들에게도 위 재질의 생성을 만드는 것이 가능하게 해줍니다. 예를 들어, 건설 중인 "brick wall" 프로시져럴 재질을 보여주는 Allegorithmic 사의 섭스턴스 디자이너의 스크린 샷이 있습니다:

프로시져럴 재질들을 구하기

유니티의 프로시져럴 재질들은 산업 표준 섭스턴스 제품에 기반하고, 프로시져럴 재질 애셋들은 유니티의 애셋 스토어(Asset Store)를 포함한 인터넷 자료들로부터 구할 수 있습니다. Allegorithmic의 섭스턴스 디자이너(Substance Desinger)는 프로시져럴 재질들을 생성하는데 사용됩니다. 하지만, 섭스턴스 기술을 포함하지만 유니티와 함께 작업하는데 문제가 없는 다른 어플리케이션들(3D 모델링 프로그램 등)도 있습니다.

성능과 최적화

프로시져럴 재질들은 근본적으로 비트맵 이미지들보다 더 적은 저장 공간을 사용하는 경향이 있습니다. 그렇지만, 절충이 필요한 부분은 프로시져럴 재질들은 스크립트들에 기반하고 있고, 재질들을 생성하기 위해서 그 스크립트들을 실행하는 것은 CPU와 GPU의 자원들이 요구됩니다. 프로시져럴 재질들이 더 복잡할 수록, 실행 시 오버헤드(overhead)는 더 커집니다.

프로시져럴 재질들은 그 매개변수들이 마지막에 생성된 이후로 변하였을 때만 업데이트되는 캐슁(caching)의 형태를 지원합니다. 더욱이, 몇몇 재질들은 많은 속성들 이론적으로 변할 수는 있지만, 실행 시에는 소수만이 실제 변화가 필요한 속성들을 가질 수 있습니다. 그러한 경우, 사용자는 재질의 이전 생성으로부터 가능한 많은 데이터를 캐쉬를 이용하여 사용할 수 있도록 유니티에게 변하지 않을 변수들에 대해서 미리 알릴 수 있습니다. 이는 종종 성능의 현저한 상승을 이끕니다.

→프로시져럴 재질들은 경과 시간이나 프로시져럴 재질들의 인스턴스(이 데이터는 애니메이션 등에 유용할 수 있습니다) 개수 등, 숨겨진 (시스템 전체의) 변수들을 참조합니다. 이 변수들의 값의 변화들은 프로시져럴 재질로 하여금 명백히 정의된 변수들이 바뀌지 않더라도 업데이트 할 수 있도록 강제 시킵니다.

프로시져럴 재질들은 에디터에서 편의용으로도 사용될 수 있습니다. (예를 들어, 스탠다드 재질을 프로시져럴 재질의 매개 변수들을 설정해서 형성한 후 베이크 처리할 수 있습니다.) 이는 재질 생성의 런타임 오버헤드를 제거하지만, 당연히 베이크된 재질들은 게임플레이 중에 변화되거나 애니메이션이 될 수 없습니다.

성능을 분석하기 위해서 섭스턴스 플레이어 사용하기 (Using the Substance Player to analyze Performance)

프로시져럴 재질의 복잡도가 실행(runtime) 성능에 영향을 주므로, Allegorithmic은 그 섭스턴스 플레이어(Substance Playe)r 툴에 프로파일링 (profiling) 기능들을 포함 시켰습니다. 이 툴은 Allegorithmic�s website 에서 무료로 다운로드 가능합니다.

섭스턴스 플레이어는 유니티 3.4 에 통합된 것과 같은 최적화된 렌더링(rendering) 엔진을 사용합니다. 그래서 그것의 렌더링 측정은 섭스턴스 디자이너 자체의 성능을 나타낸다기 보다는 유니티의 성능을 나타냅니다.

역링크