|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
[c]opengl
Bungiorno ragazzi, chi di voi sa caricare correttamente un modello 3d in c con le librerie opengl, nel modo più performante possibile??
il modello può venire da tutti i formati che si vogliono, come ad esempio:3ds io però sono più diretto all'utilizzo dell'unione dei formati obj per la grafica e bvh per i movimenti. chi più ne sa più ne metta grazie!!! si accettano tutti i consigli!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Per il modello di solito si crea una display list, memorizzando in un ciclo i vertici del triangolo che compone una singola faccia.
Per le animazioni non ho esperienza del formato che intendi utilizzare purtroppo
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Ti interessa caricare il modello velocemente o renderizzarlo velocemente? Quanti modelli devi renderizzare? Uno solo? Dieci? Cento? Perche' non scegli un formato solo di input e poi usi uno dei tanti convertitori? Ti semplificheresti un tantinello la vita.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Forse non interessa a tglman, ma tempo fa lessi un tutorial per utilizzare i file in formato .x senza directx. Ovviamente in directx è tutto molto più comodo (soprattutto in c#). Eccolo http://www.gamedev.net/reference/pro...tures/xfilepc/
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Voglio fare un programmino che per adesso visualizza e anima degli oggetti 3d, che possono essere, sia degli ominidi sia qualsiasi altra cosa.
Vi chiedo info per il formato migliore perchè non ho scelto ancora definitivamente il formato che deve usare il mio programma. comunque io ho gia studiato e più ho meno caricato i file in formato obj e bvh, il problema sta nell'animazione, cioe se una volta caricato creo una display list di un ominide come faccio poi a muoverlo?? se qualcuno sa come modificare una display list con qualche operazione matriciale (anche se non credo sia possibile) me lo notifichi!! per i formati da scegliere io sono concettualmente libero!! e nel caso basta convertire! Grazie!! |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Se devi visualizzare un solo modello allora non hai grossi problemi di velocita'. Le display list non ti servono e ti complicano solo la vita.
Se il modello e' sotto i dieci mila poligoni, inizia facendo il submit di ogni vertice (trasformato per l'opportuna bone o matrice) via glVertex3f o equivalente. Una volta che hai il modello su schermo che si anima, e magari avessi la necessita' di modelli con piu' poligoni, puoi ottimizzare la versione che gia' funziona. Come formato scegli 3ds che e' semplice da leggere. Con un po' di attenzione, anche con skinning in software, puoi mostrare fino ad un paio di migliaia di personaggi animati a 30 fps su un comune PC.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Gli oggetti da visualizzare sono N con N poligoni!
Io vorrei cercare di caricare il modello nel modo più definitivo possibile nelle opengl e manipolarlo dall'esterno! per esempio un metodo può essere caricare tutti i pezzi statici di un modello, come ad esempio un braccio o un dito, con una serie di display list per poi, chiamarli a catena modificando gli angoli tra i pezzi. Voi avete qualche idea migliore o simile? |
|
|
|
|
|
#10 | |||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quali sono i tuoi limiti? 10/100/1000 oggetti? Quanti poligoni? Prima di iniziare a scrivere anche una riga di codice devi sapere questo. Quote:
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|||
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Allora non c'è limite ben definito, logicamente se metti 1000 oggetti di 1 miglione di poligoni l'uno non è possibile!
Cioe io sto cercando di costruire uno strumento, non direttamente vincolato al prodotto finale, che può gestire sia 1,2 oggetti molto pesanti, sia un migliaio di oggetti molto leggeri, logicamente il limite lo impone chi lo usa e le performance. cercando su internet ho visto che lo skinning è molto interessante, cosa sai dirmi riguardo il suo supporto in opengl?? Io ho gia caricato un modello obj e delle animazioni bvh, semplicemente stampando i dati caricati, adesso volevo sapere cosa c'è di meglio!! |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Non esiste un'unica soluzione per fare quello che vuoi fare. Tu immagina che la soluzione dipende anche dalla particolare configurazione hardware, su GPU di famiglie diverse si devono usare tecniche diverse. Anche su GPU della stessa famiglia, bisogna usare tecniche diverse a seconda del tipo di GPU. Un solo modello di tanti poligoni e tanti modelli di pochi poligoni si gestiscono in maniera totalmente diversa. Inizia a mettere un modello su schermo e fai le cose semplici. Ti stai indirizzando verso un oceano di problemi. Se vuoi la soluzione (forse) piu' efficiente devi darmi le seguenti informazioni riguardo alla tua situazione: - numero di poligoni - numero di bone per vertice - numero di oggetti - modello della GPU - numero di texture diverse (se i modelli condividono le stesse texture o no, le cose cambiano) - varie ed eventuali
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 26-04-2006 alle 13:31. |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Visto che lo stesso programma deve girare con modelli diversi e macchine diverse non posso darti queste informazioni!
Io fino ad adesso ho caricato oggetti di esempio da file obj, per ogni elemento(ad es un braccio) ho fatto una display list, poi dal file bvh ho preso i valori delle matrici di spostamento, e ho semplicemente fatto un ciclo che prima mi posizionava il "cursore" nella posizione e con l'angolazione giusta, e poi mi chiamava la display list. Questo pero non da nessun collegamento tra due pezzi contigui, cioe non mi cambia la posizione dei vertici di un braccio a seconda dell'angolo con l'avanbraccio, e logicamente non mi fa ne lo Skinning ne nient'altro! per farti capire ti scrivo un pezzetto di codice indicativo: Codice:
for(i=0;i<n_elementi;i++)
{
glPushMatrix();
glMultMatrix(matrici[i]);
glCallList(elementi[i]);
glPopMatrix();
}
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
|
Quote:
o si tratta di problemi la cui soluzione e' effettivamente mutuamente esclusiva?
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 26-04-2006 alle 17:51. |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Questo perche' ho bisogno di fare le cose ottimali, altrimenti avrei scritto un solo code path non ottimo per entrambi i casi. E sono su una console. E sto trattando oggetti non animati. Quando ho fatto la stessa cosa per oggetti animati e su PC immagina che ne e' uscito. Avevo code path differenti anche in base alla distanza dei modelli dall'osservatore. E in base alle schede grafiche. In sintesi: il problema di avere una sola soluzione ottima per tutti i modelli e in qualunque numero e' irrisolvibile.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#17 | |||
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4747
|
Quote:
non mi sono ancora addentrato nella grafica 3d a parte quel poco che vidi tempo fa su texturing, coordinate UV e quaternioni a livello generale, ma la differenza tra oggetti high e oggetti low polygon count, e' uno dei pochi punti fermi... stando all' amica sacerdotessa Maya che ho vicino (che vede il problema dal pdv del 3d artist quindi), il problema risiederebbe nelle relazioni reciproche di livello diverso tra gli oggetti (quindi gerarchia, ordine dei vincoli e ordine di grandezza dei gruppi di vertici interdipendenti in una "catena"), il che se non ho capito male porterebbe a problematiche a livello di IK solver, oltre che viewport creation, culling, rendering Quote:
se tglman e' interessato (se non ho capito male a lui interessa solo caricare e visualizzare il modello 3d), lo si puo' aiutare a metterlo insieme facendogli accettare l' idea che appunto sara' subottimo e/o pesantemente limitato e facendo affidamento sul suo stoicismo Quote:
(scherzo
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 26-04-2006 alle 18:34. |
|||
|
|
|
|
|
#18 | |||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quindi l'idea per molti 'oggetti' di pochi poligoni e' di "trasformarli" in qualche modo in pochi 'gruppi' di tanti poligoni, in questo modo si riesce anche ad ammortizzare il codice di setup fra molti oggetti. Da qui il code path profondamente diverso. Se metti in mezzo le animazioni, poi, la cosa diventa MOLTO complessa. Quote:
Se si accontenta, fa semplicemente questo: matrice_di_trasformazione = peso0 * matrice_bone0 + peso1 * matrice_bone1 ...; vertice_trasformato = vertice * matrice_di_trasformazione glVertex(vertice_trasformato) Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|||
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Emmmm... ragazzi diciamo che non voglio le cose proprio ottime, ma vorrei evitare di moltiplicare io ogni vertice con la matrice, posso delegare il compito a opengl??
Inoltre quelle tre righe scritte da te mi piacciono puoi spiegarmi meglio questo concetto, mettiamo che io devo muovere un braccio di un ominide, come posso comportarmi, Grazie!! |
|
|
|
|
|
#20 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:32.



















