对D3DXVec3Project 和D3DXVec3UnProject的认识

本文详细解析了3D物理坐标通过D3DXVec3Project变换到2D坐标的过程,并介绍了与之相反的变换过程D3DXVec3Unproject。文章探讨了3D坐标在DirectX环境下如何映射到屏幕坐标系,并解释了SURFACE概念及其在坐标变换中的作用。
摘要由CSDN通过智能技术生成
一下是我的学习笔记:

D3DXVec3project//将3D物理坐标点变到SURFACE的2D点
现在我来解释一下
1.3D物理坐标,看例子
声明 点 A( a,b,c);
DEVICE->SETTRANSFORM( WORLD,MATRIX)
DRAW (A)
此时A(a,b,c)为物理坐标
若MATRIX为单位矩阵那么A为世界坐标的点


什么叫SURFACE的2D点
是指每个程序中都有个MAIN SURFACE (DIRECTDRAW 里的主绘图页相似);
现在的SURFACE是指MAINSURFACE的总体或者小部分;

typedef struct D3DVIEWPORT9 {
DWORD X;
DWORD Y;
DWORD Width;
DWORD Height;
float MinZ;
float MaxZ;
}

结构体中指明了此目标SURFACE 是MAINSURFACE的哪一部分
一般情况是真个MAINSURFACE即目标SURFACE,这个结构体此时的设置为
{
0,
0,
MAINSURFACE.WIDTH,
MAINSURFACE.HEIGHT,
0.0,
1.0
}

此函数变换的3D坐标的Z值为0;


/与之相反(但是又不完全相反)的是
D3DXVec3Unproject

是将目标SURFACE变到3D物理坐标
但是此时的物理坐标并不是以前那个对应的3D屋里坐标了
而是——

视截体近面或者远体面中的3D坐标的物理坐标---这句话的理解是

:所求 3DPOS= (3D世界坐标点与EYE(摄影机的点都是世界坐标点不受SET WORLD 影响)的连线 )与近或远视
截面(当然是世界坐标)的焦点 ,再然后转换到物理坐标(即为结果)


CSDN上那个家伙估计是
先得到的2D坐标然后一转成里近的面里而其近面为0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值