[ Acid @ 02.12.2003. 15:05 ] @
Pozdrav svima.
Kako i na koji nacin se NAJLAKSE moze ucitati X fajl u aplikaciju. Gledao sam tutorijale i u onom tutorijalu sa ogledalom (koji navodno treba da bude begginer), postoji ucitavanje X fajla ali je MNOGO komplikovano. Hvala
[ Reljam @ 02.12.2003. 18:18 ] @
Bas mi je drago da si to pitao, to mi je omiljena oblast :). Elem, evo kako se to radi:
Koristi D3DXLoadMeshFromX - to ce da ti ucita mesh, i da ti da spisak materijala i adjacency ako ti treba.
[ Acid @ 02.12.2003. 20:58 ] @
A sta misliš o postupku koij se koristi u tutorijalu 6 (x=mesh.fromfile(..)). Pitam ovo jer mi je ovaj metod prilično jednostavan i lako se ubacuje u drugačije engine od ovoga koji se koristi u tutorijalima (za koji lično mislim da je odvratan).

Posto volis ovu temu sa X fajlovima onda evo jos jedno pitanje: Kako model iz 3D s Max-a (v 5.0) prebacujem u X fajl. Napomena: prvo je instaliran SDK pa onda MAX.

Pozdrav svima.
[ Reljam @ 02.12.2003. 21:15 ] @
Ok, ti si mislio na C#, a ja sam pricao o C++u. Mali nesporazum. Elem, da, to je nacin za ucitavanje mesheva u C#u i sasvim je ok - ne razumem tvoje pitanje. U stvari nema neke bitne razlike izmedju C++ i C# verzije.

Za eksport is Maxa ti je potreban plugin, koji moze da se skine sa weba (source). Ako neces da ga kompajliras, posalji mi mail, i ja cu ti ga poslati.
[ Acid @ 05.12.2003. 15:06 ] @
Skinuo sam sa neta plugIN "Pandasoft DirectX Exporter" i radi OK ali...

Kako da exportujem objekat sa teksturom znaci ne teksturu podesavam u VS-u vec da sama bude ucitana sa objektom. Ako ovo zvuci nerazumno evo jednog primera:
U max-u imam jednu kocku i jednu loptu ako jedan objekat. Kocka ima teksturu a.bmp a lopta b.bmp. Exportujm scenu i oba objekta se lepo ucitaju u VS ali ne i dve teksture vec jedna koju ja moram da odredim. Evo sada koda koji koristim za ucitavanje:

Code:
OnResetDevice
mesh = mesh.FromFile("c:\cube.x", MeshFlags.SystemMemory, D3DDev, materials)


        If meshTex Is Nothing Then
            meshTex = New Texture(materials.Length) {}
            meshMat = New Direct3D.Material(materials.Length) {}
            Dim i As Integer
            For i = 0 To materials.Length - 1
                meshMat(i) = materials(i).Material3D
                meshMat(i).Ambient = meshMat(i).Diffuse

                meshTex(i) = TextureLoader.FromFile(dev, "c:\a.bmp")
            Next i
        End If

_________________________
Render
Dim i As Integer
        For i = 0 To meshMat.Length - 1
            D3DDev.Material = meshMat(i)
            D3DDev.SetTexture(0, meshTex(i))

            mesh.DrawSubset(i)
        Next i



I na kraju pitanje glasi: kako da exportujem oba objekta zajedno sa posebnim tekstrama? HVALA
[ Reljam @ 05.12.2003. 18:53 ] @
Jako si blizu tacnog odgovora! Naime, tvoj X fajl sadrzi sve podatke o teksturama, samo treba da ih iscitas - a za to sluzi material niz. Znaci, umesto da ucitavas ovako:
Code:

meshTex(i) = TextureLoader.FromFile(dev, "c:\a.bmp")
probaj ovako:
meshTex(i) = TextureLoader.FromFile(dev, material(i).TextureFilename)

Kao sto vidis, kada ucitas mesh, dobijes i niz materijala koji sadrzi informacije o teksturama.

Zato se mesh i renderuje iz vise faza, jer se prvo namesti tekstura 0, pa se izrenderuju samo trouglovi sa tom teksturom (DrawSubset), pa onda tesktura 1, itd.

Uzgred, mozda ne bi bilo lose da ovo radis u C# umesto u VBu. Nije mnogo tesko preci sa VB.NETa na C#, a ima dosta prednosti.
[ Acid @ 06.12.2003. 11:50 ] @
Hvala ti za resenje, ali ne radi. Verovatno je problem u PlugIn-u za exportovanje. Koji je najbolji plugIn. I ako mogu nesto da te zamolim: mogu li da ti posaljem X fajl i materijale pa da ti probas kod sebe na kompu?

