< Dot product >
dot(a,b)
: 내적, 두 vector 의 각을 구해준다. (사이각)
단, 두 vector 의 각도를 정확하게 할려면, normalize 를 해줘야한다.
*normalize : 1의 사이즈로 만드는것
내적을 이용해서, 다양한 작업에 응용 할 수 있다.
<Dot product = 내적 구하기> 를 하기 위해 필요한 값들.
1. 두가지 vector 가 필요하다. (A와 B라고 하겠음.)
2. A와 B의 각 point들의 포지션 값(@P)을 알아야 한다.
3. B의 normal 이 있어야 한다.
4. A와 B 사이의 거리를 알아야 한다.
A와 B 각 포인트들의 거리를 알아야 한다.
5. A와 B 사이의 거리를 normalize 해줘야 한다. ( = C라고 하겠음. )
6. normal 값과 C의 값을 dot product 해준다.
dot( @N, C )
<Dot product 의 원리 이해하기 >
dot product 의 이론적 공식은
A · B = normalize(A) * normalize(B) * Cos θ
위와 같다. 그런데, normalize 를 하면 무조건 1의 값이 되기때문에 < normalize(A) = 1 , normalize(B) = 1> 이다.
A · B = 1 * 1 * Cos θ
결국 < 1 * 1 * θ = θ > 이다.
A · B = Cos θ
결론적으로, dot product = Cos θ (코싸인 세타) 라고 생각하면 된다.
<Cos>
Cos 그래프를 간단하게 요약하면, r/x 값을 반복하는 그래프이다.
여기서 r은 원의 반지름인 radius 를 뜻한다.
0˚ | 1 |
90˚ | 0 |
180˚ | -1 |
270˚ | 0 |
360˚ | 1 |
위 표의 값을 가지는 그래프이다.
즉, dot product 도 각도에 따라 위와 같은 값을 가진다고 볼 수 있다.
흔히 dot product 의 값을 -1 ~ 1 사이로 얻은후, @Cd 값에 넣어서 컨트롤 한다.
EX) 운석 충돌
카메라와 운석을 dot product 한다.
* dot product 값들중, 1의 값들에 pyro emitter 로 사용해서, 운석 앞부분에만 불이 생기도록 만들 수 있다.
* ( dot < 0 ) dot product 의 값이 0보다 이하인 값들에는 연기와 파티클을 만드는 emitter 로 사용할수도 있다.
이런식으로 원하는 영역을 컨트롤 할때 dop product 가 아주 유용하게 쓰일수 있다.
https://zingni.tistory.com/11?category=0
Dot product 로 카메라에 안보이는 면 지우기
Back Plate 에 맞게 Tracking이 된 카메라에 맞춰서 모델링을 제작했다. 모델링은 후디니에서 HeightFiled 노드로 큰 틀을 만들고, Soft transform으로 손으로 당겨서 디테일 부분은 맞췄다. 산불을 제작할 예
zingni.tistory.com