游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5742|回复: 11

透视投影方式下,关于用鼠标拖动物体的问题

[复制链接]

13

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
发表于 2005-6-16 17:21:00 | 显示全部楼层 |阅读模式
在透视投影方式下,鼠标和物体移动不同步,物体比鼠标移动的快,有没有办法修正使鼠标和物体同步,如果有,该怎么修正,谢谢

4

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2005-6-16 17:41:00 | 显示全部楼层

Re: 透视投影方式下,关于用鼠标拖动物体的问题

可能视你视窗的问题,你的viewpoint中的w/h比值和透视投影下的aspect不相等造成的。 我想请教你一个问题,我也是刚学opengl不久,鼠标定位的返回值是屏幕坐标,这个屏幕坐标怎么才能在一般的试图体下用啊?
比如我用一个平行投影的视图体,glortho2D(0,2,0,2),我想在这个视图体下用鼠标画矩形,我鼠标原始位置是A(x0,y0),移动后的坐标是B(x,y),我想画从A到B的矩形,可是好像在当前的视图体下没得画。因为鼠标的返回值是屏幕坐标 太大了远远超过视图体的范围。请教了。

190

主题

1801

帖子

2096

积分

金牌会员

Rank: 6Rank: 6

积分
2096
QQ
发表于 2005-6-16 18:02:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

鼠标点出去是一条射线,在这个射线上画这个物体,就同步了吧

13

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
 楼主| 发表于 2005-6-21 09:02:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

你已经定义了一个视图空间了,只要把屏幕坐标转换成视见空间里的坐标就行了

13

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
 楼主| 发表于 2005-6-21 09:05:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

viewpoint中的w/h比值和透视投影下的aspect已经向等了,也不是同步了
你已经定义了一个视图空间了,只要把屏幕坐标转换成视见空间里的坐标就行了

3

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2005-6-22 12:54:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

这是坐标转换的问题,可以用int gluUnProject()将屏幕坐标转换成对象坐标

13

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
 楼主| 发表于 2005-6-23 10:11:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

鼠标点击只能得到x,y的坐标
请问楼上的这个函数int gluUnProject()怎么用呢?

4

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2005-6-23 11:50:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

gluUnProject会把你的屏幕坐标还原为最初的3维坐标(世界坐标系中的),不过你要以    GLdouble winx,
  GLdouble winy,
  GLdouble winz,
//你要参与转换的屏幕坐标
  const GLdouble modelMatrix[16],
//你的模型视图矩阵,按行序吧
  const GLdouble projMatrix[16],
//你的投影矩阵(平行或者透视)
  const GLint viewport[4],
//你的视区
  GLdouble *objx,
  GLdouble *objy,
  GLdouble *objz
//最后计算出来的真实坐标将会存在objx,objy,objz中

13

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
 楼主| 发表于 2005-6-23 11:54:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

winx坐标可以得到, winy坐标也可以得到,但是 winx的值是多少呢?

4

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2005-6-23 13:04:00 | 显示全部楼层

Re:透视投影方式下,关于用鼠标拖动物体的问题

这个好像要读深度缓存吧,具体的我没有试过,那样应该可以得到z值。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 06:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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