Config Developer's Tool

Discussion forum for G-Force users

Moderators: BTT, andy55, b.dwall, juxtiphi

Post Reply
jerohm
Senior Member
Posts: 421
Joined: Fri Jan 09, 2009 5:19 pm

Config Developer's Tool

Post by jerohm »

Hope you find this useful.
j

/* PlotIt!
2009Nov11 JRM (Debug Tool) Plot Particle
disguised as a neat little particle
(w/ Flowfields help)
*/

Aspc="1"
ConB=1
Stps="1000" // Keep this jacked up HIGH (for reasonable vertical strokes)

A0="PI * 2"
A1="4"
A2=".15"
A3="A2 * 2"

/**** >>> (RE)READ and UNDERSTAND before proceeding <<< ****/

B0="t" // Set to ZERO for Sationary
C0="(((2 * s) -1) *A0)" // ( -2*PI -> 2*PI ) per FRAME
C1="(C0 * A1) + B0" // Scaled for display (aka, MY 'C1')

/*
> I won't try explaining the value of this, but IF you design
> configs with control functions, come back and take another look... THEN it will
> all be clear... maybe. Of course, your situation might require you to modify YOUR
> equation (that you wish to visualize) to be a function of 's' rather than 't'.
> 't' HERE, only marches the wave(s) along the x axis. Turning off Waveshapes and
> Flowfields 'may' be in order... This ONLY runs as a Particle!!

*/

X0="C1"
Y0="0"

X1="0"
Y1="(2 * s) -1"

//////////////////////////
// Equations to be plotted...

C2="max( sign(sin(C1)), 0)" // Control Functions (0, 2PI)
C3="max( sign(cos(C1)), 0)" // Control Functions (0, 2PI)

// C4="C2 * max( cos(C1), 0)" // Control Functions (0, 2PI)
// C5="C3 * max( sin(C1), 0)" // Control Functions (0, 2PI)

C4="max(0, cos(C1)) * sign(cos( C1/2 ))"
C5="max(sign(((float)(C4 == 0)) - 1), sin(C1)) * sign(sin(((2 * C1)+ PI)/4))"


//////////////////////////

X2="C0"
Y2="(A3 * 2) + (A2 * C2)" // Top

X3="C0"
Y3="(A3 * 1) + (A2 * C3)"

X4="C0"
C6="(C0 * A1) -t"
Y4="(A3 * -.25) + (A2 * trwv(C6))" // Middle (Reference)

X5="C0"
Y5="(A3 * -1) + (A2 * flip(C1))"

X6="C0"
Y6="(A3 * -2) + (A2 * C5)" // Bottom

LWdt="1"

Meta="reactive=1"
Vers=391

User avatar
JayPro
Posts: 738
Joined: Sat May 01, 2004 10:51 pm
Location: Huntington Station, Long Island, New York

Post by JayPro »

You have to add the following parameters to Meta:

detail=x, density=x, (morphable=x) //assuming x=a number preferably from 3 to 5

Morphable is parenthesized if you want the particle to be included in the WaveShape slideshow, which I assume here you don't.

Edit: I would use sine in Y5 only because flip makes right angles on the third horizontal plane (my personal 2¢ of course). Also it would be cool to vary functions in C2 & c3.
How about?:

C2="max(trwv(sin(C1)), 0)" // Control Functions (0, 2PI)
C3="max(wrap(cos(C1)), 0)" // Control Functions (0, 2PI)
"God is syntax."

jerohm
Senior Member
Posts: 421
Joined: Fri Jan 09, 2009 5:19 pm

Post by jerohm »

good suggestions... that is why I wrote this ... to help me visualize what might not be immediately apparent. The actual equations YOU choose to plot are rather incidental(to me anyway), unless YOU are after some specific result. The (commented out) equations I left in the code were meant to be examples of things that I tried ... and might have worked or failed. It is meant to be a crutch :? .
Thanks,
j

jerohm
Senior Member
Posts: 421
Joined: Fri Jan 09, 2009 5:19 pm

okay you technical wizards ...

Post by jerohm »

I just got done spending a lot of time trying to figure out how, when writing 'multi-thread instance' Configs (i.e., NUM > 1), for each instance to maintain its own level of 'randomability'. Amazingly, almost NO existing configs address this issue. The problem is that A variables are ONLY set/evaluated ONCE, and inherited by each instance. For example,
A0="rnd(5)", each instance would inherit the same random VALUE... and NO, A0="rnd(5 + ID)" doesn't seem to work either (but it was a good guess!). hmmm, so how can we get this to work???

B0="rnd(5)" will have B0 bouncing around each time it is evaluated... NOT what I WANT... I WANT instance(A) to run with a set of random initialization variables... and instance(B...) to do the same. Therefore as we set up each frame, of each instance, we need to have those random initialization parameters remain intact (or more correctly, recreatable) for the duration of each instances' run.... did that make any sense???
When I tell you my (the?) answer, you are going to say, well SURE, I KNEW THAT ... well then you are a lot sharper than ME.

ANSWER:
B0="srand(ID)"
B1=".6 + rnd(.3)"

'srand()' returns the SEED so you don't necessarily have to waste a 'B' variable. As far as I can tell, ID is the only static differentiating SEED that can be used between instances (really it just needs to be part of some function that always evaluates to the same value within the scope of each individual instance). If ANYONE has another solution, PLEASE chime in ... BUT THIS DOES WORK ... and kinda makes sense, once you know the answer :wink:

Post Reply