Animated 3D-model building for Aleph One
13-10-2002 | update 11-05-04
Intro (Dim b10c is out!!)
Currently the method below doesn't work yet with the new DimAnimator b10c, wait a mo' while Loren Petrich updates his "insert-Dim3-thinghy-into-Aleph-module". You'll need to re-animate the model anyway, BUT Dim3 promises that from now on it will be backward compatible...
A method to build animated 3D-models for Aleph-One under MacOS 9.xx and MacOS 10.
At the current version of A0 (March 23 2003) a whole load of 3d is possible.
Any sequence in Marathon can be replaced by a model, except for wall-textures and weapons-in-hand (yet).
Monster-movements are divided into sequences (Anvil), each of those sequences can be replaced.
Scenery (animated or not) can be replaced, effects and shots, all by 3D-models. Ofcourse you can use the following method to create static models, but there is another method for static models also available. Choose whatever you prefer.
Here is a method to build meshwork models which can be translated into Brian Barnes Dim3-format (an xml-collection results in animated model with bones), (visit Klink)
Some restrictions and remarks
|shareware 3D modelling application, when unregistred anything under
200 vertexes is save-able, excellent for low-poly building (especialy when registred :)
tutorial on masks and pinned mode in Meshwork
dim3 Animator b5 408k, MacOS X only
|Animator is part of Brian's Dimension 3 software, (see also: Dim discussion board at iDevGames) announcement at iDev-forum: Dim b10 is out and the download itself: dim3 b10 (7,5 mb OSX10.2 and higher)|
|(or any other application which can convert a bitmap into rgb images and
check out SuperPNG and J2K, free PS-plugins to get smaller and better (!) png's and jpg's
This time rebuild the water filtration device, would be nice to have an example/draft in the meshworkscreen.
Copy image from Shapesfile, past image into Meshwork... This image is just temporarily, will disappear when saved and closed. Why can't live be so simple? :)
Build nice new wfd, because it's a rotating symmetrical object, it pays to only build a meshwork which can rotate the small step between one 'fan' and another in an endless loop. (Just as the original which is composed of 3 images.)
Use the 3D-preview a LOT.
Launch Photoshop, create a square of say 256x256 pixels, copy the (white) image.
Meshwork, select all, double click on the first (white) colourbox (topright).
A new texturewindow pops up, select (planar) view, click set, select x,y or z axis, click in the texture-field, paste the 256x256 image (for now just white).
Exit texturewindow, re-enter texturewindow, change the texturing-mode into pinned mode. Exit texture-window.
DO NOT ADD ANY NEW VERTEXES, or your pinned texture is lost (usually) and you'll have to start over.
Any new vertexes added will pile up on the bottomleft of the texturewindow, it's a pain to drag these around, so make sure when you start defining the texture... (he sez from wise experience ;p)
Select from the menubar Display Texture.
Make a screendump (activate caps-lock + command + shift + 4 creates a windowscreendump).
Trim this into photoshop into a clean texture-image, this is your base for texturing.
Awfully handy to make a tiny PS-action script, like:
Have some Phostoshop fun
Select and copy the PS-image, goto meshwork, open the texturemode, paste the image (but DON'T change anything on the pinned texture-modes).
Hit OK, preview in 3D, oggle at textured model.
Go to main-window, select a part of the object, go to Display Texture and drag your just selected parts around.
This is a texture-pinned-onto-vertexes grid (uv-map), you can drag this around and the placement of the texture on the object will be changed, NOT the object itself.
Save under anyname with the extension .mesh at the end
(Your texture is saved in the .mesh file itself, but can later be replaced with a much better texture and their masks/glows.)
For animated models we need bones, for this simple model a base bone and a rota bone are sufficient. (Names have to be 4 characters max.) Select bone tool, create a bone under the object, call it [base-None].
Create another bone in the center of the object, call it [rota-base],
select the vertexes (this case the whole object), hit command+bcall it [rota-base].
This is a minimal bone-chain, base is the parent, rota is the child.
note: Take care with the UNDO-function, sometimes Meshworks undoes much more than you intended and scrambles the model too. Save (often) and nuttin gets hurt.
tip: Meshworks doesn't group parts, but adding bones to a bunch of vertexes, allows to COMMAND CLICK ON BONE to select the group assigned to it. (you wouldn't believe how long I looked for that tip...)
Jeff Quan's tutorial on 'pinned textures'
Launch ye mac into OSX.
Create 3 poses. (any name will do)
Create an animation (any name will do) of 3 poses. Check if the animation loops decently.
(Note, when playing the animation (command-p), DON'T change/add/delete the poses, sometimes DimAnimator crashes on this so stop the playing, then change.)
(Again, AlephOne now animates the smooth animation inbetween extreme A (pose) to extreme B (another pose).
(Note, the rotation works fine in AlephOne, but the x,y,z-movementresults are... tricky, swaying the animated pose works fine again. (Although, sometimes the xsway and zsway seems to be swapped, lookee in A1, change manually the animation.xml-file)
Swaying an animation is only adjustable/visible when running the animation)
The result is a folder with 3 xml-files and a bmp image, when opening a Dim-file, you have to select a folder, DimAnimator will construct the animated model from this folder.
It's also possible to re-place a meshworkfile with another one, very handy when you invested countless hours in posing the animation and with just a replacement you can get this animation on the new replacement.
(I'm weird, I don't like OSX, me being a decennia-long OS9-using filthy male sea-monkey...)
OS9 (pfhew! home sweet home)
Anvil/Hakvil: Open the Shapes-file and add two new sequences to the scenery-collection.
default-sequence: Consisting of 1 frame with any (old) bitmap you like, call it 3d_default_wfd or so.
animation-sequence: Consisting of the number of frames for your animation, at least 2, duh. Appoint any bitmaps you like, no need to add new bitmaps. (So the Shapesfile will be having lots of new sequences, but no new bitmaps, so the filesize will change very minor, instead of the usuall big bloated TC-shapes.!) Starts ye fav texteditor (BBEdit) and use the following MML-script.
Example ready for copy and paste:
Copy the above script, save as something (3D_waterscenery_wfd) into the folder:
This is good for scenery, because it just adds a texturemap to any replacement whatever clut is has.
For different flavours (green pfhor, red, blue, pink), each CLUT has to have a replacement line.
<skin clut="0" <!-- first CLUT --> opac_type="0" opac_scale="1" opac_shift="0" normal_image="art/ani3D/wfd/L33T.jpg" normal_mask="" glow_image="" glow_mask="" /> <skin clut="1" <!-- second CLUT --> opac_type="0" opac_scale="1" opac_shift="0" normal_image="art/ani3D/wfd/L33T_scarred.jpg" normal_mask="art/ani3D/wfd/L33Tmask.jpg" glow_image="art/ani3D/wfd/L33Tglow.jpg" glow_mask="art/ani3D/wfd/L33Tglowmask.jpg" /> <skin clut="8" <!-- DO NOT FORGET, clut 8 is the infravisionview --> opac_type="0" opac_scale="1" opac_shift="0" normal_image="art/ani3D/wfd/L33T_infrared.jpg" />With some thought, awesome scenario-results can be made, replacing a different clut with a whole different texturemap...
Enemy-flavour one, the enemy is fresh out of school (physics, make wussies)
Enemy-flavour two, the enemy is battlehardened and has the scars, dents, prostatics and false teeth to prove it (physics, max out enemy)
Enemy-flavour three, the powersuits of the enemy have been out of juice, and don't glow anymore in the dark.. or uberL33T-mysterious ninja-raised wraiths of another dimension, undsoweiter, undsoweiter.
Note the unused but ready for use lines of normal_mask/glow_image and glow_mask, go bonkers, and use those too! MML can be adjusted later with the correct new textures, and this way its more handy to have the lines ready to be filled in, for now it doesn't make a difference.
Note2: if you make a replacement for whole and destroyed scenery with the same model, (shoot evil green light, bulb splatters) make sure to have the same number of replacementtextures, meaning: if whole-scenery has all 4 maps, then broken-scenery too (could be different maps, but same number nonetheless)!
Launch ye Marathon
If an errormessage pops up/A-1 crashes or such, slowly retrace what went wrong, enough RAM?, weird scripting? Bizarre bugs? Just one tiny chocolate?
example script + model + skin + small shapesjuggler-file
typical 'not found correct texture' (+ time to adjust the x-rotation with mml)
forge view with the 2d wfd, and AlephOne view with 3d wfd
If this happens, open the pose.xml and/or animate.xml doc, and manually multiply the x,y,z-movement with a factor of around 17x or 20x (!).
Seems the translation from DimAnimator and A1 needs a nudge :)
The xml files can be adjusted manualy with say BBEdit, and are saved, even when reloading and re-saving the animation in Dim.