로컬/모델 위치에서 최종 클립 공간 위치까지
3가지 변신 맥스트릭스:
투영: 투영 변환 행렬
보기 좌표계를 클립 공간 좌표계
로 변환보기: 변환 행렬 보기
모델 좌표계를 보기 좌표계로 변환(카메라 위치 이동)
모델: 모델 변환 매트릭스
지역 좌표를 모델 좌표계/게임 월드 좌표계(절대 좌표)로 변환
위치: 정점의 로컬 좌표
지역좌표계(상대좌표계)
위치 및 모델의 좌표계 원점은 요구사항에 따라 개발자가 정의합니다.
모델 및 위치 행렬 데이터에 각각 대응하는 세계 및 모델의 좌표계:
Absolute(World) Y+ axis Y (0, 1, 0) | | Local(Model) Y+ axis | | / | | / | | | ---------- o (1, 0, 1) ← Local(Model) Origin ---- Local X+ axis | / | | / | | / | | / | | / | |______________________/______|__________ X (1, 0, 0) Absolute(World) X+ axis / Local(Model) Z+ axis / / / Z (0, 0, 1) Absolute(World) Z+ axis
WebGL에서 행렬은 열 주요 순서로 저장되며 이는 행렬 배열 및 계산 순서에 영향을 미칩니다. 이 저장 방법은 WebGL에서 행렬이 정의되고 사용되는 방식에 영향을 미칩니다. 다음은 WebGL에서 열 주요 행렬로 작업할 때의 몇 가지 일반적인 사례입니다.
남 = | m11 m21 m31 m41 | | m12 m22 m32 m42 | | m13 m23 m33 m43 | | m14 m24 m34 m44 |
WebGL에서 이 행렬은 열 주요 순서의 1차원 배열로 표현됩니다.
const matrix = [ m11, m21, m31, m41, // First column m12, m22, m32, m42, // Second column m13, m23, m33, m43, // Third column m14, m24, m34, m44 // Fourth column ];
gl.uniformMatrix4fv(location, false, matrix);
여기서 false는 행렬을 전치하면 안 된다는 의미입니다. WebGL은 기본적으로 열 우선 순서를 사용하므로 JavaScript의 표준 수학 라이브러리는 기본적으로 행 우선 순서를 사용할 수 있으므로 데이터 형식이 이 요구 사항과 일치하는지 확인하세요.
결과 행렬 M은 변환 행렬 T, R 및 S
의 곱으로 표현될 수 있습니다.M = T ⋅ R ⋅ S
이 방정식에서:
열 주요 순서에서 이 시퀀스는 먼저 크기 조정, 회전, 마지막으로 변환을 적용합니다.
let modelMatrix = mat4.create();// 항등 행렬 생성
Absolute(World) Y+ axis Y (0, 1, 0) | | Local(Model) Y+ axis | | / | | / | | | ---------- o (1, 0, 1) ← Local(Model) Origin ---- Local X+ axis | / | | / | | / | | / | | / | |______________________/______|__________ X (1, 0, 0) Absolute(World) X+ axis / Local(Model) Z+ axis / / / Z (0, 0, 1) Absolute(World) Z+ axis
위 내용은 [WebGL] [기본] 스킨이 없는 모델의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!