játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2185
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] > 10 < [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]
bolyzsolt - Törzstag | 607 hsz       Online status #199747   2013.12.05 07:19 GMT+1 óra  
Ha pontosak akarunk lenni, akkor nem JavaScriptre fordít az Emscripten, hanem asm.js-re, ami a JavaScript egy durván redukált, alacsonyszintű változata. Lehet kézzel is asm.js kódot írni, de nem feltétlen célszerű. Az asm.js a Mozilla találmánya, külön optimalizálja is a fordítójuk a böngészőben, a Chrome nem írt ezért külön AOT fordítót de valamennyire ő is optimalizálja, az IE-ben meg nincs külön support hozzá. Én kicsit félmegoldásnak érzem az egészet.

Sajnos a JavaScript önmagában nem felel meg játékfejlesztésre a sebessége miatt (elég, ha csak pl. csinálsz egy vector "class"-t és elkezded használni úgy, ahogy logikusnak tűnne - baromi lassú lesz, külön object pool-t kell hozzá írni, az objektumot ki kell "bontani" függvények paramétereinél, stb.). JavaScriptben két választása van igazából az embernek: vagy szép, vagy gyors kódot ír...

WebGL amúgy már van IE11-ben is, szóval lassan tényleg cross-browser megoldásnak számít.

   
Geri - Törzstag | 2185 hsz       Online status #199744   2013.12.05 01:27 GMT+1 óra  
emscripten: instant crash nálam. már a hello world is.

   
syam - Törzstag | 1491 hsz       Online status #199743   2013.12.05 00:44 GMT+1 óra  
WebGL:
Az Emscripten nem tűnik annyira beteg dolognak, a portolás sem annyira bonyolult (ha jól láttam kvázi automatán fordít c++ból?).
Ha jól tudom a Firefox OS ezzel (is?) megy.
alias aalberik
   
Geri - Törzstag | 2185 hsz       Online status #199742   2013.12.04 23:49 GMT+1 óra  
az fps számítását másodpercenként érdemes resetelni, hisz folyamatosan változik.

   
StrykerKKD - Tag | 30 hsz       Online status #199741   2013.12.04 23:20 GMT+1 óra  
Van jövője, habár egy csöppet érdekes az, hogy nem teljes egészében csinálták meg ezt a demót HTML5 módján, mivel ha jól sejtem már meglévő kódot(talán c++) fordítottak(asm.js+emscripten) le optimális Javascript-re. Emiatt ennek a Javascript kódja nagy és ronda.

Gyakorlatilag így ki van iktatva az egyenletből a Javascript. A Javascript fejlesztése egyszerűen túl lassú és ezért ilyen megoldásokra kényszerülnek.
   
Parallax - Tag | 574 hsz       Online status #199740   2013.12.04 23:12 GMT+1 óra  
Idézet
borsi :
Nekem újdonság, amúgy nyílván nem: http://www.unrealengine.com/html5/.
WebGL-nek ebben a formában van jövője?


Szimpla erődemonstráció. Alapból egy FPS content halmazt böngészőben töltögetni beteg ötlet. A másik, hogy biznyos sor feletti js kód átláthatatlan, ezért C/C++ kódot konvertálnak át, vagy valami más módszerrel ügyeskednek, mint a TypeScript stb. A hagyományos C/C++ hoz képest inkább nyűg a böngészős "cross-platform" megoldás, mint előny szerintem. (próbáltam már)

   
borsi - Tag | 180 hsz       Online status #199739   2013.12.04 22:59 GMT+1 óra  
Nekem újdonság, amúgy nyílván nem: http://www.unrealengine.com/html5/.
WebGL-nek ebben a formában van jövője?

   
Seeting - Törzstag | 2306 hsz       Online status #199733   2013.12.04 20:36 GMT+1 óra  
Idézet
raymond9304 :
FPS = framek száma / kezdés óta eltelt idő:
Intelen 200+, míg Geforce-n 50+ értékeket kaptam.



