我要发帖 回复

管理员

735

主题

2万

积分

30

专家分

忠于职守杰出贡献鼓励

兴趣点(最多三项):

建模技术

私信
发表时间 : 2008-6-5 17:49:49 | 浏览 : 1261    评论 : 2
在其他板块中有:

虚拟实境硬件“Flock of Birds”简介与装配方法



使用vpInputComposite
//定义一个键盘和鼠标混合的输入设备
vpInputComposite *composite = new vpInputComposite();
//键盘方向键右键
composite->push_back_source_boolean(
m_keyboard->getSourceBoolean(
vpInputKeyboard::SOURCE_BOOLEAN_KEY_RIGHT));
//键盘方向键左键
composite->push_back_source_boolean(m_keyboard->getSourceBoolean(
vpInputKeyboard::SOURCE_BOOLEAN_KEY_LEFT));
//鼠标左键
composite->push_back_source_boolean(m_mouse->getSourceBoolean(vpInputMouse::SOURCE_BOOLEAN_BUTTON_LEFT));



vpInputComposite * m_Emulation = new vpInputComposite();
assert(m_Emulation);
//定义一个float输入源
FloatFInputSource = new vpInputSourceFloat();//输入源类型
FloatFInputSource >setValue (0.0);    //输入源都有一个值
FloatFInputSource >setId(1);    //每个输入源都有一个辨识标示
m_Emulation->addSourceFloat(FloatFInputSource);
m_Emulation->addSourceBoolean (BoolFInputSource);



Vega Prime中,键盘和鼠标输入设备是作为一种默认的输入设备进行支持的,其他输入设备是通过vpinput_trackd模块进行支持的,
Trackd程序频繁在一个共享区域中进行数据的读写,vp通过TrackdAPI进入共享内存区域,vpInputTracker类定义了一个接口以便vp程序能够进入支持的tracker设备。
Vp为了避免记录各种各样的输入设备细节,每个tracker设备被当作若干vpInputSourceMatrix实例的集合。
Tracker设备作为一个输入源由一个开始于0的标示进行辨认,例如,一个tracker系统有两tracker传感器,因此vpInputTracker实例就有两个matrix input sources(ID分别为0和1)
Trackd程序包包含两个主要程序:Trackd Server 和 Trackd Daemon,
在单机程序中,我们只需要运行Trackd Daemon程序即可
在client-server环境设置中,Trackd Server需要运行在远端的机器上,Trackd Daemon运行在有vp应用程序运行的机器上,
单机运行trackd for Vega Prime程序需要以下步骤:
创建一个trackd 配置文件(默认名:trackd.conf)。
在安装目录运行runTrackd.bat
Vp应用程序通过vpInputTracker.h 和vpInputController.h 使用默认共享内存key,开发者也可以在配置文件中自定义共享内存keys。
运行vp应用程序,确保vpInput_trackd 模块被初始化。
vpInputTracker使用
vpModule::initializeModule("vpInput_trackd");
vpInputTracker*    m_pTracker;
m_pTracker = new vpInputTracker();
assert(m_pTracker);
vpInputTracker::const_iterator_source_matrix mit;
        for (mit = m_pTracker >begin_source_matrix();
             mit != m_pTracker >end_source_matrix(); ++mit)
   {
            (*mit)->addSubscriber(  
     vpInputSourceMatrix::EVENT_VALUE_CHANGED, this);
         }
m_pTracker->connectToTrackd();

void notify(vpInputSourceMatrix::Event, vpInputSourceMatrix *source)
{
        assert(source);
        int id = source->getId();
        if (!sensorChanged[id]) {
            printf("Sensor[%d]: %f\n", source->getId(), source->getValue() );
            const vuMatrix<float> matrix = source->getValue();
            
            float x, y, z;
            matrix.getTranslate(&x, &y, &z);
            printf("\t(x, y, z) = (%f, %f, %f)\n", x, y, z);
            float h, p, r;
            matrix.getRotate(&h, &p, &r);
            printf("\t(h, p, r) = (%f, %f, %f)\n", h, p, r);
            sensorChanged[id] = true;
        }
    }

[ 本帖最后由 obuil 于 2008-6-5 05:56 PM 编辑 ]

最近VR访客

tan_dunming 评论于2008-6-5 18:40:43
Flock  of Bird提供了Bird API编程接口 非常好用,可以直接用
追求卓越
plazhaowei 评论于2008-6-5 19:11:03
郁闷呀。当初我为了读FOB数据,学COM编程,搞了好几天才搞好,早点有这个贴子多好呀。不知这样得到的数据怎么样。

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

GMT+8, 2021-6-19 05:27 PM

返回顶部