Surface Texture Mapping

반응형

Surface 의 특질을 제대로 표현하기 위해서는 Texture mapping 기술에 대하여 제대로알아 둘 필요가 있습니다..
Surface 의 특질을 표현하기 위하여 각각의 surface 는 blue, red, green 등의 컬러의
집합체에 의하여 정의 되어진다고 생각해도 크게 틀리지 않을 것 입니다..
실제 세계에서는 많은 surface 들이 여러가지 색깔을 가지고 있습니다..

나무는 나뭇결의 변화 있는 모습을 보여 주고 있고.. 옷감의 경우는 또 다른 예를
보여 주게 되는데.. 이것은 종종 다색 이라기 보다는 단색의 반복적인 patterns 으로
나타나게 되어지는 경우도 있습니다..

대부분의 기본적인 Texture mapping 의 종류는 Three - dimensional model 의 surface
에 two - dimensional picture 를 적용시켜 준 형태를 하고 있습니다..
이러한 Two - dimensional picture 를 "Texture" 라고 하게 됩니다..

이러한 Texture image 는 여러 가지 방법으로 생성하여 줄 수 있는데..
Scan 을 받는다던가.. 사진이나 어떤 image 를 사용하는 방법을 사용하게 됩니다.
그리고 이러한 Texture 를 surface 에 적용하여 주는 것을 mapping 이라고 합니다.

mapping 에는 두 가지가 존재하는데..
먼저 Projection mapping 이라는 것 입니다..
이것은 우리가 slide projector 를 사용하는 것과 마찬 가지로 공간 상에서 Texture
image 를 투영하게 되면 그 경로 상에 있는 object 에 해당 projected image 의 color 가 나타나게 되는 것 입니다..

그림 1의 경우는 (a) 와 같은 형태의 texture image 를 각기 다른 방향에서 projection
시킬 경우 나타날 수 있는 모습을 보여 주고 있습니다..
texture image 가 X, Y, Z 축의 한 축을 따라 project 되는 이러한 형태를 planar projection
mapping 이라고 부르게 됩니다..
이러한 방법이 projection mapping 은 매우 간단하면서 일반적인 mapping 방법중의
하나 입니다..

이러한 방법은 여러가지 제약도 존재하게 되는데..
먼저 texture image 를 project 할 때 오직 한 방향으로만 가능하다는 점 입니다.
그림 1 에 나타나 듯이 해당 방향을 향하고 있지 않은 면은 줄 무늬 같은 형태로 나타나
게 되어 진다는 것 입니다..
그 결과로 그림 1 처럼 오직 한 면만이 제대로 된 mapping 상태임을 알 수 있습니다.

  

  fig 1 

이러한 문제점들 때문에 다른 방향에서도 texture image 가 적용될 수 있도록 하여 주는
projection 기술을 제공하여 주게 되는데 그 중 첫 번째로 먼저 cylindrical projection
mapping 에 대하여 알아 보도록 하겠습니다..
이 방법은 two - dimensional texture image 를 cylinder 형태로 적용시켜 주게 됩니다.
그림 2 는 이러한 적용 상태를 보여 주게 되는데..
그림에 나타나듯 cylinder 이 옆면에는 온전히 적용되어 지지만 윗면에는 그렇지 못하다는 것을 알 수 있습니다..
이러한 방식이 적당한 예라면 그림 2의 (c) 와 같이 윗면이 존재하지 않는 경우가 될 것입니다..

대부분의 system 에서 사용하는 또 다른 방식이 Spherical projection mapping 입니다..
여기에서는 two - dimensional texture image 를 가상의 구와 같은 형태로 적용시켜 주게 되는데..
이러한 방식에서는 위에서 발생하였던 줄이 생기는 문제는 없어지게 됩니다.. 

 

                                                       fig 2
