Vector Operation 표현식

벡터 입력값에 일정한 연산을 하는 표현식입니다.

Windows
MacOS
Linux

AppendVector

AppendVector (벡터 덧붙이기) 표현식은 채널을 합쳐 원래보다 채널 수가 많은 벡터를 만듭니다. 예를 들어 두 개의 Constant 값을 덧붙이면 Constant2Vector 값을 만들 수 있습니다. 하나의 텍스처 안에서 채널의 순서를 재배치한다던가 여러 개의 회색조 텍스처를 RGB 컬러 텍스처로 합친다든가 할 때 유용하게 쓸 수 있습니다.

항목

설명

입력

A

덧붙일 값을 받습니다.

B

이 값에 덧붙입니다.

예: 0.2 에 0.4 를 Append 하면 (0.2,0.4); (0.2,0.4) 에 (1.0) 을 Append 하면 (0.2,0.4,1.0).

AppendVectorExample.png

ComponentMask

ComponentMask (컴포넌트 마스크) 표현식은 입력에서 (R, G, B, A 중 하나 이상의) 채널 부분집합을 선택하여 출력으로 통과시킵니다. 입력에 존재하지 않는 채널을 통과시키려 하면, 입력이 단일 상수값이 아닌 이상 오류가 납니다. 입력이 단일 상수값인 경우는 그 값을 각 채널로 통과시킵니다. 현재 통과되도록 선택된 채널은 표현식의 제목줄에 표시됩니다.

항목

설명

프로퍼티

R

체크하면 입력값의 빨강 또는 첫째 채널을 출력으로 통과시킵니다.

G

체크하면 입력값의 초록 또는 둘째 채널을 출력으로 통과시킵니다.

B

체크하면 입력값의 파랑 또는 셋째 채널을 출력으로 통과시킵니다.

A

체크하면 입력값의 알파 또는 넷째 채널을 출력으로 통과시킵니다.

예: ComponentMask 에 (0.2,0.4,1.0) 입력을 하면 G 채널은 (0.4) 출력이 되어, 컬러 벡터로 사용했을 때 40% 밝기의 회색조 값으로 보입니다.

ComponentMaskExample.png

CrossProduct

CrossProduct (교차곱) 표현식은 3채널 벡터 입력값을 둘 받아서 교차곱을 계산한 결과를 3채널 벡터값으로 출력합니다. 공간상에 벡터가 둘 있다 칠 때, 교차곱은 이 두 입력에 수직인 벡터가 됩니다.

항목

설명

입력

A

3채널 벡터값을 받습니다.

B

3채널 벡터값을 받습니다.

사용 예: CrossProduct 는 보통 두 방향에 대한 수직 방향을 계산하는 데 사용됩니다.

DeriveNormalZ

DeriveNormalZ 표현식은 주어진 X 와 Y 성분으로 탄젠트 스페이스 노멀의 Z 성분을 구한 다음 3 채널 탄젠트 스페이스 노멀로 출력시킵니다. Z 값의 계산식은 다음과 같습니다: Z = sqrt(1 - (x * x + y * y));

항목

설명

입력

InXY

탄젠트 스페이스 노멀의 X, Y 성분을 2 채널 벡터값 형태로 받습니다.

DeriveNormalZExample.png

DotProduct

DotProduct (도트 곱) 표현식은 두 입력의 도트 곱, 즉 한 벡터를 다른 벡터에 투영했을 때의 길이를 계산합니다. 두 벡터 사이의 코사인에 그 세기(magnitude)를 곱한 것이기도 합니다. 감쇠 계산 기법에 많이 사용되는 계산법입니다. 두 벡터 입력은 채널 수가 같아야 합니다.

항목

설명

입력

A

길이 무관 벡터나 값을 받습니다.

B

A 와 같은 길이의 벡터나 값을 받습니다.

Normalize

Normalize (정규화) 표현식은 입력값을 정규화시켜 출력합니다. 정규화된 벡터 (소위 "유닛 벡터")는 전체 길이가 1.0 입니다. 입력 각 성분을 벡터의 총 세기(길이) 로 나누는 것입니다.

예: Normalize 에 (0,2,0) 또는 (0,0.2,0) 를 전달하면 (0,1,0) 이 출력됩니다. Normalize 에 (0,1,-1) 를 전달하면 (0, 0.707, -0.707) 이 출력됩니다. 유일하게 특별한 경우라면 모두 0 인 벡터로, 변경되지 않습니다.

