Modeler


JB_UVMapper
simple object

So you have your polygonal masterpiece and now it's about time to make an UV map ...
atlas

After some toying with planar mapping, you try Atlas instead. You want different ornaments on each side so Atlas seems like good choice - but hey! Are they rotated properly? What if some ornament will be mirrored? You can find it just if you select some points and figure polygon's facing direction for yourself...
UVMapper

Or try UVMapper instead ;)



planar

Now for something complex. You just finish your character and it's time to create seamless nicely unwrapped UV for it. You'll start with planar mapping. It's close to what you'll need but there's lots of distorted polygons on the edges of the silhouete.
atlas

So you try Atlas instead. Making UVs for complex organics models is always hard HAND WORK and Atlas is in most cases good starting point but I'd like to show you something better...
UVMapper

Try UVMapper instead ;). It creates Cubic UV and rotate all pieces so you know what they are. UVMapper also take care of face directions so you'll not end up with flipped hands like Atlas does. For complex models, you can select their parts and run UVMapper for those selections separately - all measures will be same because UVMapper don't normalize UVs.
little bit of hand work...

Of course that it needs some hand work, but this is good starting point.
nice UV

Use UVFlip, UVWeld and UVLinerizer and you'll end up with nice UV
our hero

What's missing? Maybe some LScript named "do_all_textures_for_my_model.ls"? ;)


JB_Rovnatoor
Planar or Atlas UV are good for polygons that lies in some axes. But if you have an polygon already rotated and you still need a "planar" UV but along its normal you're lost.

Or you can use Rovnatoor.

This tool gets all selected polygons and unwrap them to UV in direction of their normals. You could think about it as about "planar mapping in polygon's local coordinate system". Same as in UVMapper, you can use it for different parts (selections) and all measures will remain the same in the UV space because Rovnatoor don't normalize UVs.


JB_Ruzball
?


JB_FlipUV
Everybody know it. You just discovered that you have some polygons facing oposit direction in your neat Atlas UV Map. You can use "Transform UV" and click on some checkboxes and wrote some numbers - or you can just press one shortcut (or click on single button).
This tool flips UV on selected faces. Polygon selection is fliped around its center so they stay in place.

   
JB_TubeUV
nice pipes

So you have your pipework finished but you forgot UVs... Ah! What a pitty
planar

No... Planar UV is not so good idea. You've got nice rusted texture and you're planing to paint rivets and welds into it. It will be good to have all polygons straight because then texturework will be piece of cake...
Atlas

Err... Atlas.. It seems that planar mapping will be beter choice...
TubeUV!

Or you can try TubeUV! Without any interface - you just select two starting points that will be used as a start, seam and direction of new UV map and you're done. All sections are flat and they're scaled to be as distrostion free as possible.



rail extrude

Disc extruded along the curve
planar or atlas?

Planar? Atlas?
TubeUV!

TubeUV!



wird thing

Something weird...
Atlas

Had weid UV (Atlas)
TubeUV!

TubeUV!

JB_UVLinerizer
When it comes to UV work and you have a cross section that has to be stright you just select all points on that line, set work mode to "Selection" and scale them down to 0 by your mouse. But when you strighten hundreds of crosssection, it's little bit repetitive and your mouse will be very tired (and I don't mention your wrist).

This script gets boundingbox of your selection (in UV coordinates!) and strighten your selection in propper axes for you - Automaticaly - in press of a keyboard shortcut or by clicking to a single button.

if this script choose wrong axes, you still have opinion to use U or V linerizer instead.

JB_UVWeld
What to say? LW Modeler comes with all tools and features for welding points but with no feature for welding UV points.

All that you can do is to selects all points in the UVMap, set work mode to "selection" and scale all those points with your mouse. As in case of Linerizer, it works but it's quite boring.

This tools do it for you with single keystroke!. For now, it works like "Weld Average". There's no interface to clean the workflow. If you need the point elsewhere, move it by yourself ;).

