Create an Atmospheric Snow Shot in Nuke and Maya

In this tutorial, we’ll be using Nuke's 3D System to
take a still image and turn it into an atmospheric shot with camera
moves and moving elements. We’ll also be going over how to
replicate some camera attributes such as grain as well.

The technique shown has been used on a lot of feature
films, and when done correctly, it can result in a good looking image
in a short amount of time.

Note: If you'd prefer to follow along using high resolution Images. You can download them below:

1. Find and Undistort your Image in Photoshop

Step 1

Find an image, preferably square buildings and
something that has depth, as well as finding something that is a
high resolution.

Open
your image in Photoshop by going to File>Open.

Step 2

With your image in photoshop, we now need to go to Filter > Lens Correction.

Step 3

With the Lens Correction screen up, click and hold the
left mouse button and drag in and out of your image until your lines
are as straight as you can get them.

Step 4

To get the image out of Photoshop, go up to File
again in the top left and hit Save As.

Step 5

Change the format to Targa
(.tga) and name your image, then click Save.
Now another box will pop up but just leave this as is and hit OK. (I
also then painted out a small part of one of the buildings, as I
wanted to reveal more of the building in the
midground.)

2. Create your Geometry in Maya

Step1

Create a camera in Maya. To do this click Create
in your top tool bar then go down to Cameras
and finally click Camera.

Step 2

Project this undistorted image by placing it in the image plane
option.

Now we need to put our undistorted image through our
camera, so that we have something to line our geometry up with.

Click
your newly created Camera in any viewport to select it.

Look to the right of Maya's interface and click the Attribute
Editor on the side, if not selected already.

Step 3

Scroll down in the Attribute Editor until you see the
label Environment.
Click the arrow next to Environment and
click the Create
button.

Step 4

Load your undistorted image into the camera by clicking
the Folder Icon to the
right of Image Name.
We are loading this image through the camera, as this is the camera
we will be using to project the image through in Nuke.

What we have
just done is set this up in Maya, so that we know where our geometry
needs to be in order for the buildings to be projected correctly
without warping.

Step 5

Move the camera so that the ground in our image is
lined up with our Reference Building in Maya. So that we can start
creating our projection geometry.

Create a Cube by going to the top toolbar again and
clicking Create > Polygon Primitives > Cube.

Step 6

Change one of your viewports to look through the camera.
By clicking Panels > Perspective > Camera.

Step 6

We need to check what our units are, as ideally we want
to have our geometry as close to the real world scale as possible in
order to get the correct parallax and depth.

To do this go to the top toolbar and click Window > Settings/Preferences > Preferences.

Step 7

A preferences box should pop up. We now need to go to the
settings category on the left side. Under the Working Units section, next to Linear will be your units. I’ve
changed mine to Centimeters, but change them to whatever you feel
comfortable in guesstimating lengths in.

Step 8

As I didn’t know the location or scale of buildings I
just eye balled a rough scale for the building and scaled up my cube
in order to give it the size that I estimated. In order to scale up,
select the Cube and in
the Channel Box/ Layer Editor adjust
the values in the Scale attributes.

Step 9

Now we need to pick a reference building, ideally we
need something that is near the foreground that we can see most of
it’s edges.

We
need to move our camera to fit the geometry to our chosen reference
building. So hover your cursor over the Camera viewport and hit the
Space Bar to maximize
it. We can hold down Alt and
either Left Click to
Rotate or Right Click
to Transform and adjust
our camera to fit the building to our geometry.

Step 10

If you can’t get the building exactly lined up, you can
push the vertices around to help with this. Do this by selecting your
geometry and Right Clicking on it and selecting Vertex
from the pop up menu.

This will now allow you
to move the vertices on the corners of the geometry, giving greater
control (make sure not to move the vertices too much, as this will
distort the geometry into a weird non-building like shape, which may cause
problems later.)

Step 11

Once finished we need to export the geometry to a format that
can be read into Nuke. To do this, select all your geometry and your
projection Camera and click File > Export Selection.

An export box should now pop up. Change the Files
of type to FBX export
and name your geometry, then hit Export Selection
and we’re onto Nuke!

Note: Keep Maya Open as we will need to go back and forth
to check geometry names.

3. Setup your Projections in Nuke

Step 1

Read in your undistorted plate by hitting (R)
and browsing to your undistorted image that we exported earlier.

Step 2

We need to degrain our image so that we can apply moving
grain to the the final shot. This will give the look of it being shot
as a video, rather than a still. To do this select your Read in image then click TAB, type Denoise and press Enter.

