Íme egy kis mankó az általam ismert legjobb képminőség eléréséhez, amit a source motoros játékokból elő lehet hívni. Kis kedvcsinálónak, a nemrégiben kiadott UK3 is ezzel a teknikával készült.
Ez az olvasmány kezdőknek és haladóknak egyaránt készült, külön figyelmet fordítva az abszolút kezdőkre, alapos, de remélem könnyen érthető.
Természetesen más módszerek is léteznek a demótól a filmig, mégis fontosnak tartottam, hogy az ffdshow-val és a sony vegas-al is közelebbi kapcsolatba kerüljünk. Bármi kérdésetek merül fel a tutoriallal kapcsolatban, vagy szerintetek kimaradt belőle, ne habozzatok kommentet írni!
Tisztogassuk le gépünkről az összes korábbi kodeket, majd tegyük fel a K-Lite kodek pakkot lots of stuffs módban! (amennyiben más kodekek is tanyáznak a gépen, előforduló anomáliák miatt sikertelen lehet majd próbálkozásunk). Majd az Avisynth-et is, amennyiben a K-lite-ban nincs benne.
(update!: újabb klite-oknál előfordul, hogy nem lesz a listában az ffdshow! ezért a klcodec431f verziót keressétek és használjátok, amíg nem javítják!)
*AZ ALAPOK
Mindenek előtt látogassunk el a *.*\Steam\steamapps\NEVED\counter-strike source\cstrike mappához, és biggyesszünk egy tetszőleges betűt, mondjuk egy J-t és (cstrikeJ) indítsuk el a játékot. Elkezd updatelni, létrehozza újra a cstrike mappát, ami mentes lesz az összes eddigi beállításainktól (grafikai butítástól, amit az fps-configok állítottak el) és az újonnan létrejött "tiszta" cstrike mappába egyből el is kezdhetünk szemetelni. Másoljuk be a demo.cfg-t a cfg mappába, a scripts és resource mappákat értelem szerűen ugyancsak a moviezásra használt cstrike-ba.
Ezzel a lépéssel eltüntettük a hud felesleges részeit, egyedül a deathnotice és a célkereszt lesz látható a képernyőn.
Alternatív megoldás lehet az INpact CSShud tweaker, amivel szintén a radar, az élet, és a kijelző további részei tüntethetőek el.
demo.cfg
res&scripts
Fontos, hogy mikor újra játszanánk írjuk át a filmezésre használt cstrike mappát stílszerűen mondjuk cstrikeM re, majd a cstrikeJ (azaz a Játékra használt) mappát eredeti állapotára írjuk vissza: cstrike.
Ez azért fontos, mert így megspóroljunk jópár lépést, megkíméljük magunkat a be és ki másolgatástól, így két cstrike-unk lesz, amit tetszőlegesen váltogathatunk, és váltogassunk is, ha játszani illetve mozizni szeretnénk!
*FELBONTÁS
1280*720, azaz a 16:9 es wide screen felbontás az ajánlott. Ennél nagyobb felbontás felesleges, kisebbet meg egyenesen botrány használni :), és kapcsoljuk be az ablakban futtatást(run in window), hogy az ffdshow majd érvényesülni tudjon a felugró ablakkal.
Korábbi tapasztalataim alapján néhány tft monitor digitális csatlakozásakor nem választható a kívánt felbontás, ez esetben a videokártya vezérlő programnál(nvidia control panel) keressük ki a manage custom resolution opciót, és manuálisan adjuk meg az 1280*720 as szorzót, ami ezután választható lesz játékon belül is. Set launch optionsben is megadhatjuk a következő értékekkel: -console -window -w 1280 -h 720
Minden esetre figyeljetek oda, bármilyen programmal is nyúltok majd a képekhez, amit a játékból csinál, de a felbontást mindig ezt erőltessétek, elkerülendő az oldal vagy fenti fekete sávozódást!
*A GRAFIKA BEÁLLÍTÁSA
A grafikát célszerű a játékon belül maximumra állítani, természetesen nem probléma, ha megeszi a gépünket, mert az fps szám itt nem mérvadó, a konfig minden esetben fix 90, vagy 900 fps el dolgozik másodpercenként(lásd később). Használhatunk továbbá külső programokat is kártyánk rejtett képességeinek előhívására, ehez nyújt segítséget például az nHancer nevű program , mellyel a régebbi VGA-kon is elérhetőek olyan nyalánkságok mint a 16szoros anizotrópikus szűrés vagy az antialiasing, avagy az élsimítás durvább fajtái. Ezeket mindenképpen kapcsoljuk be, lássunk el szépen a távolba, és ne legyen recés a kép.
*AZ FFDSHOW szerepe
Az ffdshow beállítása roppant egyszerű, viszont két módszer létezik a képek kiszedéséhez. Az apró külömbségekre nagyon oda kell figyelni! Keressük meg a K-lite codek packot a start menüben, azon belül a configuration-t, és kattintsunk a VFW interface re.
Ha ez megvan, lépésről-lépésre kövessük a képeket, lehetőleg minden beállítás után mentsünk(apply):
ffdshow90_1
az input alatt, az outputon szedjük ki a pipát a store frames to AVI boxból (újabb verzióknál ugyanis auto bepiszkolja)
katt az inputon a configure-ra, a következő ablakhoz:
ffdshow90_2
A grab résznél külön figyeljünk oda, hogy ahova menti majd a képeket, ez esetben a BMPs mappa a meghajtónk olyan particióján legyen, ahol van elegendő hely, extrém esetben akár egy folyamat több giga is lehet.
Ha készen állunk, lépjünk be a játékba, a SHIFT+F2 kombinációval töltsük be a demónkat, majd a korábban kiválasztott tick előtt hívjuk meg a demo.cfg -nket a console-ból(exec demo).
Space re felnyílik egy kisebb legördülő menü, ott válasszuk ki az ffdshow-t és az ok lenyomása után elkezd bitmapokat készíteni a megadott helyre.
A folyamatot dupla space el tudjuk leállítani.
Ez volt a 90 frame-es teknika.
Amennyiben nem vagyunk kíváncsiak egyelőre a 900 frame es megoldásra, hagyjuk ki a következő pontot, és ugorjunk a total commanderhez.
**CSINÁLJUNK BLUR-t!
Haladóknak és ráérősöknek ajánlott, mivel ez radikálisan megnöveli majd az idejét a jelenetek demóbol való kiszedésének!
Kalandozzunk el egy kicsit a filmezés világába, hogy értsük mit is fogunk csinálni!
Nem kell különösebben magyarázni, hogy egy elmosódott képkocka kevesebb információt tartalmaz mint egy tűéles, vagyis kevesebb helyet foglal. A motionblur-ban pedig az a jó, hogy csak a mozgásban levő részletek mosódnak el, így nem lesz zavaró a kevésbé részletes kép.
A megvalósításnál a hagyományos, celluloidra rögzítő kamerát vettem alapul. Ha a hollywoodi filmeknek megfelel, akkor egy csmovie-nak is.
A kamera két tulajdonságát kell modellezni, hogy hasonló motionblur-t kapjunk. Az exponálást és a szalagtovábbítást. A kamera 1/24 másodpercenként készít egy új képkockát. Alap beállításnál 1/48 másodperc jut az exponálásra, és szintén 1/48 másodperc a szalagtovábbításra.
Ez 30fps-es videóra levetítve: 1/60 másodperc történéseit kellene 1 képkockára rögzíteni (exponálás), az utána következő 1/60 másodperc pedig mehet a kukába (szalagtovábbítás).
Motionblur-t a legegyszerűbben néhány (sok) képkocka átlagolásával kapunk. Minél kisebb a képkockák között eltelt idő annál több fér bele az 1/60 másodpercbe, azaz annál szebb lesz a végeredmény. Például nézzük meg, mikor 5 képkockát használunk. Szóval az 1/60 másodperbe, hogy 5 képkocka beleférjen, 1/300 másodpercenként kell egy képkocka (1/60/5), vagyis egy 300 fps-es videó. Ebből úgy kapjuk meg a 30 fps-t, hogy öt képkockát átlagolunk, ez lesz a motionblur-ös képkocka, aztán a következő ötöt pedig kidobjuk. Ezt addig ismételgetjük ameddig tart a jelenet.
A jó képminőséghez, elég sok képkocka kell, ahhoz pedig nagy tárkapacitás. Hogy ne teljen be a vinyó pár másodperces jelenettől, olyan megoldásra van szükség, ami on the fly(a művelet közben) végzi a számításokat, és csak a végeredmény kerül a lemezre. Szerencse, hogy a source nem csak tga-t képes menteni, hanem avi-t is. Ha codec-nek az ffdsow-t választjuk, akkor a lehetőségek tárháza nyílik meg előttünk, mivel képes avisynt scriptet futtatni.
Az avisynth-nek olyan funkciója nincs, ami túlmintavételezett anyagból motionblur-os videót generál, de most nem irkálnék itt semmit, ha nem lenne megoldható. A szűrő a TemporalSoften() névre hallgat, amit zajszűrésre használnak. Úgy működik, hogy átlagolja azokat a pixeleket az időben, amit a megadott paraméterek alapján alkalmasnak talál. És most mondanám, hogy miért pont 900 az a fránya fps. Ez a szűrő maximum 15 képkockával tud számolni, vagyis 1/60/15 = 1/900. Aztán a source 1000 fps felett használhatatlan hangot ment, a legfontosabb pedig a sebesség (lassúság).
A szkript 3 sorból áll. Az első sor a 24 bites képet konvertálja 32 bitessé, mert ezt kívánja a szűrő. A harmadik sor pedig a 32 bites képet konvertálja 24 bitessé, mert a 24 bites bmp ezt kívánja. A második sor a TemporalSoften(7, 255, 255) utasításból áll. Az első paraméter a képkockák számát takarja, a másik kettő pedig az érzékenységet. Mivel most nem zajt szűrünk, ezért ezek koppra vannak állítva. A hetes szám nem konkrét képkockaszámot jelent, hanem sugarat (temporal radius). Ezekkel a paraméterekkel a szűrő kimenetén az aktuális képkocka, az előtte levő 7, és az utána következő 7 képkocka átlaga fog megjelenni.
Itt még mindig 900 fps-es a video, de már csak annyi dolgunk van, hogy minden 30-adik képkockát lementjük.
És, hogy miként fest ez a gyakorlatban?
ffdshow900_1
ffdshow900_2
ffdshow900_3
Amint a képeken látszik, apróbb változtatások léptek fel a 90 frames kiszedéshez képest, de fontos, hogy a demo.cfg ben a host_framerate 90-et 900-ra írjuk át, amennyiben ezt a megoldást választottuk.
*TOTAL COMMANDER
Az előző lépésben kaptunk jópár képet aminek egyen elnevezése van ugyan, de így ebben a formában a vegas nem fogja megenni. Ezért kell a tc-ben a csoportos átnevezéssel (Multi-Rename Tool/CTRL+M) kezelésbe vennünk őket. Keressük meg a korábban megadott BMPs mappánkat és az ott sorakozó képeket jelöljük ki növekvő sorrendben jobbklikkel, majd nyomjuk le a ctrl+m kombinációt, vagy válasszuk ki a menüben.
Az új elnevezés számláló(counter) legyen és minimum 5 számjegy hosszúságú (digits), jelenet hosszúságától függően elegendőnek kell lennie az 5-6 értéknek.
total commander
*VEGAS
Nagyon sokan ennél a résznél véreznek el, viszont fontos eljutnunk a veszteségmentes renderelésig.
File-Properties:
vegas0
Hozzuk létre a saját template-ünket, és pipáljuk be, hogy minden projectet ezzel kezdjen(start all new projects with these settings). Majd mentsünk.
vegas1
vegas2
vegas3
vegas4
A video track-et húzzuk a timeline-ra és keressük ki *.*\Steam\steamapps\NEVED\counter-strike source mappában a cs.avi-t és ismételjük meg vele a műveletet!
A piros réteg számunkra felesleges, töröljük is ki!
Majd a file>render as-nál a következő dolgokat végezzük el:
vegas5
A render loop region only-val majd csak a timeline-on kijelölt részt fogja renderelni avi-ba. (ez azért hasznos, hogy ne kelljen mindig az akár több perces anyagon renderelésével időt vesztegetni, alkalmazzuk sokszor csak a kijelölt anyagon a tesztelést)
vegas6
Itt is hozzuk létre a template-ünket amit a floppy-val(save) rendszeresen mentsünk beállításról beállításra!
vegas7
vegas8
*AVIból mp4
A mellékelt csomagban találhattatok egy encoder mappát ami számunkra az utolsó lépést jelenti majd.
Az Avisynth felinstallálása után rögtön neki is kezdhetünk az enkódolásnak, de előtte nyissuk meg az in.avs-t notepaddal (jobbklikk társítás vagy szerkesztés) és a macskakörmök közti részt cseréljük ki az imént renderelt avira!
Ez x264 ben kódolt muxed.mp4-hez vezet, melyet tetszés szerint átnevezhetünk, de legközelebbi kódolás előtt mindenképpen vagy nevezzük, vagy távolítsuk el onnan!
A minőséget a make.bat szerkesztésével a crf x változtatásával lehet módosítani, növelésével kisebb fájlméret, rosszabb minőség vehető észre.
encoder encoder2 encoder3
A LÉPÉSEK RÖVIDEN:
-moviezásra használatos cstrike mappára váltás
-grafika, felbontás
-shift+F2 > load... goto xy tick
-exec demo a console-ba
-resume, space
-popup: ffdshow!
-space space
-total commander > multi rename tool
-vegas > project media > import media > open still image sequence
-cs.avi+
-file > render as
-encoder
-in.avs szerkesztés (notepaddal pl.)
-make.bat
AMIRE FELTÉTLENÜL FIGYELJETEK:
-friends hangjait kapcsoljátok ki
-grafikát maximumra
-16:9 es képarány(aspect ratio),1280*720, run in window
-legyen elég lemez terület
A következő problémák merülhetnek fel:
-nem indul el az encoder a make.bat elindítására vagy elindul de befejezés előtt kudarcot vall
: nincs felinstallálva az avisynth, vagy néhány esetben előfordulhat, hogy ha nincs hang a video alatt nem tud muxolni kellőképpen vagy egyszerűen csak elgépeltétek az in.avs ben macsakaköröm közti részt.
-a space lenyomására elkezd szaggatni a játék, de nem csinál képeket a BMPs mappába
:valószínűleg nem választottad ki az ffdshow-t a felugró ablakban, így az nem a megadott helyre dolgozik.
-fejjel lefelé készültek a képek a BMPs mappába
:mikor 90 frame-el szedjük ki a jeleneteket mindig legyen bepipálva az inputnál a flip picture, 900 frame-nél NE!
LINKEK:
www.sonycreativesoftware.com
K-Lite Codec Pack
Avisynth
x264.nl