基本3D变换之World Transform, View Transform and Projection Transform

作者:i_dovelemon

来源:CSDN

日期:2014 / 9 / 28

主题:World Transform, View Transform , Projection Transform




引言

             在3D图形学中,基本几何变换是一个非常重要的操作。可以说,整个3D图形能够有效的显示,就是由于几个非常重要的基础3D变换贡献的。在前面的文章中,向大家承诺了,要详细的讲解在3D图形学中的三个基本的坐标变换。今天,就来像大家讲述,DirectX是如何进行变换。



变换的目的

               在我们讲解具体的变换工作之前,我们需要知道,为什么需要进行变换?在3D图形学中,有很多不同的坐标系统。比如说,模型坐标系统,世界坐标系统,视空间坐标系统,裁剪空间坐标系统等等。为什么需要如此之多的坐标系统了?那是因为,不同的工作,在不同的坐标系统中进行,会给我们的工作带来很多方便。比如说,我们定义模型的时候,在模型的坐标空间中定义,而不是在世界空间坐标系里面定义。在模型坐标里面,我们可以只关心模型的基本构造,它的外形等,不需要考虑它将来会放在场景中的哪个地方,面朝的方向是哪里。这样做就能够大大的减少我们的工作。所以,一句话,进行坐标变换的目的就是为了简化工作,让我们的工作更加容易的完成而已(虽然初学来说,好像没有简化我们的工作???)。



如何变换

                在前面我写过一篇文章,3D图形变换。在这篇文章中,讲述了如何使用矩阵来进行同一个维度的坐标变换。不过,这里讲解的变换,只是对那些只需要进行平移,旋转的坐标系统来说的。对于要进行缩放的坐标变换,并不是使用这种方法。有时候,我们需要根据变换的各种条件,来推导出最终变换的矩阵。这种方法在那些变换后的矩阵很难用其他的坐标系统来描述它们的坐标基的时候使用。



DirectX变换流程

                   在DirectX中,有三种变换,是每一个3D应用程序,每一帧都会使用到的变换。它们分别是World Transform(世界坐标变换), View Transform(视空间坐标变换,又称相机坐标变换)和最麻烦的Perspective Projection Transform(透视投影变换,正交投影不是经常使用的变换,这里不介绍这种)。下面,我们来一一的介绍这些变换的作用,以及如何构建他们。



World Transform

                 世界坐标变换,顾名思义,是将模型坐标变换到世界空间中的变换。我们要知道,任何的变换都可以拆分称为平移,旋转,缩放,这三个大的变换方式。对于世界变换来说,我们完全可以按照3D图形变换中描述的那样来进行坐标的平移和旋转变换。如果需要将模型进行缩放的话,我们在构建一个缩放的矩阵(这个矩阵在任何3D书籍上都有介绍,这里不再赘述),然后把这个缩放矩阵,与前面的矩阵结合起来,就能够完成一个世界坐标变换的功能了。这是三个坐标变换里面最简单的变换。



View Transform

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Cartopy中,projectiontransform是两个不同的概念。projection用于定义地图的投影方式,而transform用于将数据从一种投影方式转换到另一种投影方式。 projection定义了地图的投影方式,例如平面投影、圆柱投影、锥形投影等。它决定了地图的形状和变形程度。在Cartopy中,可以使用不同的projection对象来定义不同的投影方式,如PlateCarree、Mercator、LambertConformal等。 transform用于将数据从一种投影方式转换到另一种投影方式。在绘制地图时,通常需要将数据从其原始投影方式转换为地图的投影方式。这样可以确保数据正确地显示在地图上。在Cartopy中,可以使用transform参数来指定数据的投影方式,例如PlateCarree()表示数据使用经纬度坐标系。 在引用\[2\]中的示例中,当省略transform参数时,数据将默认使用当前的投影方式进行绘制。这可能导致数据在地图上显示不正确。因此,在使用Cartopy绘制地图时,通常需要将数据转换为地图的投影方式,以确保正确的显示。 总结起来,projection用于定义地图的投影方式,transform用于将数据从一种投影方式转换为另一种投影方式。在使用Cartopy绘制地图时,需要同时考虑这两个概念,以确保数据正确地显示在地图上。 #### 引用[.reference_title] - *1* *2* [Cartopy理解变换和投影关键字](https://blog.csdn.net/weixin_50205885/article/details/120869055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python – 使用cartopy在其他项目中绘制投影数据](https://blog.csdn.net/weixin_39550258/article/details/111069679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值