电竞比分网-中国电竞赛事及体育赛事平台

分享

達芬奇FUSION表達式大全

 老范藏書閣 2022-05-16 發(fā)布于北京

中文為機翻,僅供參考。

原文地址 https://www./mrjholt/expressions-484626

視頻編輯和動態(tài)圖形中的表達世界開辟了一個充滿可能性的世界。在本文中,我將把我在 DaVinci Resolve 中發(fā)現(xiàn)和試驗過的表達式匯總在一起。這份清單絕不是完整的,而是一份工作文件,我會一次又一次地回來。

當我試驗一個表達式時,我養(yǎng)成了將一個文本節(jié)點放入合成中并將該表達式添加到樣式文本表達式輸入中的習慣。這使我能夠以可讀格式查看表達式的輸出。然后我可以調(diào)整表達式以獲得我想要的結(jié)果。

另一個提示:在重命名節(jié)點之前首先使用表達式,因為重命名節(jié)點將更新表達式。

--在簡單表達式中放置“ ”將忽略右邊的字符。就像在“ GetPrefs("Comp.FrameFormat.Rate") -- Returns TL FPS”中一樣,這是添加提醒的好方法。

帶有注釋的表達式列表。

沒有特別的順序。

DaVinci Resolve基礎(chǔ)

time這將返回當前幀。(在“角度”參數(shù)上使用逆時針旋轉(zhuǎn)對象)

time-1返回前一幀的值。(time- n) ( n = 前一幀數(shù)計數(shù),因此time-10將是從當前時間回溯 10 幀)

-time返回當前幀的負值。(使用“角度”參數(shù)順時針旋轉(zhuǎn)對象)

math.floor(3.5) 向負取整(就是向左取整),3.5取整話就是3或者4。往左是負往右是正。3和4兩個數(shù)是3在左邊所以取3。如果是-3.5,那么-4是在左邊,所以取的是-4

math.ceil(3.5)向正取整(就是向右取整),3.5取整話就是3或者4。往左是負往右是正。3和4兩個數(shù)4在右邊所以取4

math.modf(-3.5)向0取整。取兩個值。一個整型值,一個浮點值。返回值為-3和-0.5

用在表達式上會取前面一個值也就是-3

用在FUSION的表達式上可以不用寫math.)

abs 將負數(shù)轉(zhuǎn)換為正數(shù)

time/600返回當前幀除以 600(可用于控制速度,數(shù)字越大越慢)

time*600返回當前幀乘以600(可用于控制速度,數(shù)字越大越快)

sin(time) 這導致從 -1 到 1 的 14 位小數(shù)

ceil(sin(time)) 這導致在 2 幀內(nèi)從 0 到 +1 的進展,因為 ceil 將小數(shù)點向上舍入。

floor(sin(time)) 當 ceil 將小數(shù)點向下舍入時,這會導致在 2 幀內(nèi)從 -1 到 0。

comp.RenderEnd 這將返回當前合成中的幀數(shù)

comp.RenderEnd/2 返回合成的中間位置幀數(shù)

(1-(time/comp.RenderEnd)*2) 這導致在合成長度的 50% 內(nèi)從 0 到 1 的進展,非常適合創(chuàng)建響應式動畫

((comp.RenderEnd-comp.RenderStart)) 結(jié)果在合成中的幀數(shù)

time/comp.RenderEnd 這導致從 0 到 1 的進展,非常適合創(chuàng)建響應式動畫

1-(time/comp.RenderEnd) 這導致從 1 到 0 的進展,非常適合創(chuàng)建響應式動畫

(time*360)/fps 1 每秒完整旋轉(zhuǎn)。(fps = 時間線幀率。)用于“角度”參數(shù)

(time360)/(fps2)每 2 秒旋轉(zhuǎn) 1 次。(fps = 時間線幀率。)用于“角度”參數(shù)

ceil(time/fps)結(jié)果倒數(shù)第二。(fps = 時間線幀率。)

ceil((time)/comp:GetPrefs("Comp.FrameFormat.Rate"))結(jié)果倒數(shù)第二。(當 fps 未知時有用)

