Programming/UE4

[UE4] 외적(CrossProduct)

구리구리882 2020. 2. 23. 10:58
반응형

https://www.youtube.com/watch?v=KWtRiKbNS24

 

 언리얼에서 뭔가 검색할때 주로 보게되는 WTF시리즈의 Material Cross Product는 내용을 쉽게 이해하기 어려운 부분이 있어서 별도로 샘플을 만들었습니다.

 

 흔히 검색하면 나오는 외적은 두개의 벡터와 직교하는 벡터를 구하는 공식입니다.

수학용어들이 말이 어렵기 때문에 간단히 풀어보면 두개의 벡터가 가르키는 방향과 90도를 이루는 벡터를 구하는 공식 입니다.

 

두개의 벡터를 RedArrow, GreenArrow, 직교하는 벡터를 BlueArrow라고 네이밍 했습니다.

언리얼에서 X축은 red, Y축은 green, Z축은 blue를 사용하기 때문에 동일하게 선택을 했고, 해당 방향을 알기 쉽게 표현하기 위해 각각의 벡터가 가르키는 방향으로 회전을 시켜두었습니다.

 

RedArrow는 X=100, GreenArrow는 Y=100으로 설정했고, BlueArrow는 어디에 배치를 하던 두개의 벡터와 연산 후 다시 위치를 잡을 것이기 때문에 적당한 곳에 놓으면 됩니다.

 

CrossProductManager에 세개의 화살표를 연결하고 아래와 같이 블루프린트를 통해 BlueArrow의 위치를 연산합니다.

 

CrossProduct

GreenArrow와 RedArrow의 위치를 얻어온 후 CrossProduct한 후 Normalize를 합니다.

그 이유는 외적은 방향만 계산을 하기 때문에 x 100, y 100인 상황에서 z -10000이 나오면 화면에 표시하기 어렵기 때문에 방향만 얻기 위해서 Normalize를 하는 것입니다.

 그 후 3개의 벡터가 각각 자신의 축으로 동일하게 100씩 이동하게 하기 위해서 RedArrow의 벡터의 길이를 곱하면 BlueArrow는 z = -100이 됩니다.

 

결과는 아래와 같이 0, 0, 0에서 각자의 축으로 100씩 이동한 것을 확인 할 수 있습니다.

 

결과

 

간단한 내용이라 위 내용만 가지고도 따라하기 무리가 없겠지만, 필요하신 경우 메일 주소 남겨드리면 보내드리도록 하겠습니다.

반응형