顯示具有 08160226_李華燿 標籤的文章。 顯示所有文章
顯示具有 08160226_李華燿 標籤的文章。 顯示所有文章

2021年5月12日 星期三

week 12

 第1部份

3D Exploration 安裝

匯入Gundan.obj

Save as成Sample APP

開啟OpenGl專案 把.cpp跟.bmp檔放在專案目錄

remove原本main.c程式

Add file .cpp

增加

#define GL_BGR_EXT 0x80E0

#define GL_BGRA_EXT 0x80E1

註解掉

(LPLOGPALETTE) lpPalette = (LPLOGPALETTE)HeapAlloc (hHeap, 0,

 sizeof (LOGPALETTE) + (nColors * sizeof (PALETTEENTRY)));

註解掉

glRotatef (30.0f, 1.0f, 0.0f, 0.0f);

glRotatef ((GLfloat) nAngle, 0.0f, 1.0f, 0.0f);

glRotatef ((GLfloat) nAngle2, 1.0f, 0.0f, 0.0f);

glScalef (nSize+2.5f,nSize+2.5f,nSize+2.5f);

增加

glRotatef(nAngle,0,1,0);

glScalef(3,3,3);

執行結果









week12 電圖

 

利用Maya去把圖片存取下來







2021年5月5日 星期三

電圖的3Dweek 11

 Moodle下載 windows.zip data.zip source.zip

解壓縮到資料夾

把 windows/glm.c&glm.h&transformation.c複製到glut專案資料夾中

glm.c改成 glm.cpp

tansformation.c用notepad++打開 複製

貼到專案中 main.cpp

將 glm.cpp加入專案中

把data.zip中的檔案放到freeglut/bin

就能解決閃退問題

全部刪掉換成

程式碼

#include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display() { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);///清空 drawmodel();///glutSolidTeapot(0.3) glutSwapBuffers(); } int main(int argc, char *argv[])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week11 3D模型");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutMainLoop();///(5)主要程式 }

就有圖形了

加上旋轉圖

加上Week08的打光

程式碼

#include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) { if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj"); if (!pmodel) exit(0); glmUnitize(pmodel); glmFacetNormals(pmodel); glmVertexNormals(pmodel, 90.0); } glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL); } void display() { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);///清空 glPushMatrix(); glRotatef(180,0,1,0); drawmodel();///glutSolidTeapot(0.3) glPopMatrix(); glutSwapBuffers(); } const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_position[] = { 2.0f, 5.0f, -5.0f, 0.0f }; const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f }; const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat high_shininess[] = { 100.0f }; int main(int argc, char *argv[])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week11 3D模型");///(3)建立GLUT視窗 glEnable(GL_DEPTH_TEST);深度偵測 glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glutDisplayFunc(display);///(4)準備display()函式 glutMainLoop();///(5)主要程式 }

就不會破圖


執行結果

















2021年4月28日 星期三

電圖音樂播放Week10

 第1部份

聲音

檔案要放在freeglut/bin裡面

音樂檔案要是wav檔

增加按下放音樂


執行結果



-----------------------------------------------------------------------------------------------------------------------------

第2部份

開視窗放茶壺

加上第1部分的按鍵

程式碼

#include <windows.h> #include <GL/glut.h>///使用GLUT外掛 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面 } 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("so.wav",NULL,SND_ASYNC); } int main(int argc, char *argv[])///main()函式 { glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week10 李華燿");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutKeyboardFunc(keyboard); glutMainLoop();///(5)主要程式 }

開始1231321313

使用使用CMP3_MCI

可以撥放mp3檔

程式碼

#include <windows.h> #include <GL/glut.h>///使用GLUT外掛 #include "CMP3_MCI.h"///檔案放在week10_sound CMP3_MCI mp3;///宣告變數 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面 } 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("so.wav",NULL,SND_ASYNC); } int main(int argc, char *argv[])///main()函式 { mp3.Load("music.mp3");///檔案放執行目錄freeglut/bin mp3.Play();///播放 glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week10 李華燿 ");///(3)建立GLUT視窗
glutDisplayFunc(display);///(4)準備display()函式 glutKeyboardFunc(keyboard); glutMainLoop();///(5)主要程式 }

一樣可以按鍵放音樂

加上射擊音

透過滑鼠按下發出聲音

程式碼

#include <windows.h> #include <GL/glut.h>///使用GLUT外掛 #include "CMP3_MCI.h"///檔案放在week10_sound CMP3_MCI mp3;///宣告變數 static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面 } 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("so.wav",NULL,SND_ASYNC); } void mouse(int button, int state, int x, int y) { if(state==GLUT_DOWN) PlaySound("shot.wav", NULL, SND_ASYNC); } int main(int argc, char *argv[])///main()函式 { mp3.Load("music.mp3");///檔案放執行目錄freeglut/bin mp3.Play();///播放 glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week10 李華燿");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMainLoop();///(5)主要程式 }

不斷點擊

增加左中右鍵點擊聲

程式碼

#include <windows.h> #include <GL/glut.h>///使用GLUT外掛 #include "CMP3_MCI.h"///檔案放在week10_sound CMP3_MCI mp3;///宣告變數 CMP3_MCI shot1,shot2,shot3; static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清背景 glutSolidTeapot(0.3); glutSwapBuffers();///更新畫面 } 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("so.wav",NULL,SND_ASYNC); } void mouse(int button, int state, int x, int y) { if(state==GLUT_DOWN&&button==GLUT_LEFT_BUTTON) shot1.Play(); if(state==GLUT_DOWN&&button==GLUT_MIDDLE_BUTTON) shot2.Play(); if(state==GLUT_DOWN&&button==GLUT_RIGHT_BUTTON) shot3.Play(); } int main(int argc, char *argv[])///main()函式 { shot1.Load("1.wav"); shot2.Load("2.wav"); shot3.Load("3.wav"); mp3.Load("music.mp3");///檔案放執行目錄freeglut/bin mp3.Play();///播放 glutInit(&argc, argv);///(1)Init初始化GLUT glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///(2)Init初始化 Display 的功能 glutCreateWindow("Week10 李華燿");///(3)建立GLUT視窗 glutDisplayFunc(display);///(4)準備display()函式 glutKeyboardFunc(keyboard); glutMouseFunc(mouse); glutMainLoop();///(5)主要程式 }

執行結果













-----------------------------------------------------------------------------------------------------------------------------

第0部份

存檔

將freeglut.dll用notepad++打開

改成working_dir="."

把其他的都移到Week10_sound下

執行結果

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...