3D프로그래밍 위밍업 : 텍스쳐 스플래팅 과 텍스쳐 블랜딩(2)그리고 메가텍스쳐

프로그래밍/3D프로그래밍 2006/10/20 23:01

3D 프로그래밍을 위한 위밍업 : 텍스쳐 스플래팅 , 텍스쳐 블랜딩
by Xevious7   .2006년 10월  http://www.xevious7.com/157

텍스쳐 블랜딩에 대해서는 개념과 의미에 대해서는,
3D 프로그래밍을 위한 위밍업 : 텍스쳐 블랜딩 http://www.xevious7.com/138
를 먼저 참조하시기 바랍니다.

텍스쳐 스플래팅은 지형에 텍스쳐를 입히는 기법중의 하나입니다.
메가텍스쳐 또한 지형에 텍스쳐를 입히는 기법중의 하나입니다.
텍스쳐 스플래팅은 기본적으로 텍스쳐블랜딩에서 개념이 나왔지만 ,
그 원인을 살펴보면 좀더 멋찌게 보이는 그럴싸한 지형을 보여주기 위한
것을 위해서 고안된것입니다. 메가텍스쳐 또한 기본은 좀더 멋있는 지형을
보여주고자 하는 것입니다. 새로운 것을 만들어낸다는 것은 근본적인
문제의 핵심을 파악하는 것입니다.

메가 텍스쳐 같은 것을 고안하려면 ,결국 문제를 해결하는 방법의 기초는
누차 블로그에서 말한바 있지만 ,
문제의 핵심을 파악하는 것이라는 것을 알게합니다.


본론으로 들어갑니다.

텍스쳐 스플래팅이란 말은 어디에서 왔을까?

먼저 텍스쳐 스플래팅 , 이라는 말에 대해서 고민할 필요가 있습니다.
일단 원어부터 고민을 해봅시다.

텍스쳐는 Texture 일것입니다.
그리고 스플래팅은 발음상으로 보면 Splatting 인 것 같습니다.
인 것 같습니다라는 가정을 쓴 이유는 영어단어에 Splatting 이라는 단어는
일반적인 단어가 아니기 때문입니다. 실제로 제가 가지고 있는 영영사전에는
(Macmillan english dictionary 와 longman english dictionary)
이 단어는 없었습니다. splat나 splatter 는 있었지만 splatting은 없더군요.

위키피디아를 검색했습니다.
위키피디아에서 splatting으로 검색하면 splatting 자체에 대한 것은 없고
Texture Splatting 이라는 것으로 99.9% 로 나옵니다.
http://en.wikipedia.org/wiki/Texture_Splatting


내용은 대략 다음과 같습니다.(의역함)

텍스쳐 스플래팅은 컴퓨터 그래픽에서 서로다른 텍스쳐들을 조합하는 방법을 말한다.
이 방법은 높이레벨에 알파맵을 적용하는 것으로  부분또는 전체투명도 이르는 알파맵에
의해 아래쪽 레이어(layer)를 드러나게 하는 것이다.
이 용어는 찰스 불름에 의해서 만들어졌다.

[그림] SBS 연애시대의 한장면

위 설명에서 스플래팅의 기원을 알기위한 중요한 문장은 마지막 문장이었습니다.
용어 자체가 찰쓰씨에 의해서 만들어졌다는 것이죠.

위키의 설명으로 보아 스플래팅이라는 말은 분명 찰스씨에 의해서 만들어진것 같습니다.

http://www.cbloom.com/3d/techdocs/splatting.txt 2000년 2월에 쓰여졌다고 되어있는
찰스씨의 원문은 위의 링크와 같습니다. 이 문서의 처음에 스플래팅에 대해서 설명이
나옵니다.

인용 -
Splatting is a technique for texturing a terrain using high resolution
localized tiling textures which transition nonlinearly. There are a lot
of people who are doing and have done similar things, there is a
tradition of "texture layers" which are alpha blended together. -


뒷부분의 설명을 빼고 앞부분만 보면 ,
스플래팅은 지형에 텍스쳐를 입히는 기법이다.  라고 말하고 있습니다.
그 뒤로 그 기법이 어떠한 기법인지 설명하는 문서가 위의 링크한 문서의
내용입니다.

