Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 转换后如何计算屏幕坐标?_Matrix_Graphics_3d_Webgl_Transformation - Fatal编程技术网

Matrix 转换后如何计算屏幕坐标?

Matrix 转换后如何计算屏幕坐标?,matrix,graphics,3d,webgl,transformation,Matrix,Graphics,3d,Webgl,Transformation,我试图解决一个与三维空间中坐标变换有关的问题,但不确定如何解决 允许使用4x4变换矩阵在原点绘制名为p的顶点。然后,它通过一个模型视图矩阵定位的摄影机进行查看,然后通过一个简单的投影变换矩阵进行查看 如何计算p'(x,y,z)的新屏幕坐标?在解释管道之前,您需要知道管道是如何在屏幕上绘制的。 过程之间的一切都是矩阵与向量的乘法 模型-世界-相机-投影(或标准化坐标)-屏幕 第一步,我们称之为“模型空间”,因为(0,0,0)基于模型 我们需要把模型空间移到世界空间,因为我们要把模型移到世界空间 我

我试图解决一个与三维空间中坐标变换有关的问题,但不确定如何解决

允许使用4x4变换矩阵在原点绘制名为p的顶点。然后,它通过一个模型视图矩阵定位的摄影机进行查看,然后通过一个简单的投影变换矩阵进行查看


如何计算p'(x,y,z)的新屏幕坐标?

在解释管道之前,您需要知道管道是如何在屏幕上绘制的。 过程之间的一切都是矩阵与向量的乘法

模型-世界-相机-投影(或标准化坐标)-屏幕
  • 第一步,我们称之为“模型空间”,因为(0,0,0)基于模型
  • 我们需要把模型空间移到世界空间,因为我们要把模型移到世界空间 我们需要做的变换将是(平移、旋转、缩放)TRS*模型(矢量4),因为世界变换的定义将不同 做了这件事之后,模特儿在世界上占有一席之地
  • 第三,需要在camrea空间上进行渲染,因为我们看到的是通过摄影机。在世界中,摄影机还具有位置、视口大小和 轮换。。它需要从摄像机上投射出来。看

    完成此项工作后,您将获得规范化坐标,即技术上的0-1坐标

  • 最后,屏幕空间。假设我们要为手机制作视频游戏。手机屏幕分辨率很高。那么如何完成呢? 简单、缩放和平移以获得屏幕空间坐标的结果。因为原点和屏幕大小不同

    所以你要做的是“第四步”

  • 如果您想从world获取屏幕位置P1,公式将是“屏幕矩阵*投影矩阵*相机矩阵*P1”
  • 如果你想从相机空间得到位置,它将是“屏幕矩阵*投影矩阵*P1”
  • 有一些有用的链接可以理解矩阵和计算,请参见上面的链接

    • :
    参见