游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: ♂樱♀

关于鼠标指针坐标到3D场景坐标的转换的讨论。

[复制链接]

30

主题

276

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2004-7-19 20:25:00 | 显示全部楼层

Re: Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

//
♂樱♀: Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

8楼的兄弟。如果是用“块”评接起来的地图你说的似乎可以使用。但是对于纯3D来说。。。。困难。
//


用的是VOXEL? 现在的3D大都是“块”评接起来的地图啊。
你用过3DMAX吧?鼠标到3D空间的转化只能是那样的。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
 楼主| 发表于 2004-7-24 10:54:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

啊。我是3DS MAX做好地图。然后用数学方法求鼠标到3D空间的转换。。

11

主题

145

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2004-7-24 11:46:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

这个问题很简单了。

用Opengl的话用:模型视图矩阵乘投影矩阵 产生一个临时矩阵,其逆矩阵 乘上当前2d坐标 即可得到3D场景中的坐标

30

主题

276

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2004-7-24 15:19:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

啊,半夜上网,看掉一个帖子哈,这个不错。
----------------------------------------
这个容易啊! 由3D建模坐标 ->3维变换->观察变换->投影变换->变换到windows坐标;

你把他用逆矩阵反回去就是了。

z 坐标在Z-缓冲里取。
------------------------------------------

这步应该只有 观察变换->投影变换 吧  ,加了 3维变换 的话就变到
物体自己的坐标系里了,要求的是到世界坐标的变幻。

:( 哎,又浅薄了,其实用这个方法来求交也很不错,在结构里判定
和一个物体相交点无论如何都比线快,只是这个方法会自动忽视透明的部位。

11

主题

145

帖子

150

积分

注册会员

Rank: 2

积分
150
发表于 2004-7-24 15:25:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

上面的方法和我说的差不多,不过他做多了一步,呵呵 [em5]

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
 楼主| 发表于 2004-7-24 21:13:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

数学数学我爱数学

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
 楼主| 发表于 2004-7-26 14:16:00 | 显示全部楼层

Re:关于鼠标指针坐标到3D场景坐标的转换的讨论。

我用居然无法读取MODEL MATRIX!
真是郁闷。
glPushMatrix();       
glLoadIdentity();
glGetIntegerv(GL_VIEWPORT,viewport);
winy=viewport[3]-winy;
glReadPixels((int)winx,(int)winy,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&winz);
glGetDoublev(GL_MODELVIEW_MATRIX,model);
glGetDoublev(GL_PROJECTION_MATRIX,pro);
gluUnProject(winx,winy,winz,model,pro,viewport,&ox,&oy,&oz));

这就访问违规了。因为MODEL是NULL。。。
谁能解决?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-4 10:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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