Szerintem ezt nem így kell kiszámolni.
   
syam - Törzstag | 1491 hsz       Online status #199729   2013.12.04 18:57 GMT+1 óra  
Jövőre jön új GL ES szabvány: compute shader lesz benne, de tesszellálás és geometry shader nem.
alias aalberik
   
raymond9304 - Tag | 7 hsz       Online status #198431   2013.10.18 22:17 GMT+1 óra  
Köszönöm a választ!

Saját, és rém egyszerű fizika, csak az XY síkot használom ki a térből, ahol a mozgó elemek konstans gravitációval gyorsulnak az Y tengelyen és konstans gyorsulással gyorsulnak az X-en.
Elolvastam a cikket, tetszett, használni fogom, hátha jó lesz.

FPS = framek száma / kezdés óta eltelt idő:
Intelen 200+, míg Geforce-n 50+ értékeket kaptam.

   
fpeti - Törzstag | 1280 hsz       Online status #198423   2013.10.18 18:34 GMT+1 óra  
Nem ogl-től függ a dolog, hanem az fps-től, a fizikai számításokat fix időközönként szokták elvégezni, legalábbis ezt javasolják és kötelező jelleggel ezt a cikket linkelik mellé.
Saját a fizika vagy valamilyen api-t használsz? pl Bullet alapból interpolál ha jól tudom, de Havok pl nem, ezért ott nálam is előfordult, hogy nagyon nagy fps esetén megálltak a levegőben a dolgok, mert annyira kicsi elmozdulás esett egy frame-re, hogy úgy döntött a api, álljon inkább meg, minek küszködni.

Mennyi fps-el megy Intelen meg a Geforce-on a játék?
   
raymond9304 - Tag | 7 hsz       Online status #198420   2013.10.18 15:23 GMT+1 óra  
Üdv!

Van egy játékom. C++ nyelven íródik, OpenGL felelős a megjelenítésért.
A problémám a következő lenne: a notebookomban van egy Nvidia videókártya, és egy Intel.
Lehet közöttük váltogatni.
A probléma az, hogy különbözőképpen működik a játék fizikája (gyorsulás, ugrás, esés) az Intellel és az Nvidiával.
Egyikkel kisebbet ugrik, másikkal nagyobbat ugyanazokkal a konstans értékekkel.
Számolva van két frame között eltelt idő, és a mozgásoknál ez is beszámít, mint szorzótényező, Így elvileg a gép sebességéhez mérten történnek a dolgok.

Ezzel a résszel nem vagyok teljesen tisztában, és a két kártya közötti különbségek is azt mutatják.
Lenne valaki olyan kedves és adna néhány tanácsot?

   
versio - Tag | 659 hsz       Online status #198282   2013.10.13 13:13 GMT+1 óra  
eleg szoponak tunik ez az opengl ES
   
Pretender - Törzstag | 2498 hsz       Online status #198281   2013.10.13 12:44 GMT+1 óra  
Vagy rosszul kérem el, vagy nem dob rá nekem warningot (mármint az f suffixre). Ati (pontosabban AMD) kártyám van.

   
syam - Törzstag | 1491 hsz       Online status #198274   2013.10.13 10:30 GMT+1 óra  
A GLSL fordító elég gyakran dobál warningokat tehát nemcsak a compile statust érdemes figyelni, hanem a info lengthet is.
Nem egyszer volt már olyan, h nvidián vmi warning atin pedig error
Ha pedig még ES is befigyel a képbe akkor végképp...
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #198273   2013.10.13 10:25 GMT+1 óra  
Pedig még a specifikációban is benne van valahol Hát figyelni kell, no. Legfeljebb valami külső toolt lehetne használni ellenőrzésre. Vagy majd tesztereket.

   
ddbwo - Tag | 1625 hsz       Online status #198272   2013.10.13 09:36 GMT+1 óra  
Nem. A glsl elég kényes. mindenre figyelned kell. A 0.0f compile error elég furcsa, szerintem 20. átnézés után se gyanakodnék olyanra. Najó, egy szinte üres shadernél azért igen.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #198270   2013.10.13 09:13 GMT+1 óra  
Nem lehet valahogy kikényszeríteni, hogy a legkisebb hibafaktorral forduljon az én kártyámon is a shader? pl. benne felejtettem egy f betűt a 0.0 után, nálam simán megette, másnál meg nem tudta lefordítani a shadert.

   
Geri - Törzstag | 2185 hsz       Online status #198033   2013.10.06 19:43 GMT+1 óra  
ja. amikor nem generálod újra.

   
Pretender - Törzstag | 2498 hsz       Online status #198023   2013.10.06 11:41 GMT+1 óra  
Bitmap font renderelésre van gyorsabb megoldás annál, hogy amikor módosítom a szöveget, akkor újragenerálom a vertex buffert (pontosabban feltöltöm új adatokkal)?

   
ddbwo - Tag | 1625 hsz       Online status #197969   2013.10.05 15:32 GMT+1 óra  
Mindegy. Úgy.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #197968   2013.10.05 15:30 GMT+1 óra  
Nem teljesen ez volt a kérdés Azzal tisztában vagyok, amit írtál, engem az érdekelt inkább, hogy hogy fogja ez így tárolni, de a textúra alapján, ahogy látom a driver(?) megoldja szépen, és tényleg egy 32 bites floatként tárolja.

   
ddbwo - Tag | 1625 hsz       Online status #197967   2013.10.05 15:28 GMT+1 óra  
GL_COLOR_ATTACHMENT0_EXT

0, 1, 2, 3 stb.
Ezek a fragData-k. A kiszedése pedig a csatolt textúrákból van.

Igen, simán jó az egyenlő.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #197966   2013.10.05 14:42 GMT+1 óra  
R32f render targetbe hogy kell kiírni a colort shaderből?
Kód:
gl_FragData[0] = vec4(value);

Így megoldja, és szépen fogja letárolni? Olvasáskor meg sample-özés után az r csatornát szedem ki?

   
borsi - Tag | 180 hsz       Online status #197803   2013.09.30 18:24 GMT+1 óra  
Ha csak egy pár száz soros kis project, és le lehet korlátozni a kamera mozgását az FPS-ekben megszokott értékek közé, akkor bőven elég annyi, amit most használsz.

Viszont ha nem egy ennyire egyszerű programot írsz, valószínűleg szükséged lesz egy általános trafó hierarchiára. Ennek az elemeitől el lehet kérni lokális és globális trafó mátrixot, illetve lehet őket manipulálni legalább lokális, de lehetőleg globális koordináta rendszerben is.
Ha gyorsan akarsz számolni és a memóriával nem kell spórolni, akkor érdemes redundánsan tárolni az adatokat, pl pozíció és nyújtás vektorok, orientáció kvaternióként, plusz még a kész transzformációs mátrix lokálisan és globálisan is.
A kamerához meg hozzácsapsz egy ilyen trafó obj-ot, és írsz hozzá egy kódot amivel a játékstílusnak megfelelően lehet irányítani.

   
Seeting - Törzstag | 2306 hsz       Online status #197802   2013.09.30 18:22 GMT+1 óra  
Hali!

Én annak idején szögfüggvényekkel számoltam ki az irányvektort az XZ tengelyen a camera forgatási szögei alapján.
   
bolyzsolt - Törzstag | 607 hsz       Online status #197794   2013.09.30 16:46 GMT+1 óra  
Ahoj! First-person kamerát (meg úgy általában 3D-s kamerát) hogy érdemes implementálni? Sokan yaw/pitch/roll-al valósítják meg, hallottam kvaterniósról is, nekem most egy elég egyszerű pozíció + irány + up vektoros kamerám van, ami egy-két apró hibától eltekintve teljesen jól működik. Nem tudom, hogy mennyire érdemes lecserélni valami más megoldásra.

   
ddbwo - Tag | 1625 hsz       Online status #197437   2013.09.19 14:08 GMT+1 óra  
Idézet
Viperion :
Kezdem érteni majd holnap megpróbálom ma már fáradt vagyok.

