查看: 3476|回复: 13

osgParticle 与Spark::Particle的冲突问题

[复制链接]

该用户从未签到

发表于 2013-9-24 17:46:07 | 显示全部楼层 |阅读模式
学习Array的osgRecipse中osgSpark例子,想优化下项目的粒子系统。已经顺利在osg的example中添加新工程并利用spark1.5.5的sdk和Array的样例程序实现粒子效果。

但遇到了比较奇怪的问题:

项目本身有前辈写好的基于osg自带的particle的插件,我的任务当然就是把前面实现的样例程序移植到该插件里面,但是是主要我添加#include "SparkDrawable.h"(Array写的osg与spark结合的绘制类),就会出现下面的错误:

QQ截图20130924173837.gif

分析了错误,主要是找不到Spark库的Particle类,可是F12确定定位到Spark定义的Particle类。
分析原因:
1.如果定义冲突,应该提示重复定义,但是没有出现,或者加上命名空间可以解决,但也不行
2.难道是lib文件错误,论坛中有前辈提过该错误,我也利用静态lib解决了错误
3.亦或是include路径错误,我删除include后,竟然还有上面的错误

这个问题,折腾了两天了,望高手能提供下解决思路……

该用户从未签到

 楼主| 发表于 2013-9-24 17:46:39 | 显示全部楼层
等高手回复

该用户从未签到

发表于 2013-9-25 14:17:14 | 显示全部楼层
我无法猜测什么

该用户从未签到

 楼主| 发表于 2013-9-25 17:04:07 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2013-12-11 11:24:33 | 显示全部楼层
更换头文件顺序解决了问题……

该用户从未签到

发表于 2013-12-12 15:38:07 | 显示全部楼层
Model(int enableFlag = FLAG_RED | FLAG_GREEN | FLAG_BLUE,int mutableFlag = FLAG_NONE,int randomFlag = FLAG_NONE,int interpolatedFlag = FLAG_NONE);
用spark做粒子,在对粒子进行控制的时候卡壳了,关键就是没能明白上面这句话里四个参数的作用和意义,有大神帮忙解答下么?

该用户从未签到

 楼主| 发表于 2013-12-13 10:27:22 | 显示全部楼层
  1. //下面是cpp的源码,解释下四个参数的意思               
  2. enableFlag |= FLAG_RED | FLAG_GREEN | FLAG_BLUE; // Adds the color parameters to the enable flag
  3.                 this->enableFlag = enableFlag & ((1 << (NB_PARAMS + 1)) - 1); // masks the enable flag with the existing parameters
  4.                 this->interpolatedFlag = interpolatedFlag & this->enableFlag; // masks the interpolated flag with the enable flag
  5.                 this->mutableFlag = mutableFlag & this->enableFlag; // masks the mutable flag with the enable flag
  6.                 this->mutableFlag &= ~this->interpolatedFlag; // a param cannot be both interpolated and mutable
  7.                 this->randomFlag = randomFlag & this->enableFlag; // masks the random flag with the enable flag
  8.                 this->randomFlag &= ~this->interpolatedFlag; // a param cannot be both interpolated and random
复制代码


我也是大致看了array的粒子,然后移植了下……我的理解这几个参数主要是发射器控制发射粒子的颜色、透明底、大小的,第一个先给出可以控制改变的参数,第二个是说参数可变,第三个随机控制粒子参数属性,第四个应该是使用内插来控制(可以看烟雾效果的颜色内插,代表浓度)

我也刚学,认识的只能到这里了,如果有研究的更深希望可以一起交流

该用户从未签到

发表于 2013-12-16 11:22:39 | 显示全部楼层
亦舒雪 发表于 2013-12-13 10:27
我也是大致看了array的粒子,然后移植了下……我的理解这几个参数主要是发射器控制发射粒子的颜色、透 ...

谢谢,周五的时候研究了下,基本上知道该怎么用了。现在有个新问题就是在osg里面用spark做的粒子效果,不过貌似没办法用writeNodeFile的方法输出成osg类型的文件,请问下是什么原因,用什么办法能解决?

该用户从未签到

 楼主| 发表于 2013-12-17 17:27:38 | 显示全部楼层
我也不清楚,只能分析下原因:
参考下sg自带的data数据中的fountain.osgt……在文件最后貌似添加了osgParticle的相关内容,可以任务osgreadnode函数可以解析osgParticle(osg自带的粒子系统),那么对应的写入node函数肯定也支持osgParticle。所以可以看下源码能否添加spark的写入函数……

该用户从未签到

发表于 2013-12-25 09:59:25 | 显示全部楼层
spark的粒子显然不可能输出osg格式,因为根本就没有写相关的读写插件

该用户从未签到

发表于 2014-1-9 18:18:17 | 显示全部楼层
亦舒雪 发表于 2013-12-11 11:24
更换头文件顺序解决了问题……

能说具体一点吗?我也遇到同样的问题了,拜托了!

该用户从未签到

 楼主| 发表于 2014-3-13 15:35:58 | 显示全部楼层
兔兔满满 发表于 2014-1-9 18:18
能说具体一点吗?我也遇到同样的问题了,拜托了!

你调整下drawable中spark的头文件

该用户从未签到

发表于 2019-2-19 15:54:24 | 显示全部楼层
亦舒雪 发表于 2013-12-11 11:24
更换头文件顺序解决了问题……

你好,请问是更换什么头文件的顺序,因为我也遇到这个问题

该用户从未签到

发表于 2019-3-11 16:31:30 | 显示全部楼层
亦舒雪 发表于 2014-3-13 15:35
你调整下drawable中spark的头文件

请问是调整哪个,我调整了还是不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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