.[ ČeskéHry.cz ].
Chybny rendering z OBJ
Jdi na stránku Předchozí  1, 2
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
VladR



Založen: 30. 07. 2007
Příspěvky: 1322
Bydliště: Greater New York City Area

PříspěvekZaslal: 23. říjen 2012, 00:30:55    Předmět: Odpovědět s citátem

Sorry za odmlku, bol som dlhsie offline.
Zhuleny napsal:

Mozes mi teoreticky vysvetlit ako mesh v ktorom je iny pocet uv koordinatov ako vertexov renderovat cez drawindexedprimitive? nenasiel som na internete doposial ziadne vysvetlenie ak oto urobit.

To je samozrejme. Ber, ze jeden fyzicky vertex moze byt sucastou aj 10 trianglov a vsade moze mat inu UV suradnicu, kedze to moze byt vertex na hrane 5 materialov (napr. nohavice/opasok/kosela/zbran/sveter/...)
Zhuleny napsal:

Teraz som pokusne nacital vertexy a texture coords, a potom som vytvoril nove pole do ktoreho som ulozil udaje z indexu vo f riadkoch. vysledok o5 nic moc :/

Doporucil by som stravit pol dna debugovanim vseobecnej metody, ktora ti spravi Indexed List z Non-Indexed (takze to bude vseobecna metoda, nezavisla na OBJ formate), kedze NonIndexed ti uz funguje. Vysledok si neskor ulozis do svojho binarneho formatu, takze nebudes musiet zakazdym podstupovat import do NonIndexed a neskor konverziu do Indexed.

Ako primarne kriterium by som zvolil unikatne UV (prirodzene, s nejakou deltou) a dovtedy decimoval list unikatnych UV, kym by nebol prazdny.
Ci uz to spravis tak, ze si najprv spravis pole, kde ku kazdemu unikatnemu UV priradis Triangle Index a Normalu, resp. budes zakazdym prechadzat cele pole je viacmenej fuk (zvol to, do coho sa ti viac bude chciet ist), ale mne pride najjednoduchsie (kvoli debugovaniu) mat najprv to pole unikatnych UV koordinatov a z neho to vymazavat popri vytvarani Indexed Listu.

Jo, a bez STL v tomto ani ranu Wink


BTW, mozes objasnit preco sa pokusas pisat low-level renderer ? Ja to samozrejme schvalujem, a som rad ze sa aj v dnesnej dobe najde niekto, kto nechce byt len skripterom, ale chce rozumiet, co sa deje, ked napises HeroMesh->Render (dx).
Som len zvedavy Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zhuleny



Založen: 31. 01. 2012
Příspěvky: 28

PříspěvekZaslal: 23. říjen 2012, 20:53:56    Předmět: Odpovědět s citátem

citace:
BTW, mozes objasnit preco sa pokusas pisat low-level renderer ? Ja to samozrejme schvalujem, a som rad ze sa aj v dnesnej dobe najde niekto, kto nechce byt len skripterom, ale chce rozumiet, co sa deje, ked napises HeroMesh->Render (dx).
Som len zvedavy

