游戏开发论坛

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

求助!!如何定位2d屏幕对应的3d坐标?

[复制链接]

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2005-4-11 11:56:00 | 显示全部楼层 |阅读模式
研究了pick的代码(鼠标图元拾取)后,从投影矩阵到视图矩阵的转换一直搞不懂(如下):
        v.x =  ( ( ( 2.0f * ptCursor.x ) / m_d3dsdBackBuffer.Width  ) - 1 ) / matProj._11;
        v.y = -( ( ( 2.0f * ptCursor.y ) / m_d3dsdBackBuffer.Height ) - 1 ) / matProj._22;
为什么是这样就可以由屏幕坐标转换到3d坐标。望大虾多指教,谢谢!

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2005-4-11 13:58:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

投影矩阵的逆矩阵就是 3d 空间的坐标,但是屏幕坐标是从 0~m_d3dsdBackBuffer.Width  、m_d3dsdBackBuffer.Height 之间,而投影矩阵的结果是 -1~1 之间,所以要做一下区间转换。

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-4-12 13:29:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

平截头体投影后形成的立方体与屏幕的对应关系是什么?是拉伸成屏幕的大小吗(如屏幕是1024×768,那么正方体就是拉伸或压扁成这么大输出是吗?)

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2005-4-15 00:32:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

只是一种线性对应关系,是规范的立方体,一般图形系统中都是 -1~1 之间,directx 中的 z 轴是 0~1。

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-4-16 08:33:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

如果3d原始的坐标值是(x,y,z),要得到最终显示在规范立方体的坐标,是不是用(x,y,z)去乘世界矩阵、再乘视矩阵、最后乘投影矩阵就可以得到?多谢指点! [em7]

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-4-16 11:18:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

可以用这个方法:Vector3.Project

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-4-16 14:49:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

什么意思?麻烦fujingqiue能否说得详细些(vertor3中没有project这个方法啊)?

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-4-16 15:13:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

我想在程序中给3d物体对应2d屏幕位置显示2d文字(如显示物体说明等,而且2d文字可能随着3d位置的变动而变动),不知如何下手,大家不知是否有什么建议?多谢指点!

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2005-4-16 23:50:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

8楼的问题可以使用布告版

而fujingqiue估计指的是c#里的东西。

得到3d顶点对应的屏幕投影有对应的函数,具体是什么呢——不记得了。

4

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2005-4-17 00:49:00 | 显示全部楼层

Re:求助!!如何定位2d屏幕对应的3d坐标?

c++下难道就没有办法了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 08:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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