그림 3 의 (a) 의 경우는 구에 planal projection 을 적용시켜 준 경우를 보여주고 있고..
이 경우 구의 왼쪽에서 grid pattern 이 곧장 구에 적용되어 졌다는 것을 알 수 있습니다..
그림 3의 (b) 의 경우는 grid pattern 을 cylindrical 기술을 사용하여 적용시켜준 상태인데
(a) 의 경우보다는 개량된 모습을 볼 수 있습니다.
그렇더라도 cylinder mapping 은 구의 상단부나 하단부의 표현상의 문제로 구의 표현에
는 적당하지 않다는 것을 알 수 있습니다..
그림 3 의 (c) 와 같이 구에 spherical projection 을 적용시켜 주게 되면 이러한 문제점은 발생하지 않게 됩니다.. 

fig 3 

이렇게 각각의 projection 기술 - planar, cylindrical, spherical - 은 자신에게 적합한 특정
한 경우에 개별적으로 사용되어 지게 되는데..
planar projection 의 경우는 대부분 마루나 방바닥 과 같은 평평한 곳의 mapping 에
사용되어 지게 되고..   cylindrical projection 의 경우는 cylinder 모양의 물체에 적용되어
질 것이고..  Spherical projection 이 경우는 cube 나 ball 과 같이 모든 방향으로 적용
되어 지는 mapping 에 사용되게 되어 집니다..
이러한 projection mapping 이라는 기술은 근본적인 한계를 가지고 있지만 비교적
계산이 손쉬워 많은 system 에서 사용되어 지고 있습니다.. 

projection mapping 의 이러한 한계로 인하여 다음 기술로 나타난 것이 3D software package 에서 사용되어 지고 있는 것들 중 parameterized texture mapping 입니다..
parameterized texture mapping 에 대하여 생각 해 보면..
우리가 three - dimensional 상의 여러색으로 된 surface 를 원할때..
예를 들면 평평한 천에 여러색으로 된 image (texture) 를 입힌다고 상상해 보면..
만약에 우리가 이 천을 팽팽하게 잡아 늘인다면 천의 모양이 변하는 것은 물론이고..
천의 image 의 모양 역시 변하게 될 것입니다..

three - dimensional surface 상태에서 이렇게 늘어나는 texture image 가 바로 parameterized texture mapping 의 기본 개념입니다..
이러한 예는 그림 4에서 찾아 볼 수 있습니다.
그림 4의 (a) 는 two-dimensional 상태의 image 를 보여 주고 있습니다..
그림 4의 (b) 의 경우는 two-dimensional texture 가 three-dimensional surface 에 맞추어
지기 위해 조금 늘어진 상태로 surface 에 적용되어 있는 경우를 보여 주고 있습니다..

그림 4의 (c) 와 (d) 를 보면 다른 형태의 three-dimensional surface 에 위에서 본 것과 같은 image 를 역시 parameterized mapping 기술을 사용하여 적용시킨 것을 알 수 있습니다.. 여기에서는 이전에 projection mapping 에서 보았던 줄무늬가 생기는 그런 문제는 발생하지않습니다.. 

                                                           fig 4

two-dimensional texture image 의 모습이 surface 에 맞추어 변형되어진다는 것을 알 수 있습니다..
일반적으로 two-dimensional texture image 는 사각형의 모습을 하고 있기 때문에 three -
dimensional 상에서 사각형이 아닌 surface 에 적용하고자 할 때 어느 정도의 왜곡이 발생하게 되어 집니다.. 

two-dimensional 상태의 computer graphics 에서의 image 는 조그마한 사각형의 영역으로  분활 되어 존재하는데 이것을 pixel 이라고 부르게 됩니다..
이러한 pixels 의 제일 하단 부 왼쪽의 위치를 일반적으로 XY = (0,0) 로 표기하게 됩니다.
만약 image 의 폭이 512 pixels 라고 한다면 ( 일반적인 texture image size ) 아래 그림과  같이 표기하게 되어 질 것입니다.. 

 

