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時感覺真的很挫敗,因為好多都看不懂,但慢慢地跟著老師的腳步走,慢慢地去理解它,其實沒有想像中這麼複雜,只是要細心地去理解它。也很感謝老師常常利用課餘時間來回答我們的問題,耐心的告訴我們問題出在哪裡。

~~~week17

(1)期末作品展示
(2)選票、加分、心得
(3)學期回顧
(4)Q&A

youtube影片連結:https://www.youtube.com/watch?v=GeH1PKc5kLY&feature=youtu.be

程式操作簡介&作品簡介:按下W可以把動作存取,全部的動作存取完之後重新打開專案compiler按P就可以看到剛剛存的動作,這次我的作品背景音樂是用忍者哈特利的主題曲,還有用maya及codeblocks完成,原本是想要做背景圖片的,可是試了很久一直跑不出來,所以最後放棄貼圖了。

回饋心得:期末作品沒有把貼圖做出來,整個作品看上去就變得簡陋許多,但是我已經試了非常久的時間,雖然沒成功的做出來但是在過程中我學到了很多東西。



2019年6月29日 星期六

06160805的課堂筆記

期末作品




影片網址: https://youtu.be/LvJjh7F10XA

作品簡介:我所使用的歌曲是Taylor Swift-Black Space,使用工具是Maya 
  和 Codeblocks,透過鍵盤w將動作記憶。

心得:這次做這個作業真的學到很多,但是我的程式不知道有什
  麼問題,執行之後,會等15秒,才會有模型出現,我將檔案放到
  別人的電腦上,也是一樣的,所以不是電腦的問題,我也請很多
  同學幫我看程式碼,同學也都找不出問題,這就是我這次遇到的
  困難。

珮珮的學習日誌 Week17

電腦圖學 期末作品


影片連結:


(2)動作順暢版:<因為覺得先前那個動作太慢了,所以期末展示後就又重新做下調整>



1.程式操作簡介:利用codeblocks來撰寫程式,以及使用老師上課所使用的程式碼來做些變化,像是加入maya做的模型放進去,然後利用T-R-T的程式讓各個手臂關節可以跟隨著鍵盤來動各個部位,還有把自己找到的音樂檔隨著機器人的動作一起做播放。

2.使用codeblocks播放機器人動作:首先按下w可以把動作存下,如果存完全部動作後再關掉重按build and run,再按下p就可以播放剛剛儲存的舞步。


3.作品簡介:裡面套用的模型是自己用MAYA所製作而成,背景音樂所選擇的是日本團體AAA的Party it up(去人聲版),採用自己喜歡的偶像來做挑選。而取用這個星空背景圖是因為這首歌的氣息其實是帶種神祕氣息又帶點美妙的,就算在各自的出道選拔到現在經歷了不少挫折也仍然繼續向前,並散發出屬於團體裡7個人光芒的廣大星空,以成就了現在的他們。

4.回饋心得:經過這次的機器人作品,讓我知道可以用程式碼來讓機器人動真的很不可思議,原先還以為自己無法完成這個作品,因為在這操作過程中遇到了不少的問題,還有個瞬間覺得自己最後可能完成不大了,蠻有挫折感的,但是後來經過同學及老師的協助,終於完成這個期末作品,我真的很開心。然後我希望老師上課時可以放慢點腳步來上,有時候我們無法一下子吸收那麼多去理解個行程式碼的定義是什麼,這學期老師辛苦了~~如果下次還有這個機會,我蠻希望能再嘗試看看,試著把作品做到最好的形式給大家看。





06160123_Week17電腦圖學

🔺電腦圖學2019-06-13 Week17

(1)期末作品展示
(2)選票、加分、心得
(3)學期回顧
(4)Q&A



YouTube影片連結:https://youtu.be/VC1VO7SkdAA


程式操作簡介:按下w可以把動作存下,關掉以後,再開啟專案,compiler後按下p就可以播放剛剛儲存的舞步。


作品簡介:因為老師教學的時候使用的是MARVEL的背景圖,所以在做作業的時候我也選擇了相同的主題。雖然我不會跳舞,但是我覺得機械舞很好看,所以藉由這次的機會,我配上了有層次的配樂,想製造震撼的感覺,希望老師和同學看到我的作品時可以感同身受。


回饋心得:因為在做這個作業的同時,其他科目也正好有著很多的報告及作業,非常的忙碌。雖然這個作業讓我感到非常的痛苦,但其實也學到了不少,老師辛苦了!不要再出這種作業糟蹋自己了嗚嗚嗚嗚嗚 

鍾嘉穎的期末作品


https://www.youtube.com/watch?v=3cJGH8asKQ0

程式程作:
1. 每做一個動作按一下 (可以把他存起來)
2. 把所以動作存好之後(要把Complier關掉)
3. 再把程式跑出來之後,按R,他就會開始跳舞

