WebGL - import modelů rubrika: Programování: Jiné

5 dzejkob
položil/-a 19.5.2017

Zdravím,

Dostal jsem se k požadavku vytvoření 3d vieweru v prohlížeči založeném na WebGL. Po prozkoumání pár knihoven jsem se rozhodnul pro three.js - je srozumitelné a přehledné. Problémy ovšem nastávají s importem modelů. Ať už to je z čehokoliv kamkoliv:

  • import OJB+MTL je prakticky nepoužitelné pro složitější modely (občas chybí faces, model není optimalizovaný, pomalu se načítá atd.)

  • import přes collada (.dae) už je o dost použitelnější - jsou ale posunuté textury

Tím prakticky možnosti končí. Je celkem jedno, zda se to exportuje ze sketchupu, blenderu nebo něčeho jiného (možná se mýlím). Model se načíst dá - co se ale týče materiálů, povrchu, průhlednosti aj. tak to je celkem žalostné.

Zeptal bych se - nemáte s tím někdo zkušenosti? Ať už se týká jiného enginu či jiného modelovacího softwaru. Zajímají mě jakékoliv best practices.

Zatím to vypadá tak, že je nezbytné pro to vytvořit nějaké interní nástroje, které budou umožňovat doladit textury, povrchy, materiály atd.

(je skutečně důraz na kvalitu - nestačí holý barevný model)

odkaz
3 Pavel Kouřil
odpověděl/-a 3.6.2017
 
upravil/-a 3.6.2017

Snad neodpovídám pozdě a teda už zbytečně.

Chybějící faces u OBJ+MTL bude nejspíš to, že model nemáš triangulovaný (tzn. faces nejsou pouze trojúhelníky), a importer neumí triangulovat sám, ale je to jen wild guess. Ale triangulace ti zvětší load time, i pokud ji předpočítáš v Blenderu (zaškrkávátko "triangulate"). :)

Pokud chceš zůstat u three.js, tak se zkus podívat po nějakém binárním formátu, to by teoreticky mělo být rychlejší (např. FBX).

Každopádně, pokud to má být čistě prohlížeč, asi bych doporučil použít Unity a udělat WebGL build (pokud ty modely, které se mají prohlížet, jsou předem dané a uživatel nemá mít možnost nahrávat vlastní).

Komentáře

  • dzejkob : Je to už pozdě, přesto díky. Three js tuším zvládne udělat mesh ze 4 a více bodů, takže myslím, že tam problém nebude. DAE je funkční. Nicméně různé exporty mezi softy i třeba do blenderu nefungují spolehlivě. A na materiály a světla se spolehnout nedá vůbec. Řešením je tedy DYI editor, kde se načte holý model a nastavují materiály, světla atd. Je to funkční - dá se to rozšiřovat dle požadavků - zvládne to ovládat i BFU + hlavně co tam člověk vidí, uvidí i na webu. Že unity umí webgl build by mě nenapadlo. Nevím jak to konvertuje ten C# kód do js. Nebo se to dá psát přímo v JS? Každopádně žádné "powered by unity" tam být nemůže. 6.6.2017
  • Pavel Kouřil : "Made by Unity" se dá zbavit zaplacením, ale chápu, že to může být zbytečná investice. Konvertuje to C# skripty pomocí IL2CPP, a pak přes emscripten do asm.js. Funguje to docela dobře i na složitější projekty, jen tam není taková podpora některých věcí, a je to několikrát pomalejší než desktopové verze pokud jsi omezený rychlostí CPU (ale tomu se u JS člověk prostě nevyhne). Ještě mě napadlo, pokud chybí nějaké plošky tak je možnost, že třeba mají otočené normály a je zaplý backface culling (ale to je hodně wild guess). Import materiálů a světel je obecně hodně psycho, protože nastavení světel a materiálu by stejně mohlo dát jiné výsledky, protože bude každý software používat jiné shadery pro vykreslování - takže na todle ten DIY editor bude lepší, no. :) 7.6.2017

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.