Tehát vagy a normalize() függvénnyel normlizálok vagy pedig úgy,hogy a Vector3-at elosztom önmagával ugye?



Vagy normalizálod, vagy a lent írt szorzásos trükk. Ha normalizálod, akkor nem kell tárolni a méretet, csak megszorozni az új méretel a normalizált vertexeket.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197433   2013.09.18 23:52 GMT+1 óra  
Kezdem érteni majd holnap megpróbálom ma már fáradt vagyok.

Tehát vagy a normalize() függvénnyel normlizálok vagy pedig úgy,hogy a Vector3-at elosztom önmagával ugye?

Ezt a hozzászólást Viperion módosította (2013.09.19 00:39 GMT+1 óra, ---)

   
ddbwo - Tag | 1625 hsz       Online status #197431   2013.09.18 23:05 GMT+1 óra  
Ha a unity megtartja a geometriát, és fel tudod azt használni újra, azaz azt szorzod tovább, akkor tudnod kell mekkora méretezésben van éppen.
Ha a kívánt méret az előzőre megy rá, akkor először normalizálni kell. Azaz a hosszával osztani. A hossza a jelenlegi méret.
Csak ez után tudod kívánt méretre állítani.
---

De csak ha dinamikus méretezést akarsz. Csak start méretezésnél nem számít.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197430   2013.09.18 22:52 GMT+1 óra  
ddbwo eggyáltalán nem értem,hogyan gondolod.
Minek a méretét tároljam?

A resize tartalmazná az új méret értékét minek az új méretét?
És miért kell osztanom a resize-t a radius-al?

Nem értem egy kicsit sem a logikád.

   
ddbwo - Tag | 1625 hsz       Online status #197424   2013.09.18 22:10 GMT+1 óra  
Ez igaz lenne a modellező programokra is... Fogná a blendert, nyom egy circléből ötszöget és bedobja. Aztán scalével átméretezné.

De ő akarja csinálni.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #197421   2013.09.18 20:35 GMT+1 óra  
Mert vajon a mátrixok mire jók...

   
ddbwo - Tag | 1625 hsz       Online status #197408   2013.09.18 14:56 GMT+1 óra  
Mivel a korábbi vertexeket teljesen lecseréli ez a művelet, használnod kell.

Jobb módszer az lenne, ha tárolnád a méretet is Startnál. És setAndGetradiusOfVertices-alatt a vertexeknél nem new-t csinálsz, hanem megszorzod őket.
Kód:
vertex[index]*=resize;

Viszont előtte az egészet le kell vetítened az eredeti méretre. Tehát:
Kód:
vertex[index]*=resize/radius;
radius=resize


Ennél viszont gyorsabb, ha a for előtt csinálsz egy ilyet
Kód:
tmpMul=resize/radius;

és ezzel szorzod.

