January 14th, 2017

Lithium

Allow me to give you a short tour of Lithium’s current capabilities.  The tool operates out of a main window, which can be embedded in the interface, or free floating.  There are 3 sections, one for each node type (SceneNode, BoundingVolumeNode, ScriptNode).  A row of buttons at the top of the window is used to create these nodes.  Their initial parent, names, positions and attribute values are based on your current selection and the values you have set in the options window.  For example, if nothing is selected, the BV button will create a BV at the origin using the sizes and offsets you provided in the window.  If one or more SceneNodes are selected, each SceneNode will get a BV as a child, which is positioned relative to the SceneNode.  If the SceneNode has geometry under it, the BV will try to adjust it’s size to this geometry.  I hope to infer as much information as possible from the user, so that using the tool can be very powerful and flexible without needing tons of random buttons and options to explicitly specify.

Here we see BV nodes created on 2 SceneNodes.

bvShow_0002_Layer 8.jpg

bvShow_0004_Layer 6.jpg

Most of my work has gone into creating a system which can reference objects from other maya files.  It should be tailored to level creation type work, so these imported objects need to be instanced and copied all over the place.  Again, I want the user to do very little explicit specification.  The interface remains somewhat primitive, but the system works just how I want it to.  Rather than typing in a string for the object you want to reference, there will be a browse menu available, a “already imported” drop down thing and the like.  Adding these things is relatively simple, the hardest part is deciding how to organize the information in the window set up.  I think I’d like to start working hard on a game project again, and get a bearing for how I’ll end up using Lithium.  Then just add things as I want them.
This is a saved maya file called “player1.mb”.

refShow_0000_Layer 6 copy 4.jpg

I’m going to reference things from it into a new file.

refShow_0002_Layer 3.jpg

When you import an object through Lithium, it creates a reference to the requested file (should it not already exist), and hides it away.  Then, it creates an instance of the elements within the file you’ve asked for, and parent constrains them to the SceneNode that requested the import.  The actual instanced geometry remains hidden away from the current scene’s hierarchy, and does nothing but display itself.  The idea is that when this file gets exported to the game engine, these nodes with references on them will grab objects that have been exported from other files.  So if I have a city with many buildings, and each building has a ceiling fan, I can simply create a single fan and have that fan show up in all the buildings.  This saves me time, and improves game performance.

refShow_0003_Layer 2.jpg

Lithium makes it very fast and easy to create stuff.

refShow_0004_Layer 1.jpg

Lithium makes it very flexible and easy to change stuff.

refShow_0005_Background.jpg

Game worlds will be built with maya files that contain basically no geometry information.  There will be small files which define a specific thing, and many of those things get referenced by the level file.

ScriptNodes aren’t concerned with their world position or visual display, so this is hidden from the user.  I imagine ScriptNodes will be manipulated entirely within the Lithium window.  These are very game specific, so I don’t have anything besides their interface behavior defined yet.

Leave a Response



Copyright (c) Stolen Notebook, LLC
Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Comments RSS
| Post