我要发帖 回复

新手上路

6

主题

2

积分

0

专家分

:

私信
发表时间 : 2011-9-6 22:45:21 | 浏览 : 1881    评论 : 16
想要做成的效果就是,在vpmarine_simple这个例子里,有几个不同的视角的切换,想要在每个视角里都能通过按键进行相应的放大或者缩小,以便于更好的观察物体,应该怎么实现呢。。。我想的是改变观察者的位置就可以吧,但是不会写代码,请教大家呀呵呵!!!

最近VR访客

kapole 评论于2011-9-6 23:56:13
改变observer的offset坐标,还有一个Look at target和Look from target的对象,键盘响应改变参数和对象就可以了
qingyuximo 评论于2011-9-7 08:16:41
kapole 发表于 2011-9-6 11:56 PM
改变observer的offset坐标,还有一个Look at target和Look from target的对象,键盘响应改变参数和对象就可 ...

能具体点,给个代码例子吗,呵呵!
obuil 评论于2011-9-7 10:19:31
设置observer的 Look at 属性为 观察物体
然后拉近 observer距离物体的距离  使用setPosition()函数

这是一种实现方法
UE4   |   虚幻引擎   |   Unity VR    |    Hololens
qingyuximo 评论于2011-9-7 23:01:17
obuil 发表于 2011-9-7 10:19 AM
设置observer的 Look at 属性为 观察物体
然后拉近 observer距离物体的距离  使用setPosition()函数

可以用setTanslate()吗?这个是不是设置偏移量,而setPosition()是设置绝对位置捏?
obuil 评论于2011-9-8 08:46:27
qingyuximo 发表于 2011-9-7 11:01 PM
可以用setTanslate()吗?这个是不是设置偏移量,而setPosition()是设置绝对位置捏? ...

你试试
UE4   |   虚幻引擎   |   Unity VR    |    Hololens
qingyuximo 评论于2011-9-8 09:39:04
obuil 发表于 2011-9-8 08:46 AM
你试试

试了下,不好使诶,observer->setTranslate(10.0,10.0,0.0,true),我是这样写的,不知道对不,我是设置一个按键来驱动的,那个例子有设置好几个不同的观察角度,我希望在每一个角度都能应用这个按键来改变大小,呵呵!!
qingyuximo 评论于2011-9-15 22:20:39
obuil 发表于 2011-9-8 08:46 AM
你试试

大侠再给偶指点下呗呵呵,我就是在vpmarine_simple这个例子里直接加的按键响应,但是怎么都不好使呃,多谢多谢呀呵呵!!!
yixiaowusheng 评论于2011-10-29 20:44:28
本帖最后由 yixiaowusheng 于 2011-10-29 09:06 PM 编辑

设置observer的 Look at 属性为 观察物体  然后用setTranslate()函数设置观测者距离目标的偏移量 具体思路如下:

在键盘按键响应函数OnKeyInput()里,依次设定按‘+’键时,观测者的偏移量(x,y,z)分别增加,按‘-’键时观测者的偏移量(x,y,z)分别减小;
按‘0’键时,恢复偏移量初始值;
按‘Tab’键时,切换视角  通过observer->setTranslate()来设置不同的x,y,z坐标,即可设置远、近、高、低、前、后、左、右等不同视角;


OnKeyInput( vrWindow::Key key,int nMod )
{
    static ifloat fx=0, fy=0, fz=0;
   switch( key )
   {
   case vrWindow::KEY_PLUS_SIGN:        //按下'+'键
        fx += 1.0f;
        fy += 1.0f;
        fz += 1.0f;
        observer->setTranslate( fx, fy, fz,true);

   case vrWindow::KEY_MINUS_SIGN:    //按下'-'键
        fx -= 1.0f;
        fy -= 1.0f;
        fz -= 1.0f;
        observer->setTranslate( fx, fy, fz,true);
    ...
    }
}
qingyuximo 评论于2011-10-30 00:55:24 来自手机
yixiaowusheng 发表于 2011-10-29 08:44 PM  设置observer的 Look at 属性为 观察物体 然后用setTranslate()函数设置观测者距离目标的偏移量 具体思 ...

超级感谢如此具体的回答哈,我试下嘿嘿……
cneter 评论于2011-10-30 13:09:17
放大缩小直接改变当前视角通道的夹角就可以了,如setFOVAsymmetric函数
qingyuximo 评论于2011-10-30 14:02:14 来自手机
cneter 发表于 2011-10-30 01:09 PM  放大缩小直接改变当前视角通道的夹角就可以了,如setFOVAsymmetric函数

嗯?方法很特别呀,一直以为应该改变observer的位置的,但不好使,通道的夹角指的是?
qingyuximo 评论于2011-10-30 19:36:52 来自手机
yixiaowusheng 发表于 2011-10-29 08:44 PM  设置observer的 Look at 属性为 观察物体 然后用setTranslate()函数设置观测者距离目标的偏移量 具体思 ...

嗯……按你的方法,为什么我只能放大一次,而且不能够缩小,按缩小键也是放大,求解嗯……
yixiaowusheng 评论于2011-11-1 01:03:51
case vrWindow::KEY_PLUS_SIGN:        //按下'+'键
        fx += 1.0f;
        fy += 1.0f;
        fz += 1.0f;
        observer->setTranslate( fx, fy, fz,true);

应该是按‘+’键时观测者距离目标变远-->目标变小                     按‘-’时目标变大
我写的很简单 放大缩小都是线性的  
你可以根据需要给每个分量(x,y,z)增加/减小不同的值,还可以加入角度、速度因子等

如果还不行 你可以试下 cneter 说的setFOVAsymmetric函数
chanjoy1988 评论于2011-12-10 10:36:03
收藏了,多谢!
冰中火 评论于2012-3-22 14:02:59
收到启发
famcy 评论于2012-5-13 09:08:07
haohaohaohaohaohaohaohao

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

GMT+8, 2022-8-13 02:20 PM

返回顶部