顯示具有 06160246_吳婕瑜 標籤的文章。 顯示所有文章
顯示具有 06160246_吳婕瑜 標籤的文章。 顯示所有文章

2019年6月30日 星期日

06160246_W17

期末作品展示
2019.6.13



程式操作簡介:

一開始先設定glut,再匯人與讀入MAYA模型,慢慢地去調整模型的位置和大小 (TRT)。第二,剪輯一個大約30秒的音樂檔,轉成WAV檔,先開一個新檔測試音樂檔能不能使用,再匯入到主專案檔裡。第三,加入timer()函式,讓模型能撥放每一個執行的動作,每一組存取的動作能存入motion.txt檔裡。再加入keyboard()函式,裡面含按下W鍵時,能存取每一時間裡所執行的動作,當按下p時,能把motion.txt檔裡所存取到的動作和音樂檔播放出來。第四,匯入貼圖,必須宣告opencv函式,必須先下載並執行OpenCV2.1程式。display()裡加入2D貼圖程式碼,display()之後再加入GLuint myTexture()函式,最後再主函式int main()裡讀入你要的圖片。

作品簡介:

這次音樂檔採用一個韓國女團的歌,我自己很喜歡這團的歌,動作也是照著女團的舞去做改編,貼圖也是用女團的LOGO去做。我在用動作和音樂的配合上花了一些時間做,因為我想要當歌曲唱到這裡時,動作是怎樣的,想讓它能配合到。

回饋心得:

這次是我第一次利用程式碼做出一個動態的東西,感覺很新奇又具有挑戰性,一開始學glut時感覺真的很挫敗,因為好多都看不懂,但慢慢地跟著老師的腳步走,慢慢地去理解它,其實沒有想像中這麼複雜,只是要細心地去理解它。也很感謝老師常常利用課餘時間來回答我們的問題,耐心的告訴我們問題出在哪裡。

2019年6月6日 星期四

06160246_W16

電腦圖學
2019-06-06
(1)作業:Q&A
(2)複習:貼圖
(3)複習:打光
(4)複習:模型
(5)期末作品


