Pepperchrome

Tools

swirly lightwave logo
Lightwave
plugins for Landscape Architects and Architectural Illustrators and anyone else who wants them. 

Ground Those Objects plugin

lwsn Controller - manage your render farm


lwsn Controller - beta _14

Download lwsn Controller

lwsn Controller is a render farm controller that I developed using Python to provide a lot more flexibility than Layout provides. It features the ability to add or shut down render nodes without disturbing the other nodes still rendering. You can add or delete scenes to the controller while processing continues or even modify which frames to render. You can assign specific nodes to specific scenes and change assignments or use auto-assign during processing.

I call this beta software as it has only been tested by myself as yet although I have been using it with Lightwave 9.3, 9.5 and 9.6 and Vista 64-bit for several months without problems. That said, it is a work-in-progress and some features are incomplete; notably the estimated time to completion isn't right yet. I include an experimental screamer net remote starter that seems to work fine but hasn't been thoroughly tested.

This requires Python be installed on your computer and you must have a working screamernet setup. It was developed using Python 2.5 but 2.4 through 2.6 should also work. lwsn Controller is provided free to use and is open source. When you find a bug or want to make a suggestion please contact me but don't expect anything to happen very fast.

image showing typical useThis shows screen grabs of 4 nodes being added then 5 scenes added (creatively named A, B, C, D and E). 3 of the nodes are set to automatically assign themselves to the next available scene while one node is specifically assigned the 2nd scene (B.lws in the example) Scenes turn blue when they are finished. When nodes have no more scenes to render they return to the node Bank.

Usage notes: configuration is manual file edit right now, the button isn't finished. The download contains 5 python files zipped. Extract the files into any convenient folder and double-click lwsnController_14.py to launch. 3 files -lwsnController_14.py, tooltip.py and lwsnController_config.py are required. lwsnController_config.py is the file you edit to setup paths to lwsn.exe and other stuff.

When you launch the controller two windows open; one is a python text window I use for debugging messages and the other is the user interface you see in the screen shots. The order you do things isn't important (at least that is one of my design goals) but a typical pattern is to set the number of nodes you have running or plan to run, press go to open the node interfaces. Add one or more scene files. Adjust the frames to render with the force frame or skip frame buttons. Then click auto assign on each of the nodes that are 'Ready' and rendering should start.

By the way, if you hover the mouse pointer over any of the count numbers for 'Done', 'Needed', 'Assignable', etc a tooltip pops up with a list of frame numbers for each. These are helpful when using the force or skip frame buttons.

Each node has a specific number. If you already have say node #3 running via a batch file as described in the Lightwave screamernet documentation and adopt nodes from #1 to #6 by pressing 'go', 6 node interfaces will open in the node bank and #3 will be adopted, reinitialized and become ready to be assigned to a scene. Nodes #1,2 4-6 will just sit there not having found active nodes. If you set things up right in the configuration file, each nodes start button can launch a local lwsn node.

The 2 optional and experimental files are lwsnServer.py and lwsnServer_config.py. These go on a remote machine (each machine would have to have Python installed). For each machine where lwsnServer.py is running the start button for each node can launch a remote lwsn node of your choosing. If that doesn't work for you let me know and otherwise start remote nodes with a batch file as described in the lightwave documentation.

Ground Those Objects   

Download Ground Those Objects V1.6

This is a Lightwave layout plugin to move the selected objects along the world Y axis to the ground surface mesh you choose. I use it whenever the ground surface in my model is irregular like the real world and I have lots of trees or cars to position. It also can be used to set the y values of a camera or other object to skim over the irregular surface at a set offset distance. Tested with L6.5 through L9.6 - 32 bit only.

Original Features

Features added to Version 1.4

New Version 1.6

image showing cars moving to parking lotUsage Notes: The ground surface to place the objects on must be triangulated. Groups of objects can be organized into a hierarchy. Since nulls even if selected wont be moved (by default), use them to organize your parking lot or landscape planting. Grounding a full hierarchy of objects (both parents and child object)s together with the Add random heading option or the Rotate Pitch and bank option is unpredictable because the parent would be rotated which would move the child.


DialogueBoxIllustrationPre-select your cars, trees, or whatever. Run Ground Those Objects. The list box lets you choose your triangulated ground surface from all objects. After running Ground Those Objects, each of the selected objects will have been moved to have its Y value resting on the ground surface. Of course if your object isn't over the ground it won't be moved

The random heading option does just that and makes identical trees look a little different from each other.

The rotate pitch and bank option adjusts pivot rotation to get the four wheels of a car to match the slope of the ground triangle it is over.

The include hierarchy below selected items option is for when you have more than a couple of hundred objects to select. Lightwave doesn't handle extremely large selections very quickly. This gets the items selected without Lightwave needing to highlight all their handles with openGL.

If you put a 10 in the start frame and a 40 in the end frame options, you will get 30 key frames set for each object.