【发布时间】:2023-03-11 22:49:01
【问题描述】:
关于 opengl 中的模型视图/投影矩阵,我遇到了一个棘手的问题。
说,我有一组 3D 点,以及它们对应的 2D 屏幕位置,是否可以求解将所有这些 3D 点转换为 2D 屏幕的最佳模型视图(或缩放/旋转/平移)矩阵当投影矩阵固定时,最小二乘意义上的位置?或者,当模型视图矩阵固定时,是否可以求解这样的投影矩阵?是否可以在gluperspective、gluLookAt等函数中获取参数设置?
【问题讨论】:
-
我猜你没有二维屏幕位置的深度值?
-
基本上,答案是“是”。但是,有些东西(如统一比例因子)不会影响图像,因此您无法从 2D 屏幕位置获取它们。
-
@NicoSchertler 是的,我只是假设 2D 屏幕点的深度值为 0。有了这样的 2D 屏幕点和它们对应的 3D 点的位置,是否有可能得到这样的模型视图矩阵?还是我应该计算投影矩阵?
-
@comingstorm 如果我修复比例因子会怎样? 3D点的位置及其对应的2D屏幕点(假设其深度值为0),是否有可能得到一个最优的变换矩阵?
-
是的,您需要修复无法派生的元素。基本上,您的最小二乘求解器无论如何都需要强制执行某些约束(例如,确保旋转矩阵是旋转矩阵)。您可以通过添加额外的约束来修复诸如比例因子之类的问题,以便得到明确定义的约束最小二乘问题。