我要发帖 回复

管理员

735

主题

2万

积分

30

专家分

忠于职守杰出贡献鼓励

兴趣点(最多三项):

建模技术

私信
发表时间 : 2006-9-10 20:54:36 | 浏览 : 8698    评论 : 42
在 你自己的view类中 继承 zsVegaView类,


假设你的工程名称为TB,view类为TBview


此例假设你picker返回一个object对象,
使用以下这个结构的好处是,不容易pick几次就死掉,而且完全是按照类继承的关系写的

则view.h文件内容:
class CTBView : public zsVegaView
{          

public:

        vgPicker    *picker;
public:

       
                void        dopick();
                void           createPicker();       

protected:
// Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CTBView)
        public:
        virtual void        postInit( void );
        virtual void        postConfig( void );
        virtual void        postFrame( void );
       

        //}}AFX_VIRTUAL


protected:
        //{{AFX_MSG(CTBView)
       
        afx_msg void OnLButtonDown(UINT nFlags, CPoint point);        //}}AFX_MSG
                DECLARE_MESSAGE_MAP()
};

最近VR访客

obuil 评论于2006-9-10 21:00:37
TBview。cpp文件:

BEGIN_MESSAGE_MAP(CTBView, zsVegaView)
        //{{AFX_MSG_MAP(CTBView)

        ON_WM_LBUTTONDOWN()
        //}}AFX_MSG_MAP
       
        // Standard printing commands

END_MESSAGE_MAP()


void   CTBView::postConfig( void )
{
       createPicker();
       
}

void        CTBView::postFrame( void )
{
        if(bPicker)
         doPick();

}


void CTBView::createPicker()
{
    picker = vgNewPicker();
    assert( picker );
    vgName( picker, "jzx_picker" );
    vgPickerScene(   picker,  mainScene );
    vgPickerChannel( picker,  mainChan  );
    vgPickerHighLightColor( picker, 1.0f, 1.0f, 0.0f );
    vgProp( picker, VGPICK_TRANSFORM,      VGPICK_TRANSLATE   );
    vgProp( picker, VGPICK_TRANSCOORDS,    VGPICK_OBJECT_AXES );
    vgProp( picker, VGPICK_HL_LEVEL,       VGPICK_OBJECT      );
    vgProp( picker, VGPICK_HL_STYLE,       VGPICK_HL_BBOX_LINES    );
        vgProp( picker, VGPICK_HL_LINEWIDTH,    2.0f              );
    vgProp( picker, VGPICK_CLAMP,          VGPICK_CLAMP_Z     );
    vgProp( picker, VGPICK_TERRAIN_CLAMP,  VG_OFF             );
    vgProp( picker, VGPICK_TRANSOVERRIDE,  VG_ON             );
    vgProp( picker, VGPICK_DISPLAY_STDOUT, VG_OFF             );
    vgProp( picker, VGPICK_MULTIPLE_PICKS, VG_ON             );
    vgProp( picker, VGPICK_AUTOTRANSFORM,  VG_OFF             );
    vgProp( picker, VGPICK_TRACKPLANE,     VGPICK_TRACK_XY    );
    vgProp( picker, VGPICK_AUTOTRACKPLANE, VG_OFF             );
    vgProp( picker, VGPICK_DRAG_FACTOR,    0.0f               );
    vgProp( picker, VGPICK_RENDER_ISECT,   VG_OFF          );
    vgPickerClampIsector( picker, 0xffffffff );
    vgPickerIsector(      picker, 0xffffffff );
    vgProp( picker, VGCOMMON_ENABLED,  VG_ON );


}

vgObject*  CTBView::doPick()
{
        vgObject   *obj=NULL;
    vgPosition *pos = NULL;
        pos = vgNewPos();

    if( pos != NULL )
        {
   
                vgGetPos( mainObs, pos );
                if( vgPerformPickProcessing( picker, pos) )
                {
                        obj=(vgObject*) vgGetPickerPickedObject( picker );
                               vgDelete(pos);
                       
                         return obj;
                }
        }
     return NULL;
   

} // doPick()

void CTBView::OnLButtonDown(UINT nFlags, CPoint point)
{
       
        bPicker=TRUE;
        zsVegaView::OnLButtonDown(nFlags, point);
}
superdemo 评论于2006-9-10 23:56:16
顶一下!
是不是缺少swithPick()
万里波波 评论于2006-9-11 08:58:25
先收藏了!!!!!!!!!!!!!
Patrick 评论于2006-9-11 16:36:38
为什么只能响应LButtonDown
不能响应LButtonDoubleClick消息
:Q
obuil 评论于2006-9-11 19:21:12
谁说不可以呢?
Patrick 评论于2006-9-12 16:31:50
我试的就不行
在walk模式下,当前视能相应鼠标单击,右击,
就是不能响应双击,
我现在还是用Ctrl+lclick代替
99daodan 评论于2006-11-6 16:19:29
接着顶!
yhsui 评论于2006-12-15 21:25:29
收下!
baixiaoming 评论于2006-12-16 14:08:04
好东西,收下了
wahaha_2000 评论于2006-12-19 17:58:09
先收下再看
joylife 评论于2007-7-9 11:00:14

是不能相应双击

是不能相应双击
obuil 评论于2007-7-9 11:03:27
vega的双击确实不能用
joylife 评论于2007-7-12 10:20:00

谁有解决双击的方法吗

谁有解决双击的方法吗
obuil 评论于2007-7-13 16:09:50
自己判断 单击时间间隔
joylife 评论于2007-7-16 10:46:56

vega 不能响应OnLButtonDblClk的话 判断单击间隔用来做什么

请版主明示啊
eggbert 评论于2007-8-4 13:36:53

vega的双击确实不能用

vega的双击确实不能用
zhangpuzhao 评论于2007-9-17 15:01:30
收下了
jingziw 评论于2007-10-18 11:10:47
我在基类中直接添加的函数,感觉在继承类中添加比较麻烦
这样原理应该都是一样的,可是还会出现只能删除一个物体,第二次删除删除就会异常,想不通
zhanghuiyuan21 评论于2007-10-18 12:55:57
顶一下

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

GMT+8, 2021-2-28 10:55 PM

返回顶部