Friday, December 13, 2013

70S Ribosome

Here is my finished image of the 70S Ribosome:

I created this piece with Maya, molecular Maya, After Effects and Illustrator. This was an exercise in learning more about molecular Maya and nParticles, and to create an informative molecular visualization using real data. The 70S ribosome exists in prokaryotes (i.e. bacteria and archaebacteria) and also in mitochondria. The two subunits clamp around a piece of mRNA and proceed to translate the genetic information into a growing polypeptide chain, reading from 5′ to 3′. Interestingly, the ribosomal RNA, or rRNA provides the catalytic function of the ribosome, rather than the protein components. The exploded view in the image includes a slightly longer polypeptide chain, since this “second” ribosome has translated more of the mRNA. This polypetide is beginning to fold, although this is artist’s representation, and I believe that folding (such as formation of alpha helices) actually begins in the exit tunnel within the 50S subunit.

I've copied the text for this post from our research group's site:


Thursday, December 12, 2013

Some particle experiments

I've been doing some experiments in Maya at work to get a better understanding of nParticles and molecular Maya. The first series involves creating chaotic molecular motion with random collisions. The particles here are not to scale (the water is huge and not plentiful enough) but it serves the desired technical purpose.

I've also been creating an explanatory still image of a bacterial ribosome. A screenshot of the piece in progress is below. You can see that these are large complex structures, and it's been really fun examining the structural data to determine where and how the molecules fit together. Most of that information is embedded in the pdb data, but I had to look elsewhere to see how the growing nascent polypeptide navigates through the exit tunnel. The final piece will show this better I hope. I also didn't have mRNA data, so I generated a RNA-like structure with nParticles converted to geometry.

If you enlarge the image, you can probably see that I'm working with almost 6 million polygons (not by counting; the number is in the upper left). But the viewport (thanks to the Quadro K4000) is still butter smooth, tumbling and zooming.


Saturday, November 23, 2013

New Job

Okay, some updates on life. After finishing my Master's at UofT, I had some vacation time, went back home to see family, and had some R&R at home in September. That was a really good break from everything; I read some books, played some video games, and just took a break from Maya and all that. I think it was the right decision, although it does feel pretty slow getting back into being creative and doing personal projects. Partly that is the adjustment to working full-time, which brings me, in this blog post, to the job I'm doing now.

I'm employed as a Research Associate (which feels like a bigger more important title than I deserve, but I'm eager to grow into it) at the Science Visualization Group at the University of Toronto Mississauga. There's just a few people in the "group" and we are starting out on a three year project that will involve creating, testing, and disseminating new visualization strategies for addressing common misconceptions in molecular biology undergraduate students.

It's a really great opportunity, because I get to be involved at every level of the research process. We're in the process of creating a simple wordpress site that will serve to share updates on our ongoing research, so I'll share that in the near future and also will probably link to pieces from time to time that I'm involved in.

Sorry, this will be lots of text again and no pictures... maybe I can find a TL;DR photo. Oh no, wait; I do have an image of me at work.

Am I doing Movember at this point? Hard to tell... but you can donate something if you feel so inclined here:

