Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
lauke

Domandina

Recommended Posts

Salve ragazzi, è un paio d'anni che non uso 3d studio. Mi è venuta la voglia di riusarlo, abbinandolo a qualke programma c++. Per dare un idea di ciò che vorrei fare vi faccio un esempio banale. Supponiamo io faccia un modello umano, che sia fatto bene o meno è irrilevante, e supponiamo in c++ faccia una gerarchia di classi per classificare ciò che ho creato. Come faccio a fare tale collegamento? C++, Java, C uno dei tre cmq

Share this post


Link to post
Share on other sites

cosa vuoi farci con il programma C++? se è semplicemente visualizzare quello che hai creato in 3d studio, devi fare in modo di importarlo nel programma C++, e successivamente visualizzarlo, appoggiandoti a librerie come Opengl o directX.

Per importarlo hai diverse strade;leggi direttamente il formato 3ds, ti scrivi un exporter ad hoc, esporti in obj e il tuo programma legge gli obj, etc etc..

guardati anche sto link

http://www.garagegames.com/index.php?sec=m...iew&qid=506

ciao ciao


Edited by Gianca1976

Share this post


Link to post
Share on other sites

Bhe guarda l'idea di base è questa. Fare una finestra io cui io tramite mouse giro attorno al mio modello 3d, poi mediante alcuni comandi mi legavo alle animazioni del modello. Insomma un qualkosa d'interattivo, tempo fa mi ero dedicato alla modellizazzione di corpi umani, ma ero, e ovviamente sono anche ora, una skifezza nel modellare. Però un modello a complessità poligonale bassa, anzi bassissima xD, penso di poterlo riuscire a fare. Ci metto 4 animazioni e tramite C++ rendo tutto interattivo. Come prima applicazione volevo fare una cosa simile. Tu che suggerisci?

Share this post


Link to post
Share on other sites

A questo punto penso che ti serve un motore di gioco. Scriverne uno da zero non si fa quasi più in quanto ci sono motori open source disponibili. Il più famoso è Ogree, ma mi apre che si programmi in Python e non in C++.

Share this post


Link to post
Share on other sites

No.. ogre3D si programma in C++ :P

È panda 3d che si programma in phyton.

Però viste le poche pretese di lauke con un paio di librerie e openGL di base (e matematica a volontà) ce la dovrebbe fare.

Leggere i 3DS non so se va bene perché i 3DS non esportano ne i pesi delle animazioni ne le bones. Però se ti accontenti di un robot (con i pezzi tutti staccati) può andar bene. comunque quel loader non legge le animazioni in generale. >_>

Qui trovi un po' di documentazione su come leggere le animazioni (non le bones).

http://www.martinreddy.net/gfx/3d/3DS.spec

Se vuoi invece fare la lettura del modello con bones e pesi ti dovrai affidare a formati più completi (o fartene uno tu). Per prodotti autodesk suggerisco FBX, qua puoi trovare SDK

http://usa.autodesk.com/adsk/servlet/index...&id=6839916

altrimenti Collada.

Per leggete le texture prendi una libreria tipo DEVIL (openIL) o freeImage.

Per il resto è solo openGL e matematica..

Se ti vuoi risparmiare tutta la fatica allora usa ogre come ti hanno suggerito prima.

CIAOO

Dai un occhiata anche qua:

http://www.treddi.com/forum/index.php?showtopic=50045

Share this post


Link to post
Share on other sites

Bhe sono al secondo anno d'ingegneria informatica, a livello di matematica conosco analisi I, II e algebra lineare. Mi manca metodi matematici e numerici per l'ingegneria informatica e dovrei completare quasi del tutto le mie conoscenze matematiche che mi offre il piano di studi. Purtroppo delle opengl non so nulla, però conosco bene la caratteristiche del C++, mi manca solo l'overloading degli operatori. Dato che le opengl sono funzioni di libreria perderò tempo "solo" per imparare a usarle. Qualke tutorial di base sulle opengl? funzionale a quello che voglio fare ovviamente.

Share this post


Link to post
Share on other sites

ciao. facciamo un poco di ordine tra i vari comparti.

per realizzare un ambiente all'interno di max utile ad associare porzioni di animazione ad un character devi sempre passare attraverso un sistema di ossatura. sistemi del genere sono già presenti nel parco plugin di max, sarebbe conveniente leggersi qualche specifica tecnica prima di gettarsi nell'impresa.

altro dubbio mi sorge in relazione alla scelta delle opengl. importare un 3ds in una finestra opengl è relativamente semplice, un poco meno accedere ai rami del 3ds che conservano i dati dell'animazione. ma nel tuo caso non sarebbe meglio orientarsi sulla gestione delle directx per gli shader?

Share this post


Link to post
Share on other sites

Allora ragazzi forse è meglio che facciamo ancora ordine, più di quanto ne abbia fatto. Vi dico ciò che so fare, e ciò che vorrei fare ora.

Io so:

1. Programmare in C, C++, Java.

2. Tempo fa ho MODELLATO (e mai texturizzato, ne mai fatto altro) con 3D studio per "divertimento" più che altro, quindi voi dovete tener conto che io di shader e roba varia non so nulla, se non per sentito dire.

Io voglio fare:

1. Fare un modellino con fattezze umane, seppur con l'accuratezza di un graffito rupreste (se così si scrive xD).

2. Fare qualke animazione stupidissima, e quello dovrei poterlo imparare a fare senza importunare nessuno, se non qualke tutorial.

3. Fare un programmino C++ che abbia un sorgente al suo interno con una struttura simile

class Personaggio {

public:

Personaggio();

~Personaggio();

void movimentoA();

void movimentoB();

void movimentoC();

void movimentoD();

private:

string nome;

//presumo dovrò associare il file dove risiede il modello 3D

};

