Animation

If you're having trouble using Context Free or don't understand the language, ask for help here.

Moderators: MtnViewJohn, chris, mtnviewmark

Post Reply
mycelium
Posts: 29
Joined: Tue Aug 28, 2007 4:21 am
Location: Italy
Contact:

Animation

Post by mycelium »

I am having fun animating the wire with frame() expression. but I had some problems:

- colors in .mov file look different, it seems like red and blu are inverted.
- I change the parameters to 20 seconds at 20 frames per sec, but the animation is still 150 frame long (15fps)

I am using windows vista 64bit.

anyway... thanks a lot to the developers, version 3 has a lot of new useful features and the last beta looks very stable.

Code: Select all


startshape inizia
CF::Impure=1 
CF::Size = [s 2.4]
CF::ColorDepth = 8

CF::Frame = 1

maxiter=frame()*15000

angolo=frame()*360 /2

//maxiter=1000


CF::Background = [b -.9 sat 1 h 0] 

shape ambientocclusion
{

		CIRCLE [s 2 b -1 sat 1  a -.925 z -.0031]
	//	CIRCLE [s 30 b .1 sat 1  a -.9975 z -1 ]

}


shape plot(number px, number py, number pz)
{

//ambientocclusion[s .02 x px y py z pz]
CIRCLE [s .02 x px y py z pz b (pz+1.2) sat ((-pz + .5) *1.5)]

}


shape surface(
number ax, number ay, number az,
number bx, number by, number bz,
number cx, number cy, number cz,
number iter, 
number ra, number rb, number rc
 )
rule .0131 {
surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, -ra, rb, rc)[]
}

rule
{

//ra=ra + 0.001

//rotation: modify here -------------------------------------------------------------------------------

/*
ra = 0
rb = .03
rc = .03
*/

//-------------------------------------------------------------------------------------------

// NOTHING INTERESTING BELOW

//-------------------------------------------------------------------------------------------

// Normalizing axixs to avoid error (a shape got too big)

va = sqrt(ax*ax + ay*ay + az*az)
ax = ax/va
ay = ay/va
az = az/va

vb = sqrt(bx*bx + by*by + bz*bz)
bx = bx/vb
by = by/vb
bz = bz/vb

vc = sqrt(cx*cx + cy*cy + cz*cz)
cx = cx/vc
cy = cy/vc
cz = cz/vc



// rotate against axis  "A" 

cos2=cos(ra/2)
sin2=sin(ra/2)

qw=cos2
qx=ax*sin2
qy=ay*sin2
qz=az*sin2


// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

ax=p2x
ay=p2y
az=p2z


// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

bx=p2x
by=p2y
bz=p2z


// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

cx=p2x
cy=p2y
cz=p2z

//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------
// rotate against axis  "B" 

cos2=cos(rb/2)
sin2=sin(rb/2)

qw=cos2
qx=bx*sin2
qy=by*sin2
qz=bz*sin2


// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

ax=p2x
ay=p2y
az=p2z


// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

bx=p2x
by=p2y
bz=p2z


// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

cx=p2x
cy=p2y
cz=p2z

//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------
// rotate against axis  "C" 

cos2=cos(rc/2)
sin2=sin(rc/2)

qw=cos2
qx=cx*sin2
qy=cy*sin2
qz=cz*sin2


// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

ax=p2x
ay=p2y
az=p2z


// rotate B axis --------------------------------------------------------------
p1x=bx
p1y=by
p1z=bz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

bx=p2x
by=p2y
bz=p2z


// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz

p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z

cx=p2x
cy=p2y
cz=p2z

//-------------------------------------------------------------------------------------------




plot (ax, ay, az)[]
//plot (bx, by, bz)[]
//plot (cx, cy, cz)[]


iter=iter+1

//if (iter <maxiter) surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, ra,rb,rc)[s .99995]
if (iter <maxiter) surface(ax,ay,az, bx,by,bz, cx,cy,cz, iter, ra,rb,rc)[s .99995]


}

shape sfera
{

CIRCLE[s 1.9 b .41 sat 1 a -.85]

}