정규화 입력 벡터

비정규화 입력 벡터

Normal 머티리얼 출력에 연결되는 표현식은 정규화시킬 필요가 없습니다.

Transform

Transform (트랜스폼, 변환) 표현식은 한 좌표계의 3채널 벡터값을 다른 좌표계로 변환합니다.

기본적으로 머티리얼의 모든 셰이더 계산은 탄젠트 스페이스에서 이루어집니다. 벡터 상수, 카메라 벡터, 라이트 벡터 등은 모두 머티리얼에서 사용되기 전 탄젠트 스페이스로 변환됩니다. Transform 표현식은 이러한 벡터를 탄젠트 스페이스에서 월드, 로컬, 뷰 스페이스 좌표계로 변환해 줍니다. 추가로 월드 스페이스와 로컬 스페이스의 경우, 서로 다른 좌표계로 변환해 주기도 합니다.

항목

설명

프로퍼티

Transform Source Type

벡터를 변환해 올 소스 좌표계를 나타냅니다. World, Local, Tangent 중 하나입니다.

Transform Type

벡터를 변환할 타깃 좌표계를 나타냅니다. World, View, Local, Tangent 중 하나입니다.

Transform 표현식은 UV 미러링을 지원하므로, 이를테면 캐릭터 오른쪽 편에만 영향을 끼치는 하이라이트같은 작업이 가능합니다.

큐브맵 샘플링용 월드 스페이스 노멀을 생성하는 데도 좋습니다. 노멀맵은 월드 스페이스로 변환 가능합니다. 아래는 큐브맵 샘플을 뽑기 위해 노멀을 월드 스페이스로 변환하는 예입니다:

TransformExample1.png

노멀을 뷰 스페이스로 변환하여 에지-온 이펙트를 만드는 데 쓸 수 있습니다. 이는 메시 노멀을 사용하여 텍스처 좌표를 생성하는 식으로 이뤄낼 수 있는데, 흔히 "Sphere Mapping" (구체 매핑)이라고도 합니다. 이 방법으로 카메라를 직접 향하는 노멀은 텍스처 좌표 중앙에, 카메라 수직 방향을 향하는 노멀은 변두리에 매핑됩니다. 구체 매핑의 예는 이렇습니다:

SphereMapTestTexture.png

값이 (0,0,1) 인 Constant3Vector 는 TRANSFORM_View 가 설정된 상태로 Transform 에 물리고, 이는 다시 (R 과 G 만 통과시키는) ComponentMask 를 통과합니다. Transform 은 -1 에서 1 사이의 값을 출력하기에, 그 값이 0-1 범위가 되도록 편향시켜 줘야 합니다. 0.5 를 곱한 다음 0.5 를 더해주는 식이지요. 그런 다음 텍스처의 Coordinates 에 꽂아주기만 하면 됩니다. 어떤 텍스처든 상관 없습니다. 효과가 명확히 보이도록 고리 셋으로 하나 만들어 봤습니다:

SphereMapTestTexture.png

이 이펙트에 노멀맵을 사용하려면, Constant3Vector 를 노멀맵 텍스처로 대체해 주기만 하면 됩니다.

다음은 물방울같은 돌 메시에 이 구체맵을 적용한 예입니다:

SphereMapRockExample.png

인터폴레이터 제한으로 인해 VertexColor 와 Transform 노드는 같이 쓸 수 없습니다. Transform 과 VertexColor 를 둘 다 쓰면, VertexColor 는 모두 하얗게 나옵니다.

현재 Transform 노드는 비균등 스케일을 제대로 처리하지 못합니다.

TransformPosition

이 노드는 원점에서 월드 위치를 뽑아내기 위해 사용할 때의 정밀도 문제로 인해 폐기되었습니다. WorldPosition 노드를 대신 사용해 주시기 바랍니다.

TransformPosition 표현식은 스크린 스페이스의 어느 위치도 TransformType 변수에 지정된 대상 스페이스로 변환합니다. 현재는 월드 스페이스로의 변환만 지원됩니다. 이 표현식은 머티리얼의 월드 스페이스 좌표를 구하는 데 사용할 수 있습니다. 월드 위치를 시각화시켜 보려면, Emissive 에 꽂아주면 됩니다:

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