Step 3

You should see a message on the top of your viewer
asking you to position the analysis region over a flat area. Ideally
we want to position this area over somewhere mid to dark grey, so I’ve
chosen some buildings in the midground.

It will update the viewer to
give you a preview of what the degrain outcome will be, so you can
compare different areas of analysis to the original to see what gives
you the best outcome. As we don’t want to soften our image too much.

Step 4

The Denoise node is a heavy node which means that it
takes a lot of computer power to work. So in order to help this, we
render out our degrained version and disable the Denoise node. Select the Denoise node, hit TAB
and type Write and then press Enter.

Step 5

We now have our Degrained Plate to start setting up our
projections from. As we are dealing with a projection we can’t
push the camera move to much, as the camera parallax will cause
parts of the buildings unseen in the photo to now be seen.

In this shot we are going to pan the camera down
slightly, which will still mean we have to extend the buildings,
however only a small amount. And we are only showing more of what is
already seen, which means we can clone what we already have in the
image.

Step 6

With our newly made Roto node we now need to start
cutting out each building, so that we have them separated to project
onto their correct geometry. So start by picking a building and begin
rotoing. Bezier curves
are particularly good for buildings which can be selected on the
right hand side underneath the Fountain Pen tool.

Step 7

We need to put a Paint node in between our backplate and
our Roto node, so that we can extend our building to accommodate for
our camera move. To do this, select your Degrained Plate and hit P which
is the shortcut for Rotopaint.
Now select the Clone Tool.

Step 8

We need to paint in the parts of the building that
will be revealed when the camera moves. This will be a back and forth
process, as you may need to go back and paint more building in
depending on your camera move. So for now lets paint in what we think
we’ll need. I need to paint a little building into the bottom and
extend my roof.

Since we have extended our building we need to adjust
our roto shape to fit our new paint work in, so adjust where
necessary.

Step 9

Now we need to load in the geometry that we want to
project our newly painted building onto. Select your Roto node and hit TAB,then
type ReadGeo and hit
Enter. Then press the
Folder Button in your
Read Geo node and navigate to the .FBX file
that we exported out of Maya.

Step 10

Now we need to load in the geometry that we created for this
building to be projected on. So go back to Maya, click the geometry that
is in the place of the building to be used to project that building
onto. Remember the name of this geometry, so that we can see what
piece of geometry we need to load into our ReadGeo node.

Now
that we have the name of our geometry, go back to Nuke and Double Click
your ReadGeo node to
bring up it’s properties panel. We need to select this geometry,
so click the light grey drop down next to Node Name and select your
geometry for this building.

Step 11

We now need to import the camera that will project our
image onto the geometry. So to create a camera hit TAB
and type Camera, then
hit Enter. Now that we
have our Camera node, hit the Folder Icon and read in your .FBX, as
well as selecting your Camera in the Node Name drop down. The same as we
did for our geometry.

Step 12

Now that we have our imported camera we need to tell
nuke what to do with it. As we want to project through it, we need to
create a Project3D node and plug it in between our Roto and ReadGeo nodes. So as usual select your Roto node,hit
TAB and type Project3D,
then hit Enter.

Drag and drop the Cam Arrow
onto your Project3D node
onto the Camera to
connect it. We’ve just created our first projection!

Step 13

As we’re going to be creating more of these setups for
all of our buildings, we need to create a Scene node which will place
all of our setups into the same 3Dscene. So just select your ReadGeo node, hit TAB and type Scene to create a
Scene node.

Step 14

We need to render what we have out into a 2D image. Select your Scene node, hit TAB
and type ScanlineRender. Now
the renderer needs a camera that will be shooting our 3D scene. I
put a Constant node in set to 1920x1080 to set the format of our
image. Hit TAB,
type Constant and set
the format of it to HD.

We already have our Camera node, however as
we will be wanting the camera to move at a later date, we need to
copy and paste this to duplicate it and plug it into the cam arrow.
As shown in the image.

Do the same for all the other buildings and plug there
ReadGeo nodes into the Scene node that we
created.

Step 15

Now
that we have our 3D scene setup, we need to create our camera move
otherwise we’ll just have an image that is a duplicate of our
photo. To do this we need to move our Camera plugged into the
Scanline Render node.

Select the Camera plugged
into the Scanline Render nodeand
click in the Label box in order to change the name to
Render_Cam.

Step 16

Hover your cursor over the viewer and hit TAB to change
into your 3D scene.