왜 스플래팅(splatting)이라는 용어를 섰는지 알 수 가 없습니다.
그냥 스플래팅은 이것이다라고 말하고 있는 셈입니다.
그러기 때문에 결국 텍스쳐스플래팅 이라는 용어는 찰스씨가 만들었고
그것을 위의 문서처럼 설명했기 때문에 , 위의 문서형태의 텍스쳐 블랜딩
기법을 텍스쳐스플래팅이다 라고 생각하면 될 듯 합니다.

내용을 보면 원천적으로는 알파값을 이용한 텍스쳐 블랜딩입니다.
사실상 알파값을 이용한 텍스쳐 블랜딩은 라직을 어떻게 구성하느냐에 따라 수도
없는 방법이 나올 수 있습니다.

텍스쳐스플래팅의 구체적인 방법과 그 구현에 대해서는 위의 찰스씨의 문서에
모두 나와있습니다.
또 다음 문서에도 다른 자료가 있습니다.
http://www.gamedev.net/columns/hardcore/splatting/
여기에서도 첫문장에 텍스쳐 스플래팅에 대한 설명을 합니다. 찰스씨보다
명쾌하게 , 텍스쳐 스플래팅이란 알파맵을 이용하여 텍스쳐 블랜딩을 하는
간단한 방법이라고 명시합니다
.


영어에 약하다 하시는 분들은 다음링크의 뿔따구님 페이지에서
여러 한글문서를 볼 수있습니다.
http://proline1.cafe24.com/data.html

이 페이지 말고도 검색엔지에서 텍스쳐 스플래팅을 검색하시면 여러 한글페이지를
볼수 있습니다.


메카텍스쳐에 대해서 ~

끝으로 지형에 텍스쳐를 입히는 기법으로 흥미로운 것은  메가텍스쳐라는 기법입니다.
http://en.wikipedia.org/wiki/MegaTexture  << 여기에 가보시면 대략적인 설명이
있습니다.

클립맵핑(Clipmapping)의 변형이라고 여겨지는 메가 텍스쳐 기법은 ,
내용은 엄청나게 큰 텍스쳐를 쓴다는 것입니다. 32000 x 32000 이라는 크기의
하나의 텍스쳐를 쓰는 기법입니다.
말하자면 지형전체를 커버할 수 있는 통맵을 쓰는 것입니다. 어차피 아직은
그래픽카드에서 이러한 크기의 텍스쳐를 지원하지 않기때문에 소프트웨어적인
기법으로 마치 그래픽카드가 그것을 지원하는 것처럼 한다는 것입니다.

[그림] Quake War 스크린샷 - 메카텍스쳐 기법을 사용.

존 카멕은 이 메가 텍스쳐라는 기법이 앞으로 중요한 기법을 자리 잡을 것이라고
확신하고 있다고 합니다.  이러한 기법은 기존의 컴퓨터 그래픽 기법의 이론하고는
전혀 다른 방향입니다. 하지만 문제해결의 촛점에서는 같은 것입니다.
존 카멕이 이것을 생각한 이유는 단하나 좀더 현실감 있는 지형을 구현하는 것입니다
.
타일링이나 텍스쳐스플래팅 같은 레이어드 텍스쳐링(layered texturing)
기법들은 거대한 통맵을 할 수 없기 때문에 만들어진 기법이라고 볼 수 있는데,
과감히 생각을 바꾼것입니다. 그래픽 카드가 지원하지 않더라도 큰 통맵을
써버리는 것이죠. 그래픽 카드에게는 렌더링 하는 부분만 넘겨주면 되니깐 말입니다.

역시 컴퓨팅 세계의 기초는 상호교환(Trade-off)트레이드 오프입니다.
여러 방법중에 최선의 방법을 선택하는 것입니다. 항상 유연성 있는 자세를 가져야
겠습니다 :)


PS.  혹시해서 추가합니다.
3D분야에서 Splatting이란 용어를 쓰는 곳이 또 있습니다.
텍스쳐 스플래팅과는 완전별개이고 ,
Volume Rendering 에서 사용하는 하나의 기법입니다.
볼륨 렌더링은 단층자료를 가지고 3차원 영상을 만들어내는 기술입니다.
이때 사용하는 스플래팅 기법은 속도를 위해서 품질을 깍아내리는 방법입니다.
각각의 단층자료는 하나의 표면에 그냥 붙쳐넣는 형태로 3D이미지를 만드는 형태입니다.
그런데 이 용어가 더 오래되었기 때문에 혹시 찰스씨가 이 용어에서 ?:

top