Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 4. únor 2017, 10:36:09 Předmět: Generování lightmap - AO |
|
|
Zdravím vás,
momentálně jsem začal předělávat export scény z GMaxu (který stále s radostí používám, neboť jsem si k němu napsal přes winapi C++ interface), no a chtěl bych trošku posunout kvalitu ambientního osvětlení. V předešlé verzi jsem měl vertexové osvětlení, ale znamenalo to poměrně vysokou úroveň teselace. Takže jsem se rozhodl, že budu AO zapékat do lightmapy.
No a v práci mě naučili se nejprve ptát, pak softit... takže bych se chtěl zeptat, jestli někdo neví o nějaké free (nejlépe) command-line utilitce, která umí generovat (např. z OBJ modelů) lightmapy a zapékat do nich AO (+ exportovat sekundární texturovací souřadnice).
Pochopitelně, pokud o ničem takovém nevíte, tak si to napíši sám, jen si nejsem jistý, jestli to dokáži nakódit dostatečně rychlé.
Tak moc díky. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
Zpirit
Založen: 21. 02. 2013 Příspěvky: 53 Bydliště: Litvínov
|
Zaslal: 4. únor 2017, 20:54:09 Předmět: |
|
|
Promiň za offtopic, ale je možné gmax používat ke komerčním účelům?
Jinak gmax byl můj první modelovací soft.
Není to ani free ani command-line ale je to levný program a umí supr věci.
http://shadermap.com/features/ |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 4. únor 2017, 22:18:43 Předmět: |
|
|
Nehledal jsem moc dlouho, ale podle toho, co jsem se dočetl, tak má nyní GMax pod palcem TurboSquid a lze ho používat i pro komerční použití. Jak je tato informace relevantní...nevím. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 5. únor 2017, 01:37:15 Předmět: Re: Generování lightmap - AO |
|
|
Hmm, čirou náhodou oldschoolový engine, který si píšu ve volném čase (a který zdaleka není hotový a zatím prakticky nic neumí), je založený na lightmapách,
ale lightmapper mám zhruba hotový, včetně atlasu a generování lightmap uvs.
Potažení lightmapou je automatické a nezávislé na primárních UV, takže ani není potřeba dělat mezery v unwrapnutých trianglech.
Na druhou stranu je tam pak potenciální problém se seamy, ale to by neměl být až takový problém u AO (já zapékám kompletní osvětlení).
Počítám nepřímé osvětlení přes hemisphere sampling, takže předělat to na AO generátor by neměl být problém (otázka je, jak to bude s časem).
Myslím, že by mi mohlo zabrat cca den práce vyrobit cmdline utilitu, obj import mám hotový.
Co se týká rychlosti, bude záležet na komplexnosti scény, rozlišení lightmapy a počtu paprsků.
Používám ale kd-tree se surface area heuristics a výpočet je paralelizovaný,
pro relativně větší testovací mapu mi výpočet osvětlení trvá cca 3 hodiny, ale tam jsem dělal 4k paprsků na texel,
nedokážu odhadnout, kolik by stačilo pro kvalitní AO, ale počítám, že by mohlo stačit podstatně míň.
Šum pak řeším blurem, jediný problém je, že to pak může zvýrazňovat seamy.
Výstup by pak mohl být třeba texťák + lightmapy v png, s tím, že by tam byly primarní i sekundární uv (plus lightmap texture index/triangle).
Default je 2kx2k, ale poslední textura v atlasu se smrskne na minimum (je pak NPOT dělitelné osmi)
Takže pokud to ještě nemáš napsané nebo už nemáš nějaký 3rd party program, dej vědět a já to zkusím vyrobit.
EDIT: navíc AO se bude řešit jenom do nějaké vzdálenosti a to výrazně urychlí traversal, takže o rychlost bych se nebál |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 10:18:56 Předmět: |
|
|
Tak to zní dobře. Vlastní řešení jsem sice začal dělat, ale zasekl jsem se u generování atlasů. Je pravda, že jsem koukal na knihovnu thekla, nicméně jsem už asi z práce zhloupl natolik, že jsem jí nedokázal použít v enginu.
Takže jsem si řekl, že bych mohl použít metodu z papercraft generátoru, který jsem psal asi před rokem. Osvětlení bych pak mohl počítat podobně jako Ty, kolize mám také řešené přes KDTree.
Nicméně, hotové a ozkoušené řešení by pro mě možná bylo lepší. Ale nechci Tě otravovat a zdržovat. Když to třeba někdy vytvoříš (třeba i jen pro sebe), asi bych o to zájem měl. Je to tedy na Tobě. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 5. únor 2017, 11:18:58 Předmět: |
|
|
Ok, zkusím to.
Ještě poslední věc: používám 1cm offset před samplováním, takže buď to nechám nastavitelné nebo budu počítat s tím, že měřítko je v metrech. |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 11:24:22 Předmět: |
|
|
Já mám tuším také měřítko v metrech.
Tak pokud Tě to příliš nezdrží, tak se o takovou utilitku pokusit můžeš. Moje řešení se zas tak nepovedlo. Ten papercraft sice fungoval, ale některé trojúhelníky z testovací scény byly strašně titěrné. A ve výsledném unwrapu bylo příliš mnoho prázdného místa.
Tak předem děkuji.
EDIT: No a kdyby to nešlo, tak se holt spokojím s vertexovým osvětlením. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 5. únor 2017, 18:11:41 Předmět: |
|
|
Link je tady: http://www.crabaware.com/Utils/AOGen/AOGen.zip
Je to jeden 64-bit Windows exáč.
Formát výstupního souboru:
kód: |
x y z nx ny nz u v u2 v2 lightmap group_index material name |
Tři řádky po sobě jsou jeden trojúhelník.
pozice*3, vertex_normal*3 (počítaný), původní uv, počítané lightmap uv, lightmap index, group index není potřeba a zbytek řádku je material name
Netestoval jsem to, tak doufám, že to bude v pořádku. Lightmapy vygeneruje do stejného adresáře jako AOGen_lightmapn.png
Můj lightmapper nedělá zdaleka tak dobré groupování jako ten od thekly cos zmiňoval, takže je možné, že to nakonec nebude použitelné kvůli seamům.
Chtěl bych někdy v budoucnu zkusit fitting na seamech jak to popisovali v jednom paperu Naughty Dog, ale momentálně řeším úplně jiné věci než renderer.
Parametry by měly být popsané, když se spustí z cmdline.
Kdyby byly nějaké problémy, stačí říct a opravím to.
EDIT: ještě drobnost: výstupní data jsou v jiném systému, než obj, já používám x dopředu, y doleva a z nahoru (+frontface = clockwise) |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 18:21:11 Předmět: |
|
|
Ty jo, jsi rychlík. Díky.
Btw. jak se to používá? (Když to spustím jen tak, tak mi to napíše "přístup odepřen").
EDIT: Pohoda, už mi to hlásí nápovědu...blokoval mi to antivirák. _________________ Opravdovost se pojí s trýzní...
Naposledy upravil VODA dne 5. únor 2017, 18:28:10, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 5. únor 2017, 18:26:24 Předmět: |
|
|
Hmm, to je zvláštní, mně to normálně funguje, má to statický runtime.
Nemáš náhodou 64-bitový systém? Na XP jsem to nezkoušel... |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 18:29:11 Předmět: |
|
|
mar napsal: |
Hmm, to je zvláštní, mně to normálně funguje, má to statický runtime.
Nemáš náhodou 64-bitový systém? Na XP jsem to nezkoušel... |
Blokoval mi to antivirák, viz výše.
Jdu to otestovat. Ještě jednou děkuji. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
mar
Založen: 16. 06. 2012 Příspěvky: 608
|
Zaslal: 5. únor 2017, 18:35:53 Předmět: |
|
|
Nemáš za co, ani nevím, jestli ten exportovaný mesh se dá správně načíst.
A co to bylo zač? To abych začal svoje commandline utility podepisovat... |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 18:52:28 Předmět: |
|
|
No paráda, jede to svižně. A i výsledek vypadá slibně. Je pravda, thekla ty atlasy generuje kompaktněji, ale čert vem theklu. Tenhle program je super.
Ještě takový dotaz, ty vrcholy ve výstupním souboru asi nejsou ve stejném pořadí, jako v obj, viď?
Já totiž mám v enginu nějakou svojí vnitřní strukturu a nová UVčka potřebuji načíst zpět. Jaký je to mesh, to by se dalo zjistit z materiálu, ale jaký vrchol je jaký, to už bude těžší. _________________ Opravdovost se pojí s trýzní...
Naposledy upravil VODA dne 5. únor 2017, 18:56:16, celkově upraveno 1 krát |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 18:55:43 Předmět: |
|
|
mar napsal: |
Nemáš za co, ani nevím, jestli ten exportovaný mesh se dá správně načíst. |
Co chceš na oplátku? Kdyžtak se můžeme přes PMko domluvit na nějaké finanční odměně.
mar napsal: |
A co to bylo zač? To abych začal svoje commandline utility podepisovat... |
Áléé, hloupý avast... mi někdy blokuje i moje kompilované aplikace. Asi si zas koupím Kasperáka. _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
VODA
Založen: 29. 07. 2007 Příspěvky: 1721 Bydliště: Plzeň
|
Zaslal: 5. únor 2017, 19:00:49 Předmět: |
|
|
VODA napsal: |
Já totiž mám v enginu nějakou svojí vnitřní strukturu a nová UVčka potřebuji načíst zpět. Jaký je to mesh, to by se dalo zjistit z materiálu, ale jaký vrchol je jaký, to už bude těžší. |
Když nad tím přemýšlím, asi nebude problém ty data z enginu zahodit, načíst ten výstup z AOGenu a opět si data přegenerovat tak, aby odpovídali mému záměru. Sice je to takové lepení, ale co mě nezabije, to mě posílí, že? _________________ Opravdovost se pojí s trýzní... |
|
Návrat nahoru |
|
|
|