antiform Mon, 04 Mar 2019 11:02:17 +0000 en-US hourly 1 Nuke tips – cleaning out crap Wed, 01 Feb 2017 11:50:15 +0000 Removing dirt or tracking markers semi automatic!

In an attempt to make this site come to life, I’ll post some quick tips now and then. So here’s the first attempt.

Not seldom does shots land on my desk with blemishes like dirt on the lens. This last one was particularly bothersome, since it featured a zoomed-in eagle, a changing background and a lens full of water droplets.

The droplets are static, which makes everything easier. But since the background is changing so much, a paint node with cloning brush strokes didn’t work at all. Trust me, I tried it.

But there is a way to fix this, and getting pretty consistent results. Enter a free plugin called “Extend Egdes”. It is meant for cleaning up scruffy greenscreen edges, and what it does is to extend the last pixel before a matte, and repeating it outwards.

So, I already had a matte from the clone brush attempt, so I set the output to none and premult by alpha to get the strokes out as a matte I could use.

Now for the trick: Extend Edges is built for extending edges outwards, but we need it to go inwards. Here’s how to trick it into doing what we want: Branch of the alpha from the paint, invert it and shuffle in the orignal RGB from the plate. Premultiply and apply Extend Edges. Extend it as much as you need. Shuffle the original, non-inverted  alpha from your paint node in again, and premult again.

Now you’ve got a plate with spots defined by the alpha, colored by the last pixels surrounding the orignal spot. Blur this to get a smoother color, regrain them to match the origial plate and merge back over the spotty plate. Voila!

Since this is a bit of a hack and Extend Egdes probably wasn’t written with this technique in mind, it is very crash-prone, so save like there was no tomorrow, and disable Extend Edges until your roto/matte is complete. It will render fairly fast however, as long as it doesn’t crash. Good luck!

DIY v02 -sewing Fri, 05 Aug 2016 11:56:53 +0000 So after finishing the mini ramp I needed another project –
How ’bout taking up sewing?

More to come – equipment, patterns etc.

Building a backyard mini ramp DIY-style Fri, 05 Aug 2016 11:27:44 +0000 This probably isn’t the worlds most helpful mini-ramp building guide. It involves some pretty unusual tools – both software and hardware – which isn’t to everyone’s disposal. You will however find some useful tips on carpentry and using skatelite for surfacing.

Employing high-end VFX-software tools to realize your childhood dream.


CNC at work

After talking about how I wanted to build a ramp at my cabin in my open office area, one of my colleagues tipped me about a robot woodcutter we have at the prop building department at NRK – a so called CNC machine. You can feed this machine vector drawings with perfect accuracy from Illustrator, and it will cut with 1mm error margin.

And that was what triggered it all. How cool wouldn’t it be to use 3ds max to plan and construct every nook and cranny of a backyard mini, and then have a robot cut perfect curves?

I measured up a small miniramp at Torshov, Oslo, which served as the base of my own ramp. The plywood sheets I bought for the curves allowed a slightly larger curve than the ramp a Torshov featured, so I added roughly 6 cm but kept the radius. These drawings where all made in Illustrator using accurate measurements and fed to the CNC.

The curves turned out absolutely perfect, with the ones in the middle of the ramp having cut outs even for the 2by4’s – saving me a lot of manual labor.

Drawing initial measurments in Illustrator and 3ds Max.

All in all I had 8 of these sheets, which would have support construction attached to them. These were all made during winter, while I waited for the snow to go away. A nifty feature (that I at least didn’t expect) is that if you draw thing to scale in Illustrator and import them in 3ds Max, scale will be retained. That makes all the measurements so much easier to keep a hold of.

I made all the initial curves and heights in Illustrator (as seen in the illustration above) and then imported it to 3ds max to plan what kind of construction I would need, measurements of all the 2by4’s and the top sheets. Building the whole thing in 3d also made the purchasing process a lot easier, I could now calculate excactly how much wood I would need to buy.

Viewport grab from 3ds max

These screengrabs show the level of detail. Every plank is included. Below is a snap of the finished curves and the top sheets, all organized and waiting for spring. The scene file can be downloaded at the end of the article.