ceil((comp.RenderEnd-time)/fps)根據(jù)組合長度以秒為單位返回倒計時。(fps = 時間線幀率。)

ceil((comp.RenderEnd-time)/comp:GetPrefs("Comp.FrameFormat.Rate")) 根據(jù)合成長度以秒為單位返回倒計時,(當 fps 未知時很有用)

max(floor(30-(time/fps)),0)結(jié)果是從 30 倒數(shù)到 0 的整數(shù)。(fps = 時間線幀率。)

ceil(time/comp.RenderEnd*100) 返回組合長度的百分比。

ceil(time/comp.RenderEnd*100) .. "%"返回組合長度的百分比,并在末尾連接 .. % 符號。(所有字符串都需要“”)

ceil((1-time/comp.RenderEnd)*100 返回組合長度的下降百分比。

ceil((1-time/comp.RenderEnd)*100) .. "%" 返回組合長度的向下百分比,并在末尾連接 .. % 符號。(所有字符串都需要“”)

math.floor(PolylineStroke1.WriteOnEnd*100).."%" 創(chuàng)建“擦除”效果的“樣式文本”百分比。

math.floor(Circle1.Radius*100) 根據(jù)圓半徑向上計數(shù)。

math.floor(Rectangle1.Width*50).."%" 創(chuàng)建“矩形蒙版”的“樣式文本”百分比

:randomseed(floor(time/6)) ; return random() 會給你一個簡單的 0.1.0 值,每 6 幀改變一次

ceil(time/comp.RenderEnd*100) .. "%" 結(jié)果百分比“..”將百分比連接到最后

"Progress: " .. ceil(time/comp.RenderEnd*100) .. "%" 進行中的結(jié)果百分比“..”將百分比連接到最后

ceil((1-time/comp.RenderEnd)*100) .. "%" 結(jié)果在百分比中,comp ".." 將 % 連接到最后

"Progress: " .. ceil((1-time/comp.RenderEnd)*100) .. "%" 結(jié)果進行中 比較“..”的百分比下降將 % 連接到末尾

"Loading " .. ceil(time/24) .. "/" .. ceil(comp.RenderEnd/fps) 結(jié)果在 comp 的加載時間

文本驅(qū)動的表達式

((Text1.Output.DataWindow[4]-Text1.Output.DataWindow[2])/Text1.Output.Height)返回文本節(jié)點的數(shù)據(jù)窗口的高度。(用于確定文本的高度)

((Text1.Output.DataWindow[3]-Text1.Output.DataWindow[1])/Text1.Output.Width) 返回 Text 節(jié)點的 DataWindow 的寬度。(用于確定文本的寬度)

[1]=左側(cè),[2]=頂部,[3]=右側(cè),[4]=底部

Text1.StyledText.ValueORText1.StyledText[0]從 text+ 節(jié)點返回文本

Text1.StyledText.Value .. Text2.StyledText.Value 連接 2 個樣式文本字段

string.len(Text1.StyledText.Value 返回字符串的長度

:_, mylines = string.gsub(Text1.StyledText.Value, "\n", ""); return mylines 返回樣式文本字段中的行數(shù)

min(time/(comp.RenderEnd/2),1)-(Text1.Delay)用于加擾文本隨機性以在合成(從單詞到加擾)延遲的中途結(jié)束加擾,這是一個從 0 到 0.25 的滑塊控件以允許延遲。使用 TimeSpeed 速度 -1 來反轉(zhuǎn)壓縮。延遲是一個從 0 到 0.25 的滑塊。

1-(time/comp.RenderEnd) 用于從加擾到單詞的加擾文本隨機性。

寫在表達式上

time/(comp.RenderEnd/fps)結(jié)果每幀一個字母“寫上”。(fps = 時間線幀率。)

time/(comp.RenderEnd/fps)*2導致每幀兩個字母“寫入”(fps = 時間線幀速率。)

time/(comp.RenderEnd/fps)/2結(jié)果在 fps 15 幀的一半內(nèi)出現(xiàn)“寫入”一詞。(fps = 時間線幀率。)

time/(comp.RenderEnd/comp:GetPrefs("Comp.FrameFormat.Rate"))/2當幀速率未知時,會在 fps 的一半內(nèi)產(chǎn)生“寫入”一詞。小心奇數(shù) fps 23.976 等,因為動畫將嘗試在幀之間。

time/(comp.RenderEnd/comp:GetPrefs("Comp.FrameFormat.Rate"))/(Text1.WriteOn)添加一個帶有整數(shù)和步長 2 的滑塊控件“WriteOn”,用戶可以控制寫入速度

掩碼表達式

floor(-1*((Rectangle1.Height))/2)或floor(-Rectangle1.Height)/2返回遮罩的底部位置。

floor((Rectangle1.Height)/2) 返回遮罩的頂部位置。

我還沒有嘗試過,但是將 Height 更改為 Width 應該可以獲得側(cè)面位置。

(理想情況下使用轉(zhuǎn)換作為空對象)

Point(Rectangle1.Center.Y-(Rectangle1.Width/2)+(Ellipse1.Width/2))將項目的邊緣放在蒙版的左側(cè)內(nèi)側(cè)

Point(Rectangle1.Center.Y-(Rectabgle1.Width/2)-(Ellipse1.Width/2)) 將項目的邊緣放在蒙版的左側(cè)

Point(Rectangle1.Center.X, (Rectangle1.Center.Y+(Rectangle1.Height/2))) 返回矩形遮罩的頂部位置

Point(Rectangle1.Center.X, (Rectangle1.Center.Y-(Rectangle.Height/2))) 返回矩形遮罩的底部位置

Point(Rectangle1.Center.Y+(Rectangle1.Width/2)) 返回矩形遮罩的 Right 位置

Point(Rectangle1.Center.Y-(Rectangle1.Width/2)) 返回矩形遮罩的左側(cè)位置

math.floor(((Transform1.XSize*100)-100)+100).."%"% 讀數(shù)為空。% 隨著 RectangleMask 的寬度變小而減少

math.floor((100-Transform1.XSize*100)).."%"% 讀到完整。% 隨著 RectangleMask 的寬度變大而增加

顯示日期和操作系統(tǒng)功能

Text1.StyledText = os.date('%x')返回日期。從下面更改 %x 將給出規(guī)定的結(jié)果。

%a縮寫的工作日名稱(例如,Wed)

%A完整的工作日名稱(例如,星期三)

%b縮寫的月份名稱(例如,Sep)

%B完整月份名稱(例如,九月)

%c日期和時間(例如,09/16/98 23:48:10)

%d每月第16天 (16) [01-31]

%H小時,使用 24 小時制 (23) [00-23]

%I小時,使用 12 小時制 (11) [01-12]

%M分鐘 (48) [00-59]

%m月 (09) [01-12]

%p "am" 或 "pm" (pm)

%S秒 (10) [00-61]

%w工作日 (3) [0-6 = 周日-周六]

%x日期(例如 09/16/98)

%X時間(例如,23:48:10)

%Y全年 (1998)

%y兩位數(shù)年份 (98) [00-99]

%%字符 `%'

打開本地網(wǎng)頁 (Windows)

os.execute ("start ../galleries/gallery.html" )使用本地 .htm 文件打開默認安裝的瀏覽器。在編輯控制按鈕內(nèi)使用。

打開本地網(wǎng)頁 (Mac)

os.execute ("open ../galleries/gallery.html" )使用本地 .htm 文件打開默認安裝的瀏覽器。在編輯控制按鈕內(nèi)使用。

打開網(wǎng)頁 (Mac)

os.execute('open "" "你的網(wǎng)址"')在編輯控制按鈕內(nèi)使用

打開網(wǎng)頁 (Windows)

os.execute('start "" "你的網(wǎng)址"')在編輯控制按鈕內(nèi)使用。

不是這樣的表達式,而是用于向文本編輯器中的節(jié)點添加按鈕的 LUA。這是放在下面的行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 "" "你的網(wǎng)址"')

os.execute('start "" "你的網(wǎng)址"')

]],

ICS_ControlPage = "Controls"

}

}

引用另一個節(jié)點中一個節(jié)點的值

Transform1:Angle結(jié)果是變換節(jié)點的角度。因此,您可以引用任何其他節(jié)點內(nèi)的任何節(jié)點屬性。(節(jié)點名稱:屬性)

從特定時間/框架獲取價值

Rectangle1:GetValue("Width", 10)返回節(jié)點“ Rectangle1 ”在第 10 幀處的寬度

Rectangle1.Width返回整個合成中每一幀“ Rectangle1 ”節(jié)點的寬度值

Merge1:GetValue("Center", time-1).X 從前一幀獲取點的 X 坐標

self:GetValue(....)要在不同時間獲取同一工具上的控件值,請使用self表示法:

獲取上一個節(jié)點值

我還沒有真正想出這個表達式的實際用例,但已經(jīng)嘗試根據(jù)框的寬度更改框的顏色。然而,這個表達式的實際應用是無限的。

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

一個重要的注意事項是在 Blackmagic Fusion 和 DaVinci Resolve 中,大多數(shù)這種性質(zhì)的表達都需要引用幀來從中提取數(shù)據(jù)。盡管如果需要,這可能只是第 0 幀,但當您添加time表達式時,樂趣就開始了。

上面的表達式將查看self:GetSourceTool("[connected input]"):節(jié)點的輸入,實際節(jié)點輸入例如“EffectMask”。這不會被誤認為是節(jié)點的名稱。

然后在此示例中需要源時間 time=frame 節(jié)點所在的幀乘以 2。表達式 =

self:GetSourceTool("EffectMask"):GetValue(("Width2",time2))

comp:GetPrefs( )返回有關(guān)當前組合的信息

comp:GetPrefs("Comp.FrameFormat.Rate") 確定用戶時間線幀速率

這將返回實際的時間線幀率,這對于將變量添加到任何其他需要計算幀率的表達式非常有用。

comp:GetPrefs("Comp.FrameFormat.Width") 返回 DaVinci Resolve 中時間線分辨率的寬度,基本上 1080p 高清分辨率將返回 1920

comp:GetPrefs("Comp.FrameFormat.Height") 返回 DaVinci Resolve 中時間軸分辨率的高度,基本上 1080p 高清分辨率將返回 1080

實際圖像寬度和高度

我最近遇到有人想要獲得 MediaIn1 - MediaIn6 節(jié)點的分辨率而不是時間線的分辨率

self.Input.OriginalWidth 返回 DaVinci Resolve 中輸入分辨率的寬度 基本上 1080p 高清時間線上的 4K 視頻將返回 3840

self.Input.OriginalHeight 返回 DaVinci Resolve 中輸入分辨率的寬度 基本上 1080p 高清時間線上的 4K 視頻將返回 2160

下一個對我來說是新的,我仍在確定它的用途。目前,似乎確保 KEYFRAMESTRETCHER 根據(jù)全局輸入/輸出的長度計算所需的設(shè)置。經(jīng)過進一步調(diào)查,當使用全局輸入/輸出將節(jié)點設(shè)置在組合的總長度內(nèi)時,此表達式很有用。例如。通過將 KeyFrameStretcher 連接到此背景節(jié)點并使用此表達式將使其響應,149 幀的合成可以具有介于 0 - 149 之間的背景節(jié)點開始或結(jié)束。

KeyframeStetcher - 源端

min(Background1.GlobalOut,F1.FPS)這是查看反映全局輸入/輸出長度的背景節(jié)點參數(shù)。表達式中的FPS是時間線幀率。

溶解開關(guān)

溶解節(jié)點可用作背景和前景輸入之間的有效切換。它們可以鏈接在一起以在檢查器中創(chuàng)建用戶選項。

iif((comp.RenderEnd-time)<(comp.RenderEnd/2),0,1) 在合成的中點從背景輸入切換到前景輸入

時光機

這是一個強大的節(jié)點,這個節(jié)點有無數(shù)的表達式。

time<HoldFrame and time or time>HoldFrame+HoldTime and time-HoldTime or Hold_Frame 在 EditControls 中添加工具以提供 2 個滑塊,其中包含合成中的幀,然后您可以在一段時間內(nèi)暫停動畫。

整個工具都在這里,因此您可以對其進行逆向工程。TimeStrecher 動畫暫停節(jié)點

如果-那么-否則

iif(Merge1.Blend > 0.5, 1, 0)要根據(jù)條件(例如 if-then-else 表達式)切換值,請使用 iif() 函數(shù)。如果 Merge1.Blend 大于 0.5,這會將輸入的值設(shè)置為 1,否則設(shè)置為 0

或者,

(Merge1.Blend > 0.5) and 1 or 0 以下 Lua 條件表達式也適用:

運營商

運算符用于評估語句。它們與函數(shù)結(jié)合使用以在 Number Out 和 Point Out 選項卡中執(zhí)行邏輯和數(shù)學計算。

x + yx 加 y。

x - yx 減去 y。

x < y 1.0如果 x 小于 y,則 x < y 1.0,否則為 0.0。

x > y 1.0如果 x 大于 y,則 x > y 1.0,否則為 0.0。

!x 1.0 如果 x = 0,否則為 0.0。

-x (0.0 - x)。

+x (0.0 + x)(實際上什么都不做)。

x ^ yx 的 y 次方。

x * yx 乘以 y。

x / yx 除以 y。

x % yx 取模 y,((x 除以 y)的余數(shù))。

x <= y 1.0如果 x 小于或等于 y,則 x <= y 1.0,否則為 0.0。

x >= y 1.0如果 x 大于或等于 y,則 x >= y 1.0,否則為 0.0。

x == y 1.0如果 x 正好等于 y,則 x = y 1.0,否則為 0.0。

x <> y 1.0如果 x 恰好等于 y,則 x == y 1.0,否則為 0.0(與上述相同)。

x <> y 如果 x 不等于 y,則為 1.0,否則為 0.0。

x != y 如果 x 不等于 y,則為 1.0,否則為 0.0(與上述相同)。

x & y 1.0如果 x 和 y 都不為 0.0,則 x & y 1.0,否則為 0.0。

x && y 1.0如果 x 和 y 都不是 0.0,則 x && y 1.0,否則為 0.0(與上述相同)。

x | y 1.0如果 x 或 y(或兩者)不為 0.0,則為 1.0,否則為 0.0。

x || y 1.0如果 x 或 y(或兩者)不是 0.0,則 y 1.0,否則為 0.0(與上述相同)。

公式

公式作為表達式的一部分輸入到 Number Out 或 Point Out 選項卡中。它們可以由以下功能組成:

n1..n9 數(shù)字輸入 1..9 的值。

p1x..p9x 位置控制 1..9 的 X。

p1y..p9y 位置控制 1..9 的 Y。

time 當前時間(幀數(shù))。

pi pi 的值。

e e 的值。

log(x) x 的以 10 為底的對數(shù)。

ln(x) x 的自然(以 e 為底)對數(shù)。

sin(x) x 的正弦值(x 是度數(shù))。

cos(x) x 的余弦(x 是度數(shù))。

tan(x) x 的正切(x 是度數(shù))。

asin(x) x 的反正弦,以度為單位。

acos(x) x 的反余弦值,以度為單位。

atan(x) x 的反正切,以度為單位。

atan2(x, y) x,y 的反正切,以度為單位。

abs(x) x 的絕對(正)值。

int(x) x 的整數(shù)(整數(shù))值。

frac(x) x 的分數(shù)值。

sqrt(x) x 的平方根。

rand(x, y) x 和 y 之間的隨機值。

rands(x, y, s) x 和 y 之間的隨機值,基于種子 s。

min(x, y) x 和 y 的最小值(最低)。

max(x, y) x 和 y 的最大值(最高)。

dist(x1, y1, x2, y2) 點 x1,y2 和 x2,y2 之間的距離。

dist3d(x1,y1,z1,x2,y2,z2) 3D 點 x1,y2,z1 和 x2,y2,z2 之間的距離

noise(x) 基于 x 的平滑變化的 Perlin 噪聲值

noise2(x, y) 基于 x 和 y 的平滑變化的 Perlin 噪聲值

noise3(x, y, z) 基于 x、y 和 z 的平滑變化的 Perlin 噪聲值

if(c, x, y) 如果 c <> 0,則返回 x,否則返回 y。

緩動函數(shù)

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多