4. Associare a questa classe il modello di ciò che ho creato

5. Associare ai vari "movimento" le animazioni del mio modello

6. Fare un main in cui parte una finestra si vede il mio modello 3D, e io selezionando le funzioni in un modo qualsiasi, per esempio con un numero per dire (ad esempio "premi 1 per movimentoA" e così via). E io vedo l'animazione in base alla scelta fatta.

Spero di aver esposto al meglio, ciò che voglio fare, con ciò che so fare.

La mia domanda precisa prima di essere esposta necessita di un'altra premessa

IO NON HO LA MINIMA IDEA DI COME FARE INTERAGIRE IL 3D STUDIO MAX CON CIò CHE FACCIO IN C++ (scrivo maiuscolo per sottolineare questo punto fondamentale xD).

Posso ora esporre la mia domanda precisa:

Quali sono i passi da compiere per realizzare i punti 4,5,6 da me esposti?

Oltre alla domanda espongo una richiesta, (oltre alla possibilità che voi mi rispondiate)

Potete voi, menti più illuminate delle mia, postarmi un qualkosa di già fatto da voi, cioè di medesima banalità a quanto voglio fare io, in modo che io, oltre a far buon uso dei vostri consigli, possa anche studiarmi un qualkosa di già fatto focalizzando i passi con qualkosa di pratico? Insomma un esempio svolto sull'argomento. Vi ringrazio per le risposte già date, e ringraziamenti anticipati per le risposte che spero darete.

Share this post


Link to post
Share on other sites

Considera che openGL ha un interfaccia C, quindi a livello di programmazione non ti manca niente.

Ti mancherebbe ingegneria del software che farai al terzo o al quarto anno nella specialistica, ma per programmi piccoli si può sopravvivere anche senza. ;)

Per quanto riguarda matematica non ci sono ne serie di funzioni ne equazioni differenziali ne trasformate in numeri complessi.. basta algebra lineare, geometria e sapere bene le proprietà delle matrici e vettori. All'inizio le cose più complicate che puoi trovare sono i quaternioni che non sono latro che vettori complessi.

Per tutorial ci sono quelli di Nehe che spiegano bene partendo dall'inizio.

L'unica cosa è che molti partano a studiare openGL usando la pipeline fissa, mentre ormai tutte le schede video attuali (dalla geForce6 in poi) supportano gli shader programmabili. La pipeline fissa infatti è stata deprecata in openGL 3.0 e saranno eliminate del tutto in openGL 3.1.

Secondo me è bene studiarla un pochino per apprendere le basi, ma una volta imparati i rudimenti passerei direttamente agli shader addentrarsi troppo nei dettagli della pipeline fissa.

Altrimenti puoi studiare directX, la pipeline fissa è stata eliminata del tutto in directX 10 e l'interfaccia è ad oggetti.

Ovviamente è tutto Micro$oft, avrai un maggior supporto dall'industria ma sarai dipendente dai loro prodotti e perderai la portabilità su linux o Mac.

Per iniziare con direcX scarica le SDK dal sito di Microsoft:

http://www.microsoft.com/downloads/details...;displaylang=en

Per openGL le librerie sono già incluse nel driver (poi ti spiego) e gli header sono incluse nella maggior parte dei compilatori.

Visual studio per esempio include gli header di openGL 1.1

Per avere header aggiornati devi scaricare le SDK per esempio dal sito nVidia

http://developer.nvidia.com/object/sdk_home.html

Comprende anche diversi esempi.

La controparte ATI è fatta malissimo.. >_> http://ati.amd.com/developer/sdk/radeonSDK...nfo/Prog3D.html

Share this post


Link to post
Share on other sites

Max non è un interfaccia per videogiochi o chissa cosa.. semplicemente con Max crei il modello e definisci le animazioni. Poi da programma definisci tu come e cosa leggere e come interpretare questi dati.

Esistono vari formati che esportano più o meno queste informazioni (come ti ho detto il formato 3DS non esporta i pesi delle bones)

Da programma devi caricare il modello..

4. Associare a questa classe il modello di ciò che ho creato

In pratica ti viene una cosa del genere:

Personaggio::Personaggio(string nomeFile){

fileParser parser(nomeFile);

parser.getVertices();

parser.getNormal();

parser.getPolyIndex();

// bla bla bla.. tutte le informazioni che ti servono

}

5. Associare ai vari "movimento" le animazioni del mio modello

Come prima, probabilmente dovrai esportare varie clip e associare le clip alle animazioni. FBX esporta le clip e ci associa dei nomi. Non sono esperto di MAX ma le clip ci dovrebbero essere anche li.

6. Fare un main in cui parte una finestra si vede il mio modello 3D, e io selezionando le funzioni in un modo qualsiasi, per esempio con un numero per dire (ad esempio "premi 1 per movimentoA" e così via). E io vedo l'animazione in base alla scelta fatta.

Ovviamente visto che è un programma interattivo il main non sta li ad aspettare che tu prema un tasto, avrai una pompa dei messaggi e risponderai a degli eventi (come in tutti i programmi ad interfaccia), se segui il tutorial di nehe c'è spiegato.

@Mercy: Non ho capito la storia degli shader e di directX. :-\

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x

Ti piacerebbe rimanere sempre aggiornato sulle ultime novità nel campo della computer grafica?

Iscrivendoti alla Newsletter riceverai subito una mail con le indicazioni per scaricare gratuitamente:

  1. Le immagini HDRI presenti su HDRI pro
  2. Una sequenza di 300 immagini HDRI generata da Luca Deriu tramite il programma Real HDR