Step 17

At the moment we’re unable to move the camera as our
node is reading the translation from our fbx file. So we need to
uncheck the Read from File box in order for us to be able to move it.

With this unchecked you have access to the translation
tool in your 3D scene so you can create your camera move. However we
need to think about how long our shot is going to be, so we can work out
where to put the keyframes on our timeline.

I chose to have a 3
second shot (72 Frames) as I wanted a piece that lasted long enough
to have in my showreel. It’s up to you how long you want the
shot to be, though just bare in mind that we can’t push the camera
too far, as it means we'll have to paint more of the building work in.

Step 18

Set a keyframe on the first frame by clicking on the timeline
underneath your viewer and Right Clicking on the icon next to
Translate and Rotate
in your camera settings and selecting Set Key.

Step 19

Go to the frame where you want your shot to end and move
the camera, either in the 3D viewer
using the arrows or by adjusting the numbers in the Camera
Preferences. This takes a fair bit of
adjustment and it can be useful to create a new Viewer node set to the 2D view, so that you can see
what your camera is seeing.

Step 20

Step 21

Since we have chosen our frame length we need to set our
project settings. We should generally do this at the start of the
project, however as we had not decided on our frame length, we are going
to set it now. So put your viewer in the Preferences
Bar to the right and hit S.

Step 22

Now we need to change the Frame
Range to our chosen frame range, our FPS
to 24 and the Full Size Format
to HD 1920x1080.

4. Adding Depth

We now have our scene setup so it’s time for the
finishing touches. As with all shots the last 10% can take just as
long as the previous stages, if not longer. However it’s these
touches that make your work stand out and push the idea as far as you
can.

I
choose my photo specifically for the fact that it suits smoke and
haze in the distance as well as snow, plus as it’s clearly a cold
night I could add smoke coming from buildings. It’s these little
touches that give life and personality to a shot.

Snow

Step 1

In order to add the snow to my scene I first found
royalty free stock footage of snow on Youtube with movement that I
liked that had also been shot against black. We now need to get our
footage into our 3D scene. So that we can place the snow around much
like a theater set. (It is important to convert your snow footage into
an image sequence to be sure that it loads sufficiently in Nuke.)

Step 2

We need to get our footage into our 3D scene. To do
this, select your read in snow footage and create a Card by hitting
TAB, typing Card and then pressing Enter. Now attach your Card to your Scene node that we attached our buildings to.

Step 3

As you will see our card is all solid color rather than
just the snowflakes. To fix this we need to give our snow image an
alpha and premultiply it so that just our snowflakes are visible. So
select your Snow image sequence again, hit TAB
and type Shuffle.

The Shuffle node allows us to shuffle channel
information into other channels. We want to shuffle the red channel
into the alpha, so tick the bottom box under the R input to do this.

Step 4

We now need to multiply our alpha with our rgb channel
values. The black areas of the alpha have a value of 0 and white areas have
a value of 1. So 0 multiplied by any value is 0 which creates a
transparent effect.

With this in mind we can use the Grade tool to
adjust our alpha in order to give our snowflakes an alpha close to 1.
If you need to fix your alpha, select your Shuffle
node, hit TAB
and type Grade. Change the Channels to Alpha
so that we only affect the alpha channel.(You
can sample your pixels by holding down Control and moving your cursor
over the viewer.)

Step 5

We’ve fixed our alpha! So we’re ready to use aPremultiplynode to multiply our alpha by
our rgb values.To do
this math we need a node called Premultiply. So select your Shuffle
node, hit TAB and type
Premultiply. This
node needs no changing so just leave it as is.

With our footage fixed so that the parts we want are
solid and our footage is now on a card that we can now move in the
3D scene. We can start placing the snow around our scene.

With our Card selected, hover your cursor over the viewer and hit TAB
to go back to our 3D scene and then move your
snow into position using the arrows, or the translate values in the
toolbar.

We can scale up the cards using the Uniform Scale slider.This will also scale up your
footage, so remember to keep all your cards at a consistent scale so
that your snowflakes remain uniform.

Step 6

We are going to need to have snow in the background,
midground and the foreground in order to create a realistic look and
sense of depth to the snow. So attach another Card node into your snow footage
and move it to a different place than the previous one.

You may have noticed that our snow all moves the same as
we are using the same image sequence on all of our cards. We can fix
this by using a TimeOffset node, this node offsets our start frame. So in order to give the snow a
natural feel, I used a TimeOffset node and offset my footage forwards
or backwards by a random number of frames before connecting it into a
card.

