POV-Ray : Newsgroups : povray.binaries.animations : Space Fight 4 (cool explosions) : Re: Space Fight 5 (camera follows ship) Server Time
19 Jul 2024 21:30:51 EDT (-0400)
  Re: Space Fight 5 (camera follows ship)  
From: Dennis Borree
Date: 30 Sep 2002 20:01:21
Message: <3d98e5d1$1@news.povray.org>
I tried your file but there are too many errors for me to fix. I am getting
lost. Can you upload a fixed version?

Dennis

"Slime" <slm### [at] slimelandcom> wrote in message
news:3d952c0c@news.povray.org...
> > Can I have an .inc file? ;)
>
> Sure, why not? =)
>
> Just use this code. Sorry if it wraps. Use it like
>
> createexplosion(explosionsize, explosionpos, explosionid)
>
> explosionpos is the place where the explosion is. explosionsize should be
a
> number from 0 to explosionlength which determines the amount of time that
> has passed. explosionid should be a number that stays constant for each
call
> of the function for the same explosion but is different for different
> explosions. (so that they look diffferent). it's really just a random seed
> that changes the orientation of the explosion.
>
> Also change numexplosionpartst (defined in the macro itself) to put more
> mini-spheres inside the explosion, and change the numbers after the
'scale'
> keyword to change the size (you should probably also change the fire and
> smoke colors when changing the size).
>
> there may be an error here or there. for instance, you'll have to define
> "shiprad" (ship radius) or change the light_source declaration at the end.
>
> And feel free to manipulate it or improve upon it, just give credit where
> due, ok? =)
>
> #declare explosionlength = 2;
> #declare firecolor = <1,.7,.3>*1.2;
> #declare smokecolor = 1.8;
> #macro createexplosion(explosionsize, explosionpos, explosionid)
>  #declare explosionrnd = seed(explosionid);
>  #if (explosionsize < explosionlength)
>   #declare overallintensity = 1-pow(explosionsize/explosionlength,7);
>   #declare overallsmokeamnt = pow(explosionsize/explosionlength,2);
>   #declare explosionsize =
pow(explosionsize/explosionlength,.3)*shiprad*6;
>   sphere {
>    0,1
>    pigment {rgbt 1}
>    interior {
>     #declare animbaseamnt = explosionsize*.1;
>     #declare thisanimbase = 0;
>     #declare numexplosionpartst = 5;
>     #declare explosionpartnumt = 0;
>     #while (explosionpartnumt < numexplosionpartst)
>      #declare theta = (explosionpartnumt/(numexplosionpartst-1))*pi-pi/2;
>      #declare explosionpartnumr = 0;
>      #while (explosionpartnumr <= numexplosionpartst*cos(theta))
>       #if (floor(numexplosionpartst*cos(theta)) > 0)
>        #declare phi =
explosionpartnumr/floor(numexplosionpartst*cos(theta))
> *2*pi + theta;
>       #else
>        #declare phi = theta;
>       #end
>       #declare thisanimbase = thisanimbase + pi/10; // pi is arbitrary
>       #declare thisanimbase = thisanimbase-floor(thisanimbase);
>       #declare animamnt = thisanimbase + animbaseamnt*3;
>       #declare animamnt = animamnt-floor(animamnt);
>
>       #declare smokeamnt = pow(animamnt,3);
>       #declare smokeamnt = smokeamnt + (1-smokeamnt)*overallsmokeamnt;
>       #declare thisintensity = overallintensity*(1-pow(animamnt,5));
>
>       media {
>        emission firecolor*(1-smokeamnt) *thisintensity
>        absorption smokecolor*(smokeamnt) *thisintensity
>
>        #declare translatedir =
> <cos(phi)*cos(theta),sin(theta),sin(phi)*cos(theta)>;
>        density {
>         spherical
>         color_map {
>          [0 rgb <1,0,0>*0]
>          [.1 rgb <1,.8,.8>*.3]
>          [.25 rgb .7]
>          [.5 rgb 1]
>         }
>         translate -translatedir*animamnt*2
>         warp {
>          turbulence .3
>          octaves 3
>          omega .8
>          lambda 5
>         }
>         translate translatedir*animamnt*2
>         scale .4 + .2*pow(animamnt,6)
>         translate translatedir*(1-pow(1-animamnt,3)) *.5 //
> (1-pow(1-animamnt,2))
>        }
>       }
>       #declare explosionpartnumr = explosionpartnumr + 1;
>      #end
>      #declare explosionpartnumt = explosionpartnumt + 1;
>     #end
>    }
>    hollow
>    rotate <rand(explosionrnd),rand(explosionrnd),rand(explosionrnd)>*360
//
> orient randomly
>    scale explosionsize
>    translate explosionpos
>    no_shadow
>   }
>   light_source {
>    explosionpos
>    rgb firecolor*overallintensity
>    fade_power 2
>    fade_distance shiprad*20
>   }
>  #end
> #end
>
>  - Slime
> [ http://www.slimeland.com/ ]
>
>


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.