Hi all - I had about given up on Skelescripts as half a year had passed and I knew of only a couple of people who tried to use them seriously, but they have suddenly popped up on Flay and I've recently received many responses. If the feedback continues, I may resume work on them, but I would like to convert them to use Lua script instead of the modified LS-Commander style language they currently use. That means that Skelescripts will start looking a lot less like LS Commander, but on the positive side, you guys won't have to read through my poor attempts at teaching the language (there are official books out there to do this). It also means that I can do less maintenance work (just maintain and document the additions I make relevant to Skelescripts rather than trying to maintain and document the entire language). Lua is also a far more powerful scripting language and processes much more quickly.
The mac version at this time does not work with post-operative scene functions (for adding motion and item shape handler plugins), meaning that the advanced and intermediate rigs that have custom item shapes will not work until you remove the lines of code that call the 'add_item_shape' command.
You can download skelescripts for both windows and OS X versions of Lightwave 7.5 and above along with the rest of the Kung Fu Tools at the Kung Fu Tools page.
As of now, the mac version uses a local clipboard rather than using the global OS X clipboard. This means that mac users will have to import and export text files to copy scripts back and forth between external applications and the internal skelescript editor. If the mac version becomes very popular, I will look into using the global OS X clipboard instead for added convenience.
Important note for mac users: I haven't been able to test the post-operative scene modifications for Skelescripts v2.1 because I only have a license for the windows version of Lightwave. My CD came with a mac version which I've been using in discovery edition mode, but I don't think I'm licensed to register it - or am I?. Either way, I haven't tested the mac version with the scene-modifying features. If you find it doesn't work (try rigs like advanced_leg_setup or intermediate_skelescript_rig), then please contact me and hopefully I can work out a solution.
Video Demos
A timelapse video of skelescripts in action is available. It takes you through the process of taking a set of skelegons and turning them into skelescripts, converting the object from a basic set of bones to an IK rig. The video was recorded at 1.5 times the normal speed. Note: this video was recorded with version 2.0 and uses an out-dated technique of adding
select me
at the beginning of each bone to select the current skelescript bone. This is no longer necessary in the latest version, as it is done automatically.
Download the Skelescript Video (1.58 MB).
Note that this video is very simplistic and covers an extremely small set of commands. One question I've been asked about the tools is whether goals can be created at positions other than the pivot center of a bone. The answer is yes, and there are many ways to do it. If you look at the
create_goal
command in the reference guide, there are optional parameters which allow you to offset the position where the null is created. If you want to position the null with absolute positions instead of relative positions, you can also select the goal after creating it with
select goal
and then run the
Position
command to set its precise location. Another way to do this is to also avoid using the
create_goal
command which is just a shorthand for creating a null and making it a goal. Instead, you can write
set goal create_null("my_null", 0, 0, 0)
for instance, if you want to create a goal null that's positioned at the origin (0, 0, 0) in one line of code.
New
Here are some new timelapse videos that show the result of converting some of the skelescript samples. These videos do not cover the coding behind the rigs as in the video above, but I may release some more code tutorials in the future. These videos were recorded at normal speed (1X) at 1.3 fps.
advanced_leg_setup.obj conversion video (673 KB)
This rig was adapted from Michael Blackbourn's IK Leg Tutorial. I made 3 legs instead of 1 just for fun.
intermediate_skelescript_rig.obj conversion video (686 KB)
This is a simple rig I made. I'm not an experienced character animation so this rig is probably not so great, but the video demonstrates some of the new features available in Skelescript v2.1.
These videos require the techsmith codec which is commonly used for timelapse videos. You can download it for free at: http://www.techsmith.com/products/camtasia/codecdownload.asp.
Introduction
The Skelescripts project consists of tools that allow users to embed and process scripts inside of skelegons. The project revolves around a scripting language that enables users to create layout scene setups directly in modeler. The setups are also reusable, so an animator can take a character rig he created with skelescripts, for instance, and use all or parts of it for various other characters without re-doing the previous work. The script remains intact in the skelegons, so parts can be mirrored and cloned with the scripts duplicated as well. There are all sorts of fun things you can do with skelescripts, like create a sword on layer 2 and have it automatically parent to a character's hand bone when converting the object's skelescripts. See the features section for more details.
For practical reasons, I've decided to release Skelescripts as part of the Kung Fu Tools project.
The project came about through personal needs. I have been working on animation for a game that I've been developing as part of a school project. I became very agitated about the time and the amount of repetitive work that was required to create and re-use existing rigs. I found a lot of excellent automatic rigging setups on the net, but a lot of them were designed to generate specific rigs. I wanted a more general-purpose solution. I then came across Smartgons as part of the Auto Character Setup package. The idea sounded great, but I couldn't understand what was going on in the videos and since it was still in beta, I didn't want to purchase it as of yet. As usual, I became a bit overzealous and ended up trying to make a whole new project which everybody can use. This project takes a different approach from Smartgons by moving to a scripting solution similar to powergons as the means of creating scene setups in layout. This has its advantages and disadvantages. The advantage is the added freedom in what you want to do and how you want to do it. This is also the disadvantage: it is a little harder to learn and isn't quite as user-friendly.
While the main purpose behind skelescripts is to increase the portability and re-usability of rigs, they can also be used as general-purpose scripting tools (like powergons) for creating scene setups in modeler. Unlike powergons, skelescripts provide a more sophisticated scripting language, a multiline editor, and a manager to allow you to easily edit and manage scripts. See the features section to get a better idea of how skelescripts can work for you. While there are still a lot of things that cannot be done with Skelescripts (adding motion modifiers, for instance), it should be able to perform most, if not all, of the basic setup.
The Skelescript tools do not simply make up another auto-rigger.
They provide the means for you to create your own auto-riggers in a way that is efficient, streamlined, and highly re-usable.
Hopefully, as skelescripts become more popular, a lot of people will share their skelescript rigs. Even if you don't have any intention of creating skelescripts to generate rigs (or other scene setups), you might want to get it in order to be able to convert other people's skelescript rigs. Unlike auto-rig generators created in LS Commander, the rig generators created in skelescript can be used partially (you can take the IK arms, for instance, of a skelescript rig you like without taking the rest of the body just by copying and pasting the arm skelegons). You can also blend multiple skelescript rigs together by combining different parts (ex - you can create a centaur from a horse rig and a human rig without re-doing any of the previous work).
I'm confident that skelescripts can become a very useful and practical part of a Lightwave user's workflow. My dream is for the tools to become a very standard part of Lightwave with people sharing their skelescript objects and scripts as part of the norm. However, because skelescript is a scripting language that takes some time to master, I fear that many people might be reluctant (especially professionals, who I think can benefit most from it) to adopt skelescripts into their workflow. The skelescript plugins are the biggest and most ambitious plugins I've created yet for Lightwave. There has been a lot of hard work put into them, and I hope the fact that they are free will be appreciated.
If you find skelescripts to be useful, I would appreciate it very much if you can provide tips and tutorials for new users who might otherwise shy away from the scripting process. I'd also be happy to provide links to web tutorials and other external sites related to Skelescript. If you create any nice Skelescript setups of your own, I'd also love to host the objects on my site (provided that they aren't too large since I have very limited webspace). Feel free to also share your skelescript objects on the message board. I really need your help in forming a community around skelescripts if they are going to succeed, so I appreciate any small contribution from simple tips to full tutorials.
News
Version 2.1
Kung-Fu tools v2.1 has been released with many enhancements to skelescript:
- Fixed a crash that can occur when writing nested for_each commands in the windows version.
- New procedures: move_to_ground, lock_all_channels, lock_movement, lock_rotation, visibility, scene_name, scene_file_name, add_item_shape, add_gravity, add_simple_follower, __server, __server_collection, __scene_modification, __collection_text_impl, __addrotation_impl, find_element, size, empty_collection, rgb, rgb_to_float, sin, cos, tan, asin, acos, atan, sqrt, collection_text, is_null_item, has_selected.
- Support for item plugins (including motion modifiers and custom objects like the item shape handler) through post-operative modifications to scene files. The add_item_shape, add_gravity, and add_simple_follower are the only commands available to simplify the process of adding these plugins, but any kind of item plugin can be added using the internal __scene_modification command. Advanced scripters can take a look at the implementations of add_item_shape, add_gravity, and add_simple_follower in Skelescript initialization script to get an idea of how to support other item plugins.
- Enhanced transformation commands like AddPosition, AddRotation, AddScale, Position, etc. to call RefreshNow after transforming the selection. For those who aren't used to LS Commander, the RefreshNow command causes Layout to recompute motions and geometry. This is often necessary before parenting and so forth to make sure that previous transformations have been applied *before* parenting. While you could write more efficient scripts without having RefreshNow called every time an item is transformed, I think that practicality and ease of writing scripts should outweigh the performance benefits of writing more difficult code.
- Enhanced AddPosition, AddRotation, and AddScale to affect multiple items. With these enhancements, Skelescripts are, in some ways, even more compatible with LS Commander session scripts than LS Commander itself.
- You no longer need to write
select me
at the beginning of each skelescript to select the current bone. This is done automatically. This might be a little wasteful for times when you don't need to select the skelescript bone, but again, I think the ease of writing scripts should outweigh trivial performance advantages.
- Added new sample skelescripts: advanced_leg_setup.obj and intermediate_skelescript_rig.obj. The existing samples have also been enhanced to take advantage of the new version's features (the samples from the older version are still compatible, however, with this new version).
Tips for Beginners
Don't let Skelescripts intimidate you! There are a whole lot of procedures (especially when you look at the native layout command list), but don't get overwhelmed by them. Think of something you want to do and just look up the necessary commands, functions, and properties to perform that task. Learn only what you need to learn and, before you know it, you'll become a master of skelescript! Remember: you don't have to do entire rigs in Skelescript. For simplicity, you might want to let Skelescript just do part of the work and do the finishing work in layout.
Skelescript Basics
Because of the limited time I have to work on this project, the skelescript documentation may be a little difficult for those with little or no programming/scripting experience. Hopefully, as time passes, the documentation will expand to become more friendly to new users.
The best way to learn skelescripts is through a combination of reading and experimentation. After finding some interesting commands to try out, open up layout, create and select a bone, then fire up Skelescript Preview and try out the different commands on it.
Skelescript Features - a list of features uniquely available in Skelescript.
Usage and Installation - How to install and work with the Skelescript plugins.
Seeing Skelescripts at Work - Working with the sample skelescripts provided.
Skelescript Essentials - The essentials for writing skelescripts.
Advanced Skelescript
This section is still under construction. For those who are truly interested, check out the Skelescript Initialization Script. In it, you can find examples of how to define commands, functions, properties, variables, loops, and selections. None of these things are required to get the full layout functionality provided in Skelescript. They are used instead to help advanced users write more organized code that is easier to read, write, and maintain.
Variables and Constants
- defining your own named values.
Blocks
- self-contained bodies of code enclosed in braces.
Selections
- selectively processing a body of code.
Loops - Iteration
- repeating a body of code a number of times.
Defining Procedures
- defining your own commands, functions, and properties.
Skelescript Initialization Script - for advanced users, this contains the skelescript code used to define skelescript itself.
Skelescript Help
Reference Guide - Experienced scripters and programmers will want to jump right into this guide as the source for learning skelescripts. The guide lists and describes the global variables, named constants, commands, functions, and properties provided by the internal skelescript library. It can be very helpful to keep this reference at hand when learning new parts of skelescript.
Skelescript Message Board - A message board dedicated to the discussion of skelescripts. Feel free to post messages here on anything related to skelescripts including how to use skelescripts, suggestions on how to improve skelescripts, bug reports, tutorials, etc. There is also a chatroom included as part of the board. Hopefully, the board will grow to a point where it will become a primary source of information and help among users. I will also post a lot of my own tutorials, files, etc. related to skelescripts.
Coming Soon
- Speed optimizations: As of now, most of the functionality provided by the internal skelescripts library is written with skelescript itself rather than in C++. This allows me to rapidly develop and test the library. However, this has a major impact on efficiency. As the skelescripts library becomes more and more complete, I'll begin to convert a lot more of the procedure code into C++ for increased performance.
- A tool which will generate script code based on the current arrangement of objects in the schematic view (you can use the script as the lowest priority script in your skelescripts to properly a neat schematic view).
- Search functions to find and replace text in the skelescript editor.
Return to Kung Fu Tools page..
Return to main page.