查看: 1989|回复: 7

能否求出节点的姿态信息?

[复制链接]

该用户从未签到

发表于 2009-4-12 12:08:22 | 显示全部楼层 |阅读模式
使用osgDB读取了一个3DMAX导出的3ds文件,
里面有物体若干个,各物体节点的朝向和姿态信息都不相同。
有没有办法求出其中各个节点的Attitude数据?
或者有没有其他什么变通的思路可以求出该数据?

该用户从未签到

发表于 2009-4-12 12:48:49 | 显示全部楼层

如果模型不多可以分别导入

如果模型不多可以分别导入

该用户从未签到

发表于 2009-4-12 19:29:43 | 显示全部楼层
作为一个osg:ositionAttitudeTransform节点,,就能求出相应的姿态~····

该用户从未签到

 楼主| 发表于 2009-4-13 08:56:17 | 显示全部楼层
回复 maizi0918:
现在的问题是模型比较多,且场景不固定...

借问 FlySky:
如何“作为一个osgositionAttitudeTransform节点”?
我用NodeVisitor来遍历各节点,以获取它们的姿态数据。
尝试了如下两种方式,好像都不行
  1. //方法一
  2.   node = osgDB::readNodeFile("A.3DS");
  3.   nodePAT->addChild(node.get());
  4.   root->addChild(nodePAT.get());

  5.   CTraverseScene ts;
  6.   nodePAT->accept(ts);
复制代码
  1. //方法二
  2.   nodePAT = dynamic_cast<osg::PositionAttitudeTransform *>(osgDB::readNodeFile("A.3DS"));
  3.   root->addChild(nodePAT.get());

  4.   CTraverseScene ts;
  5.   nodePAT->accept(ts);
复制代码

该用户从未签到

发表于 2009-4-13 12:22:05 | 显示全部楼层
那样估计是不行的,,至少节点本身得包含姿态信息,,,

void  setAttitude (const Quat &quat)
const Quat &  getAttitude () const

该用户从未签到

 楼主| 发表于 2009-4-13 22:44:36 | 显示全部楼层
例如文件中场景如下图所示

如果要想得到其中各物体的姿态信息,应该怎么做呢?
用了一下osgDirector,发现它对节点数据的读取很全面...

该用户从未签到

发表于 2009-4-14 00:46:19 | 显示全部楼层
这个你导出来的它本身就包含姿态信息了,,它是由六个变换节点组织而成的场景~~~~~~~~~

该用户从未签到

 楼主| 发表于 2009-4-14 12:00:59 | 显示全部楼层
搞定了,呵呵
谢谢FlySKy和2楼兄弟的不懈指导

ps:论坛验证的注册码老是看不清楚,输错了好几次...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表