我要发帖 回复

正式会员

3

主题

48

积分

0

专家分

:

私信
发表时间 : 2008-9-13 09:48:56 | 浏览 : 1229    评论 : 9
我在程序中进行了自动漫游的调用,想在自动漫游结束后进行键盘控制进行手动漫游,不知道程序里面应该添加那些语句。请指教

最近VR访客

biaofeng1286 评论于2008-9-13 11:35:22
自动漫游我都设置好,在程序中可以实现,手动漫游的代码也写好了,就是不知道在自动和手动之间的转换,要加如什么代码(比如按p键,实现自动和手动的转换)。我直接采用观察者,没有加任何运动体。。。。。。
biaofeng1286 评论于2008-9-13 11:38:03
高手给指点一下啊!人呢?高手,高手!
海浪 评论于2008-9-13 17:29:09
我刚开始学,这个问题帮不了你
biaofeng1286 评论于2008-9-13 18:55:46
急切需要你们的帮助!
biaofeng1286 评论于2008-9-13 18:56:46
通过一些试验,现在可以实现了,但是频率老是在闪,而且偏白,原来的一些场景图片白的有点看不清楚!请求高手帮助!
biaofeng1286 评论于2008-9-14 10:44:04
功能可以实现,但是屏幕老是闪烁,而且离手动漫游初始位置越远,频率越快。。。。
david_m 评论于2008-9-15 21:12:03
直接设置motionModel为NULL,然后再自己写键盘控制函数:
如W,S,A,D各键如何响应,改变Observer的位置,HPR等;
1。首先取得OBS的HPR
2。根据步进值,计算OBS的位置移动量,如步进值为1米,则
dx= 1* sin(H),dy = 1* cos(H),dZ =1*sin(P)...
应该没问题。

评分

参与人数 1积分 +4 收起 理由
海浪 + 4

查看全部评分

david_m 评论于2008-9-20 19:25:31

回复 7楼 的帖子

1.在最前面加上:
const float piover180 = 0.01745329251994f;        //角度换算成弧度
2.然后在VIEW类中添加键盘响应函数,iStep是步进值
//temphpr.x 为HEADING,temphpr.y 为PITCH,角度表示,单位为度
x        = -iStep * sin(eyeHpr.x * piover180 );
y        =  iStep * cos(eyeHpr.x * piover180);
x0        = -iStep * sin(h * piover180 );
y0        =  iStep * cos(h * piover180);

switch(nChar)
{
        case VK_UP:
                {eyePos.y += y;        eyePos.x += x;}
                break;
        case VK_DOWN:
                {eyePos.y -= y;        eyePos.x -= x;}
                break;
        case VK_LEFT:
                { eyePos.y += y0;        eyePos.x += x0;}
                break;
        case VK_RIGHT:
                {eyePos.y -= y0; eyePos.x -= x0;}
                break;
}


//这里eyePos是一个三维结构,分别是x,y,h,直接改变视点位置全局变量的值就可以了。
当然这是一个比较省事的办法,应当还有其他好的办法来做。
ggw0122 评论于2011-4-10 19:43:58
谢谢分享

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-4-14 10:24 PM

返回顶部