그리고 three-dimensional surface 에서 해당 영역에 상응하는 영역에 two-dimensional 의
해당 영역이나 pixel 이 적용되게 되어 집니다..   그러기 위하여...
surface 에 해당 texture image 의 pixel 과 같은 숫자의 영역 분활이 생기게 되어 집니다..
 pixel 이 X 와 Y 로 나타내어 지는 것과 마찬가지로 surface 는 그림 5 의 (b) 에 나타난 것과 같이 U 와 V 라는 방향의
개념으로 정의 되어 지게 됩니다..
Two-dimensional texture image maps 의 XY = (0,0) 지점은 three-dimensional surface 의 UV = (0,0) 지점의 color 로 표시되어 지게 되는 것 입니다.. 

fig 5

그림 6의 (a) 와 (b) 는 이러한 작업이 어떻게 연관되어 지는 지를 보여 주고 있습니다..
이러한 방법에서의 surface 의 image 의 경우 일반적으로 image 와 surface 사이의 차이가 클 때 왜곡이 발생하게
되어 집니다..
 

fig 6

이러한 mapping 의 형태를 조절하여 주기 위해 대부분의 system 에서는 mapped image 의 scale 이나 size 를 조절하여 주는 기능을 제공하여 주고 있습니다..
그림 7의 경우 이러한 기능의 예를 보여 주고 있습니다..
그림 7의 (a) 의 경우는 scale 값을 1.0 으로 하여 준 것 입니다..
이것은 texture 로 사용되는 image 를 100% surface 에 적용시키겠다는 것을 의미합니다.
만약 scale 값이 0.5 가 적용되어 진다면 surface 에 50% 만이 적용되어 그림 7의 (b) 와 같은 형태가 되게 됩니다..
그리고 0.25 의 값이 주어 진다면 그림 7의 (c) 에 나타나는 것과 같은 결과를 볼 수 있게 되어 집니다..
scale 이 100% 적용되지 않았을 경우 나머지 영역은 그림 7의 (b) 나 (c) 에 나타나는 것과 같이 texture image 가 아닌 본래의 surface 의 color 로 나타나게 되어 집니다..

fig 7

scale 과 함께 대부분의 system 은 mapped image 를 위해 placement 라는 기능을 제공하여 줍니다..
이 기능은 UV-mapped 의 위치를 변경하여 주게 되는데..
대부분의 system 에서는 0 - 1 값으로 조절하여 주도록 하여 주고 있습니다..
예를 들어 scale 을 0.25 로 유지한 상태로 UV = (0,0) 상태는 그림 8 의 (a) 상태가 될 것이고 기본 UV = (0,0) 상태에서 UV = (0.5, 0) 로 바꾸어 준다면 그림 8의 (b) 와 같은 상태로 ..UV = (0.75, 0.75) 로 바꾸어 준다면 그림 8의 (c) 와 같은 상태로 나타나게 될 것입니다..

fig 8

위에서 scale 값을 1.0 으로 바꾸어 생각한다면 UV offset = (0.0, 0.0) 에서는 그림 9 (a) 와
같이 전체를 덮게 될 것이고 .. UV offset = (0.5, 0.0) 상태에서는 그림 9 (b) 와 같은 상태가... 그리고 UV offset = (0.5, 0.5)
상태에서는 그림 9 (c) 와 같은 상태가 만들어 지게 될 것
입니다..
 그리고 많은 system 은 "wrap" 혹은 "repeat" 라는 변형 효과를 제공하여 줍니다..
이것은 사용자가 on 이나 off 상태를 선택할 수 있도록 제공되어 지는데..
이러한 효과를 wrapping 이라고 부르게 되어 집니다..
만약에 warp 효과를 off 한 상태에서 offset 값이 주어지게 되면 결과는 그림 10 과 같이 나타나게 되어 집니다..
일반적으로 생각해서 반복되어지는 벽지라든가.. 천 등을 표현하고자 할 경우 wrapping 효과를 사용하게 되어 집니다. 

                                                                   fig 9       
   
                                                                   fig 10

