设为首页收藏本站

红警DIY论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4351|回复: 2

【代码篇】一些粒子效果代码解析

[复制链接]
发表于 2010-12-29 12:59:23 | 显示全部楼层 |阅读模式
本帖最后由 牧星 于 2012-6-29 03:18 编辑

在开始说之前先唠叨点别的,效果的实现有几种形式,最常见的是粒子效果,骨骼闪烁效果,贴图效果     

粒子效果的实例:天启坦克开火时枪口的火花,真空內爆弹升空时屁股的火花和烟雾.......这样子的例子很多

骨骼闪烁效果:这种效果一般有2个用途
        1.某个东西静止不动时身上没有什么效果,运动时某个部位出现效果,这种效果有时候是骨骼,绑定在了模型上,实例有日本超级要塞飞行时的喷气效果;
        2.运行较快的东西在发射武器的时候炮口的效果,比如炮艇机,如果它的炮口效果采用类似天启的粒子效果形式,那么在空中拖影严重感觉非常假,故这种方式也是绑定在模型上与模型一起运动

贴图效果:这种效果一般有2种体现
        1.机关枪效果,比如苏联征召兵,苏联镰刀机器人,它们的代码里普遍有这么一段<TracerModelDraw>,实际的表现和天启开炮差不多,但是原理不同
        2.激光效果,比如波能坦克,波能塔,这些是调用贴图进行渲染,可以加载多段代码进行混合搞出新的激光效果,这些物体代码里一般有这么个段落<LaserDraw>

我主要说说粒子效果粒子效果代码文件在RA3 MOD SDK\SageXml\FXParticleSystems目录下,有很多
-------------------------------------------------------------------------------------------------------------------------
      粒子效果的存在时间:同志们可以看到,天启的炮管开炮效果在开完炮后就不见了,这样子的效果是短暂的;但是像将军刽子手眼睛上那个光,是存在于刽子手眼睛上的,只要它还活着光就存在,这样子的效果是长久的。观察后发现刽子手的眼睛的光的代码Japan_SPC_Mecha_LEye_Elec.xml里少了一句SystemLifetime的约束,那么这个代码应该就是这2类代码的最显著的区别的。
     但是那些短暂的粒子效果有很多个,时间持续也不同,经过测试后发现SystemLifetime的值在原先的基础上减小了,那么效果就跟着减小,同时在短暂类型的粒子效果代码里约束它们时间的还有一个参数<Lifetime High="25" Low="10"/> 这参数能够更显著地限定效果的存活时间。
--------------------------------------------------------------------------------------------------------------------------
     粒子产生的数量:由这句话决定<BurstCount High="10" Low="10"/>,举个例子,比如苏联火箭车导弹的蘑菇云,这里的值设置的越大火越浓密
---------------------------------------------------------------------------------------------------------------------------
     粒子效果的延迟出现: <InitialDelay High="20" Low="20"/>  修改这个数值可以推迟效果的出现时间
---------------------------------------------------------------------------------------------------------------------------
     粒子效果的大小:<Size High="6" Low="6"/> 这个代码对一些效果有效,举个例子比如导弹尾焰,修改尾焰代码中的这个值可以看到尾焰的大小发生变化
---------------------------------------------------------------------------------------------------------------------------
     粒子效果位置的偏移:比如刽子手眼睛的光Japan_SPC_Mecha_LEye_Elec.xml里面有一句
  1.                 <Volume>
  2.                                  <Cylinder IsHollow="true">
  3.                                             <Offset x="9" y="7" z="-1"/>
  4.                                  </Cylinder>
  5.                          </Volume>
复制代码

        这句话使得本来出现在头中间的效果偏移到了眼睛的位置上,可以仿制上面的代码,对一些效果有用
---------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面说一些具体的效果,可以依此类推
---------------------------------------------------------------------------------------------------------------------------
     1.蘑菇云的效果,它出现在很多地方,比如天天启精英状态下的火炮,无畏级战舰的火箭弹爆炸效果,V4火箭车的导弹爆炸效果,就以V4火箭的爆炸蘑菇云来说,文件名为SovietV4RocketExplosionFireMushroom.xml,控制蘑菇云的蘑菇的浓密的代码为<Cylinder IsHollow="true" Radius="10" RadiusRate="1"> 其中Radius控制蘑菇的大小,RadiusRate控制蘑菇的层数,修改RadiusRate能很明显看到蘑菇的粒子数量的变化;<Offset x="0" y="0" z="45"/>这个代码控制蘑菇的高度。
