Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Libwan

[FakeAxisUv] 본문

Unreal/Material&Shader

[FakeAxisUv]

Libwan 2025. 1. 1. 23:21

FakeAxisUv 아카이빙 및 튜토리얼을 위해 작성

 

 

ObjectLocal의 YZ축을 UV로 사용

 

목표-

오브젝트의 Position/Orientation과 관계 없이 World/ObjectLocal 등의 특정 Axis 를 UV로 활용할 수 있는 FakeAxisUv를 제작합니다.

 

 

노드 전문

본문-

비슷한 효과를 만드는 데에는 여러 방법이 있을수 있으나,

카메라와 카메라가 보는 픽셀의 연장선(카메라벡터) 과 Y/Z 면의 교점을 찾는 것으로 문제를 정리하였습니다.

 

 

그림에선 ? 로 표기된  T값을 찾아 Camera의 Position을 T만큼 카메라벡터 방향으로 밀면 원하는 Y/Z면의 교점을 찾을 수 있을 것입니다.
요약해 표현하면 CameraPosition + ( CameraVec * T ) = P 이 됩니다.

 

---

 

평면 상의 두 점의 차를 평면의 노말로 내적하면 0이 됩니다.

PNormal • (P1 - P) = 0                       ///   • (내적)  

 

여기서 P가 카메라 벡터 위의 한 점이라고 생각하고  두 방정식을 T에 대해 풀어 쓴다면

 

T = (PNormal • (P1 - CameraPosition)) / PNormal • CameraVec 가 됩니다.

 

 여기서 평면 위의 점 P 는 Y/Z면을 상정하였기 때문에 임의로 0,0,0을 대입, PNormal 역시 1,0,0 이 되겠습니다.

이미지 상의 노드에서는 보는 위치에 따라 뒷면인 -1,0,0 에도 대응할 수 있도록 LocalPos를 활용하여  Y/Z 면의 Normal을 찾았습니다.

 

이로써 CamPosition과 Uv사이의 거리 T를 구할 수 있습니다.

 

-----

T를 구했기 때문에 앞서 구한 방정식 

 

CameraPosition + ( CameraVec * T ) = P 에 대입하여 Y/Z의 점 P의 Position을 찾습니다.

 

UV로 활용되는것은 Y/Z 면이므로 Vector3인 Position에서 Y/Z 만을 마스킹해 UV를 구합니다.

 

 

 

----

 

다른 축을 상정하거나 P1의 포지션을 수정하여 다양한 면을 추정해 그릴 수 있습니다.

'Unreal > Material&Shader' 카테고리의 다른 글

[RadialBlur]  (0) 2023.05.30
[Parallax Occlusion Triplanar Mapping]  (0) 2022.05.18
[Parallax Occlusion Mapping]  (0) 2022.05.15
[Material] - Infinity Panning From Center  (0) 2022.05.04