블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (105)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (217)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,844
Today11
Yesterday82

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
Surface Texture Mapping  (0) 2009.09.13
shader version 맞춰주기.  (0) 2009.09.06
not use lock, unlock version font system  (0) 2009.08.24
shader에서의 dword  (0) 2009.08.15
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함