3D Graphics

CGFX shaders

I’ve been playing around with CGFX realtime shaders and mental mill. Here are some basic first shaders. Mental mill makes creating this kind of stuff pretty fast, and you can edit the generated code by hand once you’re in the ballpark.

A simple realtime toon shader for XSI and Maya viewports.

Mach Studio Pro

I have been testing Mach Studio Pro for PLF for a while now, and while it’s a very new tool I am pretty pleased with it’s capabilities and potential. MSpro is an application which accepts scenes from most 3d packages (including Max, Maya, XSI, sketchup etc) and enables the artist to shade/light/render in realtime. Quality is high, with renders being competitive (and sometimes mistaken for) mental ray/vray etc in many cases. Being a realtime application there are caveats and limitations of course, for instance raytracing is not (yet) supported, nor are true radiosity/GI effects. Fair enough. And you’ll still need to render out vFX passes like particles and volumetrics in another app.

But most CG isn’t about all that – it’s about the basics and that’s where MSpro shines: on the 90% of the work you render which you can now do so in seconds rather than hours. It’s very liberating being able to light shots with immediate visual feedback, and MSpro was written with a fair eye towards being a production-friendly application with python scripting, linear lighting and HDRI workflow, output to open EXR as pass breakdowns etc.

This is clearly the direction the industry is moving and Mach Studio is not without competitors, but as a just-out-of-the-gate package they are off to a great start. And don’t get me wrong, MSpro isn’t just about the bare minimums… realtime microtesselated displacement maps aren’t basic, and realtime AO and SSS go a long way towards giving you the tools you need to create great imagery. In real time. No more waiting on farms. No more unpleasant surprises a day lat

Oops and Upcoming

An earlier version of the “Emit instances matched to SRT” compound had a bug which caused two instances to be emitted per object. My bad! the 1.2 version fixes this (all downloads from this site are now bug-free). Thanks to Lawrence Pankhurst for spotting it and letting me know.

Also a number of users have been startled when they use the compound in a simulated tree and see a continuous emission of instances. This is normal behavior – if you want a single copy of each instance master use the compound in a non-simulated tree to generate each instance. You can them simulate them in a second simulated ICE tree.

I’m currently out of the US and have varying connectivity as a result of travel until mid-September, after then I hope to release some more tools and compounds including the “self shadowing” compound many people have contacted me about on vimeo. Thanks to everyone for the interest and enthusiasim they’ve shown, I really appreciate it. – AM

Fragmenting objects for animation in ICE

Currently ICE has no provisions for creating or destroying faces or edges, which means we can’t create compounds directly in ice which for instance shatter objects. So what do you do if you need a “blastcode” type destruction effect in XSI? One solution is to approach the problem with XSI’s rigid bodies, but they have their own issues and it’s frustrating not to be able to leverage some of ICE’s power for this kind of thing.

The good news is that if you can create fragments outside of ICE you can use ICE instancing to go from pre-fragmented instance masters to ICE particles. For instance, build a brick wall out of individual bricks, instance them in ICE with the same SRTs, and do a rigid body simulation in ICE. Or in the examples below, use ICE to animate geometry fragments or polygons.


To achieve these effects I’ve written a script which extracts selected polys from a model and groups them as needed, and a compound which seamlessly takes a group of instance masters and creates identically placed ICE instances ready for simulation.

extractpolys_sam.js
Emit SRT matched instances

Test Images – Game Cinematic

A recent project caused me to explore XSI’s capabilities in the area of destruction by simulating a vehicle crash. The project was a lot of fun and I was working with a great crew, and this kind of effect is the sort of thing I love doing. I used ICE and RBDs primarily, unfortunately there wasn’t time for me to get into ICE deforms to the extent of creating travelling shock deformations similar to houdini cloth gags… but the effect came out well all the same. Here are some early test images where I was pushing ICE instancing to see how much ‘junk’ I could deal with and still have decent interaction. The answer? A whole lot more than I needed, with tens of thousands of instances simulated without my machine doing more than chug on occasion. Wow!

Car crash effect in ICE
Car crash effect in ICE

Flocking Tool

Recently there has been a lot of talking and experimentation with flocking in ICE. Kim Aldis and Brad Gabe have both done some neat implementations of flocking, and Phil wrote some impressive compounds early on to deal with not only flocking but similar behaviors like chasing, path/maze navigation and so on.

I found myself joining the bandwagon on my last project where we needed a quickly-constructed tool to handle crowds of flying dragons. It was suprisingly quick (hours not days) to implement a basic flocking system using simple cohesion, alignment and avoidance, as well as some path following and artist-driven steering.

Andy Jones had some great input into dealing with banking and vertical alignment, so I learned a lot making this tool. This is where ICE is at it’s best – rapid development of production solutions on the fly. Below is a result. (The video is intentionally zoomed out, when the project results are public I’ll update the article with more detailed images.)

Diffusion limited aggregation in ICE

Diffusion-limited aggregations are formed in nature as a result of particles of matter diffuse through a solution and are deposited onto surfaces over time, forming nodules or clumps. Examples are mineral deposits, depositions on electrodes during electroplating processes etc. It’s a relatively easy process to mimic in particle systems. I’ve created some ICE compounds which let me create aggregates with varying tropisims, deposition rates, separation and so on. Here are some results.