作品簡介:背景用了史迪奇的圖片,並用了夏威夷的音樂。機器人的舞蹈配合著悠閒的夏威夷的音樂,讓人有一種放鬆、悠閒的感覺。

心得:我覺得這個作業很難,做得很痛苦,很有挫折感。希望老師可以出一個比較付合我們程度的作業。還有我覺得課程太緊湊,經常無法跟上,所以作業才做得那麼痛苦。

06160061_W17

電腦圖學期末作品












影片網址:https://youtu.be/Qge8sifNffs


作品簡介:使用TWICE-Dance the night away作為本次作業的歌曲,透過按鍵w開始進行動作的記憶儲存,並且在關掉視窗後重新開啟按按鍵r即可啟動做出剛剛所用的動作。

學習心得:這次的問題其實遇到蠻多的,但是透過詢問老師也獲得改善,不過要讓機器人跟著音樂節奏跳舞我覺得蠻困難的,所以上次老師給我們看的示範影片做的
非常厲害我十分佩服,這學習利用程式碼學到很多。

郁峰的筆記


複習:貼圖

#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("GLUT");///之後
    ///建好GLUT視窗,可以開始準備 3D 貼圖 (要在create...MainLoop才能建貼圖)
    id1 = myTexture("marvel.jpg"); ///myInit();///我們的貼圖在這裡
    id2 = myTexture("teapot.jpg");
    id3 = myTexture("square.jpg");

    glutDisplayFunc(display);
    glutIdleFunc(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;

#include "glm.h"///呼叫外掛 ///glm需要它
GLMmodel * pmodel=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel2=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel3=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel4=NULL;///準備指標 ///glm需要它

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    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();///貼圖需要它

    if (!pmodel) { ///glm需要它
        pmodel = glmReadOBJ("body.obj"); ///glm需要它
        if (!pmodel) exit(0); ///glm需要它
        glmUnitize(pmodel); ///glm需要它
        glmFacetNormals(pmodel); ///glm需要它
        glmVertexNormals(pmodel, 90.0); ///glm需要它
    }

    glDisable(GL_TEXTURE_2D);
    glPushMatrix();
        glRotatef(a++, 0,1,0);
        glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
    glPopMatrix();

    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;///貼圖需要它
}
const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f }; ///glm需要它
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; ///glm需要它
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; ///glm需要它
const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f }; ///glm需要它
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才能建貼圖)
    id1 = myTexture("marvel.jpg"); ///myInit();///我們的貼圖在這裡 ///貼圖需要它
    id2 = myTexture("teapot.jpg");
    id3 = myTexture("square.jpg");

    glutDisplayFunc(display);
    glutIdleFunc(display);

    glEnable(GL_DEPTH_TEST);    ///glm需要它

    glEnable(GL_LIGHT0);  ///glm需要它
    glEnable(GL_NORMALIZE); ///glm需要它
    glEnable(GL_COLOR_MATERIAL); ///glm需要它
    glEnable(GL_LIGHTING); ///glm需要它

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient); ///glm需要它
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse); ///glm需要它
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); ///glm需要它
    glLightfv(GL_LIGHT0, GL_POSITION, light_position); ///glm需要它


    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;