Using PFtrack for permits.

Finl previz made in 3ds max and tracked with PFtrack. Rendered with mental ray.

Building things close to water (lakes, shorelines) is highly regulated in Norway, so you’ll have to get a permit to build pretty much anything, ramps no expeption. I textured the ramp in 3ds Max, took a bunch of photos of the premisses with my DSLR and tracked/solved the entire scene in PFTrack. I then sent some pretty darn accurate previzualisations to the local government, and got approval. Additionally, getting the correct scale and features of the physical space was helpful for figuring out where the ramp would actually be.

When the snow finally disappeared (which is a weird thing to say for a die-hard snowboarder as myself), the real dirty work would begin. The ramp needs to be 100% level. The entire space doesn’t need to all level, as a ramp should rest atop pillars to keep it clear of the ground. But the pillars need to be level. 101%.

I used a laser level to get the job done, stacking up dirt or showelling it away as needed. The pillars are placed at all high impact points, and fairly dense.


Measuring the diagonals – the red diagonal lines need to be exact same length, or your corners won’t be 90 degrees.

When the ground work was done, I could finally pick up my premade curves and start raising my baby. Making all corners 90 degrees and all curves parallell is (not surprisingly) a lot harder to do in real life than on a computer, but thanks to my dad with 60 years of real-life experience and a technique called “measuring of the diagonals” we got it approximately right. Measuring the diagonals is done by standing in opposite corners with a steel string dragged tightly across. Move over to the other opposite corners, and make sure the string is exactly the same lenght corner to corner. If not, move the corner, repeat until perfect. This is the absolute most critical thing you do, so get it right. If you mess up, your top sheet will start poking out when you put it down.

When the curves where all raised up and aligned, we popped in all my precut 2by4, which would be foundation for the top sheets. I used three layers of top sheets; #1 – 6mm thick, #2 – 9mm thick and #3 – Skatelite.

Surface sheets and Skatelite.

I’ve ridden too many worn-out ramps through the years to know that when building my own, I wanted it to last. Therefore, all wood would be treated and raised above ground (using the pillars as described in the previous chapter), all sheets would be waterproof, and the surface would be finished off with Skatelite.

Skatelite is durable, has perfect friction and – is not cheap. It also has some prerequisites, like it needs screws every 20cm, both in width and length. It’s also so hard that all the holes for the screws needs to be pre-drilled and countersinked. To state the bleeding obvious – these holes needs to match up with the 2by4s underneath. Also, since the skatelite will have thousands of screws, you need to use as few as possible for the first two sheets, so that you don’t hit these underlying screws when you get to the skatelite. So plan ahead.

Make sure your sheets is laid firmly, without wobbles or gaps, on to the 2by4s. I fastened a temporary 2by4 along the bottom to steady the sheets against, moving it around as I progressed. I let all my sheets overshoot the coping by 5-6 cm, and cut all down to equal lenght at the end.

When lying down Skatelite, you need to leave a 3 mm betweent the short ends, and a 5 mm gap along the long side. This might seem much, but the skatelite will expand  over time (especially in warm weather) and needs room to grow. Another thing worth mentioning is screw dimension. I started out using Fischer 5X60mm, but as many as 70% snapped during the first year, so I had to replace them all. I upgraded to 6.5X60, which will hopefully do the job better. Since there was no easy way to remove the snapped bit inside the sheets/2by4s, I had to offset the skatelite to not hit them when inserting the new ones. Not fun, take notice.

Final stages – coping

The coping is a 6.5 mm stainless steel tube, with 3 mm walls. Because I’m such a dandy, I wanted the coping to have hidden fastening, not the usual drill holes. To achieve this I got a friend of mine to weld some metal plates onto the side of the coping, which would be hidden beneath the surface sheets.

Coping seen from above and from the side

So there you have it, my childhood dream realized. Theres a few more images in the gallery below, and here the link to the entire scene made in 3ds Max. Hope you enjoy it, and let me know on twitter if you actually put any of this knowledge into action!

