Per-Pixel Anisotropic Direction
When dealing with anisotropic lighting models you often need to define the anisotropic direction. Usually it’s easiest to author your content to conform to some constant direction, like +U or -V in UV space. However, this is not always possible. This example shows how the anisotropic direction can be calculated radiating outwards from a specific point in UV space (the center, in this case). Obviously this is a simple case, but it illustrates a way to define your anisotropic direction on a per-pixel basis. Another way to do this is by...
read moreiOS App Icon Template
I came across this today when designing an icon for my iOS app. I thought "someone has to have made this easy." Sure enough, they did.
read moreUsing Eclipse with Maya: A Quick Reference
If you’re doing tools work in Maya and you aren’t using Python, PyQt, and an IDE for debugging… well… quite frankly you’re doing it wrong. There are a few guides out there that have helped me and others get this workflow going, such as this one from Nathan Horne and this one from Christian Akesson. You should definitely read both of those posts, because almost everything I learned about this topic came from these two guys. The purpose of this post is to shortcut the process to get this up and running as fast as...
read moreSpherical Environment Mapping
Sometimes it can be useful to have the sky to appear at infinity even though the geometry is really close, or perhaps you want to seamlessly blend near and far 3D elements with the skydome in the material regardless of position. Examples to...
read moreUseful Tools
I came across a few tools recently that are proving to be quite useful in my workflow. Not only are they free, but they actually work pretty well! Handbrake – An open source media encoder that’s great at mp4, the new web standard. Also has easy presets for iOS devices and a host of other targets. I found the UI to be simple and intuitive, and to produce better, faster, and easier results than Apple’s Quicktime Pro. CamStudio – I like Camtasia Sudio but the price tag is a bit much for me. CamStudio is a great free...
read moreBlinn-Phong vs. Phong (dirty rumors about the half-angle vector)
Most “standard” real-time lighting models are based on either a Blinn-Phong or Phong specular reflection model. Dirty Rumor #1: Phong is often touted as being more accurate because it uses the actual reflection vector, whereas Blinn makes use of the half-angle vector. I have seen several posts saying things along the lines of “you should use the hlsl reflect() function to get the true phong reflection instead of using the half-angle vector”. Seems reasonable, right? The funny thing is, it’s not! According to...
read moreLook out for Quiet NaNs!
NaN stands for Not a Number, and is “a value or symbol that is usually produced as the result of an operation on invalid input operands, especially in floating-point calculations.” My first experience with NaNs in CG was when I was working on Scooby Doo 2. I was simulating curtains on top of live-action footage in Maya using Syflex Cloth and rendering them using mental ray. I kept getting strange black specks in my renders (only a single pixel in size), especially while rendering with heavy motion blur. After doing some digging I...
read moreSome trouble with cubes and spaces
Today I had a pretty unexpected problem. In a full-fledged “wtf” moment, I suddenly realized that our cubemap reflection shaders have been utterly wrong throughout the entire development cycle. I don’t mean just a little incorrect, something that is a bit hard to discern. I mean like this wrong: Yeah. Don’t ask me how, or why. I can’t believe that no one has noticed this, or if they have, didn’t say anything! A bit annoyed at the interruption in my workflow (I thought I was about to whip out some animated...
read moreShader writing tools and resources
As Technical Art Director on our largest project, I’m doing a lot of shader writing these days. When we started out I established a core library of FX shaders the artists could use in the 3DSMAX viewport. These shaders were ported to the game engine by the Lead Graphics Programmer and have been used throughout most of development. Our work is now becoming more complex in the final months of the project as we are focusing on all sorts of effects to bring the world to life. I’ll be sure to create a post-mortem on the project when it...
read moreA little background…
Like most of my peers, I grew up on games. When I was just a little tyke my parents saw video games and computers as something special that would define my generation, or at the very least, keep us 5 kids out of their hair so they could do (arguably more boring) “adult things.” Whatever it was, I will always remember the TRS-80 and it’s cassette tapes from Radio Shack, our (several) Atari 2600′s we picked up with $0.50 – $2.00 games at weekend yard sales, our various varieties of Apple computers (IIe, IIc, IIgs),...
read more