반응형

원문 : http://www.hourences.com/book/tutorialsue3matexpressions.htm

정보

내용 : 메트리얼에서의 표현식 (Add,BumpOffset)에 대한 짧은 설명을 나열합니다
대상 : 언리얼엔진 사용자 - 초급 및 중급
관련링크 : 메트리얼 튜토리얼 1
마지막 업데이트 : 2007년 10월
메트리얼에디터1
메트리얼 에디터2
물 튜토리얼 1 - 외부
물 튜토리얼 2 - 내부


소개
이 튜토리얼은 당신이 사용할수 있는 매트리얼 표현의 목록을 제공 합니다. 이것은 간단한 영어로 되어 있어 복잡하지만 명확하게 됩니다.또한 매트리얼의 표현기법을 알기 위해서는 수학의 기본을 이해하는것이 중요합니다. UE3 의 매트리얼 시스템에서는 수학의 숫자를 의존합니다. 빼기,더하기,사인 모든 것을 곱하여 사용됩니다. RGB 시스템은 어떤 색상을 단지 세가지 간단한 숫자를 기초하여 이루어 집니다. 각숫자의 구성요소는 색상을 나타냅니다. 3가지의 색으로 표현을 하게 됩니다.
상의 경우 각 기본색샹의 다양한 값을 혼합하여 만들게 되며, 색상은 존재하지 않으며 숫자로만 존재하게 됩니다.
만약 당신이 순수한 흰색(1.0, 1.0, 1.0) 과 노란색(1.0,1.0,0.0)을 혼합(multiply)하였다면 그것은 변함이 없을 것입니다. 왜나햐면 1 혼합(multiply) 1은 여전히 1입니다. 만약 값을 변경한다면 색이 변경될것입니다. 당신이 흰색을 회색(0.75,0.75,0.75)으로 변경 하게 되면 노란색은 어두워 질것입니다

똑같은 룰로 추가와 빼기도 마찬가지인빈다. 만약 당신이 블루컬러에서 빨간색을 빼게 된다면 색의 차이는 없게 됩니다. 합계를 뺄수있는 부정적인 결과에 대해서는 정상적이지 않게 표시 됩니다.

텍스쳐는 수천개의 픽셀로 구성되어 있습니다. 각 픽셀의 색상값을 3가지 색으로 결정됩니다. 만약 당신이 매트리얼을 구성한다면 모든픽셀에 해당 값을 적용하는 것이 됩니다.  회색을 만들게 될때(0.75 X 0.75 = 0.56 =drakgray)  로 하게 되면 특정부분은 흰색 또는 밝은 영역을 가지게 됩니다
*** 회색 매트리얼을 만들때 차이점 입니다. 아래의 두개의 표현을 보면
디퓨즈에 표현식으로 0.75 , 0.75 0.75 로 회색의 매트리얼을 만들었습니다.
두개의 회색을 multiply 하여 디퓨즈에 연결하였습니다
아래의 그림이 좀더 진한 회색이 되는군요***

색상의 값은 1.0 이상의 값을 가질수 없습니다. 비록 1.0이상의 색상으로 변경을 할수 없지만 강도와 세기는 변경이 가능합니다. 강도와 세기의 변경은 정말 밝은 라이트나 bloom 사용시 중요합니다.

이 시스템에서 1.0 은 포토샵에서 최대값을 사용하는 것과 동일합니다.
**** 어쩌구 저쩌고 해도 여튼간에 1.0 이상은 안된다는 이야기***

표현식 
ABS
값을 절대 값으로 표현해 줍니다.
절대값은 간단하게 말하자면 0과의 차입니다. 예를 들어 -2의 절댓값은 0-(-2)=2입니다.
쉽게 계산하면 그냥 마이너스는 플러스로 플러스는 그냥 놔두면 된다는 말입니다.

ADD
두개의 값을 합해서 표현해 줍니다.(더하기)

AppendVector
아시다시피 모든 이미지는 빨강,녹색,파랑 3개의 레이어로 구성되어 있습니다. AppendVector는 이전에 분리된 3개의 레이어를 합치는데 사용할수 있습니다. 당신이 개별적으로 각각의 레이어를 수정후 다시 하나의 이미지에 모든 것을 합칠때 유용하게 사용됩니다.
*** ConstantVector 와 Constant2Vector의 경우 Add  를 사용했을 때와 AppendVector 와 결과값