So, one of the awesome parts of starting on this project was I got to put together an amazing computer for doing intensive Maya simulations and things. Not to brag, but I basically got to choose every component I wanted (within a budget of course). So some of the specs are:

  • i7 3790k (six core 3.4GHz CPU designed for overclocking, which I need to try out at some point)
  • 32 GB DDR3 RAM
  • 256 GB SSD
  • 3 TB HDD plus 3 TB external backup
  • One of the biggest cases on the market so it's super cool and quiet. It doesn't look that big in this photo, but everybody that sees it in person is slightly amazed; you can look up Corsair 900D
  • Logitech G710+ mechanical keyboard which is a noisy joy to type on (sorry Andrea)
  • Logitech Performance MX mouse which is almost, but not quite as good as my MX Revolution at home (why discontinue it Logitech‽ <- interrobang="" li="">
  • ATH-M50 headphones which sound amazing but hurt the top of my head. Might need to mod them: (they're attached to the AUNE DAC I brought from home)
  • Two monitors 1920x1080 and 1920x1200... only problem is one is 27" and one 24" so the pixels are quite different sizes and it creates a weird visual thing when I drag windows from one to the other (one monitor is turned around and attached to another computer in the above photo because we're doing eyetracking testing on some existing animation)
  • And a huge steel-series mousepad which makes the mouse butter smooth :)
  • Oh yeah, how could I forget my first ever Quadro video card, the K4000, which is supposed to be excellent for Maya and other intensive computer work
So you can tell I'm pretty excited about all that hardware.

And, what else is there to say? Not too much, but I'm reading another book on Typography and I'm hoping to start some fun creative projects now. I've got a huge long list of ideas and it's time to stop doing so much planning and start doing so much doing.

Hope you're having a great weekend!


PS TL;DR photo

Tuesday, November 5, 2013

Interview with SimplyMaya

I had the privilege of doing an interview for SimplyMaya, a forum I have been a member of for quite a few years. I've also done a few tutorial reviews for them in the past. This time they had a number of questions for me regarding the BMC program and what it is like studying for scientific visualization. Check out the article here:

More updates on my work and my fancy computer and convocation coming soon!

Saturday, October 26, 2013

Breaking the silence

Phew! Made a post. Feels good. See you soon.

PS Since I started my blog, I haven't gone more than a few weeks without posting, and now a few months goes by! I haven't forgotten, but somehow the gaping lapse creates anxiety for posting, so this post is just to get that over with.

Saturday, July 27, 2013

Updated Demo Reel

I've just uploaded an updated and revised demo reel including some of the better shots from my master's project. Hope you enjoy it. Thanks again to PowersWithin for the fun music.


Friday, July 12, 2013

Recording the Illuminated Neuron - Final Project

My Master's Research Project and indeed the BMC program has come to a conclusion. Without further ado, you can check out the full project here:

Please watch the animation, (direct link: and if you can spare a little more time, feel free to play with the simulator too. I don't expect non-biologists or neuroscientists to understand most or all of it, but hopefully the visuals and interactivity are interesting.

Here's a couple of stills from the animation at very large resolutions. Feel free to download and use as wallpapers etc. (Edit: Okay, blogger apparently has a max res of 1600 on the long edge. Send me an email if you want a larger version... up to 4K).

Now I get to acknowledge everyone like an Oscar speech!
Thanks to Nick, Yves, and Michael (my committee), to all the BMC faculty, my 13 BMC colleagues (very good friends all), members of Yves' lab, my non-BMC friends, all you people that read this blog, and of course my family and Rebecca and God.

Woohoo! Done! What's next? Looking forward to a conference next week that I'm presenting a poster at. I do have some job leads and there is industry day at the end of the month. I'll keep you posted. This blog isn't going anywhere; it's been a terrific outlet for me these past ~4 years and it will continue to be that.

Thanks again everyone, and I hope you continue to check in here and see what the next stage will bring.


A lyrical tribute to BMC

Okay, I'll post up some materials from my MRP shortly, cause I'm done! But first I wanted to just put some lyrics on the page, cause why not.
Presenting: "A Tribute to BMC" to the tune of Paul Simon's Kodachrome (YouTube below, if you're not in the know, and if you are, you can still hit play and sing along). //comments (not lyrics) prefaced with double slashes.

A Tribute to BMC

When I think back on all the stuff I learned in grad school  //*ahem* stuff
It's a wonder I can think at all
And though my lack of fine art knowledge
Hasn't hurt me none
I critique the paintings on the wall

Bee Em Cee-ee-ee  //This is phonetic
You give us those nice bright colors
You give us the research methods
Makes you draw everyone's anatomy, oh yeah  //Provided they stand still
I got a Mac computer  //I don't, I have an ASUS, Corsair, Lian Li, Intel, Windows PC
I love to use the Photoshop
So summer, don't take my BMC away  //Or do, this is just a song

If you took all the art I made
When I was younger
And some of it looks decent, don't you think?  //Operative word: some
I know they'd never match
My sweet communications
And everything looks great in pen and ink  //Hyperbole

BMC  //This sounds the same as the phonetic spelling above
You give us that final gather  //Ambient occlusion would've been great, but... syllables
You give us the verts of Maya
Makes you put particles in all your shots, oh yeah
I got Adobe software  //A lot.
I love to break the picture plane
So summer, don't take my BMC away

Summer, don't take my BMC away (x3)

Summer, don't take my BMC //Sing it out!
Summer, don't take my BMC
Summer, don't take my BMC away

Summer, don't take my BMC
Got to find a job, you see
Summer don't take my BMC away

Summer, don't take my BMC
Summer, don't take my BMC away

Wednesday, June 12, 2013

RIN - Neural environments

Here's a couple still frames from shots that are of the neural environment in my animation. I went through a number of iterations of texturing and lighting setups to try to get a feeling of a dark, heavily populated space. I'm using small particles, backlighting, and shallow DOF to try to get something of a aqueous micro-environment. The particles are very de-emphasized because they shouldn't draw attention to themselves, but they are a subtle part of the animation.

This shows the long apical dendrites of pyramidal cells with astrocytes and interneurons interspersed.

The probe allows for photoconversion of fluorescent molecules.

Pretty much exactly a month left. Tick tock.


Friday, May 31, 2013

Luminance depth layer with mental ray

This is the first post in quite a long time that's not related to my master's research project (well it is, kinda), but I felt like I had to share this, because it resolves a pretty long standing issue that has bothered me. Hopefully it is of use to a couple other people as well.

First off, credit for this goes to this member of creative cow (all of six years ago):

Rendering a luminance depth (or z-depth) layer in mental ray so that it respects smooth mesh preview:

There are a number of ways to get a depth pass out of maya that I won't get into. I much prefer to use a separate render layer because it is so fast to (re-)render and you have much more control over the details, than if you use a render pass on a beauty layer. But the problem with using the luminance depth preset on a render layer is that it forces you to use Maya software, which doesn't respect smooth mesh preview, so your depth pass doesn't line up with your other passes (I'm referring to layers and passes interchangeably here). And if you switch to mental ray, the pre-built shader setup doesn't work when you batch render.

So, here is the shading network that will give you the exact same information as the luminance depth preset, but in mental ray.

1) Create each of these nodes and link them as follows:

