osg添加骨骼模型
来源:互联网 发布:知乎提问怎么删除 编辑:程序博客网 时间:2024/04/30 05:13
1.首先是环境,这个不是本文的重点,前提是你环境已经配置好
2.在cmake生成的工程中,有一个FBX的插件,编译此插件会得到一 个DLL(osgdb_fbxd.dll)
3.将上面编译的DLL放置在当前工程的输出路径下就可以了
接下来是使用FBX加载模型,也可以参考OSG工程中的例子(osganimationviewer),不过例子中写的不是很明了,是win32工程,而且需要在工程中设置argv参数,传入fbx模型
我的环境是Qt中嵌入osg,加载FBX模型代码如下:
// 此模型有四套动作,分别是:(Boxing_Attack_02、Boxing_Attack_03 、Boxing_Defense_01、Boxing_Defense_02) osg::Group* node1 = dynamic_cast<osg::Group*>(osgDB::readNodeFile("D:/OSG/osg_FBX/Sasuke.fbx")); if(!node1) { return ; } AnimationManagerFinder finder; node1->accept(finder); if (finder._am.valid()) { node1->setUpdateCallback(finder._am.get()); m_SkeletonControl1 = new AnimtkViewerModelController(finder._am.get()); } else { osg::notify(osg::WARN) << "no osgAnimation::AnimationManagerBase found in the subgraph, no animations available" << std::endl; } //矩阵调整位置 osg::ref_ptr<osg::MatrixTransform> nodeMatrix1 = new osg::MatrixTransform; nodeMatrix1->addChild(node1); //nodeMatrix1->addChild(node2); nodeMatrix1->setMatrix( osg::Matrix::scale(0.5, 0.5, 0.5) * osg::Matrixd::rotate(osg::DegreesToRadians(90.0f), 1, 0, 0) * osg::Matrixd::translate(0, 0, -300)); //播放动画 m_SkeletonControl1->play();//默认播放第一个动作 //m_SkeletonControl1->playByName("Boxing_Defense_02");//选择某一个动作播放 //设置是否可见(0不可见) nodeMatrix1->setNodeMask(0x0001); //关闭光照 nodeMatrix1->getOrCreateStateSet()->setMode( GL_LIGHTING, osg::StateAttribute::OFF); //添加数据到根节点 m_pRoot->addChild(nodeMatrix1.get());
AnimationManagerFinder 和AnimtkViewerModelController可以在例子osganimationviewer中找到,本人对AnimtkViewerModelController类稍做了修改
模型下载地址:http://download.csdn.net/detail/wuchalilun/9724456
环境配置下载地址:http://download.csdn.net/detail/wuchalilun/9682033
FBX插件DLL下载:http://download.csdn.net/detail/wuchalilun/9724470
0 0
- osg添加骨骼模型
- osg 骨骼绘制 注意事项
- osg demo5 添加多个模型
- OSG 模型添加(含自己画的模型,已有模型),对添加的模型做平移 缩放等。
- 模型中的骨骼动画
- 骨骼模型实现
- 模型面,骨骼数量
- OSG模型简单控制
- osg模型重写
- osg模型透明代码
- OSG模型控制
- osg模型发黑
- OSG-简单模型控制
- osg 添加多光源
- osg 1 添加纹理
- osg添加字体
- osg 添加纹理
- osg中添加到球面上的模型实现沿地形拖拽功能
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包,swift 3.0
- TensorFlow 分布式 managed_session 和 prepare_or_wait_for_session
- spring-boot集成ActiveMQ
- Maven搭建SpringMVC+Mybatis项目详解
- generator 、一个无限迭代器
- osg添加骨骼模型
- DateTime.Now.ToString ("yyyy:MM:dd,hh:mm:ss") 12小时制转成24小时制
- 数据结构课程设计—通讯录管理系统
- AMD芯片的电脑用虚拟机装MACos总失败,求大神指点啊
- css解决ios端按钮和输入框自带圆角的问题
- iOS 开发 设置网络请求允许使用http
- 802.1X协议--交换机知识
- 不用先上传图片在回显,直接回显图片方法
- JS(五)继承