How to compile PFBarrel for the newest release of Nuke Tue, 27 Jan 2015 12:10:35 +0000 Outdated as of PFtrack 2016.06.10 – but kept for sentimental reasons.

– First of all. I don’t know what I’m doing. If you’re reading this, you most likeliy don’t either.

First of all we need to install quite a bit software. The steps must be done in the specified order, or it will fail. FAIL. F.A.I.L.

1. Uninstall the Microsoft Visual C++ 2010 redistributable packages (both x86 as well as x64) from “Control Panel” > “Programs and Features”. (Why? Because otherwise the step 2 will fail)

2. Install the Windows SDK 7.1. During installation, under the “Installation Options” menu, UNCHECK the “Visual C++ Compilers” and “Microsoft Visual C++ 2010” components. Here’s the installer:

3. Install Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1

4. Install MS VS 2010 Express C++;

5. Install Microsoft Visual Studio 2010 Service Pack 1;

Ok. Now for the complicated part.
1. Start vs2010, choose open project, navigate to C:Program FilesNuke9.0v3DocumentationNDKexamples and open ExamplePlugin.sln.
2. In the solutions explorer on the left hand side, right click and choose “add”. Navigate to the PFBarrel “source/nuke/PFBarrel.cpp”
3. Again, in the solutions explorer on the left hand side, right click and choose “add”. Navigate to the PFBarrel “source/common/ and add both files.
4. Rename the project to PFBarrel (by right clicking and choosing ‘Rename’)
5. The meat of the job;
a. Right click on the Project Name (PFBarrel in this case), and select ‘Properties’. Alternatively, you can select ‘Properties’ from the ‘Project’ menu at the top, or just press Alt-F7.
b. Select the Configuration (Debug/Release) and the Platform (32/64 bit) at the top of this dialog. Recommended practice is to use Release, and most of us will be on a 64-bit platform.
c. Expand the ‘Configuration Properties’ section if it is not already, and click on ‘General’
d. Change the ‘Configuration Type’ to ‘Dynamic Library (.dll)’
e. Change the ‘Character Set’ to ‘Use Unicode Character Set’
f. Change the ‘Whole Program Optimization’ to ‘Use Link Time Code Generation’
g. Next, select ‘Debugging’ from the left panel.
h. Set ‘Command’ to ‘C:Program FilesNukeXXNukeX.X.exe’ (note that this will probably not be necessary, since direct debugging using the IDE is ‘iffy’ at best using Nuke, but this permits us to launch Nuke in Debug mode in order to trace execution and look at variable values in the VS Debugger.
i. Click on ‘VC++ Directories’ in the left panel
j. Change ‘Include Directories’ to ‘C:Program FilesNukeXXinclude;$(IncludePath)’ (or wherever your nuke is installed). This gives the VC compiler access to the ‘.h’ files.
k. Expand the ‘Linker’ section in the left panel, and click on ‘General’
l. Change the ‘Enable Incremental Linking’ option to ‘No (/INCREMENTAL:NO)’
m. Set ‘Additional Library Directories’ to ‘C:Program FilesNuke6.2v2;%(AdditionalLibraryDirectories)’ (or wherever your version of Nuke is installed) This tells the VC2010 linker where the required .dll libraries are to be found.
n. Select ‘Input’ from the left panel, under ‘Linker’, and set ‘Additional Dependencies’ to ‘DDImage.lib;glew32.lib;%(AdditionalDependencies)’ (having just told VS2010 where the libraries are to be found, now we tell it what is to be referenced by the Operator)
o. Right click ‘PFBarrel’ in the left hand panel and choose Build Solution. (this failed for me the first time, ‘1>LINK : fatal error LNK1181: cannot open input file ‘kernel32.lib”, but I solved it by rightclicking on the project, “Project Properties -> VC++ Directories -> Library Directories” set to ‘C:Program FilesMicrosoft SDKsWindowsv7.1Libx64’)

Voila, you should now have a DLL file in the C:\Program Files\Nuke9.0v3\Documentation\NDK\vc10x64\Release\ folder called PFBarrel.dll which can be copied to your .nuke/gizmos folder.