#include <GL/glut.h>
#include <opencv/highgui.h> ///OpenCV High GUI讀圖
///程式碼是對的, 但是沒有設定好include, lib, bin
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
GLuint id;
void myInit()
{
    glEnable(GL_TEXTURE_2D);
    IplImage * img = cvLoadImage("marvel.jpg");
    glGenTextures(1, &id );
    glBindTexture(GL_TEXTURE_2D, id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
}
int main(int argc, char **argv)
{
    ///IplImage * img = cvLoadImage("marvel.jpg");
    ///cvShowImage("opencv", img);
    ///cvWaitKey(0);///等你按按鍵
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("GLUT");///之後
    ///建好GLUT視窗,可以開始準備 3D 貼圖 (要在create...MainLoop才能建貼圖)
    myInit();///我們的貼圖在這裡

    glutDisplayFunc(display);

    glutMainLoop();///之前
}


#include <GL/glut.h>
#include <opencv/highgui.h> ///OpenCV High GUI讀圖
#include <opencv/cv.h> ///OpenCV cvCvtColor() to convert color
///程式碼是對的, 但是沒有設定好include, lib, bin
GLuint id1, id2, id3;///NOW2
float a=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBindTexture(GL_TEXTURE_2D, id1);///id1 for background
    glBegin(GL_POLYGON);
        glTexCoord2f(0, 0); glVertex3f(-1, +1, 0);
        glTexCoord2f(0, 1); glVertex3f(-1, -1, 0);
        glTexCoord2f(1, 1); glVertex3f(+1, -1, 0);
        glTexCoord2f(1, 0); glVertex3f(+1, +1, 0);
    glEnd();
    glBindTexture(GL_TEXTURE_2D, id3);///id3 for rotating square
    glPushMatrix();
        glTranslatef(0.5, 0.5, 0);
        glRotatef(a++, 0, 0, 1);
        glScalef(0.3, 0.3, 0.3);
        glBegin(GL_POLYGON);
            glTexCoord2f(0, 0); glVertex3f(-1, +1, 0);
            glTexCoord2f(0, 1); glVertex3f(-1, -1, 0);
            glTexCoord2f(1, 1); glVertex3f(+1, -1, 0);
            glTexCoord2f(1, 0); glVertex3f(+1, +1, 0);
        glEnd();
    glPopMatrix();

    glBindTexture(GL_TEXTURE_2D, id2);///id2 for teapot
    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
///void myInit()
GLuint myTexture(char * filename)
{
    IplImage * img = cvLoadImage(filename); ///NOW OpenCV
    cvCvtColor(img, img, CV_BGR2RGB);///convert color ///NOW OpenCV

    GLuint id;
    glEnable(GL_TEXTURE_2D);
    glGenTextures(1, &id );
    glBindTexture(GL_TEXTURE_2D, id);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
    return id;
}
int main(int argc, char **argv)
{
    ///IplImage * img = cvLoadImage("marvel.jpg");
    ///cvShowImage("opencv", img);
    ///cvWaitKey(0);///等你按按鍵
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("06160246");///之後
    ///建好GLUT視窗,可以開始準備 3D 貼圖 (要在create...MainLoop才能建貼圖)
    id1 = myTexture("marvel.jpg"); ///myInit();///我們的貼圖在這裡
    id2 = myTexture("teapot.jpg");
    id3 = myTexture("square.jpg");

    glutDisplayFunc(display);
    glutIdleFunc(display);

    glutMainLoop();///之前
}





2019年5月30日 星期四

06160246_W15

電腦圖學
2019-05-30
(1)主題:攝影機、運鏡
(2)主題:投影、矩陣
(3)主題:位置移動 VS 轉動
(4)複習:背影貼圖
(5)期末作品





攝影機、運鏡
eye


center



up



程式碼匯入到Code Block













投影


打光


轉動




#include <GL/glut.h>///GLUT 外掛
#include "glm.h"///glm.cpp for 3D model glmReadOBJ(), glmDraw(), glmUnitized()
GLMmodel * pmodel=NULL;///指標
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();
}
#include <math.h>///for sin() cos() ///NOW3
float eyeX=2, eyeY=0, eyeZ=0; ///NOW3
void timer(int t)///NOW3
{

    glMatrixMode(GL_PROJECTION); ///NOW4
    glLoadIdentity(); ///NOW4
///glOrtho(-1, +1,  -1,+1, -10.0,10.0); ///NOW4 你可以看到 -10...+10範圍
gluPerspective(60, 1.0, 0.001, 1000);///NOW5


    float angle = (t/180.0)*3.1415926; ///NOW3
    eyeX=2*cos(angle); ///NOW3
    eyeZ=2*sin(angle); ///NOW3

    glutTimerFunc(33, timer, t+1);///NOW3
    glMatrixMode(GL_MODELVIEW);///NOW3
    glLoadIdentity();///NOW3
    gluLookAt( eyeX, eyeY, eyeZ,///eye ///NOW3
           0, 0, 0,///center ///NOW3
               0, 1, 0);///up    ///NOW3

    glutPostRedisplay();///NOW3
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutInitWindowSize(512,512);
    glutInitWindowPosition(50, 50);
    glutCreateWindow("week15");
//    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutTimerFunc(33, timer, 0);///NOW3

    GLfloat light_pos[] = { 0.0, 0.0, 1.0, 0.0 };
    glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, light_pos);

    glutMainLoop();

    return 0;
}










2019年5月23日 星期四

06160246_W14

電腦圖學
2019-05-23
(1)主題:計時器Timer
(2)主題:內插公式
(3)主題:動畫
(4)上週HW問題回覆
(5)期末作品


加入放屁聲到glut程式碼裡



記得要將聲音檔放至C:\Users\user\Desktop\freeglut\bin



讓茶壺轉動




利用內插公式讓茶壺移動





2019年5月16日 星期四

06160246_W13

電腦圖學
2019.5/16
week13
(1)主題:檔案
(2)主題:關節,擺動作
(3)複習:複習
(4)作業:機器人擺動作

                                      Projects : Console application



讓檔案可以讀進去顯示出來




glut(關節,擺動作)



按3,4能讓不同茶壺轉動




按R可讓茶壺轉動










2019年5月9日 星期四

06160246_W12

電腦圖學
2019.5/9
week12
(1)主題:鍵盤
(2)主題:聲音,音樂
(3)複習:階層T-R-T骨架
(4)作業:能操控的機器人

Projects : Console application










開啟freeglut
搭配聲音的呈現


搭配do ra mi fa so(12345)音樂