2019年5月31日 星期五

PJ週記 - Week15之攝影機與運鏡

(*)前置作業

下載[data][win32][glut32.dll]
把資料用成下圖


把freeglut資料夾丟桌面 丟桌面 丟桌面

複製lib裡面的freeglut.a>>複製貼上>>改成libglut32.a















(一)先畫出模型


1.先用CodeBlocks開啟一個GLUT專案

2.上面下載的data資料夾freeglut>bin

3.將source裡的glm.hglm.cprojection.c移進專案資料夾

4.將glm.c 改成 glm.cpp

如下圖


然後將CodeBlocks中的main.cpp程式碼
全數改成下列程式碼


#include <GL/glut.h>
#include "glm.h" ///for glmReadOBJ()....
GLMmodel * pmodel=NULL;///NOW
void drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("data/al.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    drawmodel();
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);
    glutCreateWindow("week15");

    glutDisplayFunc(display);

    glutMainLoop();
}


就會出現模型的樣子!!
會缺法顏色、樣子及立體感
就是因為少了打光!!!






(二)打光


在int main主函式中
glutDisplayFunc後面加上

    GLfloat light_pos[] = { 0.0, 0.0, -1.0, 0.0 }; ///打光的位置
    glEnable(GL_DEPTH_TEST);///有立體的功能
    glEnable(GL_LIGHT0);    ///打光後變立體的彩色的
    glEnable(GL_LIGHTING);  ///打光後變立體的彩色的
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos); ///打光的位置


就會出現有顏色的背影了







(三)有色彩旋轉中的人影





(四)有色彩旋轉中打光過的人影




 

(五)有色彩旋轉中打光過拉近的人影






沒有留言:

張貼留言