AppendVector
AppendVector 표현식을 사용하면 데이터 채널을 함께 결합하여 원래보다 채널 수가 많은 벡터를 생성할 수 있습니다. 예를 들어, 2개의 개별 Constant 값을 가져와서 덧붙여 2채널 Constant2Vector 값을 만들 수 있습니다. AppendVector는 또한 단일 텍스처에서 채널의 순서를 변경하거나 다수의 그레이스케일 텍스처를 하나의 RGB 컬러 텍스처로 결합하는 경우에 유용합니다.
입력 | 설명 |
---|---|
A | 추가 데이터를 덧붙일 값을 받습니다. |
B | A에 덧붙일 값을 받습니다. |
예시
AppendVector는 입력 순서대로 작동합니다. 즉, 입력 B의 데이터가 입력 A의 데이터 끝에 덧붙여집니다. 아래 예시에는 별도의 덧붙이기 연산 2개가 있습니다. 먼저 0.2 와 0.4 가 덧붙여져 2채널 벡터 (0.2, 0.4) 가 됩니다. 두 번째 Append 노드에서는 상수 값인 1이 (0.2, 0.4) 끝에 덧붙여집니다. 따라서 최종 결과는 3채널 벡터인 (0.2, 0.4, 1) 이 됩니다. 이 예시에서는 머티리얼의 베이스 컬러를 정의하는 RGB 값으로 사용되었습니다.

ComponentMask
ComponentMask 표현식을 사용하면 입력에서 (R, G, B, A 중 하나 이상의) 채널 부분 집합을 선택하여 출력으로 통과시킬 수 있습니다. 입력에 존재하지 않는 채널을 통과시키려고 시도하는 경우, 입력이 단일한 상수 값이 아닌 이상 오류가 발생합니다. 입력이 단일 상수 값인 경우는 해당 값을 각 채널로 통과시킵니다. 현재 통과되도록 선택한 채널은 표현식의 제목 표시줄에 표시됩니다.
머티리얼 그래프에서 ComponentMask 표현식을 선택하고 디테일(Details) 패널 프로퍼티의 체크 박스를 사용하여 출력으로 통과를 허용할 채널을 선택합니다.

프로퍼티 | 설명 |
---|---|
R | 체크하면 입력값의 레드(첫 번째) 채널이 출력으로 통과됩니다. |
G | 체크하면 입력값의 그린(두 번째) 채널이 출력으로 통과됩니다. |
B | 체크하면 입력값의 블루(세 번째) 채널이 출력으로 통과됩니다. |
A | 체크하면 입력값의 알파(네 번째) 채널이 출력으로 통과됩니다. |
아래 예시는 입력이 (0.2,0.4,1.0)인 ComponentMask를 보여줍니다. 디테일 패널에는 G 채널 만 활성화되어 있으므로, 노드의 출력값은 0.4 입니다. 이 값이 머티리얼의 베이스 컬러 입력에 전달되면 40% 밝기의 그레이스케일 값으로 표시됩니다.

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채널 벡터 값의 형태로 받습니다. |

DotProduct
DotProduct 표현식은 두 입력의 내적, 즉 하나의 벡터를 다른 벡터에 투영했을 때의 길이를 계산합니다. 두 벡터 사이의 코사인에 크기(magnitude)를 곱한 값이기도 합니다. 이 계산은 감쇠 계산 기법에 많이 사용됩니다. DotProduct를 사용하려면 두 벡터 입력의 채널 수가 같아야 합니다.
입력 | 설명 |
---|---|
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) | 벡터를 변환할 현재 좌표계를 지정합니다. 월드, 로컬 또는 탄젠트 스페이스 중에서 선택할 수 있습니다. |
대상(Destination) | 벡터를 변환할 타깃 좌표계를 지정합니다. 월드, 뷰, 로컬 또는 탄젠트 스페이스 중에서 선택할 수 있습니다. |
Transform 노드는 미러링된 UV를 처리하므로, 캐릭터의 오른쪽 에지에만 영향을 미치는 하이라이트 등이 가능합니다.
Transform 노드는 큐브맵 샘플링을 위해 월드 스페이스 노멀을 생성하는 경우에 유용합니다. 노멀 맵은 월드 스페이스로 변환할 수 있습니다. 아래는 큐브맵을 샘플링하기 위해 노멀을 탄젠트 스페이스 에서 월드 스페이스 로 변환한 예시입니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
노멀을 뷰 스페이스로 변환하면 에지에 이펙트를 구현하는 데 유용합니다. 일반적으로 '스피어 매핑'이라고 하는, 메시 노멀을 사용하여 텍스처 좌표를 생성하는 방식으로 구현할 수 있습니다. 이 방식을 통해 카메라를 똑바로 향하는 노멀은 텍스처 좌표의 중앙에 매핑되고, 카메라를 직각으로 향하는 노멀은 텍스처 좌표의 에지에 매핑됩니다. 예를 들면, Transform 표현식을 사용하여 카메라를 항상 향하는 과녁 텍스처를 매핑할 수 있습니다.

값이 (0,0,1)인 Constant3vector는 Tangent Space to View Space 로 설정된 Transform 노드로 연결됩니다. 그런 다음 ComponentMask를 통과하되, R과 G만 전달합니다. Transform은 범위가 -1~1인 값을 출력하기 때문에, 범위가 0~1이 되도록 값에 바이어스를 적용합니다. 0.5로 곱한 다음 0.5를 더하면 됩니다. 그런 다음 과녁 텍스처의 좌표에 연결하기만 하면 됩니다.

스태틱 메시의 궤도를 회전할 때 과녁은 항상 뷰 스페이스의 중앙에 유지됩니다. Transform 노드의 대상 프로퍼티를 뷰 스페이스 대신 월드 스페이스(World Space) 로 변경하면 Z축을 따라 텍스처를 투영할 수 있습니다.
VertexColor는 제한된 보간 툴로 인해 Transform 노드와 상호 배타적입니다. Transform 노드와 VertexColor를 둘 다 사용하는 경우 VertexColor가 전부 흰색으로 표시됩니다.
트랜스폼 노드는 현재 비균등 스케일을 올바르게 처리하지 않습니다.
TransformPosition
TransformPosition 표현식은 표현식의 TransformType 변수에 의해 지정된 위치를 스크린 스페이스에서 대상 스페이스로 변환할 수 있습니다. 현재는 월드 스페이스로의 변환만 지원됩니다. 이 표현식은 머티리얼에서 월드 스페이스 좌표를 얻는 데 사용할 수 있습니다. 월드 포지션을 시각화하려면 이미시브에 바로 연결하면 됩니다.