ConditionalReader
(clip, string filename, string
variablename, bool "show")
ConditionalReader
vám umožní import informací
z textového souboru, s různými hodnotami pro každý snímek - nebo rozsah snímků.
Parametr | Popis | Výchozí hodnota |
clip | Vstupní klip. Nemění se, dokud nezadáte show=true. | Není |
filename | Soubor s hodnotami proměnných, které chcete nastavit. | Není |
variablename | Název proměnné, které chcete přiřadit informace ze souboru. | Není |
show | Je-li nastaveno true, tak hodnota odpovídající aktuálnímu snímku bude zobrazena na tomto snímku. | false |
Je to prostý textový soubor. Všechny separátory
jsou tvořeny mezerami, a nové řádky označují nová (další) nastavení. Registr nemá hodnoty!
TYPE (int|float|bool)
V každém souboru můžete zadat pouze jeden typ dat. V danou chvíli je možné mít float, int nebo bool hodnoty. Zadáváte je použitím příkazu TYPE . Musíte vždy začít zadáním typu dat, t.j. dokud není určen typ dat, nic se ničemu nepřiřazuje. Jednou zadaný typ dat nelze v průběhu provádění měnit!
DEFAULT <value>
Zadává výchozí nastavení hodnot všech snímků. Tento příkaz můžete použít hned po zadání typu dat, toto nastavení se použije na všechny snímky. Můžete toto nastavení také vynechat, ale pak se musíte přesvědčit, že pro každý snímek máte přímo definované nastavení, Jinak bude chování filtru neodhadnutelné.
OFFSET <value>
Když je zadáno, posune to všechna čísla snímků o konstantní posunutí. Toto je provedeno pro všechna čísla snímků, která jsou nastavena za tímto klíčovým slovem.
<framenumber> <value>
Nastavuje hodnotu jen pro uvedený snímek<framenumber>.
R <startframe> <endframe> <value>
Nastavuje hodnotu pro zadaný rozsah snímků. Oba hraniční snímky <start-frame> a <end-frame> jsou zahrnuty v daném rozsahu.
I <startframe> <endframe> <startvalue> <stopvalue>
Interpoluje hodnoty od <startvalue> do <stopvalue> v zadaném rozsahu snímků. Pracuje pouze pro celé (int) a desetinné (float) hodnoty. Oba hraniční snímky <start-frame> a <end-frame> jsou zahrnuty v daném rozsahu.
Jak bylo zmíněno, typ může být float, int nebo bool.
Int - celá čísla, mohou být se znakem.
Float - desetinná čísla (s desetinnou tečkou), může jim předcházet znak a mohou být následována písmeny
e nebo E a desítkovým číslem jako exponentem. Například -732.103 nebo 7.12e4.
Bool může být true, T, yes, false, F nebo no.
File.txt:
Type float Default 3.45567 R 45 300 76.5654 2 -671.454 72 -671.454
Tento soubor vrací desetinné hodnoty. Výchozí nastavení (default) vrátí 3.45567. Nicméně snímky od 45 do 300 vrátí 76.5654. A snímky 2 a 72 vrátí
-671.454.
Můžete si všimnout - následující nastavení přepisují předchozí. To ilustruje snímek '72' - nehledě na to že
se nachází uvnitř rozsahu 45-300, bude vrácena pozdější hodnota. Na druhou stranu, pokud by byl rozsah zadán až
po '72 -671.454' - vrátila by se hodnota 76.5654.
Skript pro
práci s tímto souborem by mohl vypadat takto:
colorbars(512,512) trim(0,500) ScriptClip("subtitle(string(myvar))") ConditionalReader("file.txt", "myvar", false)
Tento skript vkládá hodnoty do proměnné "myvar", která je použita filtrem Subtitle, vyvolaný filtrem ScriptClip pro zobrazení podmíněné hodnoty jako titulku.
Všimněte si! Řádek ConditionalReader() se nachází po každém použití "myvar" ve Vašem skriptu.
AviSynth skript:
colorbars(512,256) a1 = trim(0,600) a2 = MessageClip("Text clip") overlay(a1,a2, y = 100, x = 110, mode="subtract", opacity=0, pc_range=true) ConditionalReader("opacity.txt", "ol_opacity_offset", false) ConditionalReader("xoffset.txt", "ol_x_offset", false)
xoffset.txt:
Type int Default -50 I 25 50 -50 100 R 50 250 100 I 250 275 100 250
opacity.txt:
Type float Default 0.0 I 25 50 0.0 1.0 R 50 250 1.0 I 250 275 1.0 0.0
V zásadě definuje klíčové snímky pro x-offset (horizontální posun) a opacity (neprůhlednost). Ve snímcích 25->50 je neprůhlednost zvětšena z 0.0 na 1.0, zatímco text je
posunut zleva doprava. Potom text stojí na místě od snímku 50 po snímek 250, a potom
jede text dále doprava až postupně zmizí.
Je jednodušší si klip prohlédnout, než podrobně popisovat, co dělá.
Jak jste si mohli všimnout používání velkého počtu volání ApplyRange() ve skriptu může vést k problémům s resoursy. Použití ConditionalReader
spolu s
ConditionalFilter může vést k efektivnímu řešení.
File.txt:
Type Bool Default False 2 True R 45 60 True 72 True R 200 220 True 210 False 315 True
Uvedený skript vrátí logické hodnoty. Ve výchozím nastavení vrací False. Nicméně pro
snímky 2, 45 až 60, 72, 200 až 220 a 315 kromě 210 vrátí True. Mohli jste
si všimnout, že pozdější změny přepisují nastavení provedená v souboru dříve. To ilustruje snímek '210' - i
když je uvnitř intervalu 200-220, bude vrácena pozdější hodnota False.
Skript pro použití tohoto souboru by mohl vypadat takto:
colorbars(512,512) trim(0,500) A=Last FlipHorizontal() # Přidá komplexní řetězec filtrů B=Last ConditionalFilter(A, B, "MyVar", "==", "False", false) ConditionalReader("File.txt", "MyVar", false)
To vloží hodnoty do proměnné zvané "MyVar", kterou používá ConditionalFilter k výběru mezi nezpracovanou a otočenou verzí zdroje.
Všimněte
si! Řádek ConditionalReader()
je umístěn po každém
použití "MyVar" v našem skriptu.
Seznam změn:
v2.60 | Přidáno OFFSET |
$English Date: 2008/10/26 14:19:43 $
Český překlad:18.9.2009