`
hereson
  • 浏览: 1449848 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

对D3DXVec3Project 和D3DXVec3UnProject的认识

阅读更多
一下是我的学习笔记:

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;

分享到:
评论

相关推荐

    d3dxvec3.rar_d3d

    5. **D3DXVec3CatmullRom.exe**: Catmull-Rom插值是一种四次样条插值,它可以生成平滑的曲线,适合于动画路径的生成和纹理贴图的平滑过渡。 6. **D3DXVec3TransformCoord.exe**: 此函数用于将一个向量从一个坐标...

    DirectX9.0的常用向量函数

    本篇将详细介绍DirectX9.0中的几个常用向量函数:D3DXVec3Length、D3DXVec3Normalize和D3DXVec3Dot,以及D3DXVec3Cross,并提供相关的使用实例。 首先,我们来看D3DXVec3Length函数。这个函数用于计算3D向量的长度...

    vega prime example code 3

    `ID3DXMatrix`类可以用于创建和操作变换矩阵,`D3DXVec3Project`或`D3DXVec3Unproject`函数可用于坐标转换。 在VS2003 .NET环境下,开发人员可能还需要处理一些兼容性问题,因为较旧的版本可能不支持后来引入的C++...

    directx 3d 实例

    D3DXVec3Normalize(&vecLight, &vecLight); Light.Direction = vecLight; g_pD3DDevice->SetLight(0, &Light); g_pD3DDevice->LightEnable(0, TRUE); // Start playing a waterfall sound PlaySound("..\\...

    Ray and AABB Collision.rar

    `D3DXVECTOR3`类可以表示3D向量,`D3DXVec3Dot`函数用于向量点乘,`D3DXVec3Length`和`D3DXVec3Normalize`用于长度计算和归一化。同时,`D3DXPlaneFromPoints`等函数可以帮助处理边界面的检查。 ### 效率优化 为了...

    DIRECTX.9.0.3D游戏开发编程基础笔记-向量1

    D3DX库提供了`D3DXVec3Normalize()`函数,接收一个输入向量和一个输出向量的指针,返回规范化后的向量。规范化可以确保向量的方向不变,但长度变为1,这对光线追踪、碰撞检测等许多3D算法十分有用。 5. **向量的...

    向量长度计算(广东省科学技术职业学院3D教程)

    在DirectX 9中,向量长度的计算可以通过使用`D3DXVec3Length`函数来完成,该函数属于DirectX Math库。例如,假设我们有一个`D3DXVECTOR3`类型的向量`v`,我们可以这样获取其长度: ```cpp D3DXVECTOR3 v(1.0f, 2.0f...

    游戏开发][中文]Direct9[1].0c入门 游戏开发][中文]Direct9[1].0c入门 游戏开发][中文]Direct9[1].0c入门

    - 提供了一些静态成员函数,如`D3DXVec3Normalize`用于归一化向量,`D3DXVec3Cross`用于计算两个向量的叉积等。 #### 5. 三维空间中的向量与坐标变换 在三维空间中,向量和坐标系是进行各种几何变换的基础。例如...

    《 Introduction to 3D Game Programming with DirectX 9.0c: A Shader Approach》源码

    4. D3DXMATRIX、D3DXVec3:这些是DirectX Math库中的数据类型,分别代表4x4矩阵和三维向量。在3D图形编程中,矩阵用于表示变换(如旋转、平移和缩放),向量则用于表示方向和位置。D3DX库提供了许多数学函数,帮助...

    DirectX笔记.docx(自己的笔试)

    此外,`D3DXVec3Normalize` 函数用于将向量单位化,`SetTransform()` 用于设置变换矩阵,`SetViewport()` 设置视口信息。`D3DXMatrix*` 系列函数则用于创建和操作矩阵,例如旋转、平移、缩放、求逆、转置以及观察和...

    DirectX程序指南以及函数的调用

    单位向量是模为1的向量,可以通过归一化操作(如`D3DXVec3Normalize`)获得。点乘和叉乘是向量运算的两种形式,点乘返回两个向量夹角的余弦值,叉乘则生成一个新的向量。 矩阵(D3DXMATRIX)是处理几何变换的核心工具...

    MouseInput.rar_MOUSEINP

    这可以通过设置视口和投影矩阵,然后使用`D3DXVec3Unproject()`函数来完成。 4. **DirectInput库**:除了消息系统,还可以使用DirectInput库来获取更高级别的输入控制。DirectInput可以提供连续的鼠标位置更新,...

    3D游戏程序设计入门.pdf

    - **D3DXVec3TransformCoord**:用于执行向量变换。 - **D3DXMatrixRotationY**:用于创建绕Y轴旋转的变换矩阵。 - **D3DXPlaneDotCoord**:用于计算平面与点的关系。 #### 结论 通过对向量、矩阵、变换以及D3DX库...

    雨滴的实现

    当然,实际的代码实现会涉及到更具体的数学运算和DirectX3D API的调用,例如D3DXMatrixTransform()函数用于计算物体变换,D3DXVec3Normalize()用于处理向量的归一化,以及IDirect3DDevice9::SetVertexShader()和...

    Direct3D几何建模

    这可以通过`D3DXVec3Normalize`函数实现。 - **单位矢量**:长度为1的矢量称为单位矢量,对于计算来说更加方便。 #### 四、三角形与平面法线 - **三角形**:是Direct3D中最基本的几何元素,一个三角形由三个顶点...

Global site tag (gtag.js) - Google Analytics