.[ ČeskéHry.cz ].
Generování lightmap - AO
Jdi na stránku 1, 2, 3, 4, 5, 6, 7  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
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ň

PříspěvekZaslal: 4. únor 2017, 10:36:09    Předmět: Generování lightmap - AO Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zpirit



Založen: 21. 02. 2013
Příspěvky: 53
Bydliště: Litvínov

PříspěvekZaslal: 4. únor 2017, 20:54:09    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 4. únor 2017, 22:18:43    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 5. únor 2017, 01:37:15    Předmět: Re: Generování lightmap - AO Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 10:18:56    Předmět: Odpovědět s citátem

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ě. Smile
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 5. únor 2017, 11:18:58    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 11:24:22    Předmět: Odpovědět s citátem

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. Smile

EDIT: No a kdyby to nešlo, tak se holt spokojím s vertexovým osvětlením. Wink
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 5. únor 2017, 18:11:41    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 18:21:11    Předmět: Odpovědět s citátem

Ty jo, jsi rychlík. Díky. Smile
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
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 5. únor 2017, 18:26:24    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 18:29:11    Předmět: Odpovědět s citátem

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. Wink
Jdu to otestovat. Ještě jednou děkuji.
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 608

PříspěvekZaslal: 5. únor 2017, 18:35:53    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 18:52:28    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 18:55:43    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu
VODA



Založen: 29. 07. 2007
Příspěvky: 1721
Bydliště: Plzeň

PříspěvekZaslal: 5. únor 2017, 19:00:49    Předmět: Odpovědět s citátem

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? Smile
_________________
Opravdovost se pojí s trýzní...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3, 4, 5, 6, 7  Další
Strana 1 z 7

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna