Vex

dot product

징니쓰 2022. 2. 7. 03:34

< 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 를 뜻한다.

 

 

 

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

 

'Vex' 카테고리의 다른 글

Group  (4) 2022.05.01