JB_Possez
This tool move points in the current layer all the way down along Y axes until it collide with the polygon on the background layer. We were using it to retopologize the landscapes.
JB_Delelect
Deselect everything (all points and polygons) - my coleque needed a deselect on custom shortcut
JB_NormalMove
Quick tool that moves polygon selection by its normal. Another coleque wanted this because he was used to it as Maya does it.
JB_Riveteer
It creates rivets on the edges of the current layer's objets with ability to set inset, rivet space and their radius

JB_SelSameSurf
This tool select all the polygons that uses same surface as the current polygon (or first) selected. We were using mainly when working with exported geometry from the engine and when dealing with 3D scanner data
JB_SimpleAseExport
Really simple ASE file exporter - for internal custom purposes only
JB_Skelegon_Renamer
Renames skelegons, clean the names and naming nomenclature, does find&replace etc..
JB_Vector_Selector
It select polygon based on their normals, but with deep settings - world, locals, average from selected, point normals, poly normals.. you name it..
JB_WMapOpt
This tool optimize objects weightmaps to HW accelerations. It clears object's VMap definitions. Kills weightmaps that has 0%, quantize weights to 25% and eliminates more than 4 weightmaps per point and does other nasty stuff so our lead programmer always get cleaned data and was happy ;)

Layout


JB_Pose
This tool saves and loads character pose (into its own format). Mainly used for setting propper starting poses for different animation. It's almost same functionality like in Motion Builder (Kaydara's Filmbox at that time)
JB_StabilizeBone
stabilize bone in time at place of another objects. It's something that was quite unique in LW days - imagine that you character has a sword on his back. And in one scene, he put it on the table ... But the prop bone (onto which the sword is parented) is child of spine bone.... You simply put another instance of the sword on the table and specify the frame range. Then the bone _on the back_ which is child of the hand will be baked on that range to lay still on the table even if the characters moves.

It's maybe funny these days with constrains in MB and all plotting, but it was nightmare those times ...

JB_BakePath
Bake path frame by frame. Pretty unbreakeble bake of anything, so you can use almost anything as a motion controller and you still endup with motion that you could export outside (let say... to the game engine? ;)
JB_Bake_IK
Bake IK on all items - Bake that bakes only IK enabled items
JB_CopyPath
Copy path from one item to another. We're mainly using it to create rigs in which we need to "save" remporarily the motion or use it on expression for example. Or in situations where you need to reparent something which already has motion on itself ;)
JB_DeletePath
Quickly delete all keyframes on current item (works with multiselection - of course)
JB_KeyRestPose
keyframe skeleton rest position on selected frame
JB_MakeGoal
It creates Null on selected bone, set IK and position this null on Schematic view. This was pretty cool, because it creates goals for IK chains and according to naming convention, it position the item icon in the schematic view on coresponding side of the skeleton item - left or right. Also it setup that null to be the goal and turn on reach and strength according to the name of the bone - if it is shoulder, elbow or knee, it was only helper...
JB_RotatePath
Rotate path on current item in Y axes. Center is current item position.LW Comunity always told me on the forums that it's impossible to be done - mainly because Holy Newtek give us only MovePath tool and not Rotate Tool - so in their heads, it was undenieable truth that if Newtek was unable to do it, it's impossible ;)
But.. we desperadely need it, because when we were dealing with motion captured animation (lots of them), the actor doesn't walk always in the axis. I needed to strait him up in Z axes... So I wrote the SIMPLE rotate path tool in the Lscript ;), and it takes the offset, set the player to the zero in space and time and rotate it automaticaly so he was walking on the Z axis. But you were able to specify the angle - of course.

Shade Tools - Modeler


JB_PatchMapSave
Shade-Game Tool - Creates Enforce Map based on the polygons in current layer. The map was mostly brush based (same as Quake..) so it also saves Quake levels from the polygon meshes... cool to make spiral staircases or rounded corridors.
JB_ShadeDebrisExporter
Shade-Game tool - This tool exports debris objects and definition for Enforce engine. You position all the debris inside the main object and it creates the definition for the engine. Later, It became even more sophisticated tool which automaticaly create collision envelopes for AlphaPrime - our next game
JB_Chainer
It creates nice chain along the curve. From the simple 4point polygon that can be texturemapped by alpha clip texture for realtime rendering to complex chain pieces. We simply needed lots of chains (ingame and for artworks) for Shade: Wrath of Angels.

