česky
english
FSBox
Program pro vizualizaci crashboxů scény vytvořené pomocí GMAX a exportované přes MakeMDL.
FSBox |
Tutoriál |
Obrázky
verze 1.3 (10.12.2005) -
fsbox_1v3.zip (3070kB) nebo
fsbox_1v3nomanual.zip (160kB, verze bez HTML manuálu)
- sjednocení formátu importu/exportu v MAXScript
- export crashboxů podle názvu nebo podle výběru
- snížena paměťová náročnost
- opraveno zadávání parametrů programu
- přidání funkce pro odstranění stínů scenérie
verze 1.2 (10.9.2005) - fsbox_1v2.zip - definice vlastních crashboxů v 3dsmax/gmax, zatím jen betaverze
verze 1.1 (21.7.2005) - fsbox_1v1.zip - přidána spolupráce s 3dsmax/gmax, zatím jen betaverze
verze 1.0 (20.7.2005) - fsbox_1v0.zip
Obsah:
- Důvod vzniku
- Základní informace o programu
- Co je potřeba ke správnému běhu
- Parametry při spuštění
- FSBox.ms (MAXScript)
- Co je potřeba ke správnému běhu
- Grafické znázornění činnosti FSBox
- Zobrazení crashboxů v FS
- Zobrazení crashboxů v 3dsmax/gmax
- Nadefinování vlastních crashboxů v 3dsmax/gmax
- Převod DAT souborů ze staré verze na novou
- Známé problémy
- Další vývoj
- Copyright
Důvod vzniku:
Objekty
exportované z GMAX, především ty složitější, velmi často nemají
dostatečně přesně vytvořené kolizní kvádry (tzv. crashboxy).
Stane se pak, že s letadlem narazíte do budovy i pokud konec křídla vašeho letounu je 15 metrů od ní. Zvláště
nepříjemné je to pak na letištích - při snaze o pojíždění mezi
hangáry dochází k building crash. Důvodem je způsob reprezentace crashboxů, který používá FS - vysvětleno zde, a také nedokonalost exportního programu MakeMDL.
.
Základní informace o programu:
FSBox se snaží tuto situaci řešit a to zobrazením aktuálních crashboxů uživateli a především jejich ručním předefinováním.
Vše je postaveno na čtení a úpravě BGLC kódu v souborech s příponou ASM. Program nemá žádné grafické uživatelské rozhraní. Záměrem bylo naopak vytvořit jednoduchou, čistě konzolovou aplikaci, která by se snadno hromadně spouštěla z dávkových souborů.
Krom konzolového programu patří k FSBox ještě skript pro 3dsmax/gmax, který umožňuje spolupráci s těmito programy.
Funkce programu
-
Zobrazení crashboxů ve FS. Na
základě zadaného vstupního ASM souboru vytvoří nový ASM
soubor, který po kompilaci na BGL a nainstalování zobrazí
crashboxy ve FS.
-
Zobrazení crashboxů v 3dsmax/gmax. Ze vstupního ASM souboru vygeneruje
datový soubor, který po načtení přes MAXScript zobrazí v 3dsmax/gmax crashboxy.
-
Vlastní definice crashboxů v 3dsmax/gmax. Po jejich exportování přes MAXScript, po
úpravě ASM souboru pomocí FSBox a kompilaci budou kolize dané scény ve FS fungovat dle vašich představ.
-
Vytvoření XML souboru s popisem polohy scény s vizualizovanými crashboxy.
Nový XML se vytváří podle existujícío XML k dané scenérii.
-
FSBox pomůže s vytvořením dávkového BAT souboru pro rychlejší kompilaci scenérie s vizualizovanými crashboxy.
-
Krom práce s crashboxy program také může upravit ASM soubor tak, aby scenérie nevrhala stíny.
Příští verze bude mít několik možností pro nastavení podmínečného zobrazení objektu - např. zobrazení pouze přes den, skrytí objektů v zimě atd.
Co je potřeba ke správnému běhu:
- fsbox.exe - tento program
- fsbox.dat - nutný vzor pro vytvoření ASM souboru
- fsbox.ms - MAXScript pro 3dsmax/gmax (všechny tyto 3 soubor, jsou součástí instalačního balíku)
- bglc.exe (bglc_9.exe) - program pro kompilaci ASM do MDL. Použití je např "bglc.exe /mdl crashboxes.asm".
Základní verzi možno stáhnou v tomto SDKčku.
Verze bglc_9, kompatibilní s FS2004, je zde. Pokud možno, používejte bglc_9 !!
- bglcomp.exe - program pro kompilaci MDL a XML do BGL. Použití je "bglcomp crashboxes.xml". Stahujte zde
- bglcomp.xsd - nutné schéma pro XML soubory, součástí předchozího SDK.
Všechny soubory (i ASM soubory) je vhodné mít v jednom adresáři. Soubor fsbox.ms doporučuji dát do instalace 3dsmax/gmax do složky Scripts.
Parametry při spouštění:
FSBox.exe je konzolová aplikace, zde jsou popsány všechny možné parametry
fsbox.exe [/i] input [/o output] [/help] [/helpcs ] [/xml [xmlfile]] [/bat [batfile]] [/noshadow] [/maxbox [datfile]] [/noasm]
fsbox.exe [/i] input /patch datfile
fsbox.exe /convert datfile
/i input
zadání vstupního ASM soubor s objekty,
jejichž crashboxy zobrazit, upravit nebo této scenérii odstranit stín. Parametr /i není nutný.
/o output
výstupní ASM soubor se zobrazenými crashboxy.
V případě zadávání jména výstupního souboru je parametr /o před jménem nutný.
Pokud jméno výstupního souboru není zadáno, je zvoleno implicitní crashboxes.asm.
/help
anglická nápověda
/helpcs
česká nápověda
/xml xmlfile
vytvoří XML soubor s pozicí crashboxů stejnou, jako je pozice objektu.
Není-li zadáno jméno souboru, je implicitně zvolen název, odpovídající výstupnímu ASM souboru.
/bat batfile
vytvoří dávku pro snadnou kompilaci a instalaci
Není-li zadáno jméno souboru, je implicitně zvolen název, odpovídající výstupnímu ASM souboru.
/maxbox datfile
vytvoří definice crashboxů pro 3dsmax/gmax MAXScript.
Jméno datového souboru je možné zadat, v opačném případě je zvolen název, odpovídající výstupnímu ASM souboru.
/noasm
nebude vytvářet ASM soubor s vizualizovanými crashboxy.
/patch datfile
vstupní ASM soubor doplni o crashboxy exportovane z 3dsmax/gmax a
uložené v souboru, jehož jméno je specifikováno za parametrem /patch.
/convert datfile
konvertuje zadaný DATový soubor, vytvořený starší verzí FSBox do formátu, používaného FSBox 1.3
/noshadow
Vstupní ASM soubor upraví tak, aby objekt nevrhal stíny.
FSBox.ms (MAXScript):
Toto je skript pro 3dsmax a gmax, pomocí kterého budete do těchto programů importovat a z nich exportovat crashboxy.
- Typ výběru objektů k exportu.
by selection - budou exportovány pouze vybrané objekty.
by name - budou exportovány všechny objekty, jejichž název začíná "crashbox".
- Zvolte program, ze kterého exportujete. Bude tím ovlivněno, zda se bude ukládat výsledek exportu do souboru nebo zda se zobrazí. Gmax MAXScript totiž neumožňuje zápis do souboru.
- Nastavte správně měřítko.
Věnujte pozornost správnému nastavení měřítka. Hodnota 1.0 platí, pokud máte měřítko v programu nastaveno 1 unit = 1 metr.
Pokud máte nastaveno 1 unit = 1 inch, nastavte spinner na 0.0254.
Správné nastavení měřítka snadno zjistíte po exportování crashboxů a zkontrolování vrácených dat. Víte-li, že vaše crashboxy mají rozměr v řádech metrů a ve výstupním DAT souboru uvidíte hodnoty v řádech stovek metrů, bude patrně nutné nastavit měřítko na 0.0254.
-
import - importuje datový soubor s crashboxy a v programu je zobrazí jako kvádry
export - v programu vytvořené crashboxy exportuje (po provedení dalších kroků bodou vámi definované crashboxy fungovat v FS - viz dále)
help - zobrazí základní nápovědu
-
Zde se zobrazí zpráva o výsledku importu/exportu.
FSBox v1.3 compatible data imported - byla importována data ze souboru, kompatibilního s FSBox 1.3
FSBox v1.2 or older data imported !!! - byla importována date ze souboru, vytvořeného starší verzí FSBox. Pokud byla struktura souboru správná, byla data importována správně. Přesto doporučuji daný datový soubor konvertovat do formátu FSBox 1.3 (viz spuštění fsbox s parametrem /convert).
Data exported via clipboard (?) - byl zvolen export z programu gmax, exportovaná data byla zobrazena ve druhém okně, uživatel je musí ručně přes schránku zkopírovat do souboru DAT.
Created C:\gmax\airport_crashes.dat - byl proveden export z programu 3dsmax, je zobrazen název exporovaného souboru
Grafické znázornění činnosti FSBox
Pro snazší pochopení činnosti FSBox doporučuji se seznámit s postupem mezi vytvořením scenérie a zobrazením v FS.
Typy souborů:
- ASM - zdrojový kód scenérie v jazyce BGLC (je podobný assembleru). Tyto soubory vznikají při exportu z gmax pomocí MakeMDL, ve kterém je zapnuta možnost Keep Files (ponechání ASM souborů).
- MDL - vzniká kompilací ASM souborů pomocí programu bglc. Vzniká také při exportu z gmax pomocí MakeMDL.
- XML - soubor s popisem polohy scenérie, je vytvořen během exportu z gmax pomocí MakeMDL
- BGL - vzniká kompilací XML (a MDL) souborů. Je to formát, používaný Flight Simulatorem
- DAT - soubory pro výměnu dat mezi fsbox.exe a fsbox.ms.
- X - DirectX soubory, je možné je dát na vstup MakeMDL namísto exportu z gmax.
Obdélníkem jsou značeny programy, elipsou přípony zpracovávaných souborů, šipky jsou převody mezi datovými formáty (především kompilace).
Zobrazení crashboxů ve FS:
- Vytvořte scenérii v GMAX a zvolte export do MDL pomocí MakeMDL.
- V Options MakeMDL nastavte "Keep Files" a klikněte Start.
- Vzniknou dva ASM soubory - např. scenery.asm a scenery_0.asm.
-
Teď pomocí fsbox vytvoříte jeden ASM soubor, několik příkladů, jak toho můžete docílit:
fsbox.exe scenery.asm /o output.asm /xml /bat
načte scenery.asm, výslednou scénu s crashboxy uloží do output.asm, na základě souboru scenery.xml vytvoří soubor output.xml a dávkový soubor output.bat
fsbox.exe scenery.asm
načte scenery.asm a výsledek uloží do implicitně určeného souboru crashboxes.asm
fsbox.exe scenery.asm /o output.asm /maxbox boxes.dat
načte scenery.asm, vytvoří output.asm, navíc ještě vytvoří soubor boxes.dat s definicemi kvádrů pro zobrazení v 3dsmax/gmax
- Zkompilujte nový ASM soubor do formátu MDL
bglc.exe /mdl scenery.asm
Zkompilujte MDL soubor do BGL. Musíte ale mít nejprve ručně nebo pomocí FSBox vytvořen soubor XML.
bglcomp.exe scenery.xml
Nebo místo předchozích dvou kroků použijte dávkový BAT soubor.
- Výsledkem kompilací je BGL soubor scenery.bgl, nainstalujte jej do FS a vyzkoušejte.
Zobrazení crashboxů v 3dsmax/gmax:
- Vytvořte scenérii v GMAX a zvolte export do MDL pomocí MakeMDL.
- V Options MakeMDL nastavte "Keep Files" a klikněte Start.
- Vzniknou dva ASM soubory - např. scenery.asm a scenery_0.asm.
- Necháte vytvořit soubor DAT, ve kterém jsou popsány crashboxy, které se potom zobrazí v 3dsmax/gmax
-
fsbox.exe scenery.asm /maxbox
načte scenery.asm a vytvoří datový soubor crashboxes.dat, navíc se ještě vytvoří soubor crashboxes.asm
fsbox.exe scenery.asm /maxbox /noasm
nepřejete-li si vytvářet ASM, přidejte parametr /noasm
fsbox.exe scenery.asm /maxbox boxes.dat
načte scenery.asm a vytvoří datový soubor boxes.dat
- V 3dsmax/gmax otevřete v menu MAXScript > Run Script. Vyhledejte a spusťte skript fsbox.ms
- Otevře se vám okno skriptu. Klikněte import, vyhledejte vytvořený DAT soubor a otevřete jej.
- V prostředí programu 3dsmax/gmax se vám zobrazí crashboxy. Problém může nastat s neodpovídajícím měřítkem importovaných crashboxů - v tom případě znovu importujte se změněným měřítkem v nastavení fsbox.ms (scale).

Použití parametru /maxbox a zobrazení v 3dsmax.
Nadefinování vlastních crashboxů v 3dsmax/gmax:
- Uživatel nadefinuje crashboxy vytvořením běžných boxů (kvádrů). Pro snazší manipulaci je všechny může sloučit pomocí modifikátoru Edit Mesh a jeho funkce Attach do jediné Editable Mesh.
- Spusťte skript fsbox.ms (menu > MAXScript > Run Script)
- Nastavte parametry exportu.
export by selection nebo by name
program 3dsmax nebo gmax
hodnota měřítka scale
- V okně spuštěného skriptu nyní klikněte na export
Při exportování v 3dsmax se uloží soubor s popisem crashboxů. Pokud nezvolíte jinak, vznikne vám soubor crash_export.dat.
Při exportování v gmax se výsledek neuloží, ale zobrazí (gmaxův MAXScript neumožňuje ukládání souborů). Zobrazený text celý přes schránku zkopírujte do souboru, nazvěte jej napříkald crash_export.dat
Může se stát, že se místo oddělovačů řádků v okně zobrazí jen tlusté svislé čáry nebo obdélníky. Pro další kroky by to nemělo mít špatný vliv.
Fsbox.ms všechny vybrané (nebo vhodně pojmenované) objekty pro sebe rozdělí na jednotlivé elementy (subobjekty)
- pracovně si tedy vámi vytvořenou Editable Mesh zpět rozdělí na jednotlivé boxy. Z kvádrové obálky každého takového elementu pak vznikne
jeden crashbox. Dva elementy editable mesh nesmí sdílet žádný společný vrchol a plochu, jinak budou vyhodnoceny jako jeden crashbox.
Crashboxy mají stěny rovnoběžné se souřadnicovým systémem scény, takže rotace boxu se projeví jen změnou velikosti jeho obálky a
tím i změnou velikost crashboxu, nikoliv jeho natočením.
-
Nyní je potřeba sloučit nové crashboxy s původním ASM souborem. Provedete to příkazem
fsbox.exe scenery.asm /patch crash_export.dat
soubor scenery.asm je doplněn o crashboxy, definované v souboru crash_export.dat
- Zkompilujte upravený soubor scenery.asm známým způsobem do formátu BGL (pomocí programů BGLC a BGLCOMP) a otestujte ve FS
Převod DAT souborů ze staré na novou verzi:
- Staré datové soubory poznáte podle dat, která obsahují
15.9243,8.57656,26.3459,27.1573,-8.57656,-30.6221
2.63285,2.26066,2.59684,-9.15751,0.0,-5.66402
16.6287,18.2878,19.3323,-47.317,0.0,16.0739
BGL_CRASH_OCTTREE crash_end_1
dw CRASH_FLAG_BUILDING_PLANE
dw 1
real4 -77.6461,0.0,11.8585
real4 23.3186,5.17386,6.64294
dw 1, 1, 1, 1, 1, 1, 1, 1
OCTTREE_NODE 255, 255, 255, 255, 255, 255, 255, 255
crash_end_1 label word
- Konverzi do nového formátu provedete následovně:
fsbox.exe /convert crashdata.dat
- Pokud v souboru crashdata.dat byla data, vygenerovaná některou starší verzí, nyní bude vnitřní struktura vypadat nějak takto:
; exported from 3dsmax/gmax
; compatible with fsbox version 1.3
32.709499,3.004010,30.690399,-26.942801,0.000000,14.750400
32.574902,1.582980,22.836100,-26.954901,3.011230,18.796801
4.845850,4.215890,12.270100,-13.152900,7.720600,1.213870
0.807644,2.980200,1.043210,-12.136400,11.242300,4.872620
2.860400,2.271490,2.086410,-38.903599,0.000000,4.103980
Známé problémy:
-
Export v gmax zobrazí chybu "Maximum string length exceeded".
Důvodem je velký počet exportovaných crashboxů, jejich popis se nemůže zobrazit v okně k tomu určením.
Přes to by mělo být možné jejich popis přes schránku zkopírovat z okna Listeneru (v gmax se spouští klávesou F11)
Další vývoj:
Odladění verze 1.3. Podmínečné zobrazení objektů.
Copyright:
Program je možno volně šířit a používat. Komerční šíření možné pouze s písemným souhlasem autora.
Pokud FSBox použijete ve své scenérii, prosím dejte vědět přes email (abych měl alespoň nějakou zpětnou vazbu).