본문 바로가기

Unity3D/2021_엔진 심화

[Unity Shader] 좌표계, 벡터

오늘 주제는 공간, 위치, 방향 등등 입니다. 

머리가 딱딱해져서 잘 안돌아가네요.


좌표계란?

아래 이미지는 3D 툴을 이용한 적이 있다면 자주 본적 있는 모습입니다.

 

씬 내에, 어느 공간에 오브젝트를 배치하기 위해서는 공간 정보가 필요하고, 공간 정보의 기준을 잡아주는 것이 좌표계입니다. 3차원 공간의 정보를 나타낼 때는 x, y, z  3개의 축을 사용해 공간 상의 위치 정보를 가져옵니다.

위치도 RGB색상처럼 float3(0,0,0)의 숫자 정보. 

 

 

 

좌표 공간의 종류는

로컬 스페이스> 월드 스페이스> 뷰 스페이스> 클립 스페이스> 씬 스페이스

로 이루어져있습니다.

 

 

 

유니티에 오브젝트를 배치할 시 월드 좌표계를 기준으로 합니다. 

피봇, 센터와 글로벌, 로컬 좌표계를 상단에서 설정할 수 있다. 

 

 

새로운 오브젝트를 추가하겠습니다.

공 오브젝트를 박스 오브젝트의 자식으로 상속된다면 해당 오브젝트는 월드 좌표계에서 박스 오브젝트의 로컬 좌표계에 소속하게 됩니다. 이것을 공간 변화라고 부릅니다.(월드->로컬)

 

공의 좌표 기준이 월드의 (0.0.0)이 아닌 현재 박스의 위치가 된거죠.

 

이후로 박스의 위치를 변경 했을 때 공의 로컬 좌표 값의 변화는 없습니다. 공의 월드값은 변경됩니다.

 

부모 상속 전

 

포지션에 주목

상속 후 (박스의 위치를 기준점인 0,0,0으로 삼게되었다)


벡터란??

나 그래픽이라고~!~!!

 

2차원 혹은 3차원 공간에서의 원점으로부터의 좌표.

스칼라는 양

1차원 개념인가보네요.

 

 

 

방향과 크기를 담고 있는 것을 방향벡터(direction vector)라고 합니다.

주로 화살표 모양으로 나타내는데 유니티나 맥스에서도 흔하게 볼 수 있습니다.

 

 

위의 어디서 많이 본 화살표들의 색 조합은 숫자로도 볼 수 있습니다.

R-X float3(1,0,0)

G-Y float3(0,1,0)

B-Z float3(0,0,1)

숫자는 색, 색은 위치이며 동시에 위치일 수도 있고 방향일 수도 있다는 것입니다.

 

float3(1,0,0) 이라면?

x방향으로 길이가 1인 화살표랑 같다는 거죠

 

2차원일 경우에는 float2, 3차원일 경우에는 float3로 나타냅니다.

 

 

 

벡터의 덧셈과 뺄셈

A+B

 

시점이 일치하는 벡터는

A벡터와 B벡터를 변으로 하는 평행사변형을 그리면 생기는 꼭짓점과 시점을 연결하면 A+B값이 나오게 됩니다.

 

또는 B벡터의 종점에 A벡터의 시점을 이을 경우 마찬가지로 A+B값이 나옵니다.

 

 

 

A-B

벡터의 -는 방향이 역으로 뒤집히게 됩니다. 좌표로 보면 1에서 -1로 이동한 것과 같죠.

 

 

벡터에는 위치값이 상관없기 때문에 위와 아래의 값은 같게 됩니다.

 

단위 벡터란?

 

길이가 1인 벡터를 뜻합니다.

 

반지름의 길이가 1인 원을 기준으로 내적을 구하는 등

길이가 1인 벡터는 쉐이더에서 라이팅 연산 등 여기저기에 사용됩니다.

 

정규화 Normalize

 

저런 곳에 사용하기 위해서 길이가 1이 아닌 벡터를 강제로 1로 조정하는 것이 정규화 입니다. 

'Unity3D > 2021_엔진 심화' 카테고리의 다른 글

[Unity] Z-buffer, Shader Lab  (0) 2021.05.05
[Unity] 키워드, 색상 연산2  (0) 2021.04.21
[Unity] 색상 연산, 블렌더  (0) 2021.04.07
[Unity] Shader Graph 기초 / UI  (0) 2021.04.01