BaeBox

Matrix ( transformation) 본문

개발 관련

Matrix ( transformation)

배모씨. 2019. 10. 21. 11:47
반응형

영화 매트릭스의 이미지.

Matrix : Threejs가 사용하는 3D 형태를 정의하는 행렬. (위치, 회전률, 비례(크기조정?))

모든 Object3D 객체는 위치, 회전률, 투사비율값을 가지는 matrix 를 가진다. 

즉, 요놈을 update 하면 Object의 변경사항이 적용된다!!

Scene 객체가 가지는 4 *4 크기의 행렬
분명 중학교때 배웠는데 왜 모르는가. 

Object3D 는 세 가지의 Matrix 를 가지는데,

Matrix Type Description
Object3D.matrix object 자기 자신만의 상태값 가진다. 이 값은 부모값에 대하여 상대적이다. 
Object3D.matrixWorld object 의 global 혹은 world(즉, 전체)의 상태값을 가진다. parrent 가 없다면 world 와 같은 값을 가진다.
Object3D.modelViewMatrix 카메라의 coordinate system에 대한 object 의 상대적인 상태값.(나는 카메라로부터의 위치값 정도로 이해하고 있다.) 

modelViewMatrix = matrixWorld * matrixWorldInverse(아래 표 참조) 이다.
Camera 가 가지는 추가적인 2개의 matrice(plural) Description
Camera.matrixWorldInverse camera의 matrixWorld 의 반대값(? 역을 말하는 듯.)
Camera.projectionMatrix 정해진 공간에 어떻게 투사할 것인지를 결정하는 값. 

 

  • Object3D가 가지느 matrix 는 부모에 대한 상대적인 변경값을 가진다. 전체에 대한 변경값을 알고 싶다면 matrixWorld를 보면 된다.\
  • 하나의 객체만을 update 하고자 한다면 Object3D.matrixWorld()를 사용하면 되고, child와 Parent 모두 업데이트하고자 한다면 Object3D.updateMatrixWorld() 함수를 사용하면 된다. 

내용이 어렵다. 

다시 한 번 제대로 정리를 할 필요성이 있을 것 같다. 


덤. 

threejs 는 webgl 에게 여러 개의 matrix 를 전달하는데, 

projectionMatrix : aspaect ratio, fov, front and back. 

modelViewMatrix : 공간상의 위치. 

그 중 위 두 가지는 필수적으로 전달하여야 한다.

위 두 가지를 곱하여 (projectionMatrix * modelViewMatrix ) 2D 상에 그리게 된다. shader 입문


아래는 matrix 에 대한 설명. 

https://github.com/mrdoob/three.js/issues/1188

 

Matrices in Three.js · Issue #1188 · mrdoob/three.js

I'm trying to demystify how matrices are used in three.js and after looking at source code and other issues explanations, I'm nevertheless confused :S From my understanding, three.js's ...

github.com

공식 문서.

https://threejs.org/docs/index.html#manual/en/introduction/Matrix-transformations

 

three.js docs

 

threejs.org

https://en.wikipedia.org/wiki/Transformation_matrix

 

Transformation matrix - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Central object in linear algebra; mapping vectors to vectors In linear algebra, linear transformations can be represented by matrices. If T {\displaystyle T} is a linear transformation

en.wikipedia.org

반응형
Comments