에고에고. 사전설명으로 글 하나를 써버렸네요.
어쩔 수 없지.
그럼 이번엔 다시 또 이어서 해 봅시다.
'월드' 에서 '뷰' 행렬로 바꾸는건 이동을 생각 안하면 회전뿐이고,
심지어 물체가 뷰.. 즉 카메라 방향의 '반대편' 으로 회전하는 것을 말하는 것이다! 라는게 지난 글의 요약이었는데요
뭐 좋아요.
그럼.
이번에는
진짜 해보죠
빌보드를 만들어 봅시다
여기 일단 월드 좌표계에서 놀고 있는 박스가 있단 말예요
이젠 우린 알죠 . '우리는 뷰 좌표계에서 저 놈을 기울어진것처럼 바라보고 있지만, 저 놈은 월드 좌표계 기준에서 보면 똑바로 있는거다'
후후 좋아요. 그럼 셰이더 그래프를 열고..
아래처럼 해 줍시다. world position을 받아올 거예요. 그리고 쓸데없는 split과 combine을 거치죠? 저건 RGB만 되어 있는 Posiotion을 RGBA로 만들어 주려고 그러는 거예요. float4 가 필요해서요.
그 다음에 이걸 꺼내줍니다.
변환행렬 'InverseView'
오오???
변환행렬은 아까 뭐 좌표 변환해주는 행렬인거고..
view 행렬(카메라 좌표계, 카메라 공간)을 곱해주면 .. 물체가 카메라의 반대편으로 회전한다고 했잖아요?
그럼...view 행렬의 반대인 Inverse View 행렬은 뭐 하는 거겠어요?
물체를 카메라 방향으로 회전시켜주는 행렬이 되어버린 거예요
좋아요 이걸 행렬곱 해 줍시다
이렇게 하면 물체가 '카메라 방향으로 돌게' 행렬연산이 되는 겁니다.
흠.. 근데 그냥 쓸 수가 없네요.
왜냐면.. Inverse View 행렬을 곱했기 때문인데요. 이러면 현재 좌표계는 world 좌표계가 되어요. 월드 -> 뷰 였던걸 뷰 -> 월드 로 만든게 되니까요
근데 셰이더 그래프에서는 ... 오브젝트 스페이스를 원한단 말이죠? 그래서 한 번 더 행렬연산이 필요하겠네요.
그럴때 쓸만한 변환 노드가 있죠
absoluteWorld에서 Object로 변환해 주는 Transform 노드!
그럼 이렇게 되고
적용하면
와!!! 빌보드 처럼 움직입니다 . 나만 봐라봐요!!
물론 그림자는 빌보드 처리가 안되어서 저렇게 나오고 있는거지만, 그림자야 꺼버리면 되고, 무엇보다 빌보드가 되고 있다는 증거이기도 하니까요.
그럼 끝???
이렇게 하면 안됩니다
그런데 치명적 문제가 있어요. 월드 -> 뷰 행렬을 역으로 했다는데가 문제인데요.
무슨 문제냐면
회전이 먹어 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
생각해 보니 그렇죠. 월드에 이놈이 회전을 안하면 괜찮은데, 아예 월드에서부터 기울어져 있으면 기울어져 있는채로 빌보드 될거아녀...
즉 물체의 월드 회전을 막을 수가 없다는 문제가 됩니다. 이걸 해결하려면 회전을 또 역으로 하고 난리를 치고 가정이 무너지고 사회가 무너지고 ...
안해.
좋은 방법이 있습니다.
흠 좋아요. 진정하고.
그럼 해결책은 뭘까요? 월드 좌표계에서 시작하니까, 월드에 이 녀석이 정확히 Z 를 바라보고 가만히 있을거는 보장이 없다는 거잖아요?
그럼 해결책은 단순합니다. local 좌표계에서 시작하는 거예요 !!!!!
생각해 보세요 local좌표계는 자기가 중심이라서, 월드에서 회전해도 여전히 자기 축은 그대로라 회전 안한거랑 똑같거든요!!!
즉 해결책은 간단합니다.
월드에서 시작하지 말고 로컬(오브젝트) 좌표계에서 시작하게 하면 끝이예요!!!
이러면 월드에서 회전을 하건 말건 무슨 상관입니까??? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아아 이제 완벽합니다. 저 성가신 그림자야 꺼버리면 될테고. 빌보드는 완성되었어요.
다 된겁니까?
아뇨 다 되진 않았어요 ㅋㅋㅋ 지금은 진짜 원형만 만든것 뿐.
지금은 진짜 회전만 했기 때문에. 이동과 스케일은 적용이 안된다는 문제가 있습니다.
이건 다음 시간에.
'Shader ' 카테고리의 다른 글
Unity URP HLSL Shader Basic (0) | 2024.07.31 |
---|---|
빌보드(Billboard)를 만들어 봅시다 3부. 마무리해 봅시다 / HLSL버전 (0) | 2024.07.28 |
빌보드(Billboard)를 만들어 봅시다 1부. 변환 행렬의 비밀 (0) | 2024.07.27 |
Lit 셰이더 분석 2 (0) | 2023.10.10 |
Lit 셰이더 분석 (0) | 2023.09.28 |
댓글