Happy 4th Birthday WSL!

Moderator: SecondMan

User avatar
SecondMan
Site Admin
Posts: 2707
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 104 times
Contact:

Happy 4th Birthday WSL!

#1

Post by SecondMan » Tue Jul 31, 2018 12:00 am

We Suck Less is 4 today!

:cheer:

Wooooo - this has been a busy ride so far. Four years down the line, this forum has over 18000 posts (some of them quality ones, too!) and more than two and a half thousand users from all over the world. I could not be happier about that :)

So what better way to celebrate this with a little CONTEST! :banana:

It's simple - show off the most creative, oddball, clever, cunning, :buttrock: way you are able to use Fusion. Put your out-of-the-box thinking cap on, and post the most left-field little Fusion setup that comes to your mind.

Remember, this is about :idea: ideas :idea:, not about visual polish. It really doesn't matter if you have been using Fusion for 25 years or 25 days. It can be a single tool used in a way that was never intended, or it can be hundreds of them making Fusion do your tax return. It can be subtle or crazy. It can be art, it can be science. It can be all of the above. So the playing field is totally level - don't hold back!

There aren't many rules. Anyone registered on the forum can play. You have to use Fusion and you have to share the setup with a description in this topic and promise you haven't nicked your idea from anyone else on purpose. If you would like, please tell us the story of your creation - we like stories.

A selection of fine folk from around these parts will peer over the entries and voice their opinions in no uncertain terms. The contest runs until Siggraph, when I will be announcing the winner, quite possibly from the Blackmagic Design booth. Which is 1417, I hear.

AND AND AND!

There's actually a PRIZE!

Blackmagic Design has kindly offered a :cheer: license of Fusion Studio :cheer: for the winning entry!

And with that, and with you all, I declare this birthday a success already, as well as the contest opened! Good luck!

Tags:

User avatar
intelligent machine
Fusioneer
Posts: 200
Joined: Fri May 13, 2016 10:01 pm
Location: Austin, Texas, USA
Been thanked: 37 times
Contact:

Billboard / Preview / Way-finding Gigantanode

#2

Post by intelligent machine » Tue Jul 31, 2018 12:57 am

Awesome! Congrats WSL!

Here's one of mine: I group a saver and pipe router (or wireless link) together and enlarge the flow within the group and lock it to create a 'billboard' to reference what's happening at that area of the flow....also use loaders with stills.

Image
Code: [Select all] [Expand/Collapse] [Download] (WSLsnippet-2018-07-31--02.57.18.setting)
  1. {
  2.     Tools = ordered() {
  3.         Group1 = GroupOperator {
  4.             Inputs = ordered() {
  5.                 Input1 = InstanceInput {
  6.                     Source = "Input",
  7.                     SourceOp = "PipeRouter5"
  8.                 }
  9.             },
  10.             ViewInfo = GroupInfo {
  11.                 Offset = { -3107.873046875, 44.8298606872559 },
  12.                 Pos = { 110, 49.5 },
  13.                 Size = { 344.319641113281, 195.644470214844, 63, 22 },
  14.                 Flags = {
  15.                     AllowPan = false,
  16.                     Expanded = true,
  17.                     AutoSnap = true,
  18.                     ForceSource = true,
  19.                     GridSnap = true,
  20.                     ForceMask = true
  21.                 },
  22.                 Direction = "Horizontal",
  23.                 PipeStyle = "Orthogonal",
  24.                 Scale = 4
  25.             },
  26.             CtrlWZoom = false,
  27.             Tools = ordered() {
  28.                 PipeRouter5 = PipeRouter {
  29.                     CtrlWShown = false,
  30.                     ViewInfo = PipeRouterInfo { Pos = { 3129.8984375, 63.266773223877 } }
  31.                 },
  32.                 Saver1_6 = Saver {
  33.                     ViewInfo = OperatorInfo {
  34.                         Pos = { 3135, -49.5 },
  35.                         Flags = {
  36.                             ShowPic = true
  37.                         }
  38.                     },
  39.                     CtrlWShown = false,
  40.                     Inputs = {
  41.                         Clip = Input {
  42.                             Value = Clip {
  43.                                 TrimIn = 0,
  44.                                 Length = 0,
  45.                                 GlobalEnd = 0,
  46.                                 ExtendLast = 0,
  47.                                 Saving = true,
  48.                                 Depth = 0,
  49.                                 TimeCode = 0,
  50.                                 Loop = 1,
  51.                                 GlobalStart = -2000000000,
  52.                                 ExtendFirst = 0,
  53.                                 AspectMode = 0
  54.                             }
  55.                         },
  56.                         ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" } },
  57.                         OutputFormat = Input { Value = FuID { "TargaFormat" } },
  58.                         ProcessWhenBlendIs00 = Input { Value = 0 },
  59.                         Input = Input {
  60.                             Source = "Output",
  61.                             SourceOp = "PipeRouter5"
  62.                         }
  63.                     }
  64.                 }
  65.             },
  66.             Outputs = {
  67.                 Output1 = InstanceOutput {
  68.                     Source = "Output",
  69.                     SourceOp = "Saver1_6"
  70.                 }
  71.             }
  72.         }
  73.     }
  74. }