color texture mapping 에서 pixel 값은 color 를 나타내게 되는데.. 이것이 three - dimensional surface 에 적용되어 질때
용도에 따라 여러가지로 변하게 되어 집니다..
transparent texture mapping 혹은 간단히 transparency texture mapping , 또는 간단히
transparency mapping 이라고도 하는데...  이 경우 texture image 의 각 pixel 의 밝기로 3D
surface  의 transparency 를 결정하게 되어 집니다..
밝은 부분은 투명하게 어두운 부분은 불투명하게 표현되어 지는데..
그림 11 의 예와 같이 texture image 가 밝은 부분과 어두운 부분으로 표현되어 질때 그림 11의 (b) 와 같은 결과로
나타내어 지게 됩니다..
그림 11 과 같은 image 가 적용되어 질 때 실제로 surface 에 구멍이 생기는 것은 아니지만.. 투명 효과로 인하여 동일한 결과가 나타나게 되어 집니다..

fig 11

그림 12 의 경우는 또 다른 예로 촛불을 표현하기 위하여 transparency mapping 을 사용한 경우인데.. 실제 surface 의 모양은 대략적인 타원형의 모양을 하고 있습니다..
이 surface 에 불규칙적인 texture 와 gradation texture image 로 불꽃을 표현하여 주고 있습니다.. 이러한 transparency mapping 에 사용되어 지는 texture image 의 경우 그 특성상 full - color 일 필요는 없으며.. 8 비트에 검은색과 흰색으로 표현되어 져도 무관합니다..

fig 12

Bump texture mapping 은 간단하게 bump mapping 이라고 하는데 surface 에 울퉁불퉁하게 bump 효과를 주게 됩니다..
이러한 효과는 거친 모래나 벽과 같은 것을 표현하고자 할 때 유용하게 사용되어 지는데.. 사실 이러한 아주 작은 bump 효과를 주기 위해 실제로 polygon vertices 를 잡아 당긴다는 것은 매우 어리석은 작업일 것 입니다..
이러한 bump 작업에서는 color 의 밝기를 기초로 하여 bump 를 표현하여 주게 됩니다..
그림 13 의 경우 이러한 bump 의 표현을 보여 주게 되는데..
완전히 평면인 surface 의 경우에는 그림 13 의 (a) 에 나타나는 것과 같이 수직 상태인
normal 이 surface 전체에 적용되어 질 것이고.. 실제 bump 를 가진 surface 라면 그림 13
의 (b) 와 같이 불규칙 적인 normal 을 가지게 될 것입니다..

이러한 normal 이 light 쪽을 향하는 것은 밝아질 것이고 그렇지 않은 것은 어둡게 표현되어지게 되는데..  bump mapping 에 의한 bump 에서는 이 불규칙 적인 normal 이라는 것이 실제 surface 의 불규칙 성에 의한 것이 아니라 그림 13의 (c) 에 나타난 것과 같이 인위적 으로 만들어 지게 되는 불규칙 성이 됩니다..
이런 방식의 인위적인 불 규칙성에 대하여 우리는 그 normal 의 perturbing 이라고 부르게 되어 집니다..

fig 13

bump mapping 기술은 texture image 의 각 pixel 의 밝기를 계산하여 3D 상의 surface 의 normal 에 적용시켜 주게 되는데..

위에서 이야기한 이유 들로 인하여 그림 14 (a) 에 나타난 것과 같이 이러한 작업으로 bump효과가 나타나더라도 그림 14 (b) 에 나타난 것과 같이 surface 는 실제로는 완전한 평면 상태가 되게 되어 집니다..

아래 그림의 경우 이러한 bump mapping 효과를 사용한 이미지를 보여주고 있습니다..

 

                                                                                             fig 14 