Shade Tools - Layout


JB_HipsOffset
Shade-Game Tool. We have Motion Captured animations in our games (fortunately in all our games - we were lucky bastards), but the characters itself needed to be physics driven - obviously. So how to do it to have motion captured animation but still velocity driven entities? I actualy create linear path along the real one and then - by this script - alter the hips movement so main translation in the scene was done by the mesh (the master parent of the skeleton) and the rest of the natural motion was then computed and putted to the hips (by nature, the mesh was static and all translation and rotation was on the hips bone).
By this, you could have realy complex mocap motions (even drunk people turning around and falling) and you still get linear, easily simulated motion on the main mesh.
JB_Shade_CameraSave
Shade-Game Tool - Complete system that saves cameras from layout. Even that the Shade and Alpha Prime has brushed based levels, we were able to export the generated geometry, so we were able to does WYSIWYG camera flybys in Layout and then just export that motion to the game.. At the end, it evolves to JB_CutSceneSave, which saves whole cutscenes from Layout.
JB_AddPlayerPivots
Shade Tool - Add Shade weapon pivot to game character. Just helper. Adds all the pivots for props, weapons and other rig stuff to the plain skeleton. It was created mainly because I was lazy to always go back to the main setup, so this will create our main character setup from any game skeleton ;)
JB_Attack_Info
Shade Tool - Saves attack range info based on the animation and hand pivot. First we need that for being able to estimate average values and also for being able to fill all the ingame tables with those numbers. It gets height of the swings, rates, speed, lenght of the swings, times for start, hit and end of the swings and those boring statistics...
JB_Collision_Export
Shade Tool - Saves collision setups for game characters. We used collision sheres to detect hits in the Shade, so I wrote this to be able to visualy create (and then endlessly tweak later) collision spheres (real slightly transparent ones) over the particular bones and try to cover whole part into those in most possible poses. Then, it saves the setup for that collision spheres, in which bones they belong to, the offsets, sizes and other flags like body parts and damage weigt.
JB_CutSceneSave
Shade-Game Tool - Complete system that saves cutscene directly from layout. For Shade, I created all cutscenes in Lightwave Layout and saved them directly to our fileformats. For AlphaPrime, it then evolved and all Alpha Prime cutscenes was done in the Motion Builder. I then wrote scripts even for MB to, for example, process the camera switcher and export the camera cuts with from MB.
JB_Enforce_Coords
Shade Tool - Thias tool converts Layout positions of current selected item into Enforce coordinate system and open them in notepad for direct copy/pasting into level definition file
JB_EntLights
Shade Tool - This tool creates propper lights in layout based on the game map file. So we have same lighting in layout as in the game itself. First, I though that I will be able to generate lightmaps with radiosity and AO and soft shadow for the game, but then we scratch that idea (baking was so slow). But still I had same light in the Layout as in the game when I was creating all those cutscenes. That was cool ;)
JB_FirstLastFrameSetPreview
Shade tool - This tool looks at character root bone and sets the Preview first and last frame according to first and last frame on that bone. It's used for quick scene setup when lots of animations from Motion Capture is processed
JB_GiveHimSword
Shade tool - This tool add a sword to player's hand. We doesn't have other models in the exported scenes than the character mesh itself and his bones. The scenes was cleaned. So sometimes, I just need to quickly load the propper mesh, parent it to the weapon bone in his hand and - most importantly - set the pripper affset. And because there were few of them according to the actual weapon, I rather create this script to be able to forgot those number ;) The script remembers them for me...

Weird


JB_save/loadbonemot
It saves bone motion by one click - I was using it more like a clipboard to copy the motion from one item to another...

Others


Lots of other stuff
Through out the next years, I created lots of other scripts for Alpha Prime in Black Element, Centauri Production - I actualy reverse ingeneered their game-scene format and create complete wysiwyg import/export for it, then at Pragofilm/Bross for movie production of Saxana2 and finaly now at 2k games, where I'm working as a senior animator and sort of TD. Because I'm working with Motion Capture and mainly in Motion Builder, I'm scripting MB in python most of the time


Just a quick personal note - archijam: I'm not messing with anybody ;)