api2 - android dual camera api



Camera.translate와 Matrix.preTranslate 또는 Matrix.postTranslate의 차이점은 무엇입니까? (2)

캔버스에서 3D 변형을 수행하기 위해 카메라 를 사용합니다. 일반적으로 카메라를 회전시키고 매트릭스로 변환 한 다음 변환합니다. 카메라에는 변환 방법이 있습니다. 메소드 사용의 결과가 다릅니다.

내 질문은 : Camera.translate와 Matrix.preTranslate 또는 Matrix.postTranslate의 차이점은 무엇입니까?

https://ffff65535.com


그 이유는 매트릭스 곱셈이 적절한 결과를 얻기 위해 특정 순서로 수행되어야하기 때문입니다 (이미 알고있는 것처럼).

번역 / 회전 / 비율의 순서는 입력 할 때 역순 으로 수행됩니다.

그래서 당신이 이렇게하면 :

Camera.rotate(15, 0, 0);
Camera.scale(.5f, .5f, .5f);
Camera.translate(70, 70, 70);

먼저 70,70,70을 번역하고 모든 방향으로 50 % 확대 한 다음 X 축에 대해 15도 회전합니다.

따라서 Matrix는 사전 및 사후 변환 기능을 제공합니다. 실제로 모든 것을 사전 및 사후 변환 할 수 있습니다. 실제로 먼저 15도 회전 한 다음 변환 한 다음 최종적으로 확장하려는 경우가 있습니다.

그래서 번역 전후 번역에 대한 답변입니다. 이제 Camera가 직선으로 회전하고 변환하는 이유는 Canvas에서 직접 회전 및 변환을 수행 할 수 있기 때문에 Matrix 또는 Camera를 사용하지 않으므로이 기능이 이미 작동하는 방식을 알고있는 사람들을위한 것입니다. 번역, 비율 및 회전이 역순으로 수행된다는 것을 알고있는 한 너무 오래있을 수 있습니다.

또한, 내가 무엇을 말했는지 안다면, 그것은 당신에게 더 많은 힘을줍니다. 각 행렬에 대해 여러 Matrix 객체에서 10 개의 행렬을 둘러 쌀 수 없습니다 (예 : 원 운동을 시뮬레이션하기 위해 중심을 기준으로 바깥쪽으로 회전하는 스윙 동작을 수행하려는 경우). 여러 개의 회전 및 번역 (여러 개의 Matrix 객체가 서로 전달되는 것으로 둘러싸여 있음)을 수행해야하지만 각 번역의 작동 방식을 알고있는 경우 .translate (), .rotate (), .scale ().

이 정보는 3D 그래픽을 할 때 특히 유용합니다. 왜냐하면이 매트릭스가 사람들에게 두통을 줄 때이기 때문입니다.

이게 도움이 되길 바란다!


즉, 캔버스를 만지지 않고 카메라를 90도 회전하거나 카메라를 정지하지 않고 캔버스를 -90도 회전하면 결과가 시각적으로 동일합니다.





translate