Posted on

Start Here

Title Packs

The majority of title packs are .setting macro files. These files are a set of instructions for Davinci Resolve to act on, recreating the title on your timeline. .setting files (also known as macro files) can be created in Davinci Resolve or written directly in LUA scripting language. Usually, the original file is created within Davinci Resolve and then edited afterwards to add functionality.

Black Magic Design changed the location of .setting files to make them more user-accessible, at present both the old and new locations still exist. This means there is more than one folder you can install .setting files. The majority of users wish to have access to the titles within the edit page of resolve. However when a user has a lot of titles they can become difficult to manage, more on file organisation later.

Installation

There are two ways to install Resolve Assets title packs.
Download the titlepackv1.0.exe file. This executable file will install the .setting files in the C:\Program Files\Blackmagic Design\DaVinci Resolve\Fusion\Templates\Edit\Titles of your Windows computer. Currently, Resolve Assets installers are Windows only this is due to Mac having different naming conventions and file locations. To install to a Mac follow the manual instructions below.

Restart Davinci Resolve and you will see your new titles in the edit page effects library > titles list. Drag the desired title to your timeline and once selected you will see controls in the inspector.

Please note that there is no uninstall feature, to remove the titles go to C:\ProgramFiles\BlackmagicDesign\DaVinciResolve\Fusion\Templates\Edit\Titles and delete the .setting files.

Manual installation of title files

Download the zip folder from our website and unzip to a suitable location on your computer. You can unzip the folder to your desktop as you’ll move the files to their location.

Copy all files “.setting” files into the following directory:-

FOR WINDOWS
C:/Program Files/Blackmagic Design/DaVinci Resolve/Fusion/Templates/Edit/Titles

FOR MAC OS
Library/Application/Support/Blackmagic Design/DaVinci Resolve/Fusion/Templates/Edit/Titles

Restart Davinci Resolve and the assets will be listed in the “Effects Library”.

We recommend that you save the original zipped folder as a backup.

Lower 3rds

Lower 3rds are similar to titles and can be installed the same way unless they have pre-rendered components. They will then be provided as a .drp project file and will require to be imported as a project

Transitions

Transitions can consist of several types the most popular are based on adjustment clips or fusion comps. Transitions are placed over the top of a cut in your footage and adjusted left or right to obtain the desired effect.

Installation

Download and unzip the folder.
Import the .drp file via the Davinci Resolve project manager window

To use project files and templates in other project ensure dynamic project switching is selected.

You may have to relink media from a newly imported project file, right-click on the media bin and select relink for the selected bin. Select the folder with the media in to relink.

Movers & Shakers

Overlays, Due to the file size of overlays you would have downloaded them from Google Drive and they could be in multiple zipped folders. You may find two file types mp4 and png sequence files. In the majority of circumstances, mp4 files will give you the desired effect however in a VFX workflow png sequence files are often used due to their high quality and compatibility.

Unzip the folders and place the files in your media storage location. The overlays can be imported into Davinci Resolve in the same way as your footage. Each png sequence file will be in its own folder.

Drag the file over your footage and change the composition mode to suit.

As png sequence files are a sequence you will need to ensure you Davinci Resolve settings show image sequence rather than individual files.

Project Files / Templates

A range of our packs come with pre-rendered assets, this is for the following reasons:-
The fusion comp is GPU / CPU heavy and being pre-rendered allows for better compatibility with users hardware
We use plugins which the end-user would be required to install for the effects to work.
Pre-rendered assets can easily be used in other projects where nodes/tools require knowledge of Fusion.

Installation

Download and unzip the folder. Import the .drp file via the Davinci Resolve project manager window

To use project files and templates in other project ensure dynamic project switching is selected.

You may have to relink media from a newly imported project file, right-click on the media bin and select relink for the selected bin. Select the folder with the media in to relink.

Asset Organisation

The list of titles in the effects library can get very long very quickly, Davinci Resolve now allows (Version 17) for the creation of additional folders to organise tiles/lower 3rds etc. However, by placing your titles in a folder removes the thumbnail from the effects library and is not recommended.

Hiding Titles (No Longer Works in Version 17)

Davinci Resolve comes with title templates which although a good starting soon start gathering dust. You can easily hide any unused titles within the application.

Open your windows explorer and head over to C:\Program Files\Blackmagic Design\DaVinci Resolve\Fusion\Templates\Edit\Titles Add a folder and name it something memorable (We use DRTitles). Drag unused titles into this folder. Restart Resolve and in the current version 16 and above they will be hidden. This makes your title list more manageable.

Moving Titles to fusion (Untested in Version 17)

Open 2 explorer windows and in the first go to C:\Program Files\Blackmagic Design\DaVinci Resolve\Fusion\Templates\Edit\Titles in the second go to C:\Program Files\Blackmagic Design\DaVinci Resolve\Fusion\Templates\Fusion

Create a folder in the second location and move rarely used or unused titles into this folder. The .settings macro files ideally should be single node macro files. Group nodes will confuse fusion and will not display the folder correctly.

Restart Resolve and the folder will appear under the Fusion page effects library, you can then use these from within Fusion if required.

Renaming Macro files

The majority of .setting macro files do not have a specific naming convention, which means you can rename them to appear in the effects library title list exactly as you wish. Numbering the most popular titles works well as does add a prefix (circle.setting can become Lower3rdCircle.setting)

Do You Want To Play A Game?

I am sure that a lot of you want to know how these macros work? Well, this is easier than you think. The golden rule is to always have a backup before you start!

I use VSCode to edit the scripts however you could use notepad. I would recommend Notepad++ as it has line numbers and highlights errors. I am not going to get into LUA scripting language here or Python. Macros tend to be written in LUA and functions are written in Python. LUA is a logical simple code which is human readable, hence you can change parameters without even opening Resolve.

I think it’s easier to explain as an example. Any .setting file works, as Davinci Resolve doesn’t know any different. Drag a title to your timeline
Ensure the title is selected and go to the Fusion Page. You will see the title node on the left and a media out node on the right. Select the title node and right-click on it. Select settings save as and save a copy of the .setting file on you computer

Open the saved .setting file in Notepad++
You are now looking at the LAU script for that title
At the top, you will see the words “MacroOperator”
Change this to “GroupOperator” and save the file

Drag the .setting file into the fusion node editor and you will see that it’s now a group of nodes.
Right-click and select ungroup

You can now play! Change settings, keyframes etc.

I will be writing an article about modifying .settings file soon.

Power Bin Compatible

When an assets pack is Power Bin compatible it means that once imported into Davinci Resolve it can be moved to a Power Bin. This allows the assets to easily be used in all projects.

Be aware that there is a bug in Davinci Resolve 16.1.
When you have “use timeline bins” selected in your project > General settings you can not drag assets into Power Bins.

Versions

In all future packs and updates to existing packs, we will be adding versions for each macro asset. Although some knowledge of Fusion is required this means each asset will have 6 versions within 1 .setting file. The benefits of this are you will have more options for each asset. For example:- currently, each animation has 1 .setting file which when added to the effects library soon makes it unorganised. When adding versions you can have 1 entry in the effects library but 6 different versions of that assets.

User Controls

Although it is cost-effective to purchase assets (after all, time is money) you may want to modify a particular asset to match your production. All new packs and updates will include the ability to customise the asset. The inspector will contain a larger array of controls for the end-user to modify.

Each asset type will have different controls allowing you to change a wide range of parameters.

Posted on

Express Yourself – DaVinci Resolve Expressions

The world of expressions in both video editing and motion graphics opens up a world of possibilities. In this article, I am going to bring together expressions I have discovered and experimented with in DaVinci Resolve. This list is by no means complete but more of a working document I will come back to again and again. 