a) samplerInfo.pointCamera > distanceBetween.point1
b) distanceBetween.distance > setRange.valueX
c) setRange.outValueX > Ramp.vCoord
d) Ramp.outColor > SurfaceShader.outColor

2) It doesn't look like it in the thumbnail, but the ramp should look like this (white on bottom, black on top)

3) And the final things are to change the Max value in the setRange to 1 (I think this might have been missed in the original thread). And change the Old min and Old max to the range you want the transition to be over. Use the distance tool to check the distance you want. You can key this as well, but it might be easier to do that in post, depending on the scene.
Update (28/08/2014): I have noticed that in some instances large world distance values don't work. Instead I have to divide the values by 10 or 100 to get a proper range. I suspect this has something to with camera coordinate space, which is what the samplerInfo is using, but I don't really understand it. Comments are welcome on this point.

4) And the actually real final thing is to put all your geo into a new render layer and give it a material override with this new surface shader.

5) And render.

And this is the difference between maya software and mental ray.

There is still faceting in the mental ray, but in that case you have the control, instead of being limited to maya software render. Let me know in the comments if it works for you, or if I've missed something.

And my render is done, so I'll jump back to maya now.


PS Okay, one last tip I'm experimenting with. nHair doesn't seem to work with this custom surface shader (there might be a way). The hair I want to be in the depth pass is darkish grey, so I've just added a directional light and increased the intensity until the hair renders at about the value I want. Nothing else is affected of course. Not super precise, but better than not including the hair in the depth pass. We'll see how it turns out.

Sunday, May 26, 2013

RIN - Grooming

A couple more rendered stills. I've got the mouse all behaving and rendered and I'm fairly pleased with it. I wasn't sure how the "glass" idea would actually work with a fully animated mouse. I did have to do some animation tweaks and re-rendering to fix some strange refractive issues, but overall I think it is successful. You'll have to wait to see the animated version for your verdict, but here's a frame (with some motion blur) of some grooming.

And I've composited the microscope with some closeups showing the action in the scene.

Finally, I'm blocking out another shot that's ultimately going to have lots and lots of neurons. These are just some pyramidal cells so far. (Neuron Builder v0.91 worked pretty nicely for this).

I've currently got several shots in various stages of the pipeline, so this week I'm really hoping to tidy up loose ends and get production really focused. May is coming to a close and so I've got just about a month and a bit left in production.


