游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6667|回复: 10

初次进入D3D,请教关于坐标系的问题

[复制链接]

4

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2004-4-7 08:56:00 | 显示全部楼层 |阅读模式
我刚开始学习D3D8的知识。现在对他的坐标系感到困惑,我想问的是,在D3D的坐标系中,0点不在屏幕的左上角吗?还有,坐标全都使用FLOAT的类型,那他的一个单位不是一个象素吗?我这么说是因为看到了一篇教程上面的坐标。

[img]mkMSITStore:E:\BookShell\GDMaterials\3Dcongtou.chm::/image006.jpg[/img]
窗口的大小是300*300。
他的顶点坐标CUSTOMVERTEX g_Vertices[] =
    {
        { -1.0f,-1.0f, 0.0f, 0xffff0000, },     // 红色
        {  1.0f,-1.0f, 0.0f, 0xff0000ff, },     // 兰色
        {  0.0f, 1.0f, 0.0f, 0xffffffff, },     // 白色
    };
我很奇怪在窗口顶上的那个顶点,他的坐标为什么是0.0f,1.0f,0.0f,我的意思是为什么值这么小。在2D中,要画三角形的话,难道这个坐标不是150。0吗?

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2004-4-7 09:51:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

    D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f );
    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );

也就是说他是在( 0.0f, 3.0f,-5.0f )向( 0.0f, 0.0f, 0.0f )看的,所以看上去就比较大了

影响最后在屏幕上显示的结果的不光有World矩阵,还有View和Projection矩阵

4

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-4-7 11:05:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

不过,我记得代码中还没设置VIEW MATRIX,难道是默认的?

4

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-4-7 13:04:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

这个我知道,可我看的是金点时空的3D从头编的第3章,讲如何绘制三角形,还没有讲MATRIX,源代码里也没有设定这些matrix。怎么会这样?

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2004-4-7 14:25:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

看SDK里面的
Tutorial 2: Rendering Vertices,直接用屏幕坐标
Tutorial 3: Using Matrices,使用矩阵操作

5

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2004-4-7 22:13:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

你说的那一章例程绘制的不是三维物体,而是一个平面的三角形。绘制平面不用View和Projection矩阵。把顶点缓冲区绑到设备数据流就可以啊。
View和Projection是在三维透视描绘时才用到的。

三维空间坐标和屏幕光栅坐标是不同的。三维空间坐标有x,y ,z 轴。最大值是1。最小值是0。因此0,0,0点是原点。原点有可能显示在屏幕的中间。也可以显示在屏幕的角上。这取决于你的View和Projection矩阵的设置。

4

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-4-8 08:29:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

原来是这样。就是说在三维空间坐标中的边界值是+-1是吗?物体在屏幕上的显示大小还取决于你设置的摄象机的参数,是这样的吗?

21

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2004-4-8 08:36:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

不是,建议找本图形学的书看看,

21

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2004-4-8 08:53:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

d3d中三维物体到屏幕的呈现,需要经历 (1)世界变换(从本地模型的坐标系下的坐标 转换成 世界坐标系下的坐标,包括平移,旋转,缩放变换,如果是以本地坐标为参考的话在d3d中是矩阵左乘,如果以世界坐标为参考的话是矩阵右乘,其中的矩阵就是具体的变换矩阵),(2)取景变换(也就是从世界坐标系的坐标到摄像机坐标系下坐标的变换,具体可以这样理解,把摄像机看作世界坐标下的一个空间点,求出从世界原点到该位置的世界变换可以很容易的求出,然后取其反,得出的就是从世界到摄像机坐标系的变换矩阵)(3)投影变换(这个动作将会决定场景中的哪些范围将被呈现到屏幕,我们一般讨论空间的形状类是把金字塔的上半截砍掉的形状)(4)在d3d中最后需要设定一下在显示器上的显示区域,这一步可以不管,默认是整个屏幕。其中的每一步,d3d都有相应的扩展函数的支持,具体编程的时候可以使用这些函数。但是原理你还是应该非常清楚才对。

3

主题

137

帖子

151

积分

注册会员

Rank: 2

积分
151
QQ
发表于 2008-2-27 21:49:00 | 显示全部楼层

Re:初次进入D3D,请教关于坐标系的问题

“绘制平面不用View和Projection矩阵。把顶点缓冲区绑到设备数据流就可以”

受教。谢谢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 06:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表