When I experiment with an expression I have gotten into the habit of placing a Text Node into the composition and adding the expression in the styled text expression input. This allows me to see the output of the expression in a readable format. I can then tweak the expression to get my desired result.

Another tip: Use the expression first before renaming a node as renaming a node will update the expression.

Placing a “--” in a simple expression will ignore the characters to the right. As in “GetPrefs("Comp.FrameFormat.Rate") -- Returns TL FPS” It is a great way to add a reminder.

A list of expressions with comments. 

In no particular order.

Basic for DaVinci Resolve

time This will return the current frame. (use on the “Angle” parameter to rotate an object anti-clockwise)

time-1 Returns the value of the previous frame. (time-n) (n=the previous frame number count, therefore time-10 would be 10 frames back from the current time)

-time Returns the negative value of the current frame. (use on the “Angle” parameter to rotate an object clockwise)

ceil() Rounds up to the next whole number

math.ceil() Rounds up to the next whole number

floor() Rounds down to the next whole number

math.floor()  Rounds down to the next whole number

abs Converts a negative number to a positive number

time/600 Returns the current frame divided by 600 (can be used to control speed, the higher the number the slower)

time*600Returns the current frame multiplied by 600 (can be used to control speed, the higher the number the faster)

sin(time) This results in a progression from -1 through to 1 with 14 decimal places

ceil(sin(time)) This results in a progression from 0 to +1 over 2 frames as ceil round the decimal points up.

floor(sin(time)) This results in a progression -1 to 0 over 2 frames as ceil rounds the decimal points down.

comp.RenderEnd This will return the number of frames in the current composition

comp.RenderEnd/2 Returns the halfway position frame number of the composition

(1-(time/comp.RenderEnd)*2) This results in a progression from 0 through to 1 within 50% of the comp length and is ideal for creating a responsive animation

((comp.RenderEnd-comp.RenderStart)) Results in the number of frames in the composition

time/comp.RenderEnd This results in a progression from 0 through to 1 and is ideal for creating a responsive animation

1-(time/comp.RenderEnd)  This results in a progression from 1 through to 0 and is ideal for creating a responsive animation

(time*360)/fps  1 Full rotation every second. (fps = the timeline framerate.) used on the “Angle” parameter

(time*360)/(fps*2) 1 Full rotation every 2 seconds. (fps = the timeline framerate.) used on the “Angle” parameter

ceil(time/fps) Results in counting up in second. (fps = the timeline framerate.)

