Place hi light tool

April 15th, 2013

Wrote this tool about 2 years ago at home, and later copied it into the DD’s lightpipeline package. The basic idea is simple:
Given an eye point, and a reflection normal, calculate the reflection ray.
Some lighters on my formal show( Ironman3 ) found this tool pretty useful, so I’d like to share.

How to install:

1. download:
2. unzip.
3. copy the into maya’s plugin dir.
4. copy the into user’s scripts dir.
5. In maya, select a camera and a geo you want to place the hight
6. run python code as:

import placeHighLight as phl

Since it’s the lightReflRay is a maya python plugin node, it can update the reflection ray “Real time”.
Hope people find this useful :)

if I had time, I’d write an AE template for this node. Also another output attribute(s) for the calculated the reflection ray’s world rotation xyz value would be great..

My favorite shot in Real Steel

January 29th, 2012

Real Steel is nominated for best visual effects in Oscar, yayyyyy!!
However, the competition is tough this year… so finger crossed :D

I loved the movie and really proud of being a part of it.
The following shot we called it “the burrito shot”, since the kid is eating burrito and chilling with Atom.
I felt in love with the plate of it at the first sight, and luckily enough finally got myself working on it.. anyway, here it is, click to play :)

burrito shot

New Reel is up

January 27th, 2011

Haven’t updated my reel for one and half years… finally updated it a little. The sad thing is the TRON LEGACY DVD is not out yet, so I don’t have too much TRON shots to put in… but anyway.. Enjoy :)

Enroute Visual Effect Breakdown

June 6th, 2010

Here is the breakdown for “Enroute”, a student film I worked on.

Enroute won 5 awards in the SCADemy awards at Savannah College of Art and Design.

• Best Cinematography
• Best Editing
• Best Production Design
• Best Graduate Film
• Best Visual Effects

Thanks Sandro Blattner put this together and thanks all the great work the visual effects crew have done.

En Route – VFX Technical Breakdown from Sandro Blattner on Vimeo.

Studio II project breakdown

March 14th, 2010

This is the breakdown video for my studio II/independent study project:

The detailed page for this is :

point cloud API and usage

Back from Digital Domain

January 5th, 2010

Just got back from Digital Domain internship.

The 3 months internship was awesome and I learned a lot. I got involved a lot of stuff and met so many awesome people that make things happen. I really appreciate the experience.

Basically I worked on one shot in Tron 2.

Wrote and maintained several pipe line shelf buttons(with python) to help lighters in my sequence.

Created and maintained the render template for my sequence (100+ shots)

Got into some Maya API stuff, and I will continue working on it this quarter.

Worked on some look dev for my sequence.

Thanks to all the DD folks!

Preparing for Siggraph

July 31st, 2009

I updated my demo reel a little bit, and kicked out some old stuff out of my reel.

Since I used the accumulated displacement technique in my recent centipede shot 02, I could remove this one below from my reel:

accumulated displacement

Hope I could get some good feedback  at Siggraph..

More about Occlusion(part III)

July 22nd, 2009

There is a siggraph 2002 paper talking about how the ILM uses “Reflective Occlusion” and “Bent normal” techniques to generate fast and reasonablely accurate fake GI passes for light.

First we start with a reflective occlusion pass, actually it’s very easy to set up in the mib_amb_occlusion:

ref occ

Reflective Occ shader set up

This shader set up makes sure we are using “reflective occlusion” instead of ambient occlusion.
The image below shows the difference of normal Ambient Occlusion and Reflective occlusion. Obviously the reflective occlusion is more rely on camera angle and the surrounding objects:

occ compare

compare of Reflective Occ and Ambient Occlusion

And below is the compare of a same reflective occ pass with 2 different reflection passes:

ref occ result

result of reflective Occlusion

Then, it comes to the bent normal part. The goal of using this technique is to get a flexible fake GI pass (or indirect light pass) based on the given environment image.

Before we use the mib_bent_normal_env shader in MR, we need to do:

a. Bake(use mib_lightmap_write) the ambient occlusion into texture, before that we need to UV the geometry properly , in my case is the skull  model, without too many overlapping areas.

b. Bake(same as “a”) the bent normal into texture, just change the mode from 0 to 2(world space ) or 3 (object space) in the mib_amb_occlusion shader.

Then set up the mib_bent_normal_env as below:

ref occ

mib_bent_normal_env set up

And the render of mib_bent_normal_env will look like a GI pass based on the env map we provided:

Here is the result:


result of bent normal render and usage with reflection pass and a key light pass

In the siggraph paper, mighty ILM people were using customized Renderman shader to generate the reflective occlusion, baked AO and bent normal, and shader to use the baked textures. I tested with Mib_ambient_occlusion instead, but the whole idea is pretty mucn the same.

Be to noticed: this technique is not suitablt for a deforming object, and dramatic camera movement may also cause problem because of the baked textures.

Originally I did this test just for a fake GI test for a student film project I am working on. But I also had fun while was playing this, which is important ^____^.

mib_bent_normal_env shader

A recent project

July 13th, 2009

centipede project shot01

centipede project shot01

Updates comming soon

More about Occlusion(part II)

June 17th, 2009

3D collab class I helped with

The shot above was from the 3D collab class I helped with last quarter.

Since there were all Animation kids in their class, they needed some VSFX help.

I helped them set up almost everything such as lighting, shading, render passes, and compositing.

And a interesting stuff for me was to set up the Occlusion pass with correct refraction in it.

Usually when render the occlusion pass, we exclude all the “glass” and any other “transparency” objects from the render layer.

However, the master layer has been rendered with all the objects(including the refracted objects behind the machine’s glass containner in the shot above), so when it comes to the Occlusion pass, if the Occlusion haven’t been refracted, the final comp will not look correctly.

There are two ways to add the occlusion into the master layer.

1. One easy way to do it is using Mental Ray’s Mia-x material, and turn on the Ambient Occlusion on:

AO in Mia material

AO in Mia material

And all the occlusions will be rendered in the master layer.

2. If user were not using Mia material, it will be a huge pain to change all the shaders to Mia materials..

So the second way to achieve the “occlusion with refraction” is to :

a. Assign the “miLabel” to objects in the scene.

b. Don’t exclude the glass container of the machine. Instead, assign a miLable to the glass such as 2, then set the mib_AO shader’s attribute “ID Nonself” the same as the glass’s miLabel(in this case is 2). When set up like this,  the glass container will not cause any occlusion to other objects in the scene.

c. Instead of connect the mib_AO shader to the surface shader directly, connect it to a mib_refract shader(can be found in the sample composition tab) like this:

use mib_refract shader

use mib_refract shader

set the Refraction value to 1(or lower than one for not 100% transparanted glass), and set the “Index of Refraction” value exactly the same as your glass shader’s IOR value in the master layer(You could even write an expression to connect this two values if you are geeky enough).

After this, we will get the “refracted Occlusion”:

Result of Refracted Occlusion

Result of Refracted Occlusion

Hope this will help.

A little more..

Also, with similar set up, we can play with Occlusion even more. For example, I created the model of the feathers by overlaping poly planes with transparency maps. And with proper set up, I can render the occlusion like this:

AO in Mia material

Feather AO by using similar set up

Give it a try if you want, it’s really fun ^______^.