Tuesday, May 14, 2013

RIN - Microscope rendered

Here's a render from the shot featuring the microscope. It is emitting light that will excite GFP in neurons in a thin slice of brain tissue. I still need to do some compositing on this shot, but it's pretty close to done.

I'm also currently rendering out my animated mouse. Here's a playblast of him moving around:


Wednesday, May 8, 2013

RIN - Microscope model

For one of the shots I've doing this week, a thin slice of a mouse's brain will be examined under a microscope. This is one of if not the most complex model I'll be creating for my animation. I fortunately was able to find some great vector references for a Zeiss model (vector is the best when it comes to technical reference images). I modelled this over the past 2 days or so. I'm still experimenting with the best ways to present models. Something like this takes a bit of time to setup, render, and composite, but it looks a lot nicer than screenshots.

Clicken to embiggen.


Saturday, May 4, 2013

RIN - Continued

Still working away at shots and simulator functionality. I've got three shots in the middle of the rendering phase. Unfortunately mental ray is giving me some trouble on a couple of them, so just working out kinks there. Meanwhile animating my mouse intro shot:

And the simulator is starting to come together as well:


PS Apologies for the low quality jpegs. I just do that so my actual renders look a bit nicer in comparison. No, not really.

Monday, April 29, 2013

Demo Reel 2013

I cut together a demo reel with some of the shots I've been working on this past semester. I asked Minyan (aka PowersWithin) if I could use her music for it and she agreed. Hope you enjoy it.

You can watch in HD over at vimeo.


Thursday, April 11, 2013

RtIN - Mouse render

Work in progress render of my glass mouse. I'm liking how the brain looks, with a bit of wet-looking specular and subtle bump. Still need to work on the glass shader some and the whiskers. And the eye sockets.


Monday, April 8, 2013

Just a bit of Beethoven

As promised, here is a screen capture of my data vis project. It plays through just a segment of the first movement of Beethoven's sixth symphony, but hopefully it's enough to get the idea of what the project is all about. There's a ton more I'm hoping to do with this in the future. I've been rekindling my interest in classical music recently, so this has been a result and an stimulus for that.

I'd love to hear any requests for visualization of orchestral music in the next iteration of the "app".


Thursday, April 4, 2013

Mouse and music

I presented my music visualization piece yesterday. It looks at a piece of orchestral music and creates a visual representation of the notes for each instrument as the piece plays (in MIDI format). I'd like to share the interactive app in the future, but it's a bit limited currently and difficult to distribute. So for now you'll have to be content with some screenshots and in the near future I'll upload a screen-capture of me using the program.

You can also click on the various instruments to visually filter them so you get a clearer picture of what is happening in the music.

I've also been working hard at modelling, UV mapping and now rigging my mouse. It's been challenging for sure, and there's still a ton of work left to do on it. Sculpt, texture, blend shapes, paint skin weights, animate, light, render and composite. I feel like I can't take any shortcuts either, because this is such an important character in the animation.


Tuesday, March 26, 2013

RtIN - Shot #4 and a headless mouse

Here's a still frame from the shot that takes place directly after the walking dynein. The fluorescence is transported along the axons towards the brain.

 And I've started modelling a mouse which will be in quite a few shots, so I'm hoping it's going to be a decent looking mouse.

I've also been working hard on my music visualization project. I've managed to output cubes to represent Pachelbel's Canon. You can see the repeating structure in the bottom third which represents the repetitive cello line. Baaa bummm deee dummm. That one.

Busy times.


Monday, March 18, 2013

RtIN - Shot #3 video

Here's the animated version from my previous post. Hope you like it.


Sunday, March 17, 2013

RtIN - Shot #3

Here's a still from my third shot, animated. It's partly an homage to "The Inner Life of the Cell", but in my animation, it's about how scientists can get fluorescent dye into specific neurons. Here a dynein molecule carries a vesicle loaded with fluorescent dye up an axon.

I'll probably upload this shot to Vimeo, since I think it's pretty neat. Stay tuned.

Saturday, March 16, 2013

Data Vis - Sneak Peek

I'm rather excited about the data visualization project I've taken on. I'm just a bit worried it won't come together in the next couple weeks. Here's a sneak peek:

For those typographical fiends out there... fonts are just placeholders so far.