shape inizia
{

//sfera()[]


ax=0
ay=1
az=0

bx=1
by=0
bz=0

cx=0
cy=0
cz=1




//-------------------------------------------------------------------
// ROTAZIONE INIZIALE

rb = angolo

//rb=0

cos2=cos(rb/2)
sin2=sin(rb/2)
qw=cos2
qx=bx*sin2
qy=by*sin2
qz=bz*sin2

// rotate A axis --------------------------------------------------------------
p1x=ax
p1y=ay
p1z=az
p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z
ax=p2x
ay=p2y
az=p2z

// rotate C axis --------------------------------------------------------------
p1x=cx
p1y=cy
p1z=cz
p2x = qw*qw*p1x    + 2*qy*qw*p1z  - 2*qz*qw*p1y   + qx*qx*p1x     + 2*qy*qx*p1y    + 2*qz*qx*p1z   - qz*qz*p1x      - qy*qy*p1x   
p2y = 2*qx*qy*p1x  + qy*qy*p1y    + 2*qz*qy*p1z   + 2*qw*qz*p1x   - qz*qz*p1y      + qw*qw*p1y     - 2*qx*qw*p1z    - qx*qx*p1y
p2z = 2*qx*qz*p1x  + 2*qy*qz*p1y  + qz*qz*p1z     - 2*qw*qy*p1x   - qy*qy*p1z      + 2*qw*qx*p1y   - qx*qx*p1z      + qw*qw*p1z
cx=p2x
cy=p2y
cz=p2z
//-------------------------------------------------------------------------------------------

surface (ax,ay,az, bx,by,bz, cx,cy,cz, 0, rand_static(-1.5, 1.5), rand_static(.4, .8) , rand_static(-.1, .1))[]

}




User avatar
MtnViewJohn
Site Admin
Posts: 882
Joined: Fri May 06, 2005 2:26 pm
Location: Mountain View, California
Contact:

Re: Animation

Post by MtnViewJohn »

I found this bug. You can work around it if you are comfortable with using the registry editor (regedit). Find the registry key HKEY_CURRENT_USER\Software\OzoneSoft\ContextFree\Settings and change the values AnimateFPS and AnimateLength to the values that you want.

User avatar
MtnViewJohn
Site Admin
Posts: 882
Joined: Fri May 06, 2005 2:26 pm
Location: Mountain View, California
Contact:

Re: Animation

Post by MtnViewJohn »

BTW, does Context Free look okay on Vista? I noticed that it looks good in Windows 7 (where I develop) but ugly under Windows XP.

mycelium
Posts: 29
Joined: Tue Aug 28, 2007 4:21 am
Location: Italy
Contact:

Re: Animation

Post by mycelium »

Hi john, the interface looks very professional. the only missing thing is syntax highlight (anyway I don't think is important).
Attachments
CF3-WinVista.jpg
CF3-WinVista.jpg (147.36 KiB) Viewed 22828 times

User avatar
MtnViewJohn
Site Admin
Posts: 882
Joined: Fri May 06, 2005 2:26 pm
Location: Mountain View, California
Contact:

Re: Animation

Post by MtnViewJohn »

Syntax highlighting would be nice. After version 3.0 stabilizes I think I will start a version 3.1 release with UI improvements, but no changes to core functionality.

Pulni
Posts: 2
Joined: Thu Dec 01, 2011 1:58 pm

Re: Animation

Post by Pulni »

Any news with the color difference bug? I just tried rendering a movie, but the colors in it are different which is a problem.
Btw, great job with the new version - epic new features!!! And nice animation mycelium! :)

User avatar
MtnViewJohn
Site Admin
Posts: 882
Joined: Fri May 06, 2005 2:26 pm
Location: Mountain View, California
Contact:

Re: Animation

Post by MtnViewJohn »

Pulni wrote:Any news with the color difference bug? I just tried rendering a movie, but the colors in it are different which is a problem.
Btw, great job with the new version - epic new features!!! And nice animation mycelium! :)
Oops, forgot about that one. I'm still trying to figure out why 24-bit animation is broken on Windows. 32-bit animation seems to work fine. You can force Context Free to use 32-bit color by putting

Code: Select all

CF::Alpha = 1
in your cfdg file.

Post Reply