Last edited by intelligent machine on Tue Jul 31, 2018 8:11 am, edited 1 time in total.

User avatar
Peter Chamberlain
Posts: 19
Joined: Sun Feb 18, 2018 2:10 am
Been thanked: 7 times

Re: Happy 4th Birthday WSL!

#3

Post by Peter Chamberlain » Tue Jul 31, 2018 2:08 am

Congrats WSL.

Great to see the Fusion Studio prize as you can use that for Resolve Studio too!

Looking forward to see some great Fusion work

User avatar
intelligent machine
Fusioneer
Posts: 200
Joined: Fri May 13, 2016 10:01 pm
Location: Austin, Texas, USA
Been thanked: 37 times
Contact:

3D Face Morph Rig Prototype

#4

Post by intelligent machine » Tue Jul 31, 2018 9:02 am

This is a WIP setup that will allow you to add a parallax effect to a still photo of a person.
The user can select from a dropdown of included 3d meshes or select their own.
Then the user can roughly position the mesh using gizmos, render a z-depth pass, make additional adjustments to match the mesh closely with the still at key points and then that depth pass is used to displace the still giving the subtle illusion of 3d when the final camera in the setup is panned.

This was started in response to @SirEdric 's post here: viewtopic.php?f=28&t=2106

Future expansion may include full-body 3d figures broken out into a series of meshes for legs, arms, torso, etc that can be morphed to some degree like in DAZ).

screenshot of WIP:
Image

demo:

User avatar
Dunn
Moderator
Posts: 465
Joined: Mon Aug 04, 2014 4:27 am
Location: Hamburg, Germany
Been thanked: 16 times
Contact:

Re: Happy 4th Birthday WSL!

#5

Post by Dunn » Wed Aug 01, 2018 7:15 am

Geeeeeezzz! 4 years! ...I can't believe it !
Thanks for making this place a second home WSL team ! :D :buttrock:


Image

Oh yeah ..my entry is coming ...

User avatar
SecondMan
Site Admin
Posts: 2707
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 104 times
Contact:

Re: Happy 4th Birthday WSL!

#6

Post by SecondMan » Wed Aug 01, 2018 10:40 am

Thanks all! :cheer:

Looking forward to the next couple of weeks! :)

User avatar
Cedric
Posts: 41
Joined: Tue Sep 13, 2016 7:26 am
Location: Ghent
Been thanked: 6 times

Re: Happy 4th Birthday WSL!

#7

Post by Cedric » Wed Aug 01, 2018 11:09 am

Hi Pieter

I'd like to thank you for this forum, both professionally as a pipeline developer and personally both as a software developer and human being.
You've done an incredible job at keeping this community active and together. The information and the sharing of it on here is really remarkable.
I relied, excuse my French, so god damn much on this site. From my work at Grid on compositing pipelines, to my personal work on Cryptomatte.
When I needed an answer, some feedback or just a chat, I could do it on here.

So thanks a bunch man, I hope we can grab a beer again in the future.

Good luck to all with the contest!

All the best.

Cheers
Cedric

User avatar
SecondMan
Site Admin
Posts: 2707
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 104 times
Contact:

Re: Happy 4th Birthday WSL!

#8

Post by SecondMan » Wed Aug 01, 2018 11:21 pm

Thanks so much for those kind words, Cedric. It's a wonderful thing to read, and I did so several times today.

You're very welcome, and yes please for the beer! :)

User avatar
joergmark
Posts: 33
Joined: Sat Jan 03, 2015 1:59 am
Location: Marxzell, Germany
Contact:

Re: Happy 4th Birthday WSL!

#9

Post by joergmark » Thu Aug 02, 2018 12:05 pm

Hi Pieter,

thanks a lot for this big effort to build this forum and this community. It is always a place to get in touch with great people who really know what they are talking about... I really learned a lot here :-)


All the best
Jörg-Mark

User avatar
SecondMan
Site Admin
Posts: 2707
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 104 times
Contact:

Re: Happy 4th Birthday WSL!

#10

Post by SecondMan » Wed Aug 08, 2018 2:28 pm

So far it looks like @intelligent machine has a pretty good chance of taking away the prize :D

About a week more to go everyone!

User avatar
andromeda_girl
Fusionista
Posts: 254
Joined: Sun Feb 21, 2016 6:25 am
Been thanked: 7 times

Re: Happy 4th Birthday WSL!

#11

