LightWave 2 ShockWave Tutorials


Good to hear its useful. I will convert the videos into xvid format, a little bit less quality pr KB but more practical as you said whit.

2 new tutorials coming up, animating by code and interior walkthrough.


Here is an update and a new tutorial:

8.3 MB XviD

16.6 MB XviD
LightWave files:

7.4 MB XviD
Director file:


Wow! That was quick. Thanks.



Thanks for all of the help…

I watched the bone movies and found the workaround I needed to solve my problem. Closing down LW and THEN exporting was the key for proper bone conversion to Shockwave.

A question about endomorphs…does Shock3d support vertex animation and morphs?

Thanks again for your tutorials.



No support for vert/morph animations. But I have written an OBJ reader for ShockWave. With that script you could open up a series of objects and have the base mesh morph between the others. I have been playing with the idea of an interactive 3D head with its mouth moving based on sound input, available through this ShockWave Xtra:

Check out this demo (connect your microphone and make some noise):


Thanks, Petter. I’m going to pass these tutorials on to my students. Maybe they’ll believe you anyway about the weightmap rules. We have been able to get subpatched characters to Shockwave animate (not without some effort - sometimes having to rename and reassign weight maps to get them to be recognized the second time, epsecially the torso bone for some reason, just to have other weightmaps fail that were working just fine until then. We stumbled across your close and restart solution but I thought it was becasue it wiped from memory the extra weightmaps we had renamed - I guess we were on the right track about weightmap memory being an issue). Here’s an example of a subpatched animated character I made:

You do these tutorials incredibly quickly and seem to have a knack for precision of presentation that requires no apparent editing. It’s quite a gift really. The tutorials I make for my students always feel so bloated.

I can hardly wait for the rag doll tutorial because I have envied 3D max users their ability to do this (NoiseCrime, Havok’s “Oldsite” example, etc). :applause:

Mike K.


Glad to help, and one other thing you might want to avoid is to assign the skelegons to weightmaps inside of Modeler. That also seems to create irreversible errors, closing and opening again not working. The safe way to assign weightmaps is either give the bones and weightmaps with the same name (so Layout autoassigns them together), or to manually assign weightmaps to each bone inside Layout.


I like the method that you describe although I prefer doing the bones in Lightwave (old habits die hard). We do only assign the weight maps in Layout; we would jump to Modeler to rename, and then jump back to Lightwave to try out the new maps. I liked your use of the Preview also. Is the preview always Director reliable?


Is it just me, or is the site not working? Been trying for about 10 minutes…


I just tried the links, they work for me.



Something weird is going on.

I tried your bone fix of saving out the scene a few days back, and it seemed to work. Now, it’s back to the old messed up way of doing things.

When I export a Sw3d file, the bones do not play the animation anywhere even close to what I see in Lightwave. Can I email you a simple file that you can export to S3d to see if it’s my system?

better yet, can you email your S3d plugin so I can try it in my Lightwave? What’s the date on your plugin file? You seem to have no problems.



Sure, just send me the files to: post at

  • Do you have all vertecies in your model assigned a weightmap? (this is needed for it to work properly)

  • Have you manually assigned weightmaps to skelegons inside of modeler? (that creates errors)

My w3d exporter is the same as the one everyone else using 8.01 have.



Havok and FileXtra4 for Mac

Tried to send these zipped files to you, but they don’t seem to want to go through.

Mike Kelly


Thanks. Didnt get them, but anything that is sent to my domain, I should recieve. Did you manage to split them up into .rsrc and .data files? Thats what I need for them to work inside Director on a PC (even if you havent, I still interested in getting the Havok xtra).


I couldn’t even send you an email without attachments. If you have an alternative address, please forward to

If you could advise how to break the plug-ins up into data and resource files, I’ll be happy to do so.


Mike Kelly


New tutorial :slight_smile:

How to make a rotating and zooming camera (orbit and zooming in and out on an object).

If you look in the LW scene file, you will see that there is 2 models, helping the camera out. The one that is the parent to it all is the model rotating in the Y axis, the red one, then you have a green child of that, rotating in the x axis, and finally the camera is parented to the green model. So when the two first models rotate only on one axis each, you can easily control how the camera moves, either by keyboard input or mouse movements.

Inside of Director the behaviour script tells the camera to translate (move) along its z-axis when the right mousebutton is pressed (and mouse moving up and down).

Its possible to do this through code too, but I think it shows the principle a bit better this way. You could ofcourse set the shader of the rotaters to be totally transparent to hide them as well.


Here is the script for a dynamically added orbit-cam (put the script in a behaviour script, and drag the behaviour script onto the 3d sprite):

property mouseIsDown
  property lastMousePosH, lastMousePosV
  on beginSprite me
    -- Set up a model resource for creating box models
    boxRes = member("3dscene").newModelResource("box", #box)
    boxRes.height = 1
    boxRes.width = 1
    boxRes.length = 1
    -- Creating the y rotating box
    tempMod = member("3dscene").newModel("box1", boxRes)
    tempMod.transform.position = vector(0,0,0)	
    -- Creating the x rotating box
    tempMod = member("3dscene").newModel("box2", boxRes)
    tempMod.transform.position = vector(0,0,0) 
    -- Align the boxes to camera rotation
    member("3dscene").model("box1").transform.rotation.z =\
    member("3dscene").model("box2").transform.rotation.z =\
    -- Parenting the box2 to box1
    -- Parenting the camera to box2
  on enterFrame me  
    if mouseIsDown then
  	-- Rotate the two boxes based on mouse movement
  	-- Camera will follow due to parenting, giving the "illusion" of orbit
  	member("3dscene").model("box1").rotate(0,lastMousePosH - the mouseh,0)
  	member("3dscene").model("box2").rotate(lastMousePosV - the mousev,0,0)
    end if
    if the rightMouseDown then
  	-- Zoom in and out if the right mouse button is pressed and mouse moving
  	member("3dscene").camera[1].translate(0,0,the mousev - lastMousePosV)
    end if
    -- Record the current mouse position
    lastMousePosV = the mousev
    lastMousePosH = the mouseh
  on mouseDown me
    mouseIsDown = true
  on mouseUp me
    mouseIsDown = false  


Hi Petterms

Thanks for the bone tutorials Ive been having difficulty getting animated cycles from lw into dir. Ive been gettin allsorts of screwed results. So ive been using unanimated mods for the time being

Im not sure how many of you guys have seen this on the fourms but heres a link to a game im workin on at the moment:

Im responsible for design, mods and layout. Ive been working with a friend thats developing the Lingo. Any comments/crits would be greatfully received.

Thanks again



fantastic resource :love:

Thanks a lot, petter,

though i haven’t touched lingo since college and i think ive erased everything i know about it from my brain :slight_smile: i know a friend who is in need of this for his upcoming project… i’ll let him know…

for the meantime, i’m saving this into my hard drive

again, many many thanks Petter



I have posted a new mini tutorial, on how to handle transparent textures and how to make them in Photoshop.