Transform 노드
설명
한 좌표 공간에서 다른 좌표 공간으로 입력 값(In)을 변환한 결과를 반환합니다. 노드에서 드롭다운 옵션을 선택하여 변환할 공간을 정의할 수 있습니다.
포트
이름 | 방향 | Type | 설명 |
---|---|---|---|
In | 입력 | 벡터 3 | 입력 값 |
Out | 출력 | 벡터 3 | 출력 값 |
컨트롤
이름 | Type | 옵션 | 설명 |
---|---|---|---|
From | 드롭다운 | Object, View, World, Tangent, Absolute World | 전환 시작 공간을 선택합니다. |
To | 드롭다운 | Object, View, World, Tangent, Absolute World | 전환 대상 공간을 선택합니다. |
월드 및 절대 월드
World 및 Absolute World 공간 옵션을 사용하여 포지션 값의 좌표 공간을 변환하십시오. World 공간 옵션은 스크립터블 렌더 파이프라인의 기본 월드 공간을 사용하여 포지션 값을 전환합니다. Absolute World 공간 옵션은 절대 월드 공간을 사용하여 모든 스크립터블 렌더 파이프라인의 포지션 값을 전환합니다.
Transform Node를 사용하여 포지션 값이 아닌 좌표 공간을 전환하는 경우 Unity는 World 공간 옵션을 사용할 것을 권장합니다. 포지션을 나타내지 않는 값에 대해 Absolute World를 사용하면 예기치 않은 동작이 발생할 수 있습니다.
생성된 코드 예제
다음 예제 코드는 Base 모드에 대한 이 노드의 가능한 결과 중 하나입니다.
World > World
float3 _Transform_Out = In;
World > Object
float3 _Transform_Out = TransformWorldToObject(In);
World > Tangent
float3x3 tangentTransform_World = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
float3 _Transform_Out = TransformWorldToTangent(In, tangentTransform_World);
World > View
float3 _Transform_Out = TransformWorldToView(In)
World > Absolute World
float3 _Transform_Out = GetAbsolutePositionWS(In);
Object > World
float3 _Transform_Out = TransformObjectToWorld(In);
Object > Object
float3 _Transform_Out = In;
Object > Tangent
float3x3 tangentTransform_World = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
float3 _Transform_Out = TransformWorldToTangent(TransformObjectToWorld(In), tangentTransform_World);
Object > View
float3 _Transform_Out = TransformWorldToView(TransformObjectToWorld(In));
Object > Absolute World
float3 _Transform_Out = GetAbsolutePositionWS(TransformObjectToWorld(In));
Tangent > World
float3x3 transposeTangent = transpose(float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal));
float3 _Transform_Out = mul(In, transposeTangent).xyz;
Tangent > Object
float3x3 transposeTangent = transpose(float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal));
float3 _Transform_Out = TransformWorldToObject(mul(In, transposeTangent).xyz);
Tangent > Tangent
float3 _Transform_Out = In;
Tangent > View
float3x3 transposeTangent = transpose(float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal));
float3 _Transform_Out = TransformWorldToView(mul(In, transposeTangent).xyz);
Tangent > Absolute World
float3x3 transposeTangent = transpose(float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal));
float3 _Transform_Out = GetAbsolutePositionWS(mul(In, transposeTangent)).xyz;
View > World
float3 _Transform_Out = mul(UNITY_MATRIX_I_V, float4(In, 1)).xyz;
View > Object
float3 _Transform_Out = TransformWorldToObject(mul(UNITY_MATRIX_I_V, float4(In, 1) ).xyz);
View > Tangent
float3x3 tangentTransform_World = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
float3 _Transform_Out = TransformWorldToTangent(mul(UNITY_MATRIX_I_V, float4(In, 1) ).xyz, tangentTransform_World);
View > View
float3 _Transform_Out = In;
View > Absolute World
float3 _Transform_Out = GetAbsolutePositionWS(mul(UNITY_MATRIX_I_V, float4(In, 1))).xyz;
Absolute World > World
float3 _Transform_Out = GetCameraRelativePositionWS(In);
Absolute World > Object
float3 _Transform_Out = TransformWorldToObject(In);
Absolute World > Tangent
float3x3 tangentTransform_World = float3x3(IN.WorldSpaceTangent, IN.WorldSpaceBiTangent, IN.WorldSpaceNormal);
float3 _Transform_Out = TransformWorldToTangent(In, tangentTransform_World);
Absolute World > View
float3 _Transform_Out = TransformWorldToView(In)
Absolute World > Absolute World
float3 _Transform_Out = In;