Chcem urobit mesh ktory by sa ku kostre nespraval podla naprogramovanych dat, ale ich pocital priamo za behu programu, a v pripade narazu do prekazky by sa nezasekla animacia a bleskovo nepresla na animaciu narazu do prekazky, ale model by si len jednoducho nabil hubu o stenu napriklad Smile verim ze to do toho stadia dotiahnem.
citace:
Pěkné, gratuluji Jestli to chceš optimalizovat, chtělo by to fps counter (nebo aspoň vykreslovat frame time v něčem rozumném - ms?)
A můžes zkusit i mipmapping, aspoň směrové světlo (vypadá to unlit - pletu se?).
Svetla su zatial vypnute, teraz som sa sustredil na nacitanie a spracovanie mtl suborov. A tu som zvlastne narazil. Robim si SKYBOX(ak sa nepletiem) za prve pouziva 6 textur/materialov, a za druhe budem ho asi neskor tak ci onak potrebovat. tu mam obj:
    # Generated By Simlab Soft 'www.simlab-soft.com'
    mtllib farmpeeps_forest_medow_skybox.mtl


    g 3DGeom~1
    usemtl skybox_foresthills_back
    v -20 0 20
    v -20 40 20
    v 20 0 20
    v 20 40 20
    vn -1 0 0
    vn -1 0 0
    vn -1 0 0
    vn -1 0 0
    vt 1 0
    vt 1 1
    vt 0 0
    vt 0 1
    f 1/1/1 2/2/2 3/3/3
    f 2/2/2 4/4/4 3/3/3

    g 3DGeom~2
    usemtl skybox_foresthills_bottom
    v 20 0 20
    v 20 0 -20
    v -20 0 20
    v -20 0 -20
    vn 6.12323e-17 1.11022e-16 -1
    vn 6.12323e-17 1.11022e-16 -1
    vn 6.12323e-17 1.11022e-16 -1
    vn 6.12323e-17 1.11022e-16 -1
    vt 0 0
    vt 1 0
    vt 0 1
    vt 1 1
    f 5/5/5 6/6/6 7/7/7
    f 6/6/6 8/8/8 7/7/7
povodny bol maly len 1,5f velky tak ho upravujem.No a takto sa to pokusam renderovat
kód:
            if(!SHUTDOWN)hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);
            if(!SHUTDOWN)hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,2,2);
Ale zobrazi sa mi iba prvy stvorec(stena v predu), druhy(zem) sa nezobrazy vobec.
ak je vsak if(!SHUTDOWN)hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,4); vyrenderuje sa v poriadku. Vertex buffer je nacitany predpokladam korektne lebo ten guard sa renderuje v poriadku.
Je mozne ze som zle pochopil DrawPrimitive funkciu alebo mam zle obj data kedze ich pisem rucne. Ak to ced DrawPrimitive nejde renderovat tymto sposobom, tak asi budem musiet naprogramovat indexovanie, hruby postup uz mam v hlave aj premysleny.

Edit
VladR mozem sa pri obj spolahnut ze Normaly budu vzdy najpocetnesie "koordinaty"?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
smisek



Založen: 11. 11. 2011
Příspěvky: 2

PříspěvekZaslal: 24. říjen 2012, 08:16:53    Předmět: Odpovědět s citátem

podle [url=http://msdn.microsoft.com/en-us/library/windows/desktop/bb174371(v=vs.85).aspx]MSDN[/url] je druhým argumentem offset ve vertex bufferu, takže bys neměl použít 2, ale 4 (jak to máš teď, tak by to ale asi mělo kreslit jeden trojúhelník vpravo):
kód:

¨           if (!SHUTDOWN) hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
¨           if (!SHUTDOWN) hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 4, 2);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zhuleny



Založen: 31. 01. 2012
Příspěvky: 28

PříspěvekZaslal: 24. říjen 2012, 11:35:36    Předmět: Odpovědět s citátem

Smisek, tam som pozeral a studoval to, aj ked sa mylis, doviedol si ma na spravnu stopu.

kód:
if(!SHUTDOWN)hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);
if(!SHUTDOWN)hr = videoMan->vs->d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,6,2);
Teraz to uz renderuje jedna radost Smile takze funkcia DrawPrimitive je DrawPrimitive(primitive type, cislo vrcholu od ktoreho zacat, pocet primitive type). Ja som chybne predpokladal ze to bude pocet trojuholnikov a nie pocet vrcholov(2 trojuholniky = 6 vrcholov pri TRIANGLELIST)

Mar ma pravdu strasne sa mi pletu pojmy :\
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
smisek



Založen: 11. 11. 2011
Příspěvky: 2

PříspěvekZaslal: 24. říjen 2012, 11:43:22    Předmět: Odpovědět s citátem

njn už jsem zblblej, že quad se kreslí stripem na 4 vrcholy, list má samozřejmě 6 Wink
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 -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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