游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2383|回复: 8

[DirectX] 3D对象在屏幕中的定位???

[复制链接]

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2006-6-5 15:08:00 | 显示全部楼层 |阅读模式
2D的Sprite在屏幕中的定位是非常简单的只要给定(X,Y)就可以了

但是3D对象呢??

比如,我在写 D3D9 入门程序的时候,读入一个"tiger.x"模型进去,然后:

下面是伪代码:

SetView();

SetLight();

SetMetrix();

DrawMesh();

最后,我们就可以在屏幕中心看到一个"老虎"在那里转啊转的

上面的都有点废话~~~~~~~~~~~~~~~

现在的问题是,如何将3D坐标和屏幕位置对应起来,比如,我要将这个老虎的屏幕显示区域限制在长200像素的正方形中,并且让这个正方形的左上角的坐标是(100,200),假设我的屏幕是 800*600 的

如何利用"SetMetrix"将3D对象放到屏幕上指定的位置呢???

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2006-6-5 17:16:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

怎么没人知道吗??

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-6-5 19:04:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

你的代码好抽象啊!需要进行屏幕坐标到世界坐标的逆变换,计算出相应的世界坐标值。再设置相应的世界矩阵,注意投影变换矩阵和相机变换矩阵都不能改变。

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2006-6-6 07:32:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

多谢,我实际上想问的就是屏幕坐标到世界坐标的转换,也就是 2D坐标 到 3D坐标的转换~~~~

还有就是,如何得到一个3D对象,在屏幕坐标中的映射范围(也就是显示在屏幕中的矩形区域)??

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-6 12:50:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

先对模型求包围盒,然后对你自己定义的2D屏幕矩形坐标进行WORLD*VIEW*PROJECTION逆变换,这样就可以得到你的矩形在3D空间中的坐标,根据这个矩形对包围盒(模型)的长宽进行缩放、平移,使它们重合就可以了
不过这种方法看起来好诡异哦。。。还是建议你把模型渲染到一张纹理上,然后把这张纹理贴到Sprites上不就行了吗?

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2006-6-6 13:09:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

多谢 jk20012001 和 griffin2006 兄弟

刚从2D转到3D不久.
看来我还是要提高"提问题的水平",免得各位大虾浪费宝贵的时间,呵呵


把模型渲染到纹理上是怎么做的啊???

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-6-6 23:55:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

突然想起来,不用那么麻烦的,创建视口就行了。

如何将模型渲染到纹理上?关注中...

6

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
 楼主| 发表于 2006-6-7 07:21:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

谁能讲解一下,如何创建视口,以及如何将模型渲染到纹理上???

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2006-6-7 14:08:00 | 显示全部楼层

Re:[DirectX] 3D对象在屏幕中的定位???

视口只是一个D3DVIEWPORT的结构而已,Get/SetViewPort用于对它的获取/设置操作,至于渲染到纹理么。。。就是创建一个D3DUSAGE_RENDERTARGET的纹理,将它SetRenderTarget后所有的渲染操作就到了它上面,下来恢复原RenderTarget,就可以把这张新纹理贴到物体上了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 16:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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