컴퓨터 그래픽에 동종 좌표가 사용되는 이유는 무엇입니까?
동질 좌표가 행렬 변환에 사용되지 않으면 어떤 문제가 발생합니까?
컴퓨터 그래픽에 동종 좌표가 사용되는 이유는 무엇입니까?
동질 좌표가 행렬 변환에 사용되지 않으면 어떤 문제가 발생합니까?
답변:
그래픽에 사용되는 수학을 단순화하고 통합합니다.
그들은 당신이 행렬로 번역을 표현할 수 있습니다.
원근 투영에서 깊이로 나눗셈을 나타낼 수 있습니다.
첫 번째는 아핀 지오메트리와 관련이 있습니다. 두 번째는 투영 형상과 관련이 있습니다.
이름이 있습니다 : 동종 좌표는 잘 ... 동종입니다. 균질하다는 것은 회전, 변환, 스케일링 및 기타 변형을 균일하게 표현하는 것을 의미합니다.
균일 한 표현으로 최적화가 가능합니다. 3D 그래픽 하드웨어는 4x4 매트릭스에서 매트릭스 곱셈을 수행하도록 특화 될 수 있습니다. 곱셈은 종종 사용되기 때문에 0 또는 1로 곱셈을 인식하고 저장하는 것도 전문화 될 수 있습니다.
동종 좌표를 사용하지 않으면 강력하게 최적화 된 하드웨어를 최대한 활용하기 어려울 수 있습니다. 프로그램이 인식하는 것은 동종 좌표에 대해 하드웨어의 최적화 된 명령을 사용할 수 있다는 것 (일반적으로 컴파일러이지만 상황이 더 복잡 할 수 있음)은 다른 표현을 최적화하는 데 어려움을 겪을 것입니다. 덜 최적화 된 명령어를 선택하므로 하드웨어의 잠재력을 사용하지 않습니다.
소니 PS4는 대규모 매트릭스 곱셈을 수행 할 수 있습니다. 그것은 너무 비싸서 한동안 팔려 나갔습니다. 왜냐하면 더 비싼 슈퍼 컴퓨터 대신 클러스터가 사용 되었기 때문입니다. 그 후 소니는 하드웨어를 군사용으로 사용할 수 없도록 요구했습니다. 그렇습니다. 슈퍼 컴퓨터는 군사 장비입니다.
연구자들은 그래픽이 포함되어 있지 않더라도 그래픽 카드를 사용하여 행렬 곱셈을 계산하는 것이 일반적이되었습니다. 범용 CPU보다 크기가 더 우수하기 때문입니다. 비교를 위해 현대의 멀티 코어 CPU는 16 개 파이프 라인 (x0.5 또는 x2는 그다지 중요하지 않음)이고 GPU는 1024 개 파이프 라인입니다.
실제 병렬 처리를 허용하는 것은 파이프 라인보다 핵심이 아닙니다. 코어는 스레드에서 작동합니다. 스레드는 명시 적으로 프로그래밍해야합니다. 파이프 라인은 명령 수준에서 작동합니다. 칩은 자체적으로 명령을 병렬화 할 수 있습니다.
개인적 취향으로서 나는 항상 가능한 동질적인 좌표를 사용하지 않고 평범한 직교 공식을 선호했다.
주된 이유는 동종 좌표가 쓸모없는 저장 및 계산을 포함하는 변환 행렬 (0, 0, 0, 1)에서 4 개의 사소한 항목을 사용하기 때문입니다 (또한 "기본적으로"기본적으로 사용되는 범용 매트릭스 계산 루틴의 오버 헤드 이 경우).
단점은 방정식을 쓸 때 더 많은주의가 필요하고 행렬 이론의 지원을 잃지 만 지금까지는 살아 남았습니다.
plain Cartesian formulation
3D 그래픽에서의 사용을 설명하는 리소스 의 예 또는 링크를 제공 할 수 있습니까?
w
합니까?
행렬을 사용하여 변환을 표현한다고 가정합니다. 포인트는 저장 될 수있다 당신은 회전 나타낼 수있다 [ U는 V ] = [ C O S ( θ ) - s의 I N ( θ ) s의 I N ( θ ) C O S ( θ를 ) ] [ X를 y ] 및 [ u v ] = [ k 1 로 스케일링
R과 S를 회전 및 스케일링 행렬로하고 T를 변환 벡터로합니다. 컴퓨터 그래픽에서 한 지점으로 일련의 변환을 수행해야 할 수도 있습니다. 이것이 얼마나 까다로운 지 상상할 수 있습니다.
아핀 좌표의 계산에는 종종 더하기 또는 곱하기에 비해 값이 많은 나눗셈이 필요합니다. 투영 좌표를 사용할 때 일반적으로 분할 할 필요가 없습니다.
프로젝션 좌표 (보다 일반적으로 프로젝션 지오메트리)를 사용하면 특수한 경우도 제거되어 모든 것이 더 단순하고 균일 해집니다.