#include "glm.h"///呼叫外掛 ///glm需要它
GLMmodel * pmodel=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel2=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel3=NULL;///準備指標 ///glm需要它
GLMmodel * pmodel4=NULL;///準備指標 ///glm需要它

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, id1);///id1 for background ///貼圖需要它
    glBegin(GL_POLYGON); ///貼圖需要它
        glTexCoord2f(0, 0); glVertex3f(-1, +1, -1); ///貼圖需要它
        glTexCoord2f(0, 1); glVertex3f(-1, -1, -1); ///貼圖需要它
        glTexCoord2f(1, 1); glVertex3f(+1, -1, -1); ///貼圖需要它
        glTexCoord2f(1, 0); glVertex3f(+1, +1, -1); ///貼圖需要它
    glEnd();///貼圖需要它

    if (!pmodel) { ///glm需要它
        pmodel = glmReadOBJ("body.obj"); ///glm需要它
        if (!pmodel) exit(0); ///glm需要它
        ///glmUnitize(pmodel); ///glm需要它
        glmFacetNormals(pmodel); ///glm需要它
        glmVertexNormals(pmodel, 90.0); ///glm需要它
    }

    glDisable(GL_TEXTURE_2D);
    glPushMatrix();
        glRotatef(a++, 0,1,0);
        glScalef(0.2, 0.2, 0.2);
        glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
    glPopMatrix();

    if (!pmodel2) { ///glm需要它
        pmodel2 = glmReadOBJ("head.obj"); ///glm需要它
        if (!pmodel2) exit(0); ///glm需要它
        ///glmUnitize(pmodel2); ///glm需要它
        glmFacetNormals(pmodel2); ///glm需要它
        glmVertexNormals(pmodel2, 90.0); ///glm需要它
    }

    glDisable(GL_TEXTURE_2D);
    glPushMatrix();
        glRotatef(a, 0,1,0);
        glScalef(0.2, 0.2, 0.2);
        glmDraw(pmodel2, GLM_SMOOTH | GLM_MATERIAL);
    glPopMatrix();

    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;///貼圖需要它
}
const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f }; ///glm需要它
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; ///glm需要它
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; ///glm需要它
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f }; ///glm需要它
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才能建貼圖)
    id1 = myTexture("marvel.jpg"); ///myInit();///我們的貼圖在這裡 ///貼圖需要它
    id2 = myTexture("teapot.jpg");
    id3 = myTexture("square.jpg");

    glutDisplayFunc(display);
    glutIdleFunc(display);

    glEnable(GL_DEPTH_TEST);    ///glm需要它

    glEnable(GL_LIGHT0);  ///glm需要它
    glEnable(GL_NORMALIZE); ///glm需要它
    glEnable(GL_COLOR_MATERIAL); ///glm需要它
    glEnable(GL_LIGHTING); ///glm需要它

    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient); ///glm需要它
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse); ///glm需要它
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); ///glm需要它
    glLightfv(GL_LIGHT0, GL_POSITION, light_position); ///glm需要它

    glMatrixMode(GL_PROJECTION); ///投影矩陣相關 戴好我們的正確度數的眼睛
    glLoadIdentity();  ///投影矩陣相關 戴好我們的正確度數的眼睛
    glOrtho(-1,+1, -1,+1, -100,+100); ///投影矩陣相關 戴好我們的正確度數的眼睛
    glMatrixMode(GL_MODELVIEW);  ///投影矩陣相關 切換回我們正確的矩陣

    glutMainLoop();///之前
}

比利安娜工作室-夜狗雞排,W17

電圖Week17 2019/06/13

(1)期末作品展示
介紹:2年前在網路上當紅的俄羅斯厭世背包小弟Barzz以他獨特的舞蹈讓整場表演焦點都放在這位小男孩身上,而這樣的舞蹈也掀起一波模仿潮,本來想安排更多舞步在後面,但看時間來不及了就交了,所以可能有點單調...


(2)選票、加分、心得


(3)學期回顧
剛開始接觸的時候還有點不知道在幹嘛,也因為早上4節英文課的關係,常常上到一半睡著(真是麻煩學姊了每次都來叫我...)跟小葉老師談過後開始調整前一天早睡12點吃完午餐先睡就比較改善了,也很慶幸旁邊坐了會認真上課的同學,才沒有一起床就不知所措,也不會麻煩學姐及老師,期末能把作品動起來真的很感動,雖然真的很複雜,不過搞懂後就比較得心應手,慢慢知道問題在哪了,謝謝小葉老師及玉妮學姊!!!

寶欸學習筆記 week_17

<1>期末作品展示
作品連結:https://www.youtube.com/watch?v=4uTVy3ySNZs
作品介紹:由於版權問題,唱試過很多歌曲作後找了一首無版權的背景音樂,可以放上網路這個作品背景是用太空圖片人物色系偏暗是為了呼應太空背景,音樂也選了一首帶有未來感的背景音樂,也是為了呼應太空的主題
<2>票旋加分心得
<3>作品展示
<4>學期回顧
真的想不到自己可以用程式碼畫圖與放音樂,最後能夠做出一套期末作品確實很感動,謝謝老師不厭其煩的一職幫我解惑,甚至是大半夜回答我的問題,十分謝謝老師!!!

2019年6月13日 星期四

ˊ_>ˋ_week17

(1)期末作品展示:

期末作品:https://youtu.be/JrsoZQgUbxM



Song: Imagine Dragon- Natural
背景:西門町




(2)選票、加分、心得

(3)學期回顧

外系修課之璧綾der肺腑之言XD:
這次我第一次修資傳系的課,想當初我只是隨機挑一堂我平常最不可能碰到的課(動畫設計相關的課)XD。
在挑了之後,不免俗地向大學生一樣上網查老師的教學評價,發現學生給予的評價不是普通的好,所以就選了葉正聖老師的電腦圖學XD,想說來感受一下寫程式做動畫是什麼感覺XD,這堂課上到最後回頭看~內容真的很豐富,而且連我這個動畫門外漢,只要跟著老師一步一腳印,即使偶而不小心脫隊也做得出期末作品,雖然做出來的成品和資傳學生還是有差,比較沒那麼精美,但我著重體驗整個過程,一路上我覺得很開心。
尤其在期末的時候,深深明白部落格筆記真的很重要,如果平常有認真上課,並且把老師上課中的重點也一併寫入部落格,對製作期末作品是會有很大的幫助,能遇見教學這麼認真的老師,我真的感到很開心,除了學到了不少各種跟動畫有關的程式碼,還有也對Maya和CodeBlocks有基本的了解,一堂課學到這個多東西,真的挺開心的XD,不論自己以後會不會走入相關領域,我覺得在這堂課學到的都是一個經驗~很寶貴!

這學期過得很精采,修的其中3、4堂課都要期末專案,最後還幸運地讓我遇見腸病毒,一邊崩潰一邊趕專案結束這學期XD

感謝老師人都很好QQ,還好平常還算有稍微認真XD

--最後決定繼續完善到自己最低標準


(4)Q&A


嗶啵啵嗶啵2019/0613_W17

Week 17
(1)期末作品展示
(2)選票、加分、心得
(3)學期回顧
(4)Q&A

Week16-04160453

2019第17週上課-06161196宋丹華

第17週課程內容:


A.期末作品展示

B.選票 / 加分 / 心得

C.學期回顧

D.Q & A


1.打分數+寫心得跟回饋~

2.期末作品介紹+影片連結:

期末作品介紹--->

(1)作品簡介:
      雖然我的機器人跳舞沒有在音樂的節拍上面!!不過,我有盡量跟著拍子動。
我選的音樂是---高爾宣[沒了你]想選這首歌的動機為,不僅歌詞很貼近生活,也蠻有律動感的~

(2)程式操簡介:
      這個期末作品,需要用到我們14週交的機器人作業來當基礎。可是因為我14週的機器人模型,打光沒有打好所以顏色出不來!!我選擇期末作品重做!!

      我先把模型匯進去glut的專案裡面,因為顏色上還是有跑掉,所以有請老師幫我調一下!!接下來是匯入音樂檔案,確定模型跟音樂是同步的~

      後來就是比較繁雜的寫檔跟讀檔。把動作的檔案利用w鍵寫出來、再用r鍵讀進去、最後用p/t鍵來播放檔案!!!

      最後把動作串連一起,變成一個完整會跳舞的機器人了~

(3)回饋心得:
       起初其實很想放棄這個做作品!!因為我是重新開始做,花了很多時間跟精神~

       還記得做的第一天晚上,我熬夜到4點多,可是半個東西都沒有匯進去專案裡面。

       心情上真的受到很大的挫折!!但是覺得還是不能放棄,都花時間重新建模了。

       應該要好好完成到最後~隔天有問一下班上比較厲害的同學,問他看看還記不記得。

       怎麼把模型匯進去不會有問題。然後,就跑去問老師打光的問題~~~

       接下來就一步一步地完成,匯音樂、寫檔讀檔、連續動作等等,總共花了一個禮拜的時間好不容易完成的那刻,內心真的很激動哈哈哈 覺得很不真實,自己有辦法完成這項作業。

       其實對老師真的很不好意思,因為我理解上很慢,常常看不懂老師寫的程式是甚麼意思?

       然後就會一直問老師,占用到老師的休息時間跟吃飯時間!!!老師很抱歉啦~

       不過,被老師教過真的懂了很多。也比較了解自己下一步該怎麼做囉~

       謝謝老師給我們這個機會做這個做作品,可能出來的樣子不是很美!! 但至少知道怎麼做了才比較重要。 謝謝老師對我的幫忙^_^


影片連結--->
    https://youtu.be/a6QmFvarcD0

幽羊山之土-Week17_期末作品

1.期末作品



2.


電腦圖學成果

https://www.youtube.com/watch?v=HTOeZ0OVEps

期末作品展示w-17


Week17-04160453


彥の圖學筆記 Week15

電腦圖學

2019-05-30 Week15

(1) 主題:攝影機運鏡

Step1. 繪出模型

#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();
}

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);

    glutMainLoop();

    return 0;
}

Step2. 模型打光

#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();
}

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);

    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;
}

Step3. Timer函式:運鏡

#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=0.5, eyeY=0, eyeZ=0; ///NOW3
              void timer(int t)///NOW3
              {
                  float angle = (t/180.0)*3.1415926; ///NOW3
                  eyeX=0.5*cos(angle); ///NOW3
                  eyeZ=0.5*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;
              }

(2) 主題:投影、矩陣

在Timer函式新增以下三行
1. glMatrixMode(GL_PROJECTION);
2. glLoadIdentity();
3. glOrtho(-1,+1,-1,+1,-10,+10);
/// -10和+10就像是眼鏡,範圍不夠大,身體會斷東斷西

(3) 複習:位置移動&轉動

(4) 複習:背景貼圖

(5) 期末作業