Thursday, March 7, 2013

RtIN - Second shot

The second shot I've rendered out for my neurophotonics animation shows a neuron firing as the probe enters the environment. It doesn't look very interesting to show an image of the electrical impulse, as it needs animation (and sound) to be believable. So that's why I'm only showing one still and no impulse.

I've gotten some good feedback on this shot from my professor, so I'll be making changes to the look and lighting for the final. But for now I'm working on another shot that takes place at the molecular scale.

I also recently scripted a very simple image plane creation tool, because I don't like using image planes attached to cameras, and it gets tedious to make a poly plane, scale it to the proper width and height, create new UVs, create a new material, add a file node into the color, and browse for the image file. This tool does most of that for you; you just have to enter the pixel width and height of your ref image, and after the plane is created, browse for the image file. If I was going to add more features, I would have a file browser at the get go, and try to read the pixel dimensions from there. But anyway, the script is here: (at the bottom of the page).


Saturday, March 2, 2013

Review of "The dark art of mental ray" Tutorial

The dark art of mental ray from SimplyMaya provides workflows intended to harness the power of render layers and passes to gain minute control over your renders. This frees you from the time-consuming process of tweaking your lighting and materials to absolute perfection within Maya.

The instructor starts by briefly covering the practical implications of linear and non-linear workflows. These topics overlap with the beginning of “PhysicallyAccurate Lighting in mental ray”. Linear lighting is an abstract concept and difficult to get your head around. This is compounded by the fact that there are numerous ways to tackle linear lighting (as with all things) in Maya. The methods given are decent, but I would have liked a bit more explanation for these, since I previously learned yet another method that makes more sense, to me at least.

The explanations of render layers and render passes are excellent. It can get very confusing when and where to use either render layers or passes, and the instructor provides helpful examples of getting results from passes, layers, and combinations of the two. Case in point, you can get ambient occlusion from a render pass or a render layer, but one of them gives you much more control. Also discussed here are layer and material overrides, accessing passes from the render viewer, selecting passes to rebuild a beauty pass, and a few pitfalls. This is important information for any serious Maya user to know.

As an aside, I find that rendering tutorials often use uninspiring geometry and scenes *cough* torus knot *cough*, and while that does get the information across, it becomes easier to imagine how principles can apply to your own projects when interesting and attractive examples are used, as in this tutorial.

I have never used Nuke before; this was my first look at it. I have quite a bit of experience learning complicated software, so it wasn't too difficult for me to keep up in the compositing sections. However, the tutorial does assume some knowledge of Nuke (and Maya), so I would not recommend this for beginners in either program. Linking the separate passes in Nuke to rebuild the rendered image shows how you can gain control over your render in post, especially with higher bit files. This is the main focus of the Nuke sections of the tutorial, i.e. linking nodes together to recompose your rendered image while gaining more and more granular control over each aspect of the image. The instructor doesn't go into depth on what attributes you can or should tweak in terms of color correction etc., but this isn't the aim of the tutorial, for better or worse.

In the same vein, creating separate render layers for each light (with associated passes) really gets to the heart of controlling your output. The Nuke setup gets more involved, but it is obviously worth the effort when you see the control you have. It doesn't stop here, as contribution maps can be built to break down the scene in terms of geometry and materials. More controlis the theme becoming clear? As contribution maps and light layers are dealt with separately, I admit I am a bit unclear on how they can be used in conjunction, for the simple reason that different types of merge nodes would have to be used in a specific order in certain groupings. Just a quick look at a network with both light layers and contribution maps would clarify this for me.

Requirements for even more granular control allow us to see how to output to custom render passes, a very helpful technique. Learning how to properly add ambient occlusion passes was another eye-opener. This is all about using mental ray the right way and to maximum effect. Finally we get to see how to create material id passes; I'm not sure how the method described compares to another method I've used with surface shaders as material overridesperhaps just passes vs. layers?

This tutorial is all about workflows for getting more out of your renders without endless re-rendering. It is abundantly clear that hitting batch render does not need to be the final step before delivery. Granular control without additional render time is a wonderful thing. But what is the cost? The instructor did not mention it, but I suspect it is disk space. Adding dozens and dozens of passes and layers adds up to eyebrow-raising file sizes. Each frame can quickly become very hefty, and even a short animation will be massive. But space is cheap and time is expensive; you can do the math.