ceil((time)/comp:GetPrefs("Comp.FrameFormat.Rate")) Results in counting up in second. (useful when fps is not known

ceil((comp.RenderEnd-time)/fps)Returns in counting down in seconds based on the composition length. (fps = the timeline framerate.)

ceil((comp.RenderEnd-time)/comp:GetPrefs("Comp.FrameFormat.Rate")) Returns in counting down in seconds based on the composition length, (useful when fps is not known

max(floor(30-(time/fps)),0)Results in counting down from 30 to 0 in whole numbers. (fps = the timeline framerate.)

ceil(time/comp.RenderEnd*100) Returns the percentage up of the composition length.

ceil(time/comp.RenderEnd*100) .. "%"  Returns the percentage up of the composition length and concatenates .. the % sign at the end. (All strings require “”)

ceil((1-time/comp.RenderEnd)*100 Returns the percentage down of the composition length.

ceil((1-time/comp.RenderEnd)*100) .. "%" Returns the percentage down of the composition length and concatenates .. the % sign at the end. (All strings require “”)

math.floor(PolylineStroke1.WriteOnEnd*100).."%" Create “Styled Text” percentage of a “Wipe On” effect.

math.floor(Circle1.Radius*100) Count up based on a circle radius.

math.floor(Rectangle1.Width*50).."%" Create “Styled Text” percentage of a “Rectangle Mask”

:randomseed(floor(time/6)) ; return random() will give you a simple 0.1.0 value changing every 6 frames

ceil(time/comp.RenderEnd*100) .. "%" Results in Percentage up of the comp “..” concatenates the % to the end

"Progress: " .. ceil(time/comp.RenderEnd*100) .. "%"  Results in Progress Percentage up the comp “..” concatenates the % to the end

ceil((1-time/comp.RenderEnd)*100) .. "%"  Results in Percentage down the comp “..” concatenates the % to the end

"Progress: " .. ceil((1-time/comp.RenderEnd)*100) .. "%"  Results in Progress Percentage down of the comp “..” concatenates the % to the end

"Loading " .. ceil(time/24) .. "/" .. ceil(comp.RenderEnd/fps) Results in Loading Time of the comp


Text driven expressions

((Text1.Output.DataWindow[4]-Text1.Output.DataWindow[2])/Text1.Output.Height)Returns the height of DataWindow of a Text node. (useful for determining the height of text)

((Text1.Output.DataWindow[3]-Text1.Output.DataWindow[1])/Text1.Output.Width) Returns the width of DataWindow of a Text node. (useful for determining the width of text)

[1]=left side,[ 2]=top, [3]=right side, [4]=bottom

Text1.StyledText.Value OR Text1.StyledText[0] Returns the text from a text+ node

Text1.StyledText.Value .. Text2.StyledText.Value  Concatenates 2 Styled Text fields

string.len(Text1.StyledText.Value  Return the length of a String

:_, mylines = string.gsub(Text1.StyledText.Value, "\n", ""); return mylines  Returns the number of lines in a Styled Text field

min(time/(comp.RenderEnd/2),1)-(Text1.Delay) Used in the scrambled text randomness to end the scramble halfway through the comp (from word to scrambled) delay being a slider control from 0 to .25 to allow for a delay. Used a TimeSpeed speed -1 to reverse the comp. Delay is a slider set from 0 to .25.

1-(time/comp.RenderEnd) Used in the scrambled text randomness from scrambled to the word.

Write On Expression

time/(comp.RenderEnd/fps) Results in one letter per frame” write on”. (fps = the timeline framerate.)

time/(comp.RenderEnd/fps)*2 Results in two letters per frame “write on” (fps = the timeline framerate.)

time/(comp.RenderEnd/fps)/2 Results in the word “write on” within half the fps 15 frames. (fps = the timeline framerate.)

time/(comp.RenderEnd/comp:GetPrefs("Comp.FrameFormat.Rate"))/2Results in the word “write on” within half the fps when the framerate isn’t known. Be careful with odd fps 23.976 etc as the animation will attempt to be in between frames.

time/(comp.RenderEnd/comp:GetPrefs("Comp.FrameFormat.Rate"))/(Text1.WriteOn)Adding a slider Control “WriteOn” with an integer and steps of 2 the user can control the write on speed


Mask Expressions

floor(-1*((Rectangle1.Height))/2) or floor(-Rectangle1.Height)/2Returns the bottom position of a mask.

floor((Rectangle1.Height)/2) Returns the top position of a mask.

I haven’t tried yet but changing Height to Width should get the side positions.

(Ideally use a transform as a null object)

Point(Rectangle1.Center.Y-(Rectangle1.Width/2)+(Ellipse1.Width/2))Place the edge of item on the inside left of mask

Point(Rectangle1.Center.Y-(Rectabgle1.Width/2)-(Ellipse1.Width/2)) Place the edge of item on the outside left of mask

Point(Rectangle1.Center.X, (Rectangle1.Center.Y+(Rectangle1.Height/2))) Returns the top position of a rectangle mask

Point(Rectangle1.Center.X, (Rectangle1.Center.Y-(Rectangle.Height/2))) Returns the bottom position of a rectangle mask

Point(Rectangle1.Center.Y+(Rectangle1.Width/2)) Returns the Right position of a rectangle mask

Point(Rectangle1.Center.Y-(Rectangle1.Width/2)) Returns the left position of a rectangle mask

math.floor(((Transform1.XSize*100)-100)+100).."%"  % reading to Empty. % reducing as the width of a RectangleMask gets smaller

math.floor((100-Transform1.XSize*100)).."%"  % reading to Full. % increasing as the width of a RectangleMask gets larger


Displays the date & os functions

Text1.StyledText = os.date('%x') Returns the date. Change the %x from below will give the stated result.

  • %a  abbreviated weekday name (e.g., Wed)
  • %A  full weekday name (e.g., Wednesday)
  • %b  abbreviated month name (e.g., Sep)
  • %B full month name (e.g., September)
  • %c date and time (e.g., 09/16/98 23:48:10)
  • %d day of the month (16) [01-31]
  • %H hour, using a 24-hour clock (23) [00-23]
  • %I hour, using a 12-hour clock (11) [01-12]
  • %M minute (48) [00-59]
  • %m month (09) [01-12]
  • %p either “am” or “pm” (pm)
  • %S second (10) [00-61]
  • %w weekday (3) [0-6 = Sunday-Saturday]
  • %x date (e.g., 09/16/98)
  • %X time (e.g., 23:48:10)
  • %Y full year (1998)
  • %y two-digit year (98) [00-99]
  • %% the character `%´

Open a local web page (Windows)

os.execute ("start ../galleries/gallery.html" ) Opens the default installed browser with the local .htm file. Used inside an edit control button.

Open a local web page (Mac)

os.execute ("open ../galleries/gallery.html" ) Opens the default installed browser with the local .htm file. Used inside an edit control button.

Opens a Webpage (Mac)

os.execute('open "" "https://www.resolveassets.co.uk"')Used inside an edit control button

Opens a webpage (Windows)

os.execute('start "" "https://www.resolveassets.co.uk"')Used inside an edit control button.
Not an expression as such but the LUA for adding a button to a node in a text editor. This is placed on the line below ViewInfo = OperatorInfo { Pos = { 0, 82.5 } },
UserControls = ordered() {
                ScriptButton = {
                    LINKS_Name = "ScriptButton",
                    LINKID_DataType = "Number",
                    INPID_InputControl = "ButtonControl",
                    INP_Integer = false,
                    BTNCS_Execute = [[
                    os.execute('open "" "https://www.resolveassets.co.uk"')
                    os.execute('start "" "https://www.resolveassets.co.uk"')
                    ]],
                    ICS_ControlPage = "Controls"
                }
            }

Reference a value of a node in another node

Transform1:Angle The result is the angle of the transform node. Therefore you can reference any node property inside any other node. (nodeName:property)


Get Value from a specific time/frame

Rectangle1:GetValue("Width", 10) Returns the width of the node “Rectangle1” at frame 10

Rectangle1.Width Returns the value of the width from the “Rectangle1” node at every frame throughout the composition

Merge1:GetValue("Center", time-1).X To get the X-coordinate of a point from the previous frame

self:GetValue(....) To get the value of a control on the same tool at a different time, use the self notation:


Get A Previous Node Value

I haven’t really come up with a practical use case for this expression yet but have experimented with changing the colour of a box based on the width of the box.  However, the practical applications for this expression are limitless.

self:GetSourceTool("[connected input]"):GetValue("[source parameter]",[source time]

An important note is in both Blackmagic Fusion and DaVinci Resolve most expressions of this nature need a reference to a frame to pull the data from. Although this could be just frame 0 if required, the fun starts when you add time in the expression.

The above expression will look at an input to the node, self:GetSourceTool("[connected input]"): The actual node input for example “EffectMask”. This is not to be mistaken for the name of the node.

It then requires a source time in this example time=frame the node is on multiplied by 2. Expression = 

self:GetSourceTool("EffectMask"):GetValue(("Width*2",time*2))


comp:GetPrefs( )Returns information about the current composition

comp:GetPrefs("Comp.FrameFormat.Rate") Determine Users Timeline Frame Rate

This returns the actual timeline framerate, useful for adding a variable to any other expression which requires the framerate to be calculated.

comp:GetPrefs("Comp.FrameFormat.Width") Returns the width of the Timeline resolution in DaVinci Resolve basically on a 1080p HD resolution would return 1920

comp:GetPrefs("Comp.FrameFormat.Height") Returns the height of the Timeline resolution in DaVinci Resolve basically on a 1080p HD resolution would return 1080

Actual Image width and height
I recently came across someone wanting to get the resolution of the MediaIn1 – MediaIn6 nodes rather than the resolution of the timeline

self.Input.OriginalWidth Returns the width of the input resolution in DaVinci Resolve basically a 4K video on a 1080p HD timeline would return 3840

self.Input.OriginalHeight Returns the width of the input resolution in DaVinci Resolve basically a 4K video on a 1080p HD timeline would return 2160


This next one is new to me and I am still determining its use. Currently, it seems to ensure the KEYFRAMESTRETCHER calculates the required settings based on the length of the Global in/out. After further investigation, this expression is useful when a node is set within the total length of the composition using the global in/out. For example. a comp of 149 frames could have a background node start or end between 0 – 149 by connecting a KeyFrameStretcher to this background node and using this expression would make it responsive.

KeyframeStetcher – Source End

min(Background1.GlobalOut,F1.FPS)This is looking at a background node parameter that reflects the length of the Global in/out. FPS in the expression is the timeline framerate.


Dissolve Switch

A dissolve node can be used as an effective switch between the background and foreground input. They can be linked together to create user options in the inspector.

iif((comp.RenderEnd-time)<(comp.RenderEnd/2),0,1) Switches from background to foreground inputs at the halfway point of a comp


TimeStrecher

This is a powerful node and there is an infinite amount of expressions for this node.

time<Hold_Frame and time or time>Hold_Frame+Hold_Time and time-Hold_Time or Hold_Frame Add tools in the EditControls to provide 2 sliders which contains the frames in the comp and then you can pause an animation over a period of time.
The whole tool is here so you can reverse engineer it. TimeStrecher Animation Pause Node

If-then-else

iif(Merge1.Blend > 0.5, 1, 0) To toggle a value based on a condition (e.g. an if-then-else expression), use the iif() function. This will set the input’s value to 1 if Merge1.Blend is greater than 0.5 and to 0 if otherwise

Alternatively,

(Merge1.Blend > 0.5) and 1 or 0  the following Lua conditional expression also works:


Operators

Operators are used to evaluate statements. They are combined with functions to perform logical and mathematical calculations in the Number Out and Point Out tabs.

  • x + y x plus y.
  • x – y x minus y.
  • x < y 1.0 if x is less than y, otherwise 0.0.
  • x > y 1.0 if x is greater than y, otherwise 0.0.
  • !x 1.0 if x = 0, otherwise 0.0.
  • -x (0.0 – x).
  • +x (0.0 + x) (effectively does nothing).
  • x ^ y x raised to the power of y.
  • x * y x multiplied by y.
  • x / y x divided by y.
  • x % y x modulo y, (remainder of (x divided by y)).
  • x <= y 1.0 if x is less than or equal to y, otherwise 0.0.
  • x >= y 1.0 if x is greater than or equal to y, otherwise 0.0.
  • x = y 1.0 if x is exactly equal to y, otherwise 0.0.
  • x == y 1.0 if x is exactly equal to y, otherwise 0.0 (identical to above).
  • x <> y 1.0 if x is not equal to y, otherwise 0.0.
  • x != y 1.0 if x is not equal to y, otherwise 0.0 (identical to above).
  • x & y 1.0 if both x and y are not 0.0, otherwise 0.0.
  • x && y 1.0 if both x and y are not 0.0, otherwise 0.0 (identical to above).
  • x | y 1.0 if either x or y (or both) are not 0.0, otherwise 0.0.
  • x || y 1.0 if either x or y (or both) are not 0.0, otherwise 0.0 (identical to above).

Formulas

Formulas are entered into the Number Out or Point Out tabs as part of an expression. They can be made up of the following functions:

  • n1..n9 The value of Number Input 1..9.
  • p1x..p9x The X of Positional Control 1..9.
  • p1y..p9y The Y of Positional Control 1..9.
  • time The current time (frame number).
  • pi The value of pi.
  • e The value of e.
  • log(x) The base-10 log of x.
  • ln(x) The natural (base-e) log of x.
  • sin(x) The sine of x (x is degrees).
  • cos(x) The cosine of x (x is degrees).
  • tan(x) The tangent of x (x is degrees).
  • asin(x) The arcsine of x, in degrees.
  • acos(x) The arccosine of x, in degrees.
  • atan(x) The arctangent of x, in degrees.
  • atan2(x, y) The arctangent of x,y, in degrees.
  • abs(x) The absolute (positive) value of x.
  • int(x) The integer (whole) value of x.
  • frac(x) The fractional value of x.
  • sqrt(x) The Square Root of x.
  • rand(x, y) A random value between x and y.
  • rands(x, y, s) A random value between x and y, based on seed s.
  • min(x, y) The minimum (lowest) of x and y.
  • max(x, y) The maximum (highest) of x and y.
  • dist(x1, y1, x2, y2) The distance between point x1,y2 and x2,y2.
  • dist3d(x1,y1,z1,x2,y2,z2) The distance between 3D points x1,y2,z1 and x2,y2,z2
  • noise(x) A smoothly varying Perlin noise value based on x
  • noise2(x, y) A smoothly varying Perlin noise value based on x and y
  • noise3(x, y, z) A smoothly varying Perlin noise value based on x, y and z
  • if(c, x, y) Returns x if c <> 0, otherwise y.

In this next section, I can not take any credit for any of the expressions, in fact, most of these baffle me. The credit must go to Alex Matravers who put a lot of effort and time into figuring easing expressions out.

1 - cos((time/comp.RenderEnd * pi) / 2) easInSine

sin(((time/comp.RenderEnd) * pi) / 2) easeOutSine

-(cos(pi * (time/comp.RenderEnd)) - 1) / 2 easeInOutSine

(time/comp.RenderEnd) * (time/comp.RenderEnd)  easeInQuad

1 - (1 - (time/comp.RenderEnd)) * (1 - (time/comp.RenderEnd))  easeOutQuad

iif((time/comp.RenderEnd) < 0.5, 2 * (time/comp.RenderEnd) * (time/comp.RenderEnd), 1 - pow(-2 * (time/comp.RenderEnd) + 2, 2) / 2)  easeInOutQuad

(time/comp.RenderEnd)^3  easeInCubic

1-(1-time/comp.RenderEnd)^3  easeOutCubic

iif((time/comp.RenderEnd < 0.5), (((time/comp.RenderEnd)^3)*4), 1-(((1-time/comp.RenderEnd)^3)*4))  easeInOutCubic

(time/comp.RenderEnd) ^ 4  easeInQuart

1 - pow(1 - (time/comp.RenderEnd), 4)  easeOutQuart

iif((time/comp.RenderEnd) < 0.5, 8 * (time/comp.RenderEnd) * (time/comp.RenderEnd) * (time/comp.RenderEnd) * (time/comp.RenderEnd), 1 - pow(-2 * (time/comp.RenderEnd) + 2, 4) / 2)  easeInOutQuart

(time/comp.RenderEnd)^5  easeInQuint

1 - pow(1 - (time/comp.RenderEnd), 5)  easeOutQuint

iif((time/comp.RenderEnd) < 0.5, 16 * (time/comp.RenderEnd) *(time/comp.RenderEnd) * (time/comp.RenderEnd) * (time/comp.RenderEnd) * (time/comp.RenderEnd), 1 - pow(-2 * (time/comp.RenderEnd) + 2, 5) / 2)  easeInOutQuint

pow(2, 10 * (time/comp.RenderEnd) - 10)  easeInExpo

1 - pow(2, -10 * (time/comp.RenderEnd))  easeOutExpo

iif((time/comp.RenderEnd) < 0.5, pow(2, 20 * (time/comp.RenderEnd) - 10) / 2, (2 - pow(2, -20 * (time/comp.RenderEnd) + 10)) / 2)  easeInOutExpo

1 - sqrt((1 - (time/comp.RenderEnd) ^ 2))  easeInCirc

sqrt(1 - pow((time/comp.RenderEnd) - 1, 2))  easeOutCirc

iif((time/comp.RenderEnd < 0.5), (1 - sqrt((1 - (2 * (time/comp.RenderEnd)) ^ 2))) / 2, (sqrt(1 - (-2 * (time/comp.RenderEnd) + 2) ^ 2) + 1) / 2)  easeInOutCirc

(1.70158 + 1) * (time/comp.RenderEnd) * (time/comp.RenderEnd) * (time/comp.RenderEnd) - 1.70158 * (time/comp.RenderEnd) * (time/comp.RenderEnd)  easeInBack

1 + (1.70158 + 1) * pow((time/comp.RenderEnd) - 1, 3) + 1.70158 * pow((time/comp.RenderEnd) - 1, 2)  easeOutBack

iif((time/comp.RenderEnd) < 0.5, (pow(2 * (time/comp.RenderEnd), 2) * ((2.594909 + 1) * 2 * (time/comp.RenderEnd) - 2.594909)) / 2, (pow(2 * (time/comp.RenderEnd) - 2, 2) * ((2.594909 + 1) * ((time/comp.RenderEnd) * 2 - 2) + 2.594909) + 2) / 2)  easeInOutBack

Posted on

16.2 Transition Installation

I am sure you are aware that Davinci Resolve 16.2 has a new feature, the fusion transition panel on the edit page. This is a game-changer as you can now just drag and drop transitions directly onto the edit point between 2 clips. A caveat, of course, those clips need to have “handles” a portion of each clip to actually work on.

Installation

To install the 16.2 Transition pack from our store couldn’t be easier, on windows we include an installer, which will install the files in the correct folder. Once you have run the installer just restart Davinci Resolve 16.2 and you will see them in the Effects Library > Video Transitions > Fusion Transitions.

You can install them manually if you wish and Mac users, unfortunately, do not have an installer.

  • Unzip the folder and move the .settings file
  • Windows place the files in C:\Program Files\Blackmagic Design\DaVinci Resolve\Fusion\Templates\Edit\Transitions
  • Macintosh HD>Library>Application Support>Blackmagic Design>Davinci Resolve>Fusion>Templates>Edit>Transitions

Then restart Davinci Resolve 16.2

Usage

The transitions function the same way as the built-in Davinci Resolve transition. Select your transition and drag it over the cut, select the transition to see controls in the inspector.

The transitions are responsive and can be extended using the inspector > Resolve tab. Some of the transitions have extra controls in the inspector > fusion tab. Controls which work with expressions can not be shown in the inspector as this would break the transition.

Please note the Perspective Transitions have a minimum length of 3 seconds, any shorter and the keyframes become squashed and the effect looks choppy.

Customisation

You can customise and save your settings for future use. Adjust the transition length and parameters to suit your need. Then right-click on the transition and select “Create Transition Preset” and name the transition. This will create a “User” panel above the fusion transition panel with your custom transition.

Wait there’s more goodness!

Transitions which have extra controls in the inspector panel can have 6 versions. This means you have 6 different versions of the transition, tweak a parameter to your liking and then select the next version number, make another tweak and so on.