Post by andromeda_girl » Wed Aug 08, 2018 3:03 pm

Pieter, is that photo a cake made of ...mashed potatoes?
...and ...beans?
O_o

User avatar
SecondMan
Site Admin
Posts: 2707
Joined: Thu Jul 31, 2014 5:31 pm
Location: Vancouver, Canada
Been thanked: 104 times
Contact:

Re: Happy 4th Birthday WSL!

#12

Post by SecondMan » Wed Aug 08, 2018 3:23 pm

Hahaha!

What wrong with mashed potatoes and beans?!

Especially combined with banana.

User avatar
jedmitchell
Posts: 20
Joined: Mon Feb 27, 2017 5:11 pm
Been thanked: 1 time

Re: Happy 4th Birthday WSL!

#13

Post by jedmitchell » Fri Aug 10, 2018 1:45 pm

Congratulations WSL! You are literally the only resource for learning Fusion on the internet. Thank you.

This is probably the lamest Fusion trick anyone will post, but in Nuke I'd use the "multiply by strokes" option in paint nodes all the time to avoid filtering an entire plate before merging back onto the main trunk. Fusion doesn't seem to have a built in way to do this so I wrote a little script to generate Paint Masks based on existing strokes:

Image

+ On the left is a Paint node in line with the background, which lets you "build up" strokes by referencing your own previous strokes as part of the source. Attached to it is a mask created by my script, which copies all strokes of any / all types to a Paint Mask. Unfortunately it's not dynamic :( so you have to remake it when you update the source Paint node. If anyone knows how the hell you do that I would pay them an internet dollar.

+ On the right is the standard "use source" method of merging the strokes over a background, which, because it isn't using it's own prior strokes for reference, can't build up strokes on top of one another.

It's here if anyone wants it -- apologies for the devastatingly sloppy code, I am a potato level programmer:

Code: Select all

# CreatePaintMask_V02
# Python2
# Author: Jedidiah Mitchell
# Last Update: 180702

#TODO: make error print statements into exceptions

from slpp import slpp as lua


def createPaintMask(paint):
	'''
	
	Creates a new PaintMask tool based on a source Paint or PaintMask tool
	
	Arguments:	paint (Paint tool)
	Return:		paintMask (PaintMask tool)
	
	'''
	
	#collect source information
	paintName = paint.Name
	paintPos = comp.CurrentFrame.FlowView.GetPosTable(paint).values()
	
	#create paint mask and rename
	paintMask = comp.AddTool("PaintMask", list(paintPos)[0]+1, list(paintPos)[1]+1)
	paintMask.SetAttrs({"TOOLS_Name": paintName + "_Mask1"})
	
	#print "creating paint mask with name: %s" % (name)
	
	return paintMask
	
	
def copyStrokesTo(sPaint, dPaint):
	'''
	
	Copy strokes from source Paint or PaintMask tool to destination Paint or PaintMask tool
	
	Arguments:	sPaint (Paint or PaintMask tool)
				dPaint (Paint or PaintMask tool)
	Returns:	Bool
	
	'''
	
	if not (sPaint.ID in {"Paint", "PaintMask"}) or not (dPaint.ID in {"Paint", "PaintMask"}):
		print("Can only be used on Paint tools")
		return False
		
	print("Copying strokes from %s to %s" % (sPaint.Name, dPaint.Name))
	
	strokeList = findStrokeInputs(sPaint)
	#for stroke in strokeList: print stroke.Name
	
	strokeTable = strokeList[0].SaveSettings()
	
	#modTable = modifyTable(strokeTable, "ApplyModes", {1.0:"PaintApplyColor"})
	modTable = modifyTable(strokeTable, "ApplyMode", {"__flags":256, "Value":{1.0:"PaintApplyColor"}, "__ctor":"Input"})
	#print "\n\n-------------------------\n"
	#printTable(strokeTable, 0)
	#print "\n-------------------------\n"
	#printTable(modTable, 0)
	#print "\n\n"
	comp.Paste(modTable)
	
	i = 1
	while comp.FindTool(str(strokeList[0].Name)+"_"+str(i)): i+=1
	newStrokeName = str(strokeList[0].Name) + "_" + str(i-1)
	
	
	if not comp.FindTool(newStrokeName):
		print("failed to find stroke %s" % (newStrokeName))
		return False
	else:
		dPaint.Paint.ConnectTo(comp.FindTool(newStrokeName).Out)
	
	return True
		
		
def modifyTable(tbl, key, value):
	'''
	
	Modify a dict / OrderedDict to find & replace a value for a given key.
	
	'''
	newTbl = tbl
	
	for k,v in tbl.iteritems():
		if k == key:
			#print "found match: "
			#print "\t"+ str(k)
			#print "\t\t old value = " + str(v)
			#print "\t\t new value = " + str(value)
			newTbl[k] = value
		else:
			if type(v) == OrderedDict or type(v) == dict:
				newTbl[k] = modifyTable(v, key, value)
			else:
				newTbl[k] = v
		
	return newTbl

