Graphics 对铯渲染帧应用仿射变换

Graphics 对铯渲染帧应用仿射变换,graphics,camera,registration,affinetransform,cesium,Graphics,Camera,Registration,Affinetransform,Cesium,我有一张从飞机上拍摄的照片。我知道拍摄照片时飞机的位置(横向高度、航向俯仰偏航和相机视场)。 假设我希望铯能像拍摄的图像一样显示地球。我可以这样做: 将铯容器div设置为与图像中的宽度/高度相同 将camera.frustum.fov设置为适当的值 将camera.setView与位置和角度一起使用 它的注册数据不准确,因此图像具有由准确注册器生成的附加数据(Edit3:注意,我没有询问此类注册器,我已经有了注册器输出)。数据是应用于图像的固定公式。公式表示为应应用于图像的仿射矩阵(2d,3x3

我有一张从飞机上拍摄的照片。我知道拍摄照片时飞机的位置(横向高度、航向俯仰偏航和相机视场)。 假设我希望铯能像拍摄的图像一样显示地球。我可以这样做:

  • 将铯容器div设置为与图像中的宽度/高度相同
  • 将camera.frustum.fov设置为适当的值
  • 将camera.setView与位置和角度一起使用
  • 它的注册数据不准确,因此图像具有由准确注册器生成的附加数据(Edit3:注意,我没有询问此类注册器,我已经有了注册器输出)。数据是应用于图像的固定公式。公式表示为应应用于图像的仿射矩阵(2d,3x3矩阵,其中最后一行为0 1)

    为了对铯进行修正,我应该在铯相机上应用类似于仿射变换的东西。最好的方法是什么

    Edit2:我下面建议的方法行不通。我需要找到一种方法,在任何世界到屏幕计算之后以及在任何屏幕到世界计算完成之前,应用仿射变换。这是铯原子核的纯技术问题。我该怎么做?恐怕代码中的许多地方都会执行这种转换

    [ 对于可能涉及到的人来说,有一些原因表明我下面的删除方式不起作用。以下是一些直观的解释,下面是一个数学解释:

  • 仿射变换转换没有可应用于相机的等效操作。通过moveLeft移动相机是不等效的,例如,如果我在扫描的左侧有一座山,当我向右移动相机时,它将隐藏更大的区域,而这在应用于渲染的仿射变换中不会发生使用rotateLeft也不是等效的——试着用相机的近平面和远平面在3D中绘制它,你们会很容易理解的
  • 该解决方案忽略了矩阵的剪切分量。剪切实际上可以像我所做的那样分解为旋转缩放旋转,但旋转后的缩放并不等同于在水平和垂直fov不相等的情况下仅更改fov,这正是执行剪切所需的
  • 更多的数学直觉是:应用在帧上的一般仿射2x2变换相当于(我认为)在相机的4x4矩阵变换上应用一些变换,但一般矩阵不能转换为相机参数。相机模型有8个自由度(3个位置坐标、3个euler角和1或2个fov,取决于是否存在纵横比自由度),但三维到二维透视变换有12个分量(11个自由度,因为w可以规格化)。 ]

    我想首先将矩阵分解成4个矩阵:平移、旋转、缩放和另一个旋转。假设我知道如何做,我应该在相机上应用这四个矩阵

    • 应用旋转变换很容易通过向左旋转完成
    • 应用转换更为复杂,我可以通过moveLeft和moveUp移动相机,但我不知道在给定的像素量内移动应该经过多少次?(矩阵是根据图像像素给出的,可以很容易地转换为屏幕像素)(编辑:我想我应该使用rotateUp和rotateLeft来获得仿射平移的效果,但我不确定它是否等同于删除建议中建议的平移。moveLeft和moveUp,因为摄影机的平移不等同于图像的平移。例如,如果我左侧有一座山当我向右移动相机时,扫描的一侧会隐藏较大的区域。此示例演示了为什么相机无法移动)
    • 我不确定如何应用比例变换。我考虑过向前移动相机或减小fov,但我不确定:a.它是否等同于图像上的线性比例?b.我应该移动多少或如何计算新的fov?(编辑:我应该减小视野。移动相机是错误的,正如前面关于平移的项目符号中所提到的)
    最后,如果我成功地完成了以上所有步骤,我想处理水平刻度和垂直刻度不相等的情况。铯中可能吗


    P.>老实说,我更希望把仿射变换与内部摄像机矩阵相乘,但在API中找不到这样的功能。无论如何,我也考虑改变铯源代码,但这是目前最不优选的选项。

    看来,你要问的是正射纠正,所以在CESIIU中是不容易做到的。m、 这是一项复杂的任务,这里是姐妹网站上的讨论,你可以从中了解更多。也可以试着在那里问这个问题


    看来您要问的是正射矫正,所以在铯中不容易做到。这是一项复杂的任务,下面是姐妹网站上的讨论,您可以从中了解更多。也可以尝试在那里问这个问题


    谢谢你的回答。可能问题有误导性-正射校正已经完成,我在这个过程中生成了仿射矩阵。我只需要在铯中正确查看它。谢谢你的回答。可能问题有误导性-正射校正已经完成,我在那个过程中生成了仿射矩阵。我只需要在铯中正确地观察它。