D3D空间变换和矩阵作用

本文介绍了3D空间变换在渲染流水线中的应用,包括从局部坐标系到屏幕坐标的转换过程,涉及世界矩阵、观察矩阵、投影矩阵和屏幕矩阵的原理和作用。通过矩阵运算,详细阐述了平移、旋转和缩放的实现,以及摄像机视角模拟和透视投影的效果,为3D游戏图像处理提供了基础理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.空间变换流程

在渲染流水线中对物件进行空间变换,实现3D坐标转换到屏幕绘制空间的作用;

1 变换过程:局部坐标系→世界坐标系→观察坐标系→投影坐标系→屏幕坐标系

2 采用的变换矩阵:世界矩阵,观察矩阵,投影矩阵,屏幕矩阵


二.变换矩阵的原理和作用

1世界矩阵

    作用:平移,旋转,伸缩(实现不同3D物件位置,大小和方向的相对位置关系)

    a)平移矩阵:Mt=100Px010Py001Pz0001

       (x y z 1)*Mt = (x+Px,y+Py,z+Pz,1)

 

    b) 旋转矩阵Mr =10000CosθSinθ00SinθCosθ00001   为绕X轴旋转θ度

        此外,还有绕任意轴的旋转矩阵;


    c) 缩放矩阵Ms =Sx0000Sy0000Sz00001

         (x y z 1) * Ms = (x*Sx, y*Sy, z*Sz, 1)


     最终的世界矩阵:Mworld = Mt * Mr * Ms


2 观察矩阵

观察矩阵是模拟摄像机行为,以摄像机为坐标原点,摄像机的局部坐标轴与世界坐标轴对齐;

概况来说就是:世界坐标系中的物体在以摄像机为中心坐标系时如何进行描述

1)构建观察矩阵:

    a)使用D3DX的APT接口:D3DXMatrixLookAtLH()

    b)自构建一个Camer类----核心:摄像机位置,3个正交基向量;

2)观察矩阵作用:

    实现摄像机的平移和绕坐标轴的旋转:Pitch, Yaw, Row


3 投影矩阵

   投影矩阵的创建组成:视域体(FOV:filed of view) ---- 远/近裁剪面,投影平面,视域角.

   1)投影矩阵的作用

      a)实现近大远小的效果(利用透视投影)

      b)进行深度缓冲插值计算,实现物体的前后遮挡效果

   2)投影矩阵拆分

     a)透视投影降低维度,近大远小:

        Ma =1000010000100011

     b)视域角控制缩放

       横纵比R = Zoomy/Zoomx = WinWidth/WinHeight

       横纵比:可矫正"正方形"到"矩阵"映射引起的畸变

       Zoomy =Cos(fov/2)Sin(fov/2),    Zoomx =ZoomySin(fov/2)


       Mb =Zoomx0000Zoomy0000000000


    c)对Z值进行插值

       将Z值范围由[n, f], 映射到[0, 1],作为深度缓冲使用

       n:近裁剪面;  f:元裁剪面

       Mc =1000010000f/fnnf/nf0000


        最终投影矩阵:Mproj =Zoomx0000Zoomy0000f/fnnf/nf0010


4屏幕矩阵:视口变换

Mport =Width/200Windth/20Height/20Height/200100001   将坐标原点由投影正中心转换到屏幕左顶点

Sx0000Sy0000Sz00001









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值