def findStrokeInputs(paint):
	''' 
	
	Search Paint / PaintMask inputs for connected strokes (recursive)
	
	Arguments:	Single Paint or PaintMask tool	
	Return:		[] of connected strokes
	
	'''
	
	if not paint.ID in {"Paint", "PaintMask"}:
		print("Can only be used on a Paint tool. Type is: %s" % (tool.ID))
		return []
	
	connectedStrokes = []
	tool = paint
	c = -1
	while True:
		#check all inputs of type "Image" for Stroke or Multistroke tools
		inputs = tool.GetInputList("Image")
		for i in inputs:
			connectedOutput = inputs[i].GetConnectedOutput()
			
			if connectedOutput:
				connectedTool = connectedOutput.GetTool()
				
				if connectedTool.ID in {"Stroke", "Multistroke", "CloneMultistroke"}:
					connectedStrokes.append(connectedTool)
		
		#add stroke to counter
		c+=1
		
		#check to see if there are any more strokes in the list. 
		#If yes make them the new tool source, if not return
		if c < len(connectedStrokes):
			tool = connectedStrokes[c]
		else:
			return connectedStrokes
	
	


#execute script


def printTable(tbl, indent):
	indentStr = "".join(["\t" for s in xrange(indent)])
	for k,v in tbl.iteritems():
		if type(v) == OrderedDict:
			print(indentStr + str(k) + " (Table) =")
			printTable(v, indent+1)
		elif type(v) == dict:
			print(indentStr + str(k) + " (dict) =")
			printTable(v, indent+1)
		else:
			print(indentStr + str(k) + " = " + str(v) + " " + str(type(v)))

def testTable(tool):
	tbl = tool.SaveSettings()
	printTable(tbl, 0)


	
if not tool.ID  in {"Paint", "PaintMask"}:
	print("can only be used on paint or paint mask tools")
else:
	paintMask = createPaintMask(tool)
	copyStrokesTo(tool, paintMask)
	
#testTable(tool)

User avatar
andromeda_girl
Fusionista
Posts: 254
Joined: Sun Feb 21, 2016 6:25 am
Been thanked: 7 times

Re: Happy 4th Birthday WSL!

#14

Post by andromeda_girl » Fri Aug 10, 2018 2:47 pm

Well, so help me here comes my entry into the pile... stand by, kiddies!

Ever since I began in compositing almost 19 years ago, I thought 'why do I have to work with rendered frames?'
I always wanted to import the model and animation right into comp and just skip all that time wasting effort of lighting passes. This was way back in 2000, long before importing cg into comp ever came to be.
By the time Fu5 came about, It was starting to look possible. It was back in my BSG days, and I started doing test shots using the models of Vipers and Raptors instead of renders... it was working!
That is when I took my E and exported the crap out of it, and discovered that suddenly a lot I built was not going to import and I'd have to rebuild a lot of her manually all over again -mostly the lighting rigs but the surfacing wasn't coming in either.
It became a goal of mine, to get her into Fusion.

So, while this is the comp from about 10 or so years ago when Fusion just got shaders starting to show up, it's still a go-to for me to experiment and see if I can make her any nicer. If I ever get decent at making shaders maybe she'll look better :)

I did a lot of other 'renderless compositing' tests over the last 10 years, on different subject matter but my E has always been the favourite to play with.
It was one of the first models I built (back when I gave that a try) which was made from the Greg Jein blueprints, and features accurate-to-the-studio-model lighting of the nacelles -it always helped to be friends with a lot of Star Trek legends and having their knowledge available, since they saw the studio model long before it ever went to the NASM. I used her for my Star Trek Ships Of The Line calendar images, which also feature in the compilation books.

Shout-out to Doug Drexler of course, who made sure I got the datin-cones right to make the nacelle lighting correct.

(I know- I didn't invent anything new, I didn't custom code any tools but; it's my joy)

Image

Image

Image

Image

Image

Image

Image

User avatar
Dunn
Moderator
Posts: 465
Joined: Mon Aug 04, 2014 4:27 am
Location: Hamburg, Germany
Been thanked: 16 times
Contact:

Re: Happy 4th Birthday WSL!

#15

Post by Dunn » Fri Aug 10, 2018 4:08 pm

Wow, so much nice stuff here!

Well here´s mine.
I´m using the Clean Plate node to create Pixel Stretch Effect. There´s nothing more to it. :D
Just play with the settings in the Mask mode on the Clean Plate.



All examples from this clip are in the comp
CleanPlate_Master.comp

cp_1.png
cp_4.png



enjoy ;)
You do not have the required permissions to view the files attached to this post.