또 다른 종류의 Texture mapping 으로 displacement mapping 이라고 부르는 것이 있는데.. surface 자체에 불규칙성을 부여하는데 많이 사용되어 집니다..
transparency 나 bump mapping 과 마찬가지로 displacement mapping 역시 밝기로 조절되는 Two - dimensional texture image 를 source 로 사용하게 되어 지는데..
이러한 displacement 의 경우는 실제로 surface 의 높낮이에 변화를 주게 되어 집니다..
밝은색의 texture pixel 은 실제 3D 상의 surface 를 높게 만들어 주고..
black texture image 의 경우 displacement 가 적용되지 않게 하여 줍니다..
white texture image 의 경우 displacement 가 강하게 적용되게 되어 집니다..
그림 15의 예를 보게 되면..
그림 15 (a) 의 경우는 displacement 로 적용될 image 를 보여주고 있고..
그림 15 (b) 의 경우는 displacement 가 적용되기 전의 surface 를..
그림 15 (c) 의 경우는 displacement 가 적용된 후의 surface 를 보여주고 있습니다.

fig 15

bump mapping 과는 달리, displacement mapping 의 경우 실제로 surface 의 geometry 를
변경시켜 주게 되는데.. 모든 mapping 기술에서 surface 의 geometry 를 변경시키는 것은 displacement mapping
입니다.. 

이러한 mapping 기술들 - color , trasparency, bump, displacement , offset,  size , wrap ...등은 모두 pixel 값을 사용하여 mapping 의 여러가지 발전된 형태를 만들어 준 것인데.. 이러한 것들 이외에 pixel 값으로 incandescence 를 증가하거나 감소하여 주거나..color 의 glow 의 밝기를 조절하여 주는등.. 때때로는 specularity mapping 과 reflectivity mapping 에도 적용되어 지는데.. 이러한 여러가지 surface texture mapping 에서의 효과는 이론상으로는 한계가 없게 됩니다 

 우리는 대부분 이러한 two-dimensional image 를 scanner 를 이용하거나 직접 제작하게
되어 지는데.. 다른 방법으로 생각해  볼 수 있는 것이 3D paint programs 을 사용하여 two-dimensional texture images
를 만들어 주는 것 입니다..
이러한 program 의 경우 3D model 에 직접 paint 할 수 있도록 하여 줍니다..

 


  

 

위의 그림에 나타난 것과 같이 이러한 paint 의 결과로 3D paint program 은 자동적으로
2D texture image 를 생성하여 주게 됩니다..
어떤 3D software package 의 경우 이러한 기능을 자체적으로 포함하고 있는 경우도 있으며 plug-in 일 경우 별도로 설치하여 주어야 하는 경우도 있고..
3D software package 과는 별개로 독립된 3D paint program 도 있습니다..
별개의 이러한 program 의 구분은 있지만 서로의 기능은 서로 유사합니다..

먼저 3D modeling program 에서 mapping 하여 줄 model 을 만들어 준 후 이 model 을 3D
paint program 에서 읽어 들이게 되어 집니다..

그 후 mouse 를 이용하여 3D paint program 에서 model 에 직접 작업을 하게 되어 집니다.. 작업과 동시에 위의 그림 (b) 에 나타난 것과 같은 평평한 2D texture image 를 생성하여 주게 됩니다..

일반적인 mapping 의 경우는 surface 에서 기본적으로 변형이 주어지게 되는데..
3D paint program 의 경우 이러한 변형에 대하여 유리한 측면을 가지고 있습니다..
그림의 턱 수염이나 이마의 머리카락의 표현에서 이러한 차이를 분명히 느낄 수 있습니다.

[출처] Surface Texture Mapping|작성자 slime321

'Study > Graphics ' 카테고리의 다른 글

Effect Pool  (2) 2010.02.06
Alternatives to Using Z-Bias to Fix Z-Fighting Issues  (0) 2009.11.11
shader version 맞춰주기.  (0) 2009.09.06
not use lock, unlock version font system  (0) 2009.08.24
shader에서의 dword  (0) 2009.08.15
TAGS.

Comments