Posts

Maya Expressions 05 - Random Values

Image
This video is also available on Vimeo. In Maya Expressions Part 05, we take a look at random numbers, how Maya generates them, and how we can use them in our expressions. Finally, we put it to use in a simple instrument indicator needle animation.

Great Article: Matthew Merkovich Says To Stop With The Crazy Tracking Markers

Matthew Merkovich Says To Stop With The Crazy Tracking Markers Today I came across a great interview with Matthew Merkovich on LesterBanks dated 2 years ago. He's a very experienced CG artist. Having spent many years doing matchmove, he gave some of his insights into the quirkiness surrounding the craft and many misunderstood practices that may not be applicable given the capabilities and accuracy of the software tools available to us in the present day. One of the points he raised is relating to the practice of placing red/orange crosses for markers during location shooting simply because they are told it is the best way to do things. On top of this, in the interview he also has a list of matchmoving dos and don'ts, advice and tips! Matthew also has a series of videos showing many matchmove tutorials. Follow him on Vimeo ! Tracking Marker Guidelines from MattMerk on Vimeo . As an artist that has been doing matchmoving for no small number of years, I am gla...

Foundary Post: How Data Analysis is Improving Matchmoving

Image
Today I came across a post on Foundary's website about data analysis and matchmoving . Alastair Barber tries to improve and speed up the pipeline with data analysis and algorithms while working with DNEG . Matchmoving is something close to my heart. I started my Hollywood film career as a matchmove artist. I'm also quite interested in machine learning, data analysis and artificial intelligence. Thus this article grabbed my attention. It seems that DNEG is a great choice for data analysis, having accumulated 20 years of production data. The article does not have specific mention of how the result of the analysis is helping to speed up the process of matchmoving, but we know for sure that something is happening in the field of data and the VFX production process. Graph source:  https://www.foundry.com/trends/business/matchmoving-big-data However there is one concrete thing I find fascinating in the article. This graph in the article actually gives an overview ...

My Works: TV Commercial

Image
Here's a TV commercial I was involved in last year, while at VHQ. This TV commercial was for JD.com. Almost the whole of the TV Commercial team and Film team were involved. I helped in look-development of Cyborg, especially in texturing, shader creation and lighting the asset. I was also involved in tweaking textures and shaders for Aquaman's asset. Also, I helped in the texturing, shader and look-development of the swordfish and the car that got crashed. For texturing, I used Mari. Rendering was done with Arnold in Maya.

Maya nParticles Intro - part 02 - nParticles Filling a Cup and Pouring Out

Image
This is a continuation of my Maya nParticles introduction. In this video, I talk about the workflow for: 1. how to create nParticles filling up objects, 2. how to get nParticles to react and collide with animated geometry 3. how to convert nParticles to mesh geometry. By the end of the lesson we will have a cup filled with particles, reacting to a stirring object, and then having the cup tilt over and pour out the particles.

Maya nParticles Intro - part 01 - nDynamics Objects Interaction

Image
In my latest video I give a very brief introduction to Maya's nDynamics system. in it, I show how straightforward it is to set up a scene that contains an nParticle system, an nCloth object and an nRigid geometry, and have them all interacting with each other.

Maya UI Layout Example

Image
In reply to another StackOverflow question , I wrote 2 blocks of code that shows 2 UI layouts created with Maya's UI framework. First one looks like this: This is the code that created this first one. import maya . cmds as mc def buildUI (): winName = 'myWindow' winWidth = 200 # set a target width and reference this when you specify width if mc . window ( winName , exists = True ): mc . deleteUI ( winName ) mc . window ( winName , width = winWidth , title = 'Test Window' ) # i always have keep a reference to the main columnLayout mainCL = mc . columnLayout () mc . text ( label = 'text row 1' ) # tmpRowWidth controls the width of my columns in the rowLayout # with reference to winWidth tmpRowWidth = [ winWidth * 0.3 , winWidth * 0.7 ] mc . rowLayout ( numberOfColumns = 2 , columnWidth2 = tmpRowWidth ) # at this point our UI pointer is under the rowLayout mc . text ( label = 'row colu...