Ezt a hozzászólást ddbwo módosította (2013.09.18 15:08 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197397   2013.09.18 04:00 GMT+1 óra  
Sikerült megcsinálni:
http://pastebin.com/0khHJxVt
Egy kérdésem lenne hozzátok.
Van ez a sor:
Kód:
vertices[index] = new Vector3(radius2 * Mathf.Cos(angleRadians),radius2 * Mathf.Sin(angleRadians),0);

Ez a sor egy függvényben van benne(94sor) egy olyan függvényben aminek az a célja,hogy módosítsa a polygon méretét.

Ha csak a méretét kell módosítanom,akkor is muszáj,használnom a cos,sin párost.
Tudtok jobb módszert?

   
ddbwo - Tag | 1625 hsz       Online status #197301   2013.09.13 22:40 GMT+1 óra  
4 lépés... 1*pi/2, 2*pi/2, 3*pi/2, 4*pi/2.

Egy fok az pi/180.0f.

A sin cos páros egy összefüggés. Az egység sugarú kör "kiszámolt" koordináta párjai. Már mutattam a képet is.


Ezt a hozzászólást ddbwo módosította (2013.09.13 22:49 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197296   2013.09.13 17:01 GMT+1 óra  
Így már értem kösz pretender. xD
De ezt nem bírom elképzelni vizuálisan hiába adja a jó eredményt nem megy: 3*pi/2
Így könnyebb felfognom: pi+(pi/2)

De azért próbálom értelmezni a 3*pi/2 az az 3*180/2

Azt nem megy a 3*pi/2 átlátása mekkora ostoba vagyok.

Ezt a hozzászólást Viperion módosította (2013.09.13 17:07 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #197281   2013.09.13 07:20 GMT+1 óra  
Ez egy elég durva közelítés... 6,28 ~ 2*pi ~ 2*3.14. A szegmens szám meghatározza, hogy hány "vonalból" közelíted a kört. Ha ez mondjuk 360, akkor 1 fokonként lesz egy vonal a kör kerületén.

Sin, cos meg középiskolás anyag. Így lehet leírni egy kör kerületén a pontokat. Sin(0) = 0, cos(0) = 1, sin(pi/2) = 1, cos(pi/2) = 0. A 2*pi megfelel 360 foknak radiánban. A pi lesz ezáltal 180 fok, pi/2 pedig 90 fok.

Ebből látszik, hogy ha egy 4 szegmensből álló kört (tehát egy négyzetet) akarsz leírni, akkor:
kRadianIncr = 2*pi / 4 = pi/2
Ha egy 4 lépéses ciklusba belemész, az meghatározza majd a 4 csúcspontot: (r legyen mondjuk 5)
[0]: {5*cos(0), 5*sin(0)} = {5, 0}
[1]: (5*cos(pi/2), 5*sin(pi/2)} = {0, 5}
[2]: {5*cos(pi), 5*sin(pi)} = {-5, 0}
[3]: {5*cos(3pi/2), 5*sin(3pi/2)} = {0, -5}

   
Viperion - Tag | 540 hsz       Online status #197280   2013.09.13 01:39 GMT+1 óra  
Ebben a kódban ez mi akar lenni?
const GLfloat kRadianIncr = 6.28f/kSegments;
Ennek mi szerepe van a kódban: kRadianIncr és miért pont 6.28f osztja el a kSegments változót?

A teljes kód:
Kód:
static void drawCircle (int r) {
CIRCLE circle;
glBegin(GL_LINE_LOOP);
int i = 0;
const int kSegments = 30;
const GLfloat kRadianIncr = 6.28f/kSegments;
for (i = 0; i < kSegments; i++)
{
GLfloat angleRadians = kRadianIncr*i;
circle.x = r * cos(angleRadians);
circle.y = r * sin(angleRadians);
glVertex3f(circle.x,circle.y,0);
}
glEnd();
}


És ezen kívül mi külömbség van a színusz és a kosszínusz között?
Mindkettőnek az értéktartománya 1 és -1? Ha ez igaz akkor most miben külömböznek?
Miért van az,hogy a circle.y nál sinust használ a circle.x nél pedig cosinust?

Nem megy a fejembe 1 óra alatt semmivel sem lett több a megértésem a matekot én nem látom át úgy mint ti.
Miért vagyok ekkora senki.

Még egy jó könyvet is szereztem de semmit nem értek belle a címe: Schwarcz Tibor bevezetés a számítógépes grafikába.

Írja,hogyan kell 2D kört csinálni de hiába olyan mintha kínaiul magyaráznának.

Ezt a hozzászólást Viperion módosította (2013.09.13 02:15 GMT+1 óra, ---)

   
versio - Tag | 659 hsz       Online status #197279   2013.09.13 00:47 GMT+1 óra  
Viperion: tanulj matematikat , a programozas alapja ez, anelkul halott copy paste luzer lesz csak az ember
   
ddbwo - Tag | 1625 hsz       Online status #197278   2013.09.13 00:46 GMT+1 óra  
Idézet
Viperion :
Amikor még ezt nem tudtátok,hogyan tanultátok meg?Hogyan kell erre szert tenni.



Nem tudom. Csak kb így elképzeltem és abból levetítettem kódra..: Az egyéb szabályokat meg beírtam. Matematikai dolgokkal soha nem kellett sokat foglalkoznom. Azt csak megértem és tudom. A szerkezeti dolgok meg kis rutin.

https://dl.dropboxusercontent.com/u/57579181/sphere%20ddbwo.zip
Hátha segít valamit. Én vizuálisan gondolkodom. Az gyors...
opengl-ben követve az UV ami ST: 0tól 1ig T, aztán csere és 0-tól 1ig S.

Gondolom hosszabb ideig pontról pontra többször végig kell követned, hogy mi micsoda...
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
gaborlabor - Moderátor | 4449 hsz       Online status #197277   2013.09.13 00:38 GMT+1 óra  
Akkor egyelőre hagyd a kirajzolást.
Nézd át a középiskolai trigonometria, vektorgeometria anyagot.
Egységkör
Gömbi koordinátarendszer
Utána érteni fogod a konkrét kódokat, itt van pl ez

   
Viperion - Tag | 540 hsz       Online status #197276   2013.09.12 22:41 GMT+1 óra  
Bárhogy is erőlködöm nem megy semmit nem látok abból a logikából ahogy össze áll a gömb.
Hiába minden.Hihetetlen,hogy ti akik ezt értitek az az átlássátok azt ahogy ez matekkal megvalósul.
Amikor még ezt nem tudtátok,hogyan tanultátok meg?Hogyan kell erre szert tenni.

Megnéztem egy csomó leírást más weboldalakon de semmire sem jutottam.
Próbálok csak egy egyszerű 2D kört kirajzolni de nem megy a példaprogramokat pedig nem értem.
Én miért nem tudom megtanulni azt,hogy matekkal alkothassak?

Ezt a hozzászólást Viperion módosította (2013.09.12 23:50 GMT+1 óra, ---)

   
ddbwo - Tag | 1625 hsz       Online status #197275   2013.09.12 22:28 GMT+1 óra  
Igen. De ő kirajzolja triangle_strippel. Kb. ezt és azt kell összevetned, amit alatta írtam.

u.i.:
Ahol a gldraw parancsok vannak, azokat a vektorokat kell listához adnod és indexelni a face-ekhez a triangle strip szabályai alapján.

Mindig az előző kettőt adja az új vertexhez face-ként.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197274   2013.09.12 22:25 GMT+1 óra  
Hiába értem a nyelvi elemeket egyáltalán nem látom át,hogy hogyan jön létre ebben a gömb.
Te komolyan átlátod ezt a matekot?

   
ddbwo - Tag | 1625 hsz       Online status #197273   2013.09.12 22:18 GMT+1 óra  
Mindegy. Most találtam egy kódot.

Kód:
//-----------------------------------------------------------------------------
// Name: renderSphere()
// Desc: Create a sphere centered at cy, cx, cz with radius r, and
//       precision p. Based on a function Written by Paul Bourke.
//       http://astronomy.swin.edu.au/~pbourke/opengl/sphere/
//-----------------------------------------------------------------------------
void renderSphere( float cx, float cy, float cz, float r, int p )
{
    const float PI     = 3.14159265358979f;
    const float TWOPI  = 6.28318530717958f;
    const float PIDIV2 = 1.57079632679489f;

    float theta1 = 0.0;
    float theta2 = 0.0;
    float theta3 = 0.0;

    float ex = 0.0f;
    float ey = 0.0f;
    float ez = 0.0f;

    float px = 0.0f;
    float py = 0.0f;
    float pz = 0.0f;

    // Disallow a negative number for radius.
    if( r < 0 )
        r = -r;

    // Disallow a negative number for precision.
    if( p < 0 )
        p = -p;

    // If the sphere is too small, just render a OpenGL point instead.
    if( p < 4 || r <= 0 )
    {
        glBegin( GL_POINTS );
        glVertex3f( cx, cy, cz );
        glEnd();
        return;
    }

    for( int i = 0; i < p/2; ++i )
    {
        theta1 = i * TWOPI / p - PIDIV2;
        theta2 = (i + 1) * TWOPI / p - PIDIV2;

        glBegin( GL_TRIANGLE_STRIP );
        {
            for( int j = 0; j <= p; ++j )
            {
                theta3 = j * TWOPI / p;

                ex = cosf(theta2) * cosf(theta3);
                ey = sinf(theta2);
                ez = cosf(theta2) * sinf(theta3);
                px = cx + r * ex;
                py = cy + r * ey;
                pz = cz + r * ez;

                glNormal3f( ex, ey, ez );
                glTexCoord2f( -(j/(float)p) , 2*(i+1)/(float)p );
                glVertex3f( px, py, pz );

                ex = cosf(theta1) * cosf(theta3);
                ey = sinf(theta1);
                ez = cosf(theta1) * sinf(theta3);
                px = cx + r * ex;
                py = cy + r * ey;
                pz = cz + r * ez;

                glNormal3f( ex, ey, ez );
                glTexCoord2f( -(j/(float)p), 2*i/(float)p );
                glVertex3f( px, py, pz );
            }
        }
        glEnd();
    }
}
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197272   2013.09.12 22:16 GMT+1 óra  
Ezt nem értem az egészet ez nagyon bonyolult.
Miért nem tudom fejből kitalálni.

   
ddbwo - Tag | 1625 hsz       Online status #197271   2013.09.12 22:08 GMT+1 óra  
A gömbnek sok baja van.

Kell egy kiindulási tengely. Mondjuk vector3( 0, 0, -1 ) az alja. Akkor X-n elforgatod 180/lépés fokot.
Utána Z-n elforgatod ugyanezt az új vectort 360/step fokot axis rotationnal. És előröl magasság szerint végiglépkedve.
Az UV-t a fenti 1/step-ek alapján lehet. Ha DX alapú az iránya, akkor fentről le, ha fejjel lefelé lenne, akkor lentről fel. UV a magasság és a szélesség lépései. A végére 0.0-tól 1.0-ig.
A normal a középpont->vertex normalizált vektor. Vagy ahogy beszélttük PM-ben. De ez a trükkösebb és kényelmesebb.
A négyszögeket pedig a magasság és oldal lépések párjaiból kapod meg... előző-következő,lenti,fenti előző-következő.

u.i.:
Vagy beírod netre, hogy "c++ sphere generate mesh" és kidob talán egy kész kódot.
---

u.i.2
A forgatás matekját meg kell keresned.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Viperion - Tag | 540 hsz       Online status #197269   2013.09.12 21:40 GMT+1 óra  
Hello.
Én unityben akarnám megcsinálni de szerintem openGL ben is épp úgy kell mint az unity ben.
Megadni a vertexeket,háromszögeket,normálokat,uv stb
Azért itt tezsem fel ezt a kérdést mert ti biztosan sokat csináltatok már ilyet.

Nem értem a matekját annak,hogy hogyan lehetne felépíteni egy 3Dgömböt.
Csináltam már kockát de a gömb bonyolultabb.

Segítsetek pls.A számítások ugyanazok lesznek mint az unityben ez változni nem fog szerintem ezért mindegy az,hogy unitys vagy openGL es megoldásokkal bombáztok.

Csak a matekja kell a feladatnak egyedül nem bírok rájönni.

   
syam - Törzstag | 1491 hsz       Online status #197231   2013.09.11 11:17 GMT+1 óra  
Most találtam ezt: GL_ARB_ES3_compatibility.
Vagyis lehet asztali GL-en ES3 cuccokat tesztelni
alias aalberik
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] > 10 < [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]