It’s now a case of repeating this procedure so that
you have your scene covered with a sufficient amount of snow.

Moving Cars

In order to add some life into my scene I decided to add
some moving cars.

Step 1

In order to create our moving cars, we first need to
cut them out from our image, so select your denoised image, hit
TAB and type Roto.
With the preferences open, change your Output
to Alpha, select Bezier on the left hand side and start
drawing around your shape.

I’ve feathered the edges of my roto where the
headlights are. To do this, hold down Controland
click and drag
a point, this will give it a nice falloff.

Step 2

We now need to premultiply our image with the alpha that
we’ve created. So with the Roto node selected, hit TAB
and type Premult.

We need to put our premultiplied car on a card
in order to put it into our 3D scene, just like we did with the snow. So
with the Premult node selected, hit TAB
and type Card. With the card in the scene, connect it into the Scene node so that we can
see its location. And move the car into place within your 3D scene
using the translate arrows. (Quick
Reminder: to flip between your 2D and 3D
scene, hit TAB with your cursor over the viewer.)

Now we can either animate the card, in order to give
the car movement within our scene, or this is a good opportunity
to show you a new node called the Transform Geo node. The Transform
Geo node does exactly that, it allows you to transform any geometry that
it is connected to. So hit TAB
with your Card selected and type TransformGeo.

With
the preferences open, Right Click
the box next to the Translate bar and hit Set Key (Make sure you’re
on the first frame in the timeline.) Now go to the last frame and
move your card (using the translate arrows in your 3D viewer) into
the position where you want your car to end up and set another key.

Grading

Step 1

After scanline we need to grade our image before we add
our finishing touches to the shot. To do this, we can use a few
different nodes, but I prefer the Grade node.

I
wanted to add some blue into my image, so I hit the color bar next to Multiply and added a small amount of blue until I was happy with the
grade.

Step 2

I also dropped in some Transform nodes (Tab > Transform)
in order to scale up my image and shift it into place slightly.

5. Finishing Touches

In order to create a realistic looking image we need to
replicate attributes that are associated with shooting through a
camera, one of which is camera blur. So to replicate this we need to
do the following.

Motionblur

Select your Transform node, hit TAB
and type VectorBlur and
set the UV Channels to Motion. You can adjust the Multiply option in
order to adjust how much motion blur is applied to the image, so
tweak this value until you get the desired outcome.

Lens Distortion

Because the shot had such a quick turn around there was
no camera lens reference, so I just added a slight bit of distortion
to enhance the believability of the image.

To add lens
distortion, select your VectorBlur
node, hit TAB and
type LensDistortion. With
the node created adjust the values in Radial Distortion 1 and 2 until
you get the desired effect (you only need small values here.)

Grain

Now we’re almost done with our shot, so the last thing
to add to our final piece is grain. Grain is more apparent in dark
areas of an image so in order to replicate this we need to create a
mask.

Step 1

Select your Lens Distortion node and as always hit TAB
and type Keyer. This
node will allow us to pull a key from the information that we have
connectedto the node.
So with your Keyer preferences open, place your mouse over your
viewer and hit A in
order to view the alpha channel that we are going to be generating.

Now drag the two bars one from the left and one from the right, until
you start to get a nice contrast between your dark areas and your
light areas. We don’t want anything pure white or anything pure
black in our alpha.

Step 2

This node
will apply grain uniformly over the whole image without our alpha, so
make sure that the Apply Only Through Alpha
option is ticked, as well as Invert Alpha
in order to increase the amount of grain in the dark areas. Again
adjust the settings of your keyer to get your desired effect.

Step 3

All that’s left to do now is Write out our finished
shot. So select your Grain node, hit TAB for one
last time and type Write
and then press Enter. With the Write node's preferences open, hit the Folder
icon next to the file bar and locate the place that you want to save
your files.

We are
going to be rendering out an image sequence. So we we need to put
some # symbols after the name. This represents your frame number values, for instance if I put three ###, I’ll get 001 on my first frame.

We then need to tell Nuke what file
type we want to write out. I used dpx, so type .dpx
after your title and ###. So you should have title###.dpx. The other defaults are all fine so we can
now hit Render.

Another box will now pop up, check the Frame Range and
hit OK and you're done!

Conclusion

Over the course of this tutorial you have learned how to take a simple still image and turn it into a great looking shot with plenty of atmosphere using Nuke's powerful 3D system and Maya.