2024年4月11日 星期四

探索比奇寶的奧秘 8

 到這個網址https://jsyeh.org/3dcg10/

下載兩個[source][data][win32]

data解壓縮

al.mtl 度應打光的materi

al.obj 裡面很多內容

    #代表註解

    可以再引用一個 mtl 檔   

    v 代表 vertex,頂點 後面有座標,x,y,z

    f 代表面 facet,後面有頂點的編號,繪出一個面

    g 代表 group


week08-1_glm_gundam

把source.zip裡面的glm.c跟glm.h複製到week08-1_glm_gundam

glm,c檔名要改成glm.cpp

新增一個data資料夾,把Gundam.mtl,Gundam.obj放到data資料夾

propertries->Build targets的Execution working dir 的一串改成 .

把freeglut.dll 複製到專案裡

把glutSolid改成drawmodel();


week08-2_glm_gundam_opencv_texture

新增一個data資料夾,把Gundam.mtl,Gundam.obj,照片放到data資料夾

propertries->Build targets的Execution working dir 的一串改成 .

把freeglut.dll 複製到專案裡

下載OpenCV

https://gist.github.com/jsyeh/5ed01210559721ec71b659b3ffed2dd7 貼這裡的程式碼


myTexure("data/Diffuse.jpg");

Setting-Compiler 加入OpenCV

-compiler 的 include 要加入C:\openCV2.1\include

-linker 的 lib 要加入 C:\OpenCV2.1\lib

-linker 設定,要加入 cv210 cxcore210 highgui210

glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL |); 加 GLM_TEXTURE




week08-3_glm_gundam_opencv_texture_lighting

float angle = 0; ///加這行, 讓它轉動
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix(); ///加這行, 讓它轉動
        glRotatef(angle++, 0, 1, 0); ///加這行, 讓它轉動
        drawmodel(); //glutSolidTeapot( 0.3 );
    glPopMatrix(); ///加這行, 讓它轉動
    glutSwapBuffers();
}

glutIdleFunc(display); ///加這行, 讓它轉動

打光程式碼放在 glutMainLoop(); 前面

const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f };要加負號才會變亮











沒有留言:

張貼留言