游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2108|回复: 6

关于d3d的一些基本傻问题

[复制链接]

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-9-6 18:28:00 | 显示全部楼层 |阅读模式
首先一个傻问题:
我对d3d中显示3d的过程有个大致理解,不知对不对,还请各位看了指出来。

我的理解是:首先,我们定义一组顶点坐标,存于顶点缓冲。这些坐标被称为“本地坐标”;然后,我们定义“世界矩阵”;这个“世界矩阵”会将我们的“本地坐标”转化成”我所理解的3d物体实际在3d坐标系中的位置“(不过,”本地坐标“是不会被改变的);最后,我们还定义了”投影矩阵“,将3d坐标系投影到我们的显示屏上。

以上的理解不知对不对?

接下来,傻问题2:
我知道,”本地坐标“是不会改变的。那么,如果我想在程序中判断各顶点位置在实际3d坐标系中的变化,该怎么做了?


[em13] [em13] [em13] [em13] [em13] [em13] [em13] [em13]

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-9-6 19:03:00 | 显示全部楼层

Re:关于d3d的一些基本傻问题

坐标转换其实是一个矩阵(matrix)运算的过程,在游戏中,我们并不需要知道每个对象的顶点的世界坐标,比如一个角色,通常我们只需要知道脚底下的坐标就可以当作角色的位置就可以了,并不需要知道鼻子眼睛每个三角形顶点的实际坐标。

如果真需要知道某个顶点的实际坐标,可以先获取世界坐标转换矩阵(D3DXMatrixTranslation),然后使用D3DXMatrix-开头的函数进行矩阵运算,就可以知道某个顶点的实际位置了。

当然,你可以不用微软的转换矩阵,可以利用其他矩阵转换函数(比如OpenGL),你可以自己写一些矩阵转换函数(MSDN上还真有,有一次我无意中发现)。不过效率上可能大打折扣了。

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-9-6 19:07:00 | 显示全部楼层

Re: 关于d3d的一些基本傻问题

欢迎大家加入我的群3216066,上班时间在

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-9-6 19:12:00 | 显示全部楼层

Re:关于d3d的一些基本傻问题

你提的问题并不傻,这是理解3d开发最重要的部分,任何一本 3d 图形学教程都会很详细的讲你提的这个问题。
我简单说一下,对于第一个问题你理解的大体正确,不过还缺少几个步骤,在变换到 world 之后,还要进行取景变换,也就是常说的变换到照相机空间,再经过对景物裁减之后,才会进入到投影变换,最后还要进行投影之后的裁减。
第二个问题,你可以通过简单的 矢量和矩阵运算来求得某一次矩阵变换的顶点位置,这里可以通过 D3DX 数学函数来实现,也可以自己写这样的函数。

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-9-6 19:52:00 | 显示全部楼层

Re:关于d3d的一些基本傻问题

好,我加入,想你请教3D编程

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2004-9-6 22:32:00 | 显示全部楼层

Re:关于d3d的一些基本傻问题

谢谢各位。

突然又想到了一个问题,d3d里面的一个坐标单位的长度是多少?(比如我知道,2d里面,一个坐标单位的长度是两个象素之间距离)

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2004-9-7 13:53:00 | 显示全部楼层

Re:关于d3d的一些基本傻问题

想是多少就多少:)是个相对坐标,看你怎么设置投影和视锥了,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-18 01:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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