Razmisljao sam da se prebacim na C# i ide OK, ali koje su to prednosti u odnosu na vb kada je rec o DX-u

Hvala
[ Reljam @ 06.12.2003. 12:46 ] @
Naravno! X-files (:)) su jedna od oblasti za koju sam odgovoran, tako da mi slobodno posalji fajl za koji mislis da ne radi dobro. Materijali mi nisu potrebni, samo je X fajl potreban.

C# se generalno vodi kao bolji jezik od VBa, tako da je iz tog razloga bolje preci. Naravno, oba su ista za DX, jer su managed interfejsi isti.
[ NikolaVeber @ 06.12.2003. 14:59 ] @
offtopic : ja bih fajl poslao Molderu da ga pogleda ... za svaki slucaj ;)
[ Acid @ 06.12.2003. 15:24 ] @
Nema potraba da ti bilo sta saljem jer je MOJA greska toliko glupa da me je sramota da kazem ali nema veze: sve super radi kada i X fajl i teksture stavim u BIN folder moje aplikacije. Tako da VELIKO HVALA.

Evo bas sada se igram sa onim avionom iz MAX-a koji sam uspesno prebacio u moju aplikaciju pa me interesuje sledece:
1. Moze li neko da mi malo bolje objasni Device.Transform.Projection = Matrix.PerspectiveFovLH(a, b, c, d). Sta su a,b,c,d i kako se njima manipulise.
2. Koji je najbolji nacin za komunikaciju DX as tastaturom (pomeranje aviona po ekranu).

Svima veliko hvala.
[ Reljam @ 06.12.2003. 20:12 ] @
Drago mi je da je proradilo. Za PerspectiveFovLH pogledaj u helpu i MSDN, pa ako ti nije jasno napisi sta ti konkretno nije jasno. Najbolji nacin da radis sa tastaturom je preko DirectInputa, pogledaj odgovarajuce primere i tutoriale. Ukoliko ti je to komplikovano, za pocetak mozes da napravis OnKey na tvom prozoru i da radis sa tim.

Inace, ako te interesuje jos o ovim temama, molim te otvori nov thread.
[ Acid @ 08.12.2003. 10:56 ] @
Kada ucitavam X fajl moraju li svi objekti u X fajlu da budu kao jedan (dve kocke konvertujem u editable mesh pa uradim Atach, ili mugu da ucitam dva editable mesh-a)
[ Reljam @ 08.12.2003. 16:35 ] @
Iako je moguce rucno ucitavati fajlove i razbijati meshove, to se ne preporucuje. Jedan X fajl je jedan logicki objekat - znaci jedan svemirski brod, jedna raketa, jedan vojnik, itd. Ako hoces da ti dve kocke budu odvojeni objekti koji se krecu nezavisno, onda ih sacuvaj kao takve. I uvek naravno centriraj svoje objekte oko (0,0,0).
[ Acid @ 09.12.2003. 20:35 ] @
OK. A sada malo o svetlima i X fajlovima. Kako postaviti svetlo da ono utice i na Mesh ucitan iz X fajla? I da li ce raditi svetlo koje je eksportovano zajedno sa mesh-om u okviru X fajla?

Setih se da pitam jos jednu stvar: kako mesh (naravno ucitan iz X-a) ucitniti prozirnim, a kako jedan deo mesha i da li je to uopste moguce)
Hvala (i na svim predhodnim odgovorima)
[ Reljam @ 09.12.2003. 22:01 ] @
1) Svetla iz Maxa ne mogu da se eksportuju. Osvetljenje je jedan (takodje) komplikovan problem, i postoji nekoliko varijanti. Najlakse je da sam kreiras direkcionalno svetlo (zraci su paralelni, kao kod sunca), pogledaj tutorial. Ovo ti naravno ne daje senke, koje su takodje komplikovana pojava, zato jako malo vrhunskih igara i uopste pokusava da ih uradi.

2) Koristi prozirne teksture da bi napravio deo mesha koji treba da bude providan. Znaci teksture moraju da ti imaju alfa kanal, i u tom alfa kanalu 0 = providno, 255 = neprovidno. Tu sada ima nekoliko daljih zezova, providni elementi treba da se renderuju sa iskljucenim backface cullingom, i obicno treba da se sortiraju po daljini od kamere.