Speaking about Blink at SIGGRAPH LA 2019

September 14, 2019

Foundry invited me to SIGGRAPH LA 2019, to speak about BlinkScript, and do a booth presentation. I had a wonderful time and got a chance to speak with many from the Nuke community, the Nuke devs and the rest of Foundry staff. Here is the Blink presentation.

 

 

Weave for Nuke, beta update.

December 19, 2016

I have been asked quite a few times about updates on the beta of Weave for Nuke, and the Fall 2016 release date. So i thought id’ just do a quick update on that one.

 

 

Silk for Nuke available this week.

December 15, 2016

Frator_v09

Update: Its available now at Nukepedia

 

SILK have been on the shelf for a year now, along with a few other tools, but I finally finished it yesterday.  The tool is like a blur, godrays or any other 2d processing effect. You apply it to your footage and it outputs these silk streaks. This video from early last year shows this quite well. I don’t exactly know what it should be used for, but it looks quite interesting, so maybe someone is going to be able to use it for something.

It should be ready on Nukepedia any moment, and hope you can make use of it. (if you can.. please tell me)

Here is a little example video:

And here is a more indepth rundown of the features, most of which is being displayed on a fBm noise:

And the node itself…

skaermbillede-2016-12-16-kl-00-50-37

This was the original demo posted 10 months ago:

Stickit in Nuke 10?

September 9, 2015

(At the 05:00 minute mark)

I have gotten a lot of mails regarding the “inclusion of stickit in Nuke 10” as demoed at Siggraph.
But no, its a coincidental same time development, and I have no involvement in that nor take any credit for their innovation.
Shortly after releasing the first demo of Stickit, i got a little note from “someone” at “some big company” that TheFoundry had privately demoed something that looks a lot like Stickit but using Ocula tech.
Intrigued by this i downloaded the Ocula demo, and made a tool to make a temporal offset vector from the Ocula vector generator, and it was a nearly identical result to what stickit could deliver, (because its mostly the same).

Im really looking forward to see their implementation and see if they could get around some of the shortcomings that i encountered.

 

Nuke Point Cloud for big datasets

October 20, 2013

Nuke Million Points

(a 10.000 point cube by a one million point cube)

 

Generating and managing big 3d data sets inside nuke using python is quite easy using the BakedPointCloud node.

A quick rundown of the node:

set cut_paste_input [stack 0]
version 7.0 v6
BakedPointCloud {
inputs 0
serializeKnob ""
serializePoints "2 1 0 0 2 0 0 "
serializeNormals "2 1 0 0 -1 0 0 "
serializeColors "2 0.0290033 0.0490741 0.100975 0.0290033 0.0490741 0.100975 "
name BakedPointCloud1
label Group1
selected true
xpos 725
ypos 967
}

This is a example of the BakedPointCloud created by the point cloud generator.
We can use this to generate 3D points on the fly (sadly not animated!)

Lets desect it:

set cut_paste_input [stack 0]
version 7.0 v6
BakedPointCloud {
inputs 0
serializeKnob ""
serializePoints "2 1 0 0 2 0 0 " #This part is where the points are stored, first we get the point count, followed by X Y and Z for each point. In this case we have 2 points at 1,0,0 and 2,0,0
serializeNormals "2 1 0 0 -1 0 0 " #This is the normals, and this might not seem interesting at first since its just points, however this can be used for sending off particles into a desired direction.
serializeColors "2 0.0290033 0.0490741 0.100975 0.0290033 0.0490741 0.100975 " #This is the colors, sadly the particle emitter won't sample them
name BakedPointCloud1
label Group1
selected true
xpos 725
ypos 967
}


To sum up, lets say we want to create a single point at position 100,20,-45.2

set cut_paste_input [stack 0]
version 7.0 v6
BakedPointCloud {
inputs 0
serializeKnob ""
serializePoints "1 100 20 45.2 "
serializeNormals "1 1 1 0 "
serializeColors "1 1 0 0"
name BakedPointCloud1
label Group1
selected true
xpos 725
ypos 967
}

I have created this code for generating pointclouds, this example will generate a cube of a million points.

'''================================================================================
; Function:				PointClouder(points):
; Description:        	Generate a pointcloud from a series of specified points
; Parameter(s):			points - A list a points formated [[X,Y,Z,VEL_X,VEL_Y,VEL_Z,COL_R,COL_G,COL_B][...]]
; Return:				myNode - The pointcloud node created by the function
;                    		
; Note(s):            	by Mads Hagbarth Lund 2013
;=================================================================================='''
def PointClouder(points):
	pc_Points=pc_Velocities=pc_Colors = str(len(points))+ " " 					#Get the ammount of points
	pc_Points = pc_Points + " ".join(str(i) for i in chain1(*points)) 			#Convert the points from list to clean text
	pc_Velocities = pc_Velocities + " ".join(str(i) for i in chain2(*points))
	pc_Colors = pc_Colors + " ".join(str(i) for i in chain3(*points))
	myNode = nuke.createNode("BakedPointCloud") 								#Create a empty PointCloud node
	myNode.knob("serializePoints").fromScript(pc_Points)						#Append the data
	myNode.knob("serializeNormals").fromScript(pc_Velocities)
	myNode.knob("serializeColors").fromScript(pc_Colors)
	return myNode

def chain1(*iterables):
    for it in iterables:
        for element in it[0:3]:
            yield element

def chain2(*iterables):
    for it in iterables:
        for element in it[3:6]:
            yield element

def chain3(*iterables):
    for it in iterables:
        for element in it[6:9]:
            yield element       

#Example 2
import random
MyTestPointCloud = []
index = 0
for x in range(0,1000000):
	MyTestPointCloud.append([random.uniform(0, 600),random.uniform(0, 600),random.uniform(0, 600),4,5,6,random.uniform(0, 1),random.uniform(0, 1),random.uniform(0, 1)])
PointClouder(MyTestPointCloud)