Add를 했을 경우 2,1,0 이 되지만 Append 를 하였을 경우에는 2,0,1 이 됩니다.***
 BumpOffset
일반적으로 시차 매핑, 또는 변위 매핑으로 알려진 용어입니다.   BumpOffset 을 사용하여 흑백이미지를 사용하여 이미지에 픽셀의 강도에 따라 이미지를 위치를 높이게 됩니다. 이것은 순전히 카메라의 효과이며 이 표현으로 인하여 진정으로 변형되는 것은 아닙니다.
***
일반적인 택스쳐를 사용하여 노말 맵을 적용시킨 예시 입니다 ***

CameraVector
 
이미지의 위치와 이동에 따른 카메라 값입니다. 카메라 각도에 다른 이펙트와 반사효과를 사용하기 위하여 사용합니다.

Ceil
Ceil은 반올림 역활을 합니다. 0.6 과 1.4 는 1.0 이 됩니다. 4.7은 5가 됩니다. 이 표현식은 제한을 위하여 사용합니다. 깜빡 거리는 불과 번개를 표현하는데 사용할수 있습니다. 시간과 설치,설정 페이딩등에 사용할수 있으며 부드러운 페이딩에 사용하여 깜박임을 만듭니다.
*** Ceil의 경우 반올림하는 표현식입니다. 빛 반사일때 0.6을 사용하면 1의 값을 가지기 때문에 반사 작용및 번개가 쳤을때 반짝일것인지에 대한 속성을 줄수 있습니다.***

Clamp
기본적인 동작은 Ceil 과 동일하게 동작합니다. 차이점은 사용자가 수동으로 최소 및 최대 Constant1Vectors 연결하여 최소 및 최대 값을 설정할수 있습니다. Clamp 로 입력된 값은 최소 및 최대 값으로 반올림 됩니다.
만약 당신이 컬러값을 4.0으로 하고 최소값 0.5 최대값 1.0으로 세팅하였을 경우 결과값은 1.0이 나오게 됩니다.
0.75로 세팅할경우 최대 값과 최소값 안에 있기 때문에 0.75로 유지 됩니다. 만약 지금 너무 복잡한 표현식을 사용하여 특정밝기 또는 방향야 국한하고 싶을때 편리하게 사용할수 있습니다.

ComponentMask
AppendVector 의 반대입니다. AppendVector는 하나의 이미지에서 다른 색상채널을 병합하는 기능을 합니다. CommponenMask는 원치 않는 색상 채널을 필터링 할수 있습니다.만약 노란색 택스쳐 를 CommponenMask 한 경우 빨간색과 파란색을 통해서만 볼수 있도록 됩니다.

Constant - Constant1Vector
이것은 가장 일반적인 표현식입니다. 단지 하나의 값을 보유하고 있습니다.

Constant2Vector
Constant 와 동일하지만 빨강과 녹색 채널을 보유하고 있습니다. Constant2Vector 빨간색, 노란색으로 초록색을 만들수 있지만 블루는 없습니다.

Constant3Vector
이 표현으로 가능한 모든 색상을 표현할수 있습니다 3가지 색상채널을 가질수 있습니다.

Constant4Vector

Constant3Vector 와 동일하며 특정 알파값을 가지고 있습니다.

Cosine
특정 효과를 움직일수 있습니다. 시간과 조합을 하여야 생상이 지속적으로 높아지거나 낮아지게 됩니다. 반복적인 효과를 표현할때 사용하게 됩니다.

Crossproduct
CameraVector 와 함께 있어야 효과의 방향을 변경할수 있습니다. 그렇지 않으면 거의 쓸모가 없습니다.

DepthBiasedAlpha
엔진으로 가장자리 근처의 페이드 아웃을 할수 있습니다. 자동으로 해주는 것이 좋습니다. 해안근처 또는 페이드 아웃할때 물 가장자리를 표현할때 사용하게 됩니다.

DepthBiasedBlend
DepthBiasedAlpha 와 같습니다 하지만 DepthBiasedBlend  이 DepthBiasedAlpha 보다 성능 향상을 위하여 우선적으로 하는 것이 좋습니다.
(Identical to DepthBiasBlend, but this expression is rendered by the hardware instead of software emulation like DepthBiasBlend. DepthBiasedAlpha should be preferred over DepthBiasBlend for performance reasons.)
*** 소프트 웨어로 처리한다는 건지 하드웨어로 처리한다는 건지..여튼 DepthBiasedAlpha보다 성능에 영향을 덜끼친다고 합니다.***

