- 积分
- 118
- 帖子
- 12
- 主题
- 3
- 精华
- 0
- 最后登录
- 2020-6-27
- 在线时间
- 70 小时
中级会员
兴趣点(最多三项):
Unity引擎
VegaPrime
Openscenegraph
- 私信
|
发表时间 : 2019-5-19 11:41:26
|
浏览 : 1879 评论 : 2
本帖最后由 Jasmin 于 2019-5-19 12:11 PM 编辑
http://www.52vr.com/thread-991-1-1.html
这里讲了如何获取dof节点在世界坐标系中的位置,但是关于如何设置没有后续的讨论了
http://www.52vr.com/thread-36682-1-1.html
这本书的随书代码里有在vp5中获取dof节点在世界坐标系中的位置的相关代码
- //获取dof节点在世界坐标系中的位置及姿态
- void CVP5SIMView::FindDofWCSPosRot(vsDOF* P_dof,double *dof_x,double *dof_y,double *dof_z,double *dof_h,double *dof_p,double *dof_r)
- {
- if (P_dof==NULL)
- {
- return;
- }
- vsTraversalLocate *travLocate=new vsTraversalLocate();
- travLocate->setMode(vsTraversalLocate::MODE_MATRIX_STACK|vsTraversalLocate::MODE_NODE_STACK);
- travLocate->visit(P_dof);
- vuMatrix<double>m=travLocate->getTopMatrixStack();
- m.getTranslate(dof_x,dof_y,dof_z);
- m.getRotate(dof_h,dof_p,dof_r);
- travLocate->unref();
- }
复制代码 然后仿照这个改写一下发现编译能通过,但是dof节点并没有运动。
下面是我的代码,请各位大大帮忙看看:
- void CVP5SIMView::SetDofWCSPosRot(vsDOF* P_dof,double dof_x,double dof_y,double dof_z,double dof_h,double dof_p,double dof_r)
- {
- if (P_dof==NULL)
- {return;}
- vsTraversalLocate *travLocate=new vsTraversalLocate();
- travLocate->setMode(vsTraversalLocate::MODE_MATRIX_STACK|vsTraversalLocate::MODE_NODE_STACK);
- travLocate->visit(P_dof);
- vuMatrix<double>m=travLocate->getTopMatrixStack();}
复制代码
|
|