(2) 矩陣 投影矩陣
(3) 攝影機運鏡
(4) 會動的機器人
(5) MP3播放
-----------------------
播放MP3 最簡單 CMP3_MCI.h
#include "CMP3_MCI.h" ///1.檔案放同目錄
CMP3_MCI myMP3; ///2.宣告變數
///在main()裡
int main()
{
myMP3.Load("音樂.mp3"); ///3.Load檔案
myMP3.Play(); ///4.Play 播放
///小心要卡住
}
開啟貝殼專案
到fb社團下載CMP3檔案
拉近專案中
把MP3音樂檔拉近同個專案中
要小心mp3路徑
出現錯誤
如何解決↓
step1在專案黨名旁點右鍵 選擇Build options
step2.加入winmm
step3加即可完成
完成圖
youtube 影片挑音樂
貼網址 - 轉換MP3下載
運鏡 ex: 變型金剛導演
網址http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
data.zip -桌面\windows\data\模型
windows.zip-桌面\windows\projection.exe
glut32.dll-桌面\windows\glut32.dll
- gluLookAt(eyeX, eyeY, eyeZ, centerX, centerY, centerZ,upX, upY, upZ);
完整程式碼 :
#include <GL/glut.h>
#include <math.h>
float eyeX=0, eyeY=0, eyeZ=1; ///宣告float centerX=0, centerY=0, centerZ=0; ///宣告
float upX=0, upY=1, upZ=0; ///宣告
float angle=0; ///角度宣告
static void display(void){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();gluPerspective(60, 1, 0.001, 10000);
glMatrixMode(GL_MODELVIEW);
glColor3d(1,0,0);
angle+=0.01;
eyeX=cos(angle); eyeZ=2*sin(angle); ///呈現拉近拉遠的效果--2*sin(angle) 會以拋物線轉動
eyeX=cos(angle); eyeZ=2*sin(angle); ///呈現拉近拉遠的效果--2*sin(angle) 會以拋物線轉動
glPushMatrix();
gluLookAt(eyeX, eyeY, eyeZ,centerX, centerY, centerZ,
upX, upY, upZ);
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 };
/* Program entry point */
int main(int argc, char *argv[])
{glutInit(&argc, argv);
glutInitWindowSize(640,480);
glutInitWindowPosition(10,10);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
///glutReshapeFunc(resize);
glutDisplayFunc(display);///glutKeyboardFunc(key);
///glutIdleFunc(idle);
glClearColor(1,1,1,1);
///glEnable(GL_CULL_FACE);///glCullFace(GL_BACK);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
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);
glutMainLoop();
return EXIT_SUCCESS;
}
效果:拉近拉遠
解釋名詞
LoadIdentity : 單位矩陣
Perspective : 透視矩陣
關節結構移動
TRT(移動旋轉再移動)
沒有留言:
張貼留言