Desaturation
DepthBiasedBlend 와 같은 표현입니다 소프트 웨어 랜더를 하며 버려진 표현입니다.

DestColor
반투명 재질일 경우 뒤편의 색상을 추가 하고 싶을때 사용합니다.

DestDepth
안개와 같은 역할을 합니다. 멀리가게 될수록 불투명해 질것입니다. 플레이어의 앞의 벽에 DestDepth 를 주게 되면 안개와 비슷한 결과가 됩니다. 물 그림자로 사용하여 깊은 영역과 얕은 영역을 구분하여 불투명하게 만들어주는 것이 이상적입니다. 반투명 이나 추가적인 표면에 사용해야 합니다.

Divide
간단한 수학작업으로 나누기 입니다. 두개의 수치를 나누어 남아 있는 새로운 색을 형성합니다

DotProduct
그라디언트를 만듭니다. 만약 CameraVector 와 ReflectionVector 로 그라디언트를 만드는 입력으로 만드는 점입니다. 가짜 하이라이트를 만들때 사용합니다.
*** 카메라 방향과 반사 백터에 따른 하이라이트를 만들때 사용하는 거라네요...아씨...뭐라는겨***

FlipBookSample
언리얼 엔지 2의 파티클과 같은 택스쳐 나누기와 비슷합니다.FlipBookSample은 여러프래임으로 읽은 수로 나눈값입니다.

Floor
 Ceil 과 유사하지만 다르게 값이 표현 됩니다. Ceil 로 1.7 과 2.0 일경우 Floor에서는 1.7과 1.0을 입력해야 합니다.

Frac
소수점 이하의 값을 남기게 됩니다 예: 4.6 은 0.6이 되고 1.0은 0.0, 0.4는 그대로 표현됩니다.

Fresnel
DotProduct 와 유사합니다. 흰색 주변의 검은색 점을 생성힙니다. 이것은 가장자리의 흰색 grow를 만듭니다.OneMinus의 반전하여 멋진결과를 낼수 있습니다.
***
Fresnel creates the effect on the bio blobs in UT3 for example.
ut3에 있는 bio blobs(뭔지모름) 이펙트를 만든다는 말인듯..해석이 안됩니다.
아시는분은 좀....
***

IF
간단한 수학 함수입니다. 함수는 매트리얼에 어떤 효과를 줄수 있는지에 대한 제한을 줄수 있습니다
***
위의 그림에서 보는바와 같이 A와 B에 Constant로 1과 2를 입력하고 각기 맞는 상황에 따라 색이 나오도록 하였습니다. 지금은 B가 A보다 크기때문에 매트리얼은 파란색으로 나오게 됩니다.
시간에 따른 색변화 등을 구현할수도 있겠군요 ***

LightVector
나에게는 알수 없는
*** 음 여기서는 알수 없다고 했는데 아마도 빛의 백터값을 가지고 뭘 하는듯 합니다. 3D프로그램하시는 분들이나 아실듯 합니다..ㅎ_ㅎ;;***

LinearInterpolate - LERP
알파를 사용하여 두개의 효과를 혼합하게 됩니다.포토샵의 레이어와 MaskMap와 유사합니다.
***

그림만봐도 아시겠죠? 알파 채널을 마스크로 사용하여 다른 텍스쳐를 입히거나 어떤 효과를 줄수 있다는 겁니다.
***

MeshEmitterVertexColor
매트리얼의 파티클 매쉬를 생성할때 사용됩니다. 파티클에디터의 커브를 통하여 매쉬의 색상 수정에 사용됩니다.

MashSubUV
ParticleSubUV 와 유사하지만 이것은 meshparticles 와 유사합니다.

Multiply
두개의 다른값을 곱하게 됩니다.

Normalize
크기다 다른 이미지의 최대를 가져다 줍니다.Wikipedia explains this pretty well "If the intensity range of the image is 50 to 180 and the desired range is 0 to 255 the process entails subtracting 50 from each of pixel intensity, making the range 0 to 130. Then each pixel intensity is multiplied by 255/130, making the range 0 to 255."
*** 도저히 모르겠습니다. 이미지의 픽셀에 관련된것인데 해석이 불가능하네요;;***

OneMinus - 1-X
이것은 단순히 입력을 반전하게 됩니다. 블랙은 화이트가 되고 노란색은 파란색이 됩니다.

