游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5629|回复: 12

3D模型在屏幕上的定位???问了N多人,没有答案,苦啊~~

[复制链接]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2008-12-11 10:40:00 | 显示全部楼层 |阅读模式
我再发一张图吧:




当我们在D3D中绘制一个MESH模型时,要指定它的世界坐标:X,Y,Z 一个3D坐标,用来描述模型在3D世界中的位置。
现在,我要让这个模型,显示在我屏幕的某一块区域,而这个区域毫无疑问,是用2D坐标来描述的,就如同上面那个图的左上角的区域。
那么,问题来了,如何让这个模型显示在一个指定的2D区域中,并且大小合适呢???

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-12-11 16:39:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

好好学学线性代数吧,尤其是坐标系变换

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-12-11 23:45:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

没必要用额外的render target
修改一下viewport就可以

lz还是花点时间把基本变换弄清楚吧,这些都是很基础的东西

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2008-12-12 08:44:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

多谢大家,2D转3D的过程中,我的基础还太薄弱,现在就去找书看。。。。

“clayman”兄弟,确实有不少朋友告诉我,改变“视点”就可以了,如果屏幕上就只有一个区域有3D模型,改变“视点”肯定是最高效的方法,但,如果游戏界面比较复杂,有3-4个区域要显示3D模型,那要怎么做啊??
莫非:先根据屏幕坐标转换成3D坐标,然后把要显示的模型一个个“放到位置上”,最后调整“视点”??

“wjk98550328”兄弟,能不能把那个用TARGET实现的方法,用代码表示一下啊。。没有源代码的话,简易的伪代码也可以。。。

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2008-12-12 13:33:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

还是把3D渲染管道的整个过程好好学一年, 搞清楚再说吧, 心急吃不了热豆腐

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2008-12-14 19:49:00 | 显示全部楼层

Re: Re:3D模型在屏幕上的定位???问了N多人,没有答案,

莫非:先根据屏幕坐标转换成3D坐标,然后把要显示的模型一个个“放到位置上”,最后调整“视点”??

“wjk98550328”兄弟,能不能把那个用TARGET实现的方法,用代码表示一下啊。。没有源代码的话,简易的伪代码也可以。。。



看你的具体需求了,这3-4个区域,都是要显示一模一样的东西?

如果是类似编辑软件的多视图的话,用viewport直接绘制一次就可以了。
而RTT只是将内容绘制到纹理,意味着你可以保留当前绘制的结果,如果你的需求是想要做些后期处理的话,用RTT的方式就很高效。


“莫非:先根据屏幕坐标转换成3D坐标,然后把要显示的模型一个个“放到位置上”,最后调整“视点”??”

你理解反了,去看看viewport在渲染管线上的顺序就知道了。

11

主题

336

帖子

349

积分

中级会员

Rank: 3Rank: 3

积分
349
发表于 2008-12-16 13:40:00 | 显示全部楼层

Re: 3D模型在屏幕上的定位???问了N多人,没有答案,

好麻烦还是别做了

没什么意义。 [em22]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2008-12-18 22:31:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

各位兄弟,我回来了,D3D的渲染管线我看了

Enigmaya 兄弟啊,不是我理解反了,而是我要做的事情是这样的。。。。

我再说一下吧。。

1.给你一个空间坐标(X1,Y1,Z1),要你把一个3D模型,比如一个MESH画在那里,然后,模型投影到屏幕上,也就是说这个模型会显示在屏幕的某一个“矩形框”内。当然,可以根据投影公式算出这个“矩形框”的位置,甚至大小

2.好的,现在反过来实现,我先把这个“矩形框”告诉你,要求你把模型显示在里面,要怎么算出正确的空间坐标(X1,Y1,Z1),以至于能让我把模型放到那里呢???

最终要实现的就是:让3D模型投影到我指定的屏幕区域内。。。。

11

主题

336

帖子

349

积分

中级会员

Rank: 3Rank: 3

积分
349
发表于 2008-12-19 09:07:00 | 显示全部楼层

Re: 3D模型在屏幕上的定位???问了N多人,没有答案,

视口转屏幕  屏幕转世界   得到一个射线。

然后你要单独计算透视关系,你要显示多大(应该是测试出来),就是取得距离

之后计算从视点,沿射线方向上面取得的距离远处就是你物体的渲染点。

数学上是上面这样


实际实现还要考虑,要关闭深度检测最后绘制这个东西

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2008-12-19 21:36:00 | 显示全部楼层

Re:3D模型在屏幕上的定位???问了N多人,没有答案,苦

“辐射”兄弟:
我在微软的 DX SDK 中找到了 PICK 的例子,里面很清楚的给出了,根据屏幕上(X,Y),求得一条射线的代码,现在问题就是:如何在这条射线上取一个合适的点,把 MESH 放到那里去了。。正在思考中。。。

(题外:辐射3,我装了好久啦。。。出了101层来到地面就没玩了,在等汉化啊。。郁闷。。。)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 15:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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