--------------------------------------------------------------------------------------------------------------------------
     2.Shockwave效果,这个效果也是很常见的,它就是导弹和炸弹爆炸时第一出现的在地面(海面)的那个冲击波,以V4导弹的为例,名字为SovietV4RocketExplosionShockwave.xml,里面有一句<SizeRate High="15" Low="15"/> 这句话可以控制冲击波的最大范围
-------------------------------------------------------------------------------------------------------------------------
    3.火柱的效果,这个效果是炸弹和导弹爆炸效果的重要组成部分,单独的效果显示为从地上冒出个火柱,它的例子为V4火箭SovietV4RocketExplosionFire.xml,其中这个代码<Cylinder Length="5" Radius="3">表示火柱的直径,
  1.             <Position>                                                                    <x High="0" Low="0"/>                                                                                                           <y High="0" Low="0"/>                                                                   <z High="5" Low="1"/>                                                                          </Position>
复制代码

中的
<z High="5" Low="1"/> 表示火柱出现的最低位置和最高位置
------------------------------------------------------------------------------------------------------------------------  
4.一些由小变大的圆球效果,比如炮艇机火炮中的透明扭曲效果就是个球形,代码为FXAlliedGunshipProtonDist.xml,里面的一句<SizeRate High="3" Low="3"/>决定了这个球到底多大
------------------------------------------------------------------------------------------------------------------------
5.一些球形效果,比如质子撞击炮那个黄色的球形效果,代码为FXAlliedProtonColliderHitCore.xml,里面的这段话

  1.       <SizeRate>                                                                <x High="0.3" Low="0.3"/>                                                                <y High="0.3" Low="0.3"/>                                                                <z High="0.3" Low="0.3"/>                                               </SizeRate>
复制代码
决定了球最终能变多大
------------------------------------------------------------------------------------------------------------------------                  6.地上烧焦的效果,例子为V4火箭弹的爆炸效果组合,名字为FX_SOV_V4Explosion,在SageXml\GlobalData目录里打开FXListSoviet.xml并找到它,里面有一行为<TerrainScorch Type= "TERRAIN_MAPPED" Radius= "25" />,里面的Radius就是烧焦的范围,不要改的太大,会不真实
------------------------------------------------------------------------------------------------------------------------
7.微型地震效果,随便在FXListSoviet.xml 搜一句ViewShake,可以搜到很多,举一个例子比如<ViewShake  Type = "SUBTLE" />,里面的SUBTLE就是地震的效果的强烈程度,有好几种,不过都不强烈
--------------------------------------------------------------------------------------------------------------------------                               8.火焰的颜色:比如没有星之前是浅黄色的,升到星级了就变桔黄色的,以蘑菇云精英效果SovietV4RocketExplosionFireMushroom_Vet.xml为例,里面有一段话
  1.                    <Colors>                        <Color Frame="1" RelativeAge="0">                                <Color b="0.556863" g="0.54902" r="1"/>                        </Color>                        <Color Frame="2" RelativeAge="100">                                <Color b="0" g="0" r="0"/>                        </Color>                        <Color Frame="4" RelativeAge="0">                                <Color b="0.058824" g="0.058824" r="0.058824"/>                        </Color>                        <ColorScale High="2.5" Low="1"/>                </Colors>
复制代码

   可以看到colors里有3层RGB色调,实际效果表现为蘑菇云精英效果有的地方色比较浅有的地方色比较深,一般分层越多表现的色彩越丰富,但是这个配色似乎不是修改RGB的数值就能得到想要的颜色,它的颜色变化有一个范围;部分粒子效果可以修改这里的代码来达到变色的目的,但是有一些改了没有用比如刽子手走路时脚下裂缝的效果。 ColorScale是色彩的强度。
---------------------------------------------------------------------------------------------------------------
未完待续
发表于 2011-1-1 09:00:20 | 显示全部楼层
楼主的上课时间好长呀,上了好几天了
 楼主| 发表于 2011-1-1 10:38:07 | 显示全部楼层
本帖最后由 6522748 于 2011-1-1 10:50 编辑

老大 元旦放假了 元旦快乐啊。效果代码感觉比较乱,没有多大的规律
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|手机版|管理员邮箱|红警DIY官方论坛    

GMT+8, 2017-8-19 09:52 , Processed in 0.058612 second(s), 19 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表