Blender e opengl???

Stai vedendo 20 articoli - dal 1 a 20 (di 20 totali)
  • Autore
    Articoli
  • #15037

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Ciao ragazzi come faccio ad esportare un file blender come codice opengl???? Grazie a tutti in anticipo.

    #175328

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106
    #175329

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Grazie Bruce965 ho estratto il contenuto dell’archivio ma ora cosa ne devo fare???? Perdona enormemente la mia ignoranza, ciao e grazie ancora da Craig.

    #175330

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106

    Copi il contenuto dell’archivio nella cartella .plugins di blender, la trova nella cartella di installazione di blender su windows e nella root su linux, non so sul mac.

    Edit:

    E mi dica per quanto riguarda l’upload di files.

    #175331

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Ok Bruce965 sono riuscito a metterlo nella directory (il file che mi hai dato) e ad esportare un file di blender come .h e per questo ti ringrazio. Ma tu hai per caso idea di come visualizzare il file esportato in una finestra già  precedentemete impostata in c++ con le opengl nel programma visual c++? Grazie per l’aiuto, ciao da Craig!!!

    #175332

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106

    Ehm, io sono un neofita e non conosco visual studio e visual c++, non sono in grado di programmarvi, so solo dirle che il primo passo è trovare l’header che compare nel codice esportato, e copiarlo nella cartella degli headers di visual studio, il secondo passo credo che sia di inserire tramite un

    # include

    Il suo codice, oppure copiarlo direttamente nel main, domani, se avrò tempo, proverò.

    Arrivederci, Fabio Iotti.

    #175333

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106

    Mi dispiace, ma non ci capisco un H, per adesso posso solo quotare ciò che ho scritto sopra, nulla di più, se ha bisogno chieda a qualche programmatore più esperto (Io ho 15 anni!), come Ize_Design o non so chi altro citare, ciao, Fabio Iotti.

    #175334

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Ihihih mi fa ridere che mi dai del Lei diamoci pure del Tu tanto io ho 14 anni. Comunque grazie mille per i consigli che mi hai dato; per quanto riguarda #include pure io ci avevo pensato ma provando non funziona. Proverò a fare ultriori tentativi e per ora ciao e grazie ancora da Craig!!!

    #175335

    ATL
    Partecipante
    • Blenderista
    • Post sul forum 71

    Posta il codice altrimenti e’ come parlare di aria fritta 😉

    #175336

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Ok ATL eccoti accontentato per ora se lo esegui si visualizza solo una specie di cubo con sfondo nero che gli avevo impostato. E’ un po’ lunghetto 🙄

    #include

    #include

    #include

    using namespace std;

    //Called when a key is pressed

    void Keyboard(unsigned char key, int x, int y) {

    switch (key) {

    case 27: //Escape key

    exit(0);

    }

    }

    //Initializes 3D rendering

    void initRendering() {

    glEnable(GL_DEPTH_TEST);

    }

    //Called when the window is resized

    void handleResize(int w, int h) {

    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    gluPerspective(45.0, (double)w / (double)h, 1.0, 200.0);

    }

    float _angle = 0.0f;

    float _cameraAngle = 0.0f;

    //Draws the 3D scene

    void drawScene()

    {

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective

    glLoadIdentity(); //Reset the drawing perspective

    glRotatef(-_cameraAngle, 0.0f, 1.0f, 0.0f); //Rotate the camera

    glTranslatef(0.0f, 0.0f, -5.0f); //Move forward 5 units

    glPushMatrix(); //Save the transformations performed thus far

    glTranslatef(0.0f, -1.0f, 0.0f); //Move to the center of the trapezoid

    glRotatef(_angle, 0.0f, 0.1f, 0.0f); //Rotate about the z-axis

    glBegin(GL_QUADS);

    //Cubo front

    glColor3f(0.5,0,0);

    glVertex3f(0.5f, -0.5f, 0.0f);

    glVertex3f(0.5f, 0.5f, 0.0f);

    glVertex3f(-0.5f, -0.5f, 0.0f);

    glVertex3f(-0.5f, 0.5f, 0.0f);

    //Cubo dietro

    glColor3f(0,1,0);

    glVertex3f(0.5f, -0.5f, -0.5f);

    glVertex3f(0.5f, 0.5f, -0.5f);

    glVertex3f(-0.5f, -0.5f, -0.5f);

    glVertex3f(-0.5f, 0.5f, -0.5f);

    //Cubo lato

    glColor3f(0,0,1);

    glVertex3f(0.5f, -0.5f, 0.0f);

    glVertex3f(0.5f, 0.5f, 0.0f);

    glVertex3f(0.5f, -0.5f, -0.5f);

    glVertex3f(0.5f, 0.5f, -0.5f);

    //Cubo lato 2

    glColor3f(1,0,0);

    glVertex3f(-0.5f, -0.5f, 0.0f);

    glVertex3f(-0.5f, 0.5f, 0.0f);

    glVertex3f(-0.5f, -0.5f, -0.5f);

    glVertex3f(-0.5f, 0.5f, -0.5f);

    glEnd();

    glutSwapBuffers();

    }

    void update(int value) {

    _angle += 2.0f;

    if (_angle > 360) {

    _angle -= 360;

    }

    glutPostRedisplay(); //Tell GLUT that the display has changed

    //Tell GLUT to call update again in 25 milliseconds

    glutTimerFunc(25, update, 0);

    }

    int main(int argc, char** argv) {

    //Initialize GLUT

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

    glutInitWindowSize(400, 400);

    //Create the window

    glutCreateWindow(“Transformations and Timers – videotutorialsrock.com”);

    initRendering();

    //Set handler functions

    glutDisplayFunc(drawScene);

    glutKeyboardFunc(Keyboard);

    glutReshapeFunc(handleResize);

    glutTimerFunc(25, update, 0); //Add a timer

    glutMainLoop();

    return 0;

    }

    #175337

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106
    craig wrote:
    Ihihih mi fa ridere che mi dai del Lei diamoci pure del Tu tanto io ho 14 anni. Comunque grazie mille per i consigli che mi hai dato; per quanto riguarda #include pure io ci avevo pensato ma provando non funziona. Proverò a fare ultriori tentativi e per ora ciao e grazie ancora da Craig!!!

    Bene, un altro giovane programmatore, allora siamo in 4 su questo forum (che io abbia conosciuto, io sono il quarto).

    Allora credo proprio che ci possiamo fare del tu eh? Ciao, Fabio Iotti

    #175338

    ATL
    Partecipante
    • Blenderista
    • Post sul forum 71

    craig, il codice e’ corretto, qual e’ allora il problema?

    #175339

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Ora mi spiego meglio ATL. Prova ad immaginare che le righe scritte per visualizzare il cubo non siano presenti nel codice, quindi dove ho scritto //lato cubo (oppure simile) non esistano.

    Adesso io con Blender esporto il mio bel file con il formato .h.

    Come posso fare per visualizzare il contenuto del file di blender nella finestra 3d???

    Ho provato a fare copia e incolla dal codice del file .h ma quando eseguo il programma mi rileva alcuni errori che non mi permettono di eseguirlo.

    Ho provato a fare come consigliato anche da Bruce965 ma senza ottenere risultati migliori (ovvero come header: #include ).

    Il mio problema è questo sostanzialmete. Grazie e ciao da Craig!

    #175340

    ATL
    Partecipante
    • Blenderista
    • Post sul forum 71

    ma il codice che hai postato tu e’ un un file .h (si chiama header comunque) generato da Blender? e’ quello che non riesci a visualizzare? e soprattutto, quali sono le tue conoscenze di c++? perche’ da quello dipende anche che tipo di risposta ti posso dare 😀

    #175341

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Le mie conoscenze di C++ sono basilari cioè se vedo dei codici tipo quello che ho postato riesco a capirli o quanto meno a modificarli per far apparire il poligono che voglio. Comunque io ho il mio file in c++(quello che ho postato) e il file .h esportato con Blender, ora cosa dovrei fare per eseguire e dunque visualizzare il file .h (riferito a quello di blender) correttamente??? Grazie mille ATL se riesci ad aiutarmi.

    P.s.

    Sai Bruce965 non credo di rientrare in quei 4 programmatori giovanni che hai conosciuto ihihihihih

    #175342

    ATL
    Partecipante
    • Blenderista
    • Post sul forum 71

    posta anche il file .h se non e’ troppo lungo

    #175343

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Eccoti anche il file di blender (è semplicemente la scena di default) esportato come .h:

    #import “OpenGLCommon.h”

    static const VertexData3D CubeVertexData[] = {

    {/*v:*/{1.000000, 0.999999, 1.000000}, /*n:*/{0.666646, 0.666646, 0.333323} },

    {/*v:*/{1.000000, 1.000000, -1.000000}, /*n:*/{0.408246, 0.408246, -0.816492} },

    {/*v:*/{-1.000000, 1.000000, -1.000000}, /*n:*/{-0.408246, 0.816492, -0.408246} },

    {/*v:*/{1.000000, 0.999999, 1.000000}, /*n:*/{0.666646, 0.666646, 0.333323} },

    {/*v:*/{-1.000000, 1.000000, -1.000000}, /*n:*/{-0.408246, 0.816492, -0.408246} },

    {/*v:*/{-1.000000, 1.000000, 1.000000}, /*n:*/{-0.666646, 0.333323, 0.666646} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{-1.000000, -1.000000, 1.000000}, /*n:*/{-0.577349, -0.577349, 0.577349} },

    {/*v:*/{-1.000000, 1.000000, 1.000000}, /*n:*/{-0.666646, 0.333323, 0.666646} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{-1.000000, 1.000000, 1.000000}, /*n:*/{-0.666646, 0.333323, 0.666646} },

    {/*v:*/{-1.000000, 1.000000, -1.000000}, /*n:*/{-0.408246, 0.816492, -0.408246} },

    {/*v:*/{1.000000, -1.000000, -1.000000}, /*n:*/{0.816492, -0.408246, -0.408246} },

    {/*v:*/{0.999999, -1.000001, 1.000000}, /*n:*/{0.333323, -0.666646, 0.666646} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{0.999999, -1.000001, 1.000000}, /*n:*/{0.333323, -0.666646, 0.666646} },

    {/*v:*/{-1.000000, -1.000000, 1.000000}, /*n:*/{-0.577349, -0.577349, 0.577349} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{1.000000, 1.000000, -1.000000}, /*n:*/{0.408246, 0.408246, -0.816492} },

    {/*v:*/{1.000000, 0.999999, 1.000000}, /*n:*/{0.666646, 0.666646, 0.333323} },

    {/*v:*/{1.000000, -1.000000, -1.000000}, /*n:*/{0.816492, -0.408246, -0.408246} },

    {/*v:*/{1.000000, 0.999999, 1.000000}, /*n:*/{0.666646, 0.666646, 0.333323} },

    {/*v:*/{0.999999, -1.000001, 1.000000}, /*n:*/{0.333323, -0.666646, 0.666646} },

    {/*v:*/{1.000000, -1.000000, -1.000000}, /*n:*/{0.816492, -0.408246, -0.408246} },

    {/*v:*/{1.000000, 0.999999, 1.000000}, /*n:*/{0.666646, 0.666646, 0.333323} },

    {/*v:*/{-1.000000, 1.000000, 1.000000}, /*n:*/{-0.666646, 0.333323, 0.666646} },

    {/*v:*/{0.999999, -1.000001, 1.000000}, /*n:*/{0.333323, -0.666646, 0.666646} },

    {/*v:*/{-1.000000, 1.000000, 1.000000}, /*n:*/{-0.666646, 0.333323, 0.666646} },

    {/*v:*/{-1.000000, -1.000000, 1.000000}, /*n:*/{-0.577349, -0.577349, 0.577349} },

    {/*v:*/{0.999999, -1.000001, 1.000000}, /*n:*/{0.333323, -0.666646, 0.666646} },

    {/*v:*/{1.000000, 1.000000, -1.000000}, /*n:*/{0.408246, 0.408246, -0.816492} },

    {/*v:*/{1.000000, -1.000000, -1.000000}, /*n:*/{0.816492, -0.408246, -0.408246} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{1.000000, 1.000000, -1.000000}, /*n:*/{0.408246, 0.408246, -0.816492} },

    {/*v:*/{-1.000000, -1.000000, -1.000000}, /*n:*/{-0.577349, -0.577349, -0.577349} },

    {/*v:*/{-1.000000, 1.000000, -1.000000}, /*n:*/{-0.408246, 0.816492, -0.408246} },

    };

    #define kCubeNumberOfVertices 36

    // Drawing Code:

    // glEnableClientState(GL_VERTEX_ARRAY);

    // glEnableClientState(GL_NORMAL_ARRAY);

    // glVertexPointer(3, GL_FLOAT, sizeof(VertexData3D), &CubeVertexData[0].vertex);

    // glNormalPointer(GL_FLOAT, sizeof(VertexData3D), &CubeVertexData[0].normal);

    // glDrawArrays(GL_TRIANGLES, 0, kCubeNumberOfVertices);

    // glDisableClientState(GL_VERTEX_ARRAY);

    // glDisableClientState(GL_NORMAL_ARRAY);

    #175344

    ATL
    Partecipante
    • Blenderista
    • Post sul forum 71

    ovviamente questo codice da solo non può funzionare, le chiamate ai metodi devono essere all’interno della main oppure di qualche funzioni che richiami da lì. tra l’altro sono commentati quindi dubito che funzionino se non li decommenti 😉

    poi ti consiglio di prenderti un bel manuale di c++ e opengl, non è una cosa così semplice come copiare ed incollare delle righe, se non conosci a fondo la logica di entrambi non vai da nessuna parte! 😛

    #175345

    craig1305189435
    Partecipante
    • Blenderista
    • Post sul forum 136

    Grazie ATL. Al riguardo conosci qualche sito internet da dove iniziare seriamente a studiare l’argomento o il titolo di qualche ottimo manuale??? Grazie da Craig!

    #175346

    bruce965
    Partecipante
    • Blenderista
    • Post sul forum 106

    Io si, cerca su google: Thinking in C++

    Ci sono due versioni, entrambe libere per il download e la versione 1 si trova anche in italiano.

Stai vedendo 20 articoli - dal 1 a 20 (di 20 totali)

Devi essere loggato per rispondere a questa discussione.