泉demo阶段二

完成情况:

注:显示中文bug QString::fromLocal8Bit("显示")

1.单件模式数据管理,管理着场景中所有Ogre::SceneNode。包括添加,删除,显示隐藏等。为了不修改ogre源码,并且要在Ogre::SceneNode上面附加一些属性所以添加了属性类,数据管理器中放一map,将Ogre::SceneNode和其属性关联。

2.观察者模式。所有ui,模型列表,控制台,ogre渲染窗口都是数据的观察者。每一次数据变更,如添加节点,删除节点,选中节点,显示隐藏节点都会通知观察者。

3.QT模型列表的继承自QAbstractItemModel的model的数据节点是Ogre::SceneNode,这样每次操作ui都会直接得到Ogre::SceneNode,少一次转换。之前比如从窗口框选,先是通过ogre的一些得到一些moveobject列表,然后再从数据管理器其中进行双重遍历ManualObject相等的数据,然后再将这些数据的名字列表发送到ui再进行双重遍历,改变ui的选中状态。这样相当于程序中存着三份数据。而将模型列表的数据节点改为SceneNode以后,整个数据只有ogre的管理器中的数据。再那框选举例,得到moveobject列表,moveobject->getParentNode()得到Ogre::SceneNode列表,然后发送到ui,因为ui中model的节点是Ogre::SceneNode,所以直接设选中状态就可以,大大提高程序性能。

4.将mesh文件转为vtk中的数据,然后再将vtk中数据用ogre画出来,这次有所提高的是,可以将多个submesh画为一个模型,并且用vtk中代码保存材质,这个是参考了paraview,但是,怎么将这个数据作为操作入口参数,正在研究。可以看下面的图,ogrehead本来有几个submesh,但是我却成功的将其画成了一个模型。

未完成情况:

工具的输入参数列表还不知道用什么保存,属性的修改,及撤销。整体架构完以后就是挨个加vtk的各种算法进去,按照paraview走。以前觉得paraview没什么,自己动手做的时候却发现还是蛮强大的。对自己说加油。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值