• Portfolio
  • Private
  • About Me
  • Blog

KEVHAYES.COM

  • Portfolio
  • Private
  • About Me
  • Blog

Old Pipeline and Tools Work

Everything on this page is OLD pipeline work, most of it 3D Studio Max from my days at Bioware. When I moved from the UK in 2003 to join Bioware as a visual effects artist on Jade Empire I also started on my journey towards becoming the TA / Technical Generalist that I am today. This page, although it contains old work, is still valuable to me and hopefully anyone reading this as it is a good reflection of my development to date.

When I moved onto the Dragon Age project, after completing Jade Empire, I switched roles from Lead Visual Effects Artist to Lead Technical Artist after showing a natural affinity towards the more technical aspects of development and asset creation. At the time, the character pipeline was not very well developed, besides using an off-the-shelf solution for rigging "Puppet Studio" - originally developed by a Bioware employee. The export process was one-to-one, meaning one Max scene file for every piece of game ready content. This was going to get staggeringly overwhelming to manage when constructing complete and customizable armor sets composed of many separate parts. To deal with this I developed a tool called "Puppet Layers" that allowed the character team to store all armor sets in a single scene file and would export all the individual components to separate files for the game to make use of. A one-to-many paradigm that has ingrained itself in me and has shaped most of the asset pipeline tools I've built since.

The tool also kept track of VFX attachment nodes, Collision and most notably auto generated LOD - shown in the second video

Puppet Layers was a tool written to allow character artists to have all characters derived from a common skeleton type to be exported from a single scene file. This was done predominantly to accomodate the needs of Dragon Age where we had armor sets composed of 4 main components. Each Armor set had a number of levels of variation and a number of levels of 'toughness' and there were a huge number or armor sets. This would have amounted to a huge number of Max source files under the legacy export process which would have been difficult to manage and painful for the artists to work with. Puppet Layers eliminated this overhead of data and armor sets could be grouped in a more effective way into single source files and the export process automated entirely. The tool also provided concise validation so as to avoid build instability.

As well as managing individual components, Puppet Layers also had the capacity to decimate meshes to auto generate LOD. I also developed a system to handle bone reduction to coincide with each level of LOD and for the bones removed, the associated verts would be bound to the preceding joint in the chain. This proved to be very popular and a massive time saver.

The Puppet Layers tool also had the capacity to auto generate LOD models for any character components flagged within the UI. Each LOD derivative would have a decimated mesh as well as a optimized skinning using a sub-set of joints. The joint reduction was handled procedurally by specifing an 'end joint' after which joints would be removed from the skinning information and weighted to the precedding joint in the hierarchy. Twist joints were also eliminated from the skin.

The next series of videos demonstrate a system I built for sculpting hair on characters. This made use of Max's internal brush system that wasn't widely used at the time. Again this is 3D Studio Max 8 and pre-dated all the fancy instance painting tools and XGen stuff we have nowadays. This set of tools made it into a GDC presentation by Peter Woytiuk, a rendering programmer at Bioware, who gave a talk on rendering hair in games.

This tool was written to allow artists to paint hair geometry onto characters. Clumps could be defined within the tool and either randomized or painted uniformly accross a polygon surface. This tool was built prior to the introduction of to any mesh painting tools in 3D Studio Max 8.
This tool was written to allow artists to paint hair geometry onto characters. Clumps could be defined within the tool and either randomized or painted uniformly accross a polygon surface. This tool was built prior to the introduction of to any mesh painting tools in 3D Studio Max 8.
This tool was written to allow artists to paint hair geometry onto characters. Clumps could be defined within the tool and either randomized or painted uniformly accross a polygon surface. This tool was built prior to the introduction of to any mesh painting tools in 3D Studio Max 8.
This tool was written to allow artists to paint hair geometry onto characters. Clumps could be defined within the tool and either randomized or painted uniformly accross a polygon surface. This tool was built prior to the introduction of to any mesh painting tools in 3D Studio Max 8.

My tool also had the capacity to allow artists to paint splines, conforming to any kind of geometry (not just heads), that could be used to generate other content.

A sub tool within the Hiar Painting Tools allowed the artists to paint hair guides that could be used by the Hair Lofting Tools (written by a co-worker). The guides were splines created by the same painting interface with knots added at intervals set by the painting density.

Before the Graphite Modeling tools made it into Max, and before any kind of symmetry based deformation was implemented, I developed a range of tools to help artists work more efficiently with models that could not be cut in half and mirrored to propagate changes accross the model. Most notably, morph targets / blend shapes, where the original vertex order is critical to the integrity of the model. Initially developed as a tool that would allow artists to "snapshot" a model and process symmetry, this later became implemented as a modifier that was a lot more robust.

This tool was written to auto generate physics primatives based on user selection in the current scene. It would conform primitives to shapes in a best fit manner, by attempting to flatten the extents of the shapes bounds through rotating the shape in all 3 axis until all edge lengths of the bounding volume were as small as possible. The primitive would then be fit to the bounding volume and inversely rotated to match the original shape.
This tool was written to auto generate physics primatives based on user selection in the current scene. It would conform primitives to shapes in a best fit manner, by attempting to flatten the extents of the shapes bounds through rotating the shape in all 3 axis until all edge lengths of the bounding volume were as small as possible. The primitive would then be fit to the bounding volume and inversely rotated to match the original shape.
This tool was written to auto generate physics primatives based on user selection in the current scene. It would conform primitives to shapes in a best fit manner, by attempting to flatten the extents of the shapes bounds through rotating the shape in all 3 axis until all edge lengths of the bounding volume were as small as possible. The primitive would then be fit to the bounding volume and inversely rotated to match the original shape.
The Crust Tool was written to coincide with the VFX authoring system built for the Eclipse Engine at Bioware (used for Dragon Age). It allowed VFX artists to tag custom nodes in 3D Studio Max 8 with an ID / index (derived from an artist friendly name), that would be paired up at runtime with nodes tagged in a corresponding particle system. This was done to eliminate the dependancy on names / strings and allowed us to be much more flexible with attachments. Duplicate ID's would spawn duplicate particle system components allowing us to propagate an effect authored for a human onto a more abstract character in a predictable way.

Placeholder