One final thought: I am fairly confident all of the techniques shown in Nuke could be applied to After Effects, though it may be less elegant or quick to do. As I suspect more people are familiar with After Effects, I would be interested to see an addendum or short tutorial on connecting up a couple of light layers each with the required render passes. Plus ambient occlusion with the proper math. Regardless, this is an excellent tutorial that will make you think about rendering differently. I know I will be adopting many of these workflows in my current project, now that I've bought a couple more hard drives.

Thursday, February 28, 2013

Neuron Builder v2.1 (actually v0.8) - WIP

I've continued scripting the neuron builder I started in a previous post. I've had a lot of fun getting this thing working. It's one of the more satisfying things to hit enter and have thousands and thousands of commands execute spontaneously and immediately. I've posted some screenshots on facebook but if you're not on there, I'll drop them here too.

 Color coding the various projections and soma based on the neuromorpho standards.

A simple interface to start off with.

Organize the hierarchy with some simple naming conventions and check if materials already exist so the hypershade doesn't get cluttered up unecessarily.

Clean up the interface and add a link to hypothetical documentation in the help menu.

Add a radius multiplier to beef up tiny tiny dendrites. In retrospect, this wasn't that necessary, but it was a good exercise in learning some MEL.

And the current state of the situation. I've added the ability to input your own names and prefixes. There are some known issues and bugs, so I won't release it to the public yet. I'd also like to implement some more functionality to make it that much more useful. Right now it's little more than a way to get the data into the scene to use as a template. I would like it to generate usable curves and perhaps even geometry.


Wednesday, February 27, 2013

Data Visualization Project #1

This is a piece I created for the information visualization class I'm taking. I won't really explain it because if I've done my job, it's self-explanatory, at least with the text on the piece itself (as long as it's big enough to read).

Clicken to embiggen.


Tuesday, February 12, 2013

Neuron builder - v2 WIP

My supervisor showed me a type of data in a simple text format that encodes the branching structures of neurons. He thought it would be interesting to try to create a script that would import this data into Maya and build a 3D representation of it. I thought that was a neat challenge, since I was already trying to develop ways to procedurally model neurons.

This is where I'm at so far, creating simple cylinders from the data:

This is a section of the code. It's a bit tedious switching back and forth from MEL to Javascript for Unity, but I keep learning new things, and it's always satisfying to click a button and have hundreds of commands executed instantaneously.


Tuesday, February 5, 2013

RtIN - First shot stills

I've rendered out the first shot (not the shot that comes first in the animation). Here are a couple of stills from it. I aimed for a high-key, clean laboratory feeling. Despite rather lengthy render times, I ended up with some aliasing problems, so I'll likely be re-rendering at some point in the future. For the time being, I'm moving on to the next shot so I can continue getting assets completed.


Friday, January 25, 2013

RtIN - Petri Dish

A petri dish! I've modelled a bunch of other stuff but I haven't rendered out any WIP images yet. I could post screenshots, but I kind of like the higher production look, even if it means I post less often. Sorry :(


Thursday, January 17, 2013

RtIN - Monitor

Production for "Recording the Illuminated Neuron" has officially begun (well a couple weeks ago) and I've gotten something of a start on modelling. I've spent a bit of time working on getting a WIP rendering system set up so it's easy for me to render out and post WIP images. Still lots of opportunity to tweak the system but I'm happy with the results so far using sIBL from

I haven't decided whether I will want to post renders without wires or with, most of the time. Here are two with wires on top and one without.


Sunday, January 6, 2013

New year, new semester, treefrog

It's 2013 and I'm jumping back into the swing of things for the final semester of the program. How is that even possible? Everything is very much more scary this side of Christmas, but I'm really looking forward to it too.

I made this treefrog in ZBrush (Hyla versicolor). It's a screenshot, not a proper render (I need to figure out how to do that in Z). I'd like to do more animal and nature scenes in 3D, so this was a small attempt to get into that a bit more. There's still so much to learn, it's rather overwhelming. But it's fun.

Happy New Year,

P.S. I know I promised a Hobbit review before Christmas... but the plane landed before I'd written more than a paragraph, so I may or may not ever get round to finishing it. Sorry. Got to pick my battles.