Skyline二次开发:粒子效果的制作

skyline响应号召,也在地图里加入了粒子效果,api中也加入了CreateEffect的方法,此方法的关键参数中,粒子的效果通过设置xml进行生成,具体的xml配置,api文档提示去看te的使用手册,不过参数都比较专业,鉴于此,可以先用TE手动创建一个粒子效果对象,再用代码去找到这个对象,获取对象中的xml文件信息。

具体的代码实现如下(C#):

//查找对象
         string _itemid = _sgworld.ProjectTree.FindItem(@"粒子效果\效果");
            if (!string.IsNullOrEmpty(_itemid))
            {
            //找到转换对象
                var _teObj = _sgworld.ProjectTree.GetObject(_itemid);
                ITerrainEffect70 _teffect = _teObj as ITerrainEffect70;
                 //获取对象中的xml信息
                ITerrainLabel70 _label = _teObj as ITerrainLabel70;
                 string _effectXml = _teffect.EffectXML;
                //根据文本信息,设置xml中的属性
                 string _effnew = "$$PARTICLE$$UserDefine: <?xml version='1.0' encoding='UTF-8'?><Particle ID='Custom'><ParticleEmitter ID='ring' NumParticles='355' Texture='smoke.png'><Emitter Rate='157' Shape='One' SpeedShape='One' Scale='0,0,0' Speed='0.04,-0.01,-0.04' /><Cycle Value='1' /><Sort Value='1' /><Render Value='Horizontal' /><Gravity Value='2, 0, 0' /><Force Value='0' OverrideRotation='0' /><Position Value='0, 0, 0' /><Life Value='3.75' /><Speed Value='0.31' /><Color Value='20,255,255,255' /><Size Value='1.2,1.2' /><Drag Value='0' /><Blend Type='' /><Fade FadeIn='0.69' FadeOut='0.78' MaxFade='0.2' /></ParticleEmitter></Particle>";
                //创建动态效果
                 var _pos = _sgworld.Window.CenterPixelToWorld(WorldPointType.WPT_TERRAIN).Position;
                 var _teff1 = _sgworld.Creator.CreateEffect(_sgworld.Creator.CreatePosition(_pos.X, _pos.Y, 100, AltitudeTypeCode.ATC_TERRAIN_RELATIVE), _effnew);
            }

以上的效果,适用于只有一个点位置的例子效果,对于 水体(water)的效果,te之前是在polygon的贴图处,添加 $$WATER$$ 进行效果的实现,在te中画一个水体的效果,最后获得的对象也是个polygon。

因此,水体的对象,我们需要获取水体的图贴属性(Texture),根据此属性中的文本,在地图上新建一个polygon对象,在对象中,把贴图的属性设置成获取的文本,之后同样可以达到水体的效果。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值