Panner
이기능은 UE1과 UE2 에서부터 사용되었습니다. 이것은 단순히 택스쳐에 지속적인 팬(회전) 효과를 주며 컨베어 강 등등에 사용됩니다.

ParticleSubUV
DestDepth 와 비슷합니다.

Power
이것은 포텨샵에서 명암과 밝기를 조정하는 것은 단순히 밝기와 명암을 낮추가너 대비를 제거하고 밝기를 낮춰줍니다. 이것은 표현을 여러번곱하여 사용됩니다. 값으로는 디퓨즈 텍스쳐를 사용하여 specularity를 사용할때 사용합니다

ReflectionVector
CarmeraVector과 마찬가지로, 유일한 차이점은 축이 다르게 작동합니다.

Rotator
단순히 회전합니다.

ScalarParameter
매트리얼에 사용되며 설정하는 변수를 코드를 통하여 액세스 하고 변경할수 있습니다.

SceneDepth
DestDepth와 유사하지만 좀더 강력합니다.

SceneTexture
나에게는 알수 없는

ScreenPosition
씬에서의 카메라 각도를 가지고 있습니다.

Sine
코사인과 유사합니다.
***
http://image.search.daum.net/dsa/search?w=imgviewer&q=sine+%B1%D7%B7%A1%C7%C1&SortType=tab&lpp=30&page_offset=0&page=1&olpp=&opage=&od=uXqYv000
사인,코사인 그래프입니다 gif로 되어 있습니다.ㅋ
***

SquareRoot
입력한 값을 변경하는 간단한 수학적 표현입니다.
*** 제곱근이군요. 22=4, (-2)2=4 와 같이 제곱하여 4가 되는 수 2 와 -2 를 4 의 제곱근이라고 합니다
자세한 설명은 링크를...
http://blog.daum.net/sdb7355/7712338?srchid=BR1http://blog.daum.net/sdb7355/7712338
아하하하하;;; 죄송..-_-;;(저도 수학은 싫거든요!! ㅌㅌㅌ)***

Subtract
또 간단한 수학적 표현입니다. 빼기 입니다. 일반적으로 어두운 매트리얼에 사용됩니다 하지만 필터 밖에서 사용하여 색을 표현할때 사용할수도 있습니다.

TextureCoordinate
택스쳐의 UV 좌표를 변경할수 있습니다.

TextureSample
단순한 텍스쳐 입니다 비트맵의 다른종류를 가질수 있습니다.***택스쳐 가져올때 사용한다는 말입니다.

TextureSampleParameter
텍스쳐를 외부코드를 통해 변경할수 있습니다.

TextureSampleParameter2D/Cube/Movie/3D
이것은 TextureSampleParameter 입니다 하지만 무비나 큐브맵등의 컨텐츠를 넣을수 있습니다

Time
이것은 간단한 표현입니다. 다른것과 함께 사용하지 않으면 소용이 없지만 완전히 다른 한번씩 발생해야할 유일한 표현에서 사용됩니다. 생각해보세요 번개후에 회전 에니메이션을 하는 등등의 표현을 할수 있습니다.

Transform
기본 타겟스페이스의 다른종류의 매트리얼로 변경합니다. 이것은 카메라의 상대에게 재질의 정렬을 다르게 하여서 효과를 만들수 있습니다.
***
Can alter a material to use another kind of space than the default Tangent space. What this means in reality is that you can make the alignment of the material relative to the camera or the object itself. Especially the option of making it relative to the camera (View) can be quite handy as it will create a kind of camera facing effect.
에 그러니까 짤게 이야기 해서 카메라 위치에 따른 매트리얼의 변화를 주어 다른 이펙트를 표시***

VectorParameter
ScalarParameter 처럼 VectorParameter는 매트리얼의 인스턴스 또는 색상을 외부코드로 변경할수 있습니다.

VertexColor
매쉬에 사용할수 도 있습니다. 매쉬에 있는 버텍스 컬러를 당신이 액세스 할수 있습니다.

***
 아 드디어 길고긴 매트리얼 표현식에 대한 정리가 완료 되었습니다. 정말 많은 것들이 있는데요
언리얼 3로 게임을 만들고 계시는 프로그래머 분 왈 "매트리얼 좋기는 한데 졸래 느려요" 이런...크롸롸롸
그래도 알아놓는것이 좋겠죠? ㅋ 매트리얼 뿐만 아니라 kismet 에서도 사용할수 있고 여러부분에서 사용할수 있으니까요..후후..
***
반응형

+ Recent posts