- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Célkeresztben az OnlyFans, amiért pornót nézhetnek a gyerekek
- Mindenki AI-t akar, már 2025-re is eladták a HBM chipeket
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- ASUS routerek
- Linux - haladóknak
- A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Adobe Illustrator kérdések
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
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!''
-
OddMan
őstag
Eleszek ezzel egy darabig, amíg átnyálzom.
No meg sikerült megírni a TGALoader progimat is, ami 8 és 24bit-es tga fájlokat tud beolvasni.
Most az animálással akarok egy kicsit majd foglalkozni. A half-life játékból átalakítottam egy animált modellt Milkshape 3D ASCII formátumba és ezt akarom majd a saját progimban felhasználni csak a gyakorlás kedvéért.
Mondjuk most, hogy megjött a meleg igen csak akadozva fog haladni a projekt.
Munka és suli után inkább a szabadban vagyok a haverokkal, mint egy sötét szobában püföljem a billentyűket.
[Szerkesztve]''A szíved szabad! Légy bátor és kövesd!''
Aktív témák
- AMD GPU-k jövője - amit tudni vélünk
- Autós topik
- Politika
- Újabb Samsungok telepíthetik a Galaxy AI-t
- Milyen GPS-t vegyek?
- Kínai, és egyéb olcsó órák topikja
- Termékoldal buktatta le a Huawei Watch Fit 3-at
- Fejhallgató erősítő és DAC topik
- Elite: Dangerous
- Genshin Impact (PC, PS4, Android, iOS)
- További aktív témák...