A Basic Torturial
Basic Torturial: Definitions
About Prefabs:
By handling NoLimits-'Prefabs' (from 'prefabricated elements') we'll have to deal with this vocabulary:
-
Bezier: short for 'Bezier-Curve'. In case of NoLimits this curve is '3rd-order'
and defined by four points in three dimensions (two vertices plus their two corresponding control-points).
-
Vertex (plural: 'Vertices'!): The start- or end-point(s) of one Bezier-curve resp.
a single NoLimits track segment. Within the NoLimits-Editor additional segment behaviour (like banking)
is controlled by the end vertex of a given segment (which therefor also will affect it's following segment if existent).
-
Control Points: In this case two additional Points lying 'between' the vertices thus defining the 'behaviour' of the bezier curve.
-
Handle: The connecting line between a bezier-vertex and it's coresponding control-point.
-
Segment: A Bezier curve represented in a way so that you can use it for building a NoLimits
track. Will contain additional information about banking values as well as banking behaviour.
-
Element aka 'Prefab': A file of type '.nlelem' holding one or more segments.
-
Track: Either a file of type '.nltrack' containing a NoLimits-coaster or
in case of this 'Purgatorium': the actual travelling path along a segment resp. element.
We will be handling a maximum of three prefabs at a time, these called:
-
'Initial': Prefab as loaded from disk or synthesized, may also have been 'pushed'.
-
'Processed': Prefab after have been sent through the 'Purgatorium'
-
'Xternal': An additional prefab for viewing and retrieving values ONLY.
From now on these prefabs will be referred as 'IN',
'PR' and 'XT'
throughout this whole documentation. (A third voice from the audience: "Hey, soundz eazy...")
About the 'IN':
The 'IN' will be the 'raw material' for any actions.
Some available actions, especialy the ones for combining or extending (the so called 'Pushes') may ONLY
be applied on this one. It's NOT possible to (re-)save any 'IN' to disk.
You will have to make it a 'PR' first (which can be done by menu / hotkey, in this special case NOT modifying it).
About the 'PR':
The 'PR' may be either the result of the
'IN' you just have sent through the 'Purgatorium' or an unmodified
'IN' when created as mentioned above. The 'PR'
is the only one that may be saved to disk. In general the 'PR' will have
the same filename as the 'IN' it was created from but extended to '_prp.nlelem'.
The 'PR' so to say is 'create and write only'.
About the 'XT':
The 'XT' will not only give you the chance to compare, but
also to 'pull' certain values / characteristics from it and set these as parameters
for your ingenious prefab transformations. No modifications or file operations will be done on
the 'XT' itself. This one is 'read only'.
About Coordinates:
We will be working in three dimensions, these defined exactly the same way as in any
NoLimits prefab file. Orientations of pos./neg. 'X'-, 'Y'- and 'Z'- values within the views (plus colors of axis) are:
-
pos. / neg. X is right / left (green axis)
-
pos. / neg. Y is up / down (blue axis)
-
pos. / neg. Z is back / forward, so watch out!!! (red axis)
About Dimensions:
You will have to deal with certain Dimensions, Angles and Planes:
-
'T' is the 'way' along the prefab as seen while riding on it.
-
'X'- /'Y'- and 'Z'-dimensions may be read as Width/Height/Lenght (when seen from top)
so any common 'Lenght/Width/Height' dimensions would thus accordingly be '-Z'/'+X'/'+Y'!
-
'Lenght' will be used in two very different ways:
First: 'lenght' may describe an actual 'Z-dimension' (as above).
Second: the 'Lenght' may be the 'Track-lenght' and thus is postfixed
with a '-T' whenever used in this way. Please do get irritated...
You will find operations within the 'Prefab Purgatorium' where it says
'ZX-plane' instead of 'Y-rotation' or 'Y-axis'
(which 'in effect' actually means the same, regarding any geometric transforms).
This is done to point out that in these cases we're operating 'on a plane' and not 'by an angle'.
About Units:
Lenghts as well as speeds (m / kmh or ft /mph) for setting values will be available wherever required.
You'll see then. Results in general are presented in both m/ft or kmh/mph at the same time.
There may be a few more pitfalls to think of when mangling your segments:
A prefab in general will start with the very first handle pointing straight to negative Z and
also having zero X-Coordinates! Otherwise you most certainly will not be able to attach such a
'corrupted' prefab to another without distorting the last vertex of the previous prefab.
In case of this never mind! There is an option to fix such occurrances on the fly.
(Redunzelizer:
Anyway, staying irritated will keep your senses awake and your mind open...
^ Top ^
Basic Torturial: What Can We Do?
Before we actualy start we have to take a look not only on what we can do, but especialy in which order
all these options are working together and in which 'state' of your work any of these will become available.
Please do not expect any logic or 'user-friendly' behaviour. It's the weird way it is. Period. (Tiny voice: 'Booooooooh!')
Detailed descriptions on exactly 'how to do what' will be given later. Right now we'll just be looking at the basic concepts.
(Low voice again: "Cawncept? There's cawncept behind o'dis?? Whaddisit???")
We will have to get some raw material (the 'IN') from somewhere
to do something with it. We may load a prefab from disk, or for the anvanced user, 'sin-thesize' one.
Since the advanced user may actualy not read this chapter, we (beeing the beginners)
will load a prefab from disk. (try [Ctrl]+[O].)
Before going on we may probably take a closer look on the 'IN'
by choosing different view- and data panels. (try keys [T],[F],[R],[A],[Q],[K] and [D].) (Third voice: "Hey, it's in color!")
Then we have to decide what we want to do with this 'IN':
-
Compare it. OK, then load the other prefab you want to compare with
as 'XT' (try [Ctrl]+[X].) and wander through the
different views and data displays. Switch between displaying
'IN' and 'XT'
anytime as you like. (just type [I] or [X] to switch.)
-
Cut it into pieces. Just let the 'Prefab Purgatorium' do all the work for you! It will cut up
our 'IN' into single segments and automaticaly
save each resulting segment as unique (and numbered) file back to disk.
(Tiny voice: "Cuddit up! Cuddit up!!!")
-
Add segments to it. There are numerous ways each with various options how to do this.
More on this later. Right now two things are most important.
First: adding any other prefabs or segments to an existing 'IN'
is called a 'Push'.
Second: This 'pushed' 'IN' will then
immediately become our new 'IN'.
-
Torture it. Well, in this case we'd have to enter and enable all these
'Purgatorium-Panel' options we think would do our prefab good.
(Low voice mumbling: "Got a whip anywhere?" Redunzelizer: "Shuddup!")
By the time we will also learn how to evaluate such options from other already existing
values or from an 'XT'. Doing so will be called a 'Pull'.
Observation and comparison won't require anything further. Dissecting
the 'IN' to single segment files is the work
of two clicks (Try menu: [Prefab]/[Save Initial Seg's as Single...])
What are we going to do then? Let's fantasize about putting two prefabs together making a new one out of them.
But in which way?
These may be some of these questions arising:
-
Shall the 'IN' be the first or the second part of the resulting new prefab?
-
Shall the two prefabs connect 'ZX-plane' (as in NoLimits) or seamlessly
'continous'. Can this be done in 'true 3D'? (Third voice: "Hey, there's 3D!")
-
Can i have this other prefab mirrored automaticaly while attaching it?
-
What if i don't want another prefab but simply the 'IN' itself once more?
-
And when 'doubling' the 'IN' could i possibly get 'the other half' reversed?
The answer to all these questions is: 'Do as you wish! The Purgatorium will handle it.'
(Low voice: "Where's Cawncept?", Tiny voice: "There isn't!")
Another idea:
We still got this 'IN' waiting for it's (deserved?) treatment. Let's tweak it a bit!
Hmmm... so many questions again...
-
What about size? Why not make it a bit larger? Or just change the height?
-
Only half of this prefab looks fine. So can i simply cut off some segments?
-
A bit more steep this would be way nicer! Rotate it? Or add more Slope?
-
Make it same length as this other one? Where can i find the scaling for this?
-
I need that thing backwards! Possibly mirrored also then. Can i have this?
-
What shall i do with these banking values? Invert them? Or delete them?
-
My first handle points to somewhere in the woods. Can you help me fix it?
Again the answer to all these questions is: Yes! Just do it!
(You will later on find that there are even way more than these...)
(Third voice: "Hey, sounds great!")
^ Top ^
Basic Torturial: Where To Begin?
A good idea on practising would be to start with some simple scaling operations.
Load the 'IN' you want to experiment with. (try:'[Ctrl]+[O]')
Select a looping for instace. (Best take a loop from 'Buster's great prefab-pack, you should have that.)
Then enter some scaling values within the 'Purgatorium Panel' and don't forget to ebable these.
(Tiny voice: "Smash it! Enter zero!", Redunzelizer: "Beware!!!")
Now it's time to click 'The Button'... (Low voice : "What? Butt?")
The displayed view will automaticaly change to
'PR' after calculations have been done.
Switch between 'PR' and 'IN'
with the according buttons down below (or use hotkeys: [P] and [I]).
Change to different views with [Q],[T],[F],[R],[A].
In case the prefab won't fit into the current view use [Ctrl]+[+] or [Ctrl]+[-]
(both [+] and [-] on the numeric keypad!) to zoom in or out. (More on viewing and moving later...)
Also take a first look at the prefab data (hotkey: [D])
So you have created your first 'PR' and let's assume you're not yet satisfied with this.
Simply change your settings for the scale(s) and click the 'Purgatorium' button once more.
It won't matter if you're currently viewing the 'PR' or 'IN'
or whatever view-/data/track-panel you may have selected.
Your view will be switched to 'PR' and the according new results
will show up exactly at the place where you are right now. Experiment!
Next we should try some rotation just to get the feeling for what may happen.
Let's limit this example to only rotating the Z-axis by now.
Let's also assume that you have finally been successful with resizing your loop from the above example
and now additionaly want to rotate it. But the resized loop is your 'PR'
and we require it as an 'IN' to further process it!
No problem! Make your 'PR' your new 'IN'
by simply choosing menu: [Process]/[Set Processed as New Initial]. (Or, way faster, just type [Ctrl]+[N].)
(Third voice: "And i always thought i'd had to save it to disk and then reload it again...")
And what about these existing and activated settings for scaling that we don't want anymore now?
You have the choice of only unchecking (deactivating while keeping all values) or completely deleting any existent settings.
Do this by menu '[Process]/[Uncheck...] resp. /[Clear...]' or by one of the two ugly 'Clear:'-buttons (Tiny voice:"Ugly crap, yeah!") right besides the 'Purgatorium'-button
or by hotkeys ([Ctrl]+[U] for 'uncheck only' resp. [Ctrl]+[C] for 'clear all').
Now we're ready to rotate our loop a bit. Same procedure as with scaling.
Enable the 'Z-axis' rotation, enter the desired rotation angle within the 'deg' field
(the right one of the two available), and 'push the button'. On we go...
(Low voice: "I lik'em laid back...")
Not satisfied with the result of this rotation? Stay right where you are! Just change your value(s) for
the rotation a bit and 'push the button' again.
What we have got now:
First an 'IN' that has been scaled already.
Second the scaled and additionally rotated 'PR' we made right now.
But we'd also like to take another look at the differences between the untouched original prefab compared to
these two results of processing.
Fine with the 'Purgatorium'. Just let us load the untouched original as an
'XT'! (Use menu [Pull]/[Load Xternal Prefab...] or hotkey [Ctrl]+[X].)
Switch between these three (with keys [I],[P] and [X]) and wander through the different views and panels as described above.
Let's try another one! Possibly you were thinking of a real neat helix to force
continuos pain in the riders a...'s by pushing them into their seats for some while.
Looking at a simple 360 degrees helix we suddenly realize that this kind of element is nothing else
than a circle (as seen from top) with some additional slope (when seen from 'riding'
the helix). So what? Let's get a clean circle first. But where from? Let's 'cook' one!
Switch to the 'Synth Panel' (use key [Y]) and have a glance at all these wonderful opportunities.
Among others you will find a 'group' that says 'Bow ZX-plane'. Besides this is a radiobutton
which you now better select to tell the 'Purgatorium' what you actually intend to do.
Then you are due to enter some values and select settings for 'cooking' your first helix
ingredient.
The initial settings on starting the 'Purgatorium' should show right that way we want
them for this little experiment: an angle of 45 degrees, a radius of '10'
(ten rat's tails or whatever, don't care about units right now!) and 'A&R'
(meaning 'calculate by angle and radius values') should be set already.
Got it? OK! Push the 'Synthesize'-button (which has shown up by switching to this panel)
down below and see what happens. Ahhhh... there is a view showing a single segment (our new
'IN') and well,
this actually will be the first piece of your new helix. In case you are a bit more curious
have an additional look at the 'properties' of this segment by switching to the 'Data-Panel'
(use key [D] and then [V] again to go back).
So we have a single 45 degree segment but want to get a full circle made up of lot's of these.
(Low voice: "Uhmm..., errh... could be somewhat seven to nine pieces or so?"). We could now
somehow save this single segment to disk and try to join one by another (from disk)
to the 'IN' again and again each time 'measuring' if
we have actualy reached the full 360 degrees already (Third voice: "Anybody around got a calculator?") until finished.
Don't do that. Pease! We'll be handling such cases far more elegant here! There are some neat features
available (these called 'Push'es) making the copying and (re-)joining of existing
'IN's a matter of seconds.
In this special example let's do the following:
Select Menu: '[Push]/[Initial Self ZX-Plane After...]' (or use hotkey [Ctrl]+[E]) and you
instantly will have the current 'IN' duplicated, put
to the right position as well as rotated to give you a new prefab. This new one will also be
your 'IN' and you may repeat this as often as you like
(even with any difffernt 'Push').
It's getting better by now, we're having two of these pieces already! But we still need some more.
Remember from right above? The 'pushed' will immediately become you new 'IN'!
So simply use '[Push]/[Initial Self ZX-Plane After...]' (or key [Ctrl]+[E]) two times more and
finaly your single 45 degree circle-segmented has been multiplicated to a full 360 degree circle.
(Low voice: "Funny... eight ones? Are ya sure?" Tiny Voice: "I told'ya, I told'ya! ).
Now come on! We wanted a complete helix from the beginning. And we want it now!
Keep cool! There is only some little slope missing on the track!
Have a look at the 'Purgatorium'-panel to the left. There is a group called
'Postprocess' with an option (among many others) called 'Slope-T by:'. Check this
to enable it and within the right of the two fields besides it enter a value of
let's say '5' degrees. (Be sure not to have any other 'Purgatorium' options
checked by now! Remmeber how to do this?) Now push the 'Purgatorium' button and...
Same as with all other examples. Not satisfied? Change value(s) and 'push the button' again.
Satisfied? Really?? Use menu: [Prefab]/[Save Processed As...] to save this recent masterpiece
of yours to disk and finaly use it with your upcoming tracks.
One thing has still to be mentioned especialy with bows and curves containig any slope.
The banking (of such a helix and others) will go somewhat nuts in case any 'Continuos-Roll'
flags are NOT set. Just enable 'All CR's on' in group 'Postprocess' also!
This will fix this effect right from the beginning.
You will have to take your time to get aquainted with the 'Purgatorium'
-
Try to prepare your actions. This will save time and frustration.
-
Split your 'jobs' into small steps in case you are unsure what to do.
-
There is plenty of room to experiment. Retry anything gone 'wrong'.
-
Use the 'XT'-feature frequently to compare your efforts and results.
(Tiny voice: "What a drag...")
So what have we learned from this 'Basic Torturial' until now?
'Tiny voices' from the audience oppose agressively to each and everything.
'Low voices' pretend to be somewhat interested but in fact aren't at all.
And for these 'Third voices' anything(!) is sooooooo sensational anyway...
We may strongly assume that at least for this 'tiny voice' a place in hell has been reserverd already...
^ Top ^
Basic Torturial: Viewing & Moving
^ Top ^
Basics Torturial: Saving Results
As we have learned already, the only prefab we may save is an existing 'PR'.
In case you simply want to re-save an 'IN' to disk:
Use the option to convert any 'IN' unmodified(!) to an 'PR'.
(Menu: [Process]/[Copy Initial to Processed], hotkey: [Ctrl]+[P]. DO NOT MISUNDERSTAND WITH [Ctrl]+[Shift]+[P],
which actualy pushes the 'Purgatorium' button!!!)
^ Top ^