- antikomcsi: Való Világ: A piszkos 12 - VV12 - Való Világ 12
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- gban: Ingyen kellene, de tegnapra
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
Aktív témák
-
OddMan
őstag
Szeretnék csinálni egy nagyon egyszerű 3D-s világot, ami meg tud jeleníteni egy vagy több egyszerű alakzatot pl.: kockát, hengert meg egy-két transzformációt is ismerni fog pl. nagyítás, kicsinyítés, forgatás, csavarás, stb...
OpenGL-t már programozgattam, de most OpenGL és DirectX nélkül szeretném ezt megoldani, mert érdekel, hogyan is lehet megvalósítani egy ilyen grafikus rendszert. Tudom, hogy igen lassú lesz, de nem a sebesség a cél, hanem a legalapvetőbb matematikai elméletek kipróbálása. pl.: mátrix műveletek, vektoriális szorzás stb.
Sajnos már az elején elakadtam, mert nem tudom, hogyan lehet egy térben lévő vektort síkba a monitorra leképezni. Tehát mondjuk, van egy pontom a térben, aminek van X,Y,Z koordinátája. A probléma az, hogy a monitor sík és azon csak síkban lehet megjeleníteni a pontot, aminek így már csak X és Y koordinátája van. Vagyis a térbeli pontot le kell valahogyan vetíteni a képernyő síkjának egy pontjára.
Szóval a 3D->2D leképzés vagy más néven vetítés folyamatát nem ismerem. Ebben kellene egy kis segítség.
Vagy talán valami kameraféleséget kellene definiálni?
Egyébként Visual C++ környezetben programozgatok, ha ez számít valamit.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Tudom mit akarsz, ezt úgy hívja az opengl, hogy ''projection matrix''
Mingyá kikeresek neked egy megfelelő paraméteres mátrixot, úgy hívják a látóteret amúgy angolul, hogy frustum (ami egy torz csonka gúla gyakorlatilag).
mod: Meg is van egy jó link: Bővebben: link
[Szerkesztve] -
OddMan
őstag
Miért kell homogén koordinátákat használni, amihez így már 4x4-es mátrixokat kell használni a 3x3 helyett?
A különböző transzformációkat értem, pl.: forgatás, de ezt a perpektivikus vetítést még mindig nem. Hogy néz ki egy végleges (használható) vetítési mátrix?
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Azért szokás 4x4-es mátrixot használni minden trafóhoz, hogy az eltolás is ábrázolható legyen, legalábbis eddig ezzel a meggyőződéssel éltem. mod: ha jól értem, akkor nem affin trafókat is tudnak így csinálni, és a perspektivikus trafó tényleg ilyen.
A perspektivikus vetítésnek van 3 fontos paramétere:
- közeli vágási felület távolsága (ennél közelebbi cuccokat nem látsz)
- messzi vágási felület távolsága (ennél messzebbi cuccokat nem látsz)
- látószög
Ha beadsz neki egy (x,y,z) pontot, akkor vissza fogsz kapni egy (x',y',z') pontot, melynek (x',y') része a 2ds vetítési síkod koordinátái lesznek (de vigyázni kell, mert még nem képernyő koordináták, hanem ha jól értettem [-1;1] intervallumban), a z' pedig egy speciális módszerrel kapott (nem nyálaztam át teljesen), z-bufferben felhasználható érték. Ami garantált, hogy ha P1 pont P2 mögött van, akkor z'(P1)>z'(P2). Ezt nemlineáris függvényekkel oldja meg ha jól láttam. De jól át kéne olvasnom, mert ''kézzel'' nem csináltam még ilyet.
[Szerkesztve] -
Neo...
tag
Izé.... Te mien Progival Programoztál OpenGL - t ?
'' a kisgyerekek fikázzák azokat e rappeseket akiken felnőnek, - ez így nem oké!'' by: Hősök
-
RedAnt
aktív tag
Huh anno csinaltam Pascalban ilyet 320*200, 256 szin... mode13h rulz...
Hogy is volt?
Az a lenyeg hogy azt kell kiszamolni hogy milyen szogben latod a kameraallasbol a pontokat. Tulajdonkeppen egy gombi koordinatarendszerre kell lekepezni, es ez jelenik meg a kepernyon, en legalabbis igy csinaltam.
Legyen adott a kamera koordinatai: cx,cy,cz
Es a pont amit meg akarsz jeleniteni: px,py,pz.
(mondjuk legyen a koordinatarendszer: balra x, fel y, elore z)
Kerdes hogy milyen szogben latod a pontot:
vizszintesen: arctg( (py-cy)/(px-cx) )
Fuggolegesen: arctg ( (pz-cz)/ sqrt( (px-cx)^2 + (py-cy)^2 ) )
Amit igy megkapsz ket szoget, abbol lesz a kepernyon x es y koordinata.
Pl x-et latod -90..+90 fokig, y-t aranyosan valahogy... A latoszog szerint.
Nah kezdetnek ennyi╚╦╦╦
-
OddMan
őstag
Visual C++-ot használtam, használok. Azért ezt, mert a szükséges file-ok már alapban benne vannak és a debuggere is jó. A devc nekem nem jött be. Akkor inkább már a freeware BC5.5.
MÁS:
Ezt dx-es tutoriálból ollóztam.
''Az X file egy olyan formátum, amely minden szükséges információt tartalmaz, amire egy mesh rajzolásához szükség lehet, sõt néha még többet is, mint például animációt, satöbbi. De hogy miért is jó nekünk hogy ebben a formában tároljuk a hálót? Nos a DirectX SDK-hoz van két plugin; az egyik a 3DStudioMax-hoz, míg a másik Mayahoz. Ezek exportáló pluginok, amelyekkel az ott elkészített hálókat, sõt jeleneteket elmenthetjük ebbe a formátumba, így a modelleket elkészíthetjük valamelyik programban, nem kell egy pár ezer vertexet begépelni és ami a nagyobb meló lenne, kiszámolni.''
Ilyen pluginokat fg.-ket tartalmaz az OpenGL?
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
Neo...
tag
Nincs 1 LINK amiről a C++ le tüdnám szedni ??? ( Könyv már megvan Gépen ! Ha kell valakinek elüldöm )
SZerk : De ezzel ilyen Programokat is lehet szerkezteni ?????
[Szerkesztve]'' a kisgyerekek fikázzák azokat e rappeseket akiken felnőnek, - ez így nem oké!'' by: Hősök
-
RedAnt
aktív tag
Sztem kezdesnek jo a dev c++
Bővebben: link
Mod: jobb gombbal megy a link...
Csinalhatsz ezzel mindent! gcc-vel fordit. directx-hez kellenek meg allomanyok, azokat at kell lopni vc++-bol
[Szerkesztve]╚╦╦╦
-
Neo...
tag
Igen de lehet vele Progikat meg olyasmiket mint Delphivel ???
Szerk én nem találom ezen a linken !
[Szerkesztve]'' a kisgyerekek fikázzák azokat e rappeseket akiken felnőnek, - ez így nem oké!'' by: Hősök
-
Neo...
tag
Jah és nem tudtok Delphihez könyvet ? csak igy Dokumentumba ???
'' a kisgyerekek fikázzák azokat e rappeseket akiken felnőnek, - ez így nem oké!'' by: Hősök
-
OddMan
őstag
Írjatok egy linket légyszi, ahonnan leszedhetek egy olyan lib-et, amivel könnyedén tudok betölteni valamilyen 3ds max vagy maya-val készített modell file-t.
Köszke!''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Ismered ezt az oldalt? (NeHe Productions)
Bővebben: link
Innen kiindulva biztosan megtalálsz mindent.
Még 1 praktikus fórum link:
Bővebben: link
[Szerkesztve] -
RedAnt
aktív tag
Ha erdekel valakit itt van a cucc:
pascal forraskod: Bővebben: link
leforditott exe file: Bővebben: link
Ize, no rights reserved, meg no warranty
Annak akit erdekel hogy lehet ilyet egyszeruen kezzel csinalni.
Freepascalban volt irva.
Ha elinditod az exet, eloszor nyomd a hatra gombot egy ideig hogy lass valamit.
Utana ''half-life''-osan tudsz mozogni a nyilakkal, egergombokkal fel, le, egerrel forogsz.
Sajnos win xp alatt az egerkezeles nem mukodik tokeletesen, nehez forogni, kicsit ugral.╚╦╦╦
-
OddMan
őstag
Ez a mátrix is jó lehet?
x' = x/z*d
y' = y/z*d
z' = d
[1 0 0 0]
[X'h, Y'h, Z'h, h] = [x,y,z,1] * [0 1 0 0]
[0 0 1 1/d]
[0 0 0 0]
3D-s könyvből néztem, csak nem tudom, hogy ez a mátrix segíti-e a dimenziócsökkentő transzformációt.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
A MilkShape3D progi tud exportálni Milkshape 3D ASCII file-t, ami egy sima txt.
Ez egy nagyon egyszerű formátum és ehhez már tudok írni egy saját loader progit, amivel majd be tudok tölteni modelleket. Sikerült a quake2 játékból kiszednem egy md2 modellt, amit át is alakítottam txt formátumúvá. A baj csak az, hogy nem maradt meg az animáció, csak egyetlen képkockája a legelső. Tud nekem valaki abban segíteni, hogy mit kéne beállítani ahhoz, hogy export-kor az egész animációt áttegye a txt file-ba?
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Az x', y', z' jelölésű változók majdnem megegyeznek a belinkelt oldalon leírt (11)-es összefüggés által adottal, helyesebben ezek a -d-szeresük. Ezesetben nem a z=-1, hanem a z=d síkba vetítesz (mint egy fotólemezre). A különbség annyi lehet, hogy fordított és zoomolt képet kapsz, vagy ilyesmi. Az általad írt képlet jobbsodrású koordinátarendszert használ? Gondolom.
Ráadásnak még a mátrixok és vektorok is transzponáltak... tehát a könyvedben a sitehoz képest minden transzponált, de ez ne zavarjon, mert
ha M mátrix és P oszlopvektor, akkor
M * P = (P') * (M')
ahol az A' az A transzpontáltját jelöli.
A jobboldali irásmód a könyvedé, a baloldali a honlapé. -
BaLinux
tag
A milkshape saját formátuma is nagyon egyszerű, ahhoz tényleg vannak loaderek, használtam is olyat. Animálni is tud szvsz, de lehet hogy azt neked kell megírnod a loaderhez. Először viszont inkább próbálkozz egy kockával vagy ilyesmi, az egyszerűbb... ;)
A csontváz jöhet később -
BaLinux
tag
Pl a már említett oldalon van egy tutorial ami pont ezzel foglalkozik:
Bővebben: link
Illetve van egy loader amit régebben átírtam, az eredetit viszont nem találom. Jobban jársz, ha megérted a tutorialból, és nem csak használod.
[Szerkesztve] -
OddMan
őstag
Találtam egy linket az MD2 file formátumról.
Bővebben: link
Ez alapján próbálom majd betölteni a file-t meg a BaLinux-tól kapott link segítségével.
Az MD2 fájlformátum tanulmányozásakor találtam egy ''Using OpenGL commands'' részt.
struct MD2GLcmds
{
float s,t
int vertex_index;
}
Tehát az offsetGLcmds mutatja, hogy a fájl melyik offset címétől kezdődik ez a rész. a numGLcmds mutatja, hogy összesen hány darab hálót találunk. Az első int abszolút értéke a hálóban lévő csúcsok száma. Ha az előjel negatív, akkor GL_TRIANGLE_FAN-t kell használni, ha pozitív, akkor meg GL_TRIANGLE_STRIP-et.
Azt nem tudom, hogy ezek az adatok elegek-e ahhoz, hogy textúra nélkül megjelenítsem a modellt? Egyelőre se, animálni se textúrázni nem akarok, csak beolvasni a modellt és késsz. Meg azt is tudnom kellene, hogy hány összetartozó csúcsot kell beolvasnom az animáció első képkockájának megjelenítéséhez, mivel az már tartalmazza a modellt valamilyen állásban.
BaLinux: ha te már írtál ilyen progit, akkor légyszi segíts! Köszke!
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Jó ez az oldal, szerintem próbáld ki azt a progit amit a ''Reading a MD2 file'' és a ''Rendering the model'' címszó alatt ír, és értsd meg, kezdetnek jó. Amúgy nem teljesen komplett, ha jól látom (nincs benne texture loader pl), de nem baj. Aztán rá lehet térni az interpolációra.
Az opengl commandos rész csak azért van, hogy hatékonyabban lehessen opengl-lel rajzolni a modellt. Amíg az elsőt nem érted meg, ne is foglalkozz vele.
Az adatok bőven elégségesek a modell kirajzolásához, amúgy a Quake2-ben sem ment volna nekik. -
OddMan
őstag
Köszi a segítséget!
BaLinux: Nincsen véletlenűl valamilyen jó magyar nyelvű leírásod csak a matematikai alapokról. A programozás meg az ilyesmik angol nyelven is okék, de keresek valamilyen jól érthető magyar nyelvű doksit, ahol csak a 3D grafikához szükséges matekkal foglalkoznak. Sosem voltam nagy matekos ezért kellene valamilyen jól érthető leírás, jegyzet.''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Milkshape 3D ASCII file format?
// háromszögek száma
20
// vertex: flags, x, y, z, u, v, bone index
0 -10.375000 10.500000 13.750000 0.000000 0.000000 -1
0 -10.375000 -10.250000 13.750000 0.000000 1.000000 -1
Aztán ezután jön még egy ilyen rész ???
//talán a normál vektorok száma?
20
-10.375000 10.500000 13.750000
-10.375000 10.500000 13.750000
és a végén egész számok ???
20
0 121 90 89 64 14 49 1
0 119 121 89 63 64 49 1
0 122 123 90 65 51 14 1
0 121 122 90 64 65 14 1
Tehát a fájl második és harmadik részét nem értem.
Amikor majd megrajzolom a modellt mondjuk a glEnable(GL_TRIANGLES)-el, akkor mindig 3 sor fog egybetartozni ugye?''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Na időközben sikerült megtalálnom a leírást és sikerült is kitennem egy modelt a képernyőre. Be is másolta ide, hátha mást is érdekel.
OpenGL-ben hogyan lehet azt beállítani, hogy csak drótváz legyen?
// MilkShape 3D ASCII File Format Specification: 1 box, 1 material, a simple animation
// total frames
Frames: 30
// current frame
Frame: 1
// number of meshes
Meshes: 1
// mesh: name, flags, material index
''Box01'' 0 0
// number of vertices
20
// vertex: flags, x, y, z, u, v, bone index
0 -10.375000 10.500000 13.750000 0.000000 0.000000 -1
0 -10.375000 -10.250000 13.750000 0.000000 1.000000 -1
0 10.375000 10.500000 13.750000 1.000000 0.000000 -1
0 10.375000 -10.250000 13.750000 1.000000 1.000000 -1
0 10.375000 10.500000 13.750000 0.000000 0.000000 -1
0 10.375000 -10.250000 13.750000 0.000000 1.000000 -1
0 10.375000 10.500000 -4.500000 1.000000 0.000000 -1
0 10.375000 -10.250000 -4.500000 1.000000 1.000000 -1
0 10.375000 10.500000 -4.500000 0.000000 0.000000 -1
0 10.375000 -10.250000 -4.500000 0.000000 1.000000 -1
0 -10.375000 10.500000 -4.500000 1.000000 0.000000 -1
0 -10.375000 -10.250000 -4.500000 1.000000 1.000000 -1
0 -10.375000 10.500000 -4.500000 0.000000 0.000000 -1
0 -10.375000 -10.250000 -4.500000 0.000000 1.000000 -1
0 -10.375000 10.500000 13.750000 1.000000 0.000000 -1
0 -10.375000 -10.250000 13.750000 1.000000 1.000000 -1
0 -10.375000 10.500000 13.750000 0.000000 1.000000 -1
0 10.375000 10.500000 13.750000 1.000000 1.000000 -1
0 -10.375000 -10.250000 13.750000 0.000000 0.000000 -1
0 10.375000 -10.250000 13.750000 1.000000 0.000000 -1
// number of normals
6
// normal: x, y, z
0.000000 0.000000 1.000000
1.000000 0.000000 0.000000
0.000000 0.000000 -1.000000
-1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 -1.000000 0.000000
// number of triangles
12
// triangle: flags, vertex index1, vertex index2, vertex index3, normal index1, normal index 2, normal index 3, smoothing group
0 0 1 2 0 0 0 1
0 1 3 2 0 0 0 1
0 4 5 6 1 1 1 2
0 5 7 6 1 1 1 2
0 8 9 10 2 2 2 1
0 9 11 10 2 2 2 1
0 12 13 14 3 3 3 2
0 13 15 14 3 3 3 2
0 12 16 6 4 4 4 3
0 16 17 6 4 4 4 3
0 18 13 19 5 5 5 3
0 13 7 19 5 5 5 3
// number of materials
Materials: 1
// material: name
''Material01''
// ambient
0.200000 0.200000 0.200000 0.800000
// diffuse
0.000000 0.501961 0.752941 0.800000
// specular
0.752941 0.752941 0.752941 0.800000
// emissive
0.000000 0.000000 0.000000 0.800000
// shininess
63.000000
// transparency
0.800000
// color map
''D:\Eigene Dateien\Image2.tga''
// alphamap
''D:\Eigene Dateien\Image1.tga''
// number of joints
Bones: 3
// name
''joint1''
// parent name
''''
// joint: flags, posx, posy, posz, rotx, roty, rotz
0 0.250000 0.000000 0.000000 0.224024 1.570796 0.000000
// number of position keys
2
// position key: time, posx, posy, posz
1.000000 0.000000 0.000000 0.000000
30.000000 0.000000 0.000000 0.000000
// number of rotation keys
2
// rotation key: time, rotx, roty, rotz
1.000000 0.000000 0.000000 0.000000
30.000000 0.000000 0.000000 0.000000
''joint2''
''joint1''
5 0.000000 0.000000 20.256172 -1.015218 0.000362 3.141593
3
1.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000
30.000000 0.000000 0.000000 0.000000
3
1.000000 0.000000 0.000000 0.000000
15.000000 2.286381 -0.000548 -0.000365
30.000000 0.000000 0.000000 0.000000
''joint3''
''joint2''
4 0.000000 0.000000 16.128391 0.000000 0.000000 0.000000
2
1.000000 0.000000 0.000000 0.000000
30.000000 0.000000 0.000000 0.000000
2
1.000000 0.000000 0.000000 0.000000
30.000000 0.000000 0.000000 0.000000
// you can build the joint matrix:
// - rotate an identity matrix by the rotation values of the joint
// - set the translation of the matrix to the position values.
// the same for key matrices
// the key matrices animate the reference matrices, so you have to multiply them,
// to get the final local joint matrix. The get the final global joint matrix,
// you have to multiply them by their parents.''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Sajnos nem tudok magyar nyelvű részletes 3d trafós leírást... én annak idején mindent netről tanultam.
A milkshape text formátum is jó, de eredetileg a binárisra gondoltam, mind1.
A drótváz megjelenítés: glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
illetve nézd meg a többi paraméterét is. -
OddMan
őstag
Sikerült betöltenem egy modellt és mos textúrázni is akarom.
A txt file-ban a vertexekhez megvan az u és v textúra koordináta.
A kérdésem, hogy glTexParameteri()-nél az alábbiak, közöl melyikeket érdemes használni?
- GL_TEXTURE_MIN_FILTER
- GL_TEXTURE_MAG_FILTER
- GL_TEXTURE_WRAP_S
- GL_TEXTURE_WRAP_T
Később az md2 binárissal is megpróbálkozok majd, csak a txt-t azért sokkal könnyebb volt megérteni. Mármint a belső felépítését.''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
BaLinux még egy gyors kérdés! Sikerült a textúrát is megjeleníteni a modellen, de egy kicsit furán néz ki. Gondolom, azért van ez, mert a normálvektorokat még be kell állítani. A kérdésem, hogy ezt a ''glNormal3fv'' OpenGL paranccsal kell?
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Ez lenne a textúra:
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
A GL_TEXTURE_MIN_FILTER és GL_TEXTURE_MAG_FILTER a messziről nézett, tehát kicsinyített illetve közelről nézett, tehát nagyított textúra interpolációs mószerét állítja be. Mindkettőt állítsd be, mert úgy lesz jó. Mindkettőre minimum bilinear ajánlott, trilinear (azaz mipmap) még jobb, de akkor mipmapeket is generálni kell a textúrához, ami szintén automatikus. Lásd tutorialok.
A GL_TEXTURE_WRAP_S, *T pedig azt állítja, hogy 1-nél nagyobb (float esetén) tex koordinátánál wrappelje-e a textúrát vagy ne, ill hogyan. (tehát ismétlődjön-e)
Nem arról van szó, hogy érdemes-e használni, hanem használd ami kell -
BaLinux
tag
Szerintem nem úgy néz ki furcsán, mintha nem lenne megvilágítva, mert most egységes világítást kap úgymond, tehát lighting off, ugye? Ha off, akkor textúra koordináta gondok vannak, félrecsúszott a rucija
Ha on, akkor próbáld ki előbb kikapcsolt lightinggal.
Meg vigyázz, mert az u és v koordinátát le kell osztanod x és y textúra mérettel, hogy megkapjad a 0-1 közé eső float koordinátát. Ezután a glTexCoord2f -et használj, mindig a glVertex3f hívás előtt. Ha ez nem javítja, akkor is itt a hiba valahol. Nem kell ahhoz megvilágítás, hogy aránylag normálisan nézzen ki a cucc.
A normálvektorokat meg azzal kell, ja. Azok is előre vannak gyártva, igaz nem tudom miért... helyben is kiszámolhatnád, és ha a szomszédos vertexekre szépen interpolálod a normálvektort, akkor elég sima felületet kapsz világítással ahhoz képest, hogy milyen kocka szegény modell. -
OddMan
őstag
Nagyon köszi, hogy segítesz!
Világítás nincsen bekapcsolva, viszont az u és v koordinátákat nem osztottam le a textúra mérettel, úgyhogy ez lesz az egyik hiba.
A normálvektorok csak a fényszámításoknál vannak használva, vagy a helyes textúra megjelenítéshez is szükséges?
Az interpolálást hogyan kell kiszámítani? Még sosem csináltam ilyet.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
OddMan
őstag
Találtam egy jegyzetet a lineáris algebráról.
Belinkelem ide!
Bővebben: link''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Igen, a normálvektor csak a fényekhez kell.
Interpolálás helyett mondhatnék átlagot is. Két vektor átlaga ugyanúgy (v1+v2)/2. Azt javaslom, képezd magad kicsit linalgból, aztán ha jól emlékszem az opengl támogat olyat, hogy vertexenként vehetsz fel normálvektort, nem csak poligononként. Az adott vertex normálvektorát úgy értelmezd, mint a szomszédos poligonok normálvektorának átlagát. Egy 3szögre normálvektort számolni nagyon könnyű, de most nem tudom fejből, keresd meg. -
OddMan
őstag
Nem akaródzik összejönni nekem normálisan ez a textúrázás!
Nem lehet, hogy az OpenGL-ben nincsen valami jól beállítva? Úgy veszem észre, hogy átlátszó lesz a modell, ha rárakom a textúrát. Már több modellt is próbáltam, és mindegyiknél ugyan az a helyzet: átlátszó a modell, ezért belelátok és látom a textúrát a karakter gyomrában.
Egyébként nem lehet, hogy az x,y koordinátát már nem kell osztani a textúra szélességével és magasságával, mert az alábbi fájlrészletben látható, hogy nem 1 és 0 a textúra koordináta, hanem már float típusú. Ja és amúgy ha osztok, akkor egyáltalán nem jelenik meg a textúra.
Meg ha megnézem a textúrát jobban, fentebb már belinkeltem, akkor azt nem kell valahol megadni, hogy az egyes részek hol találhatók? Pl.: a feje a keze mellett van.
//flag, x, y, z, u, v, bone_index
0 -6.573679 -20.688145 -35.781826 0.436667 0.917949 -1
0 -4.196494 -21.671164 -37.849846 0.460000 0.917949 -1
0 -5.385087 -22.457579 -41.066765 0.460000 0.851282 -1
[Szerkesztve]
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Hát elég összetett az opengl állapotgépe. Minden glEnable/glDisable-hető dolgot nézzél át, textúrát jól töltöd-e be, esetleg tesztként húzd rá egy téglalapra, és nézd meg hogy jó-e.
Úgy látom az u, v koordináták valóban megfelelő [0;1] intervallumból vannak, akkor nyilván ne oszd le.
A textúrakoordináták lényege éppen az, hogy egy ponthoz hozzárendel egy pontot a textúrán. Ezt úgy kell elképzelni, mintha a textúra egy végtelenül nyúlékony és vékony anyag lenne, amit szögekkel rögzítesz a vertexeknél. Lineárisan nyúlik és megfelelően torzulva kitölti a közrefogott poligonok felületét. -
OddMan
őstag
Hihetetlen, megoldódott a probléma!
Eredetileg pcx kép volt a textúra, de én átkonvertáltam bmp-re, mert azt könnyebb kezelni.
Viszont most vettem észre, hogy a feje tetejére is kell állítani és akkor lesz jó. Ez gondolom a bmp felépítése miatt, lehet így.
Mindegy úgyis akarok írni egy tga beolvasót, mert ott már van alpha byte is (GL_RGBA).
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
-
BaLinux
tag
Helyes. Javaslom, hogy inkább használj valami kész image libraryt, ahelyett hogy szenvedsz itt mindenféle formátummal. Van olyan LGPL-es lib, ami png, jpg, és még kb 10 formátumot tud betölteni, elmenteni, és számításokat végezni képeken.
Pl. libSDL_image, és ráadásul sokkal több mindent tud, illetve crossplatform, ha c++, c-ben írod. -
OddMan
őstag
Azt nem tudod, hogyan kell átadni a gluBuild2DMipmaps függvénynek olyan képet, ami csak 8bit-es, tehát 256 színű? Az ilyen fájlokban indexek vannak tárolva, ami rámutat a megfelelő színre.
''A szíved szabad! Légy bátor és kövesd!''
-
GBX
aktív tag
Hali oddman.
nemsokára a www.gaborious.uw.hu oldalon péntek délután letölthetővé válik az általam összválogatott 3d-matek elírások, nagyrészt magyar nyelven, de lesznek ott english cikkek. (ha nem megy az english tessék megtanulni hasznos nyelv)
A rar hoz jelszó tartozik. Oddman-tól el lehet kérni a jelszót, mert rá bízom az anyag sorsát.
Üdv GBX (GAbo/Gaborious)HiTech 486 DX4 120Mhz AMD, 24MB 36bit RAM, 800 MB Conner HDD
Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest