2017電腦圖學 Computer Graphics 授課教師: 葉正聖 銘傳大學資訊傳播工程系 每週主題: 程式環境、點線面顏色、移動/旋轉/縮放與矩陣(Matrix)、階層性關節轉動(T-R-T)、做出機器人、打光、貼圖、glu/glut函式、鍵盤、滑鼠、計時器(timer)、讀入3D模型、粒子系統、聲音、特效、投影矩陣、攝影機與運鏡、機器人2.0、期末作品
2017年7月2日 星期日
2017年6月5日 星期一
Week16 湘雯的筆記
1.使用Excel實作內差公式
薪水代表角度
公式:Alpha*NewAngle+(1-Alpha)*OldAngle
打開自己上週的作業檔,準備實作內差公式
(記得用Notepad++修改freeglut的位置)
2017年5月22日 星期一
Week14 湘雯的筆記
打開上周作業使其執行
讓頭、手、身體一起旋轉
新增timer函式
程式碼:
#include <stdio.h>
void timer(int t)///計時器叫的時候要做什麼呢
{
glutTimerFunc(100,timer,t+1);///先撥下一個鬧鐘
angle++;///做了要做的事
printf("現在時間是 %d, 我起床了,等一下鬧鐘會再叫一下哦 ",t);
glutPostRedisplay();///提醒電腦有空要畫一下畫面
printf(" ~~~然後我就又睡了...\n");
}///再度沉睡
glutTimerFunc(0,timer,0);
2017年5月15日 星期一
Week13 湘雯的筆記
1.T-R-T小考複習
程式碼:
glPushMatrix();
glTranslatef(0.4,-1.0,0); //(3)再把樓下的會旋轉的腿,掛在(0.4,-1.0,0)
glRotatef(angle,0,0.1); //(2)對z軸做旋轉angle角度
glTranslatef(0.2,-0.5,0): //(1)把旋轉中心點放在畫面的中間
drawLeg(): //(0)畫一個小腿
glPopMatrix():
程式碼:
glPushMatrix();
glTranslatef(-0.5,0.35,0); //(3)掛在正確的位置
glRotatef(angle,0,0,-1); //(2)轉動時要小心轉動方向
glTranslatef(-0.3,0,0); //(1)負的方向移過去 讓手肘放在中心點 等等才能旋轉
drawArm();
glPopMatrix();
2.下載openCV 用codeblocks讀圖檔
開啟codeblocks專案
程式碼:
#include <opencv/highgui.h>
int main()
{
IplImage * img=cvLoadImage("C:/img.png");
cvShowImage("a", img);
cvWaitKey(0);
}
成功讀出圖檔~
2017年5月8日 星期一
2017年5月1日 星期一
Week 11 湘雯的筆記
一、不用寫程式碼即可叫出模型
1.下載 3D exploration
2.點選第一個連結 下載v1.81版
3.解壓縮後開啟
4.至小葉老師的網站下載data並解壓縮到桌面
5.利用3D exploration開啟 可看到模型
6.另存成Sample APP 記得要全部匯出
7.下載完之後打開
8.用code blocks新增openGL專案
9.把原始程式碼remove
10.add files
11.加入剛剛匯出的檔案
2017年4月24日 星期一
Week 10 湘雯的筆記
1.玩遊戲
Google搜尋"NeHe Lesson32"進入這裡
下載"Visual C++"
放桌面解壓縮 試著執行遊戲
2.嘗試將聲音寫進程式
到Lesson 32的資料夾檢視程式碼
在第300行找到播放聲音的程式碼
PlaySound("data/shot.wav",NULL,SND_ASYNC);
開啟CodeBlocks建立GLUT專案
在137行加入多媒體系統函式 否則接下來程式會無法執行 程式碼如下
#include<mmsystem.h>
新增一個mouse函式 程式碼如下
void mouse(int button,int state,int x,int y)
{
PlaySound("data/shot.wav",NULL,SND_ASYNC);
}
但必須改變資料夾的位置 否則程式碼讀不出來
至Lesson 32的Data資料夾複製位置
改到程式碼中 如下
void mouse(int button,int state,int x,int y)
{
PlaySound("C:\\Users\\user\\Desktop\\Lesson32\\Data/shot.wav",NULL,SND_ASYNC);
///要把檔名裡面目錄的斜線 從 \ 變成 \\ 或 /
}
記得將mouse函式加到int函式內 程式碼如下3.
glutMouseFunc(mouse);
執行 並點擊滑鼠左鍵檢查是否會發出槍聲
3.小鋼琴(把DO RE MI ... 的音加入程式中)
上網下載WAV檔
把檔案放在freeglut的bin資料夾中 位置如下
C:\Users\user\Desktop\freeglut\bin
新增keyboard函式 程式碼如下
void keyboard(unsigned char key,int x,int y)
{
if(key=='1')PlaySound("DO.wav",NULL,SND_ASYNC);
if(key=='2')PlaySound("RE.wav",NULL,SND_ASYNC);
if(key=='3')PlaySound("MI.wav",NULL,SND_ASYNC);
if(key=='4')PlaySound("FA.wav",NULL,SND_ASYNC);
if(key=='5')PlaySound("SOL.wav",NULL,SND_ASYNC);
}
記得把keyboard函式加入int函式中 程式碼如下
glutKeyboardFunc(keyboard);
執行檢查是否會發出音階
4.將MP3檔加入程式 使其可在背景播放
把CMP3_MCI放在04162443_hw1的資料夾中
加入#include 如下
#include<CMP3_MCI.h>///放在同一個程式碼專案的目錄中
記得宣告CMP3的變數 如下
#include"CMP3_MCI.h"///放在同一個程式碼專案的目錄中
CMP3_MCI myMP3;
加入main函式中 叫出MP3檔 程式碼如下
///Load MP3 File
myMP3.Load("C:\\Users\\user\\Desktop\\2017\\yukai.mp3");
myMP3.Play(); ///Play the File
執行檢查是否會有背景音樂
訂閱:
文章 (Atom)
































































