# Week15
## 電腦圖學 Week15 2022-05-31
```
1. 播聲音、播MP3
2. 播放動畫、內插
3. 機器人擺動作、跳舞
1. 播聲音、播MP3
2. 播放動畫、內插
3. 機器人擺動作、跳舞
```
## Step01-1 PlaySound()解釋
```C
0.File-New-Empty File-week15_playsound.cpp
1.上週#include<mmsystem.h>
2.這週使用#include<windows.h>
3.上週playsound("檔名.wav",NULL,SND_ASYNC);//不等待,不同步
4.這週PlaySound("檔名.wav",NULL,SND_SYNC);//等待,同步
5.setting-compiler setting-linker加入winmm(可以撥聲音)
6.注意工作目錄的位置!
7.將下載下來的聲音檔放在你檔案存放的位置(記得音樂檔是wav檔)
```C
0.File-New-Empty File-week15-2_SND_SYNC_SND_ASYNC
1.PlaySound("檔名.wav",NULL,SND_SYNC);=>加上變ASYNC就會不播音樂直接結束
```
```C
#include <windows.h>
#include <stdio.h>
int main()
{///不等待會快速執行下一行,互動性佳
PlaySound("07013033.wav",NULL,SND_ASYNC);///背景會先撥放此段音樂
while(1){
printf("請輸入數字: ");///邊秀出文字
int n;
scanf("%d",&n);
if(n==1)PlaySound("do.wav",NULL,SND_ASYNC);///ASYNC不等待
if(n==2)PlaySound("re.wav",NULL,SND_ASYNC);
if(n==3)PlaySound("mi.wav",NULL,SND_ASYNC);
}
}
```
## Step02-1 MP3(小/有壓縮) vs WAV(大/原始檔)
>>PlaySound()只能撥最原始的檔案,只要一行
>>MP3比較麻煩,需要打比較多行
```
1.在Moodle下載CMP3_MCI.h
2.程式碼#include<CMP3_MCI.h>
3.宣告 CMP3_MCI mp3
4.mp3.Load("檔名.mp3");
5.mp3.play();
```
```
0.File-New-Project-GLUT專案,week15_angles_TRT_again
1.複製上週程式碼,並試跑看看能否正確執行
2.發現問題: 不像動畫,只會動一個關節,而且很慢
3.myWrite()會寫一行,myRead()會讀一行
4.不能把myWrite()放在motion()
5.把動作對應的關節全部做好再存起來成一個動作
6.擺好動作按下's'存檔
7.執行時可以存入幾個動作'r'可讀入
8.事後在工作目錄裡(C:\Users\YUXUAN\Desktop\freeglut\bin)有file.txt可以大量copy動作,重新跑完程式動作就變多了
```
```C
1.需要 3D Model (glm.h/.cpp) (.obj .mtl .jpg.....)
2.需要把模型切很多塊(因為整塊的話關節不會動)
3.TRT的程式才會轉動
4.keyboard()切換關節,mouse motion()旋轉關節
```
##慢慢做
```C
1.File-new-project,GLUT專案,week15_hw4
2.改善電腦餘毒=>開啟notepad++將工作目錄改成<Option working_dir="." />
3.將freeglut.dll複製貼上到程式所在的檔案夾
4.把glm.h glm.cpp和gundam的data目錄,全放在現在要用的檔案目錄
```
## 實作小tips
## 實作小tips
```
1.為了不要打太多行程式碼進行縮減
2.建立一個類似於檔案夾的東西
GLMmodel * myReadone(char * filename)
{
if(one==NULL)
{
one=glmReadOBJ("data/body.obj");
glmUnitize(one);
glmFacetNormals(one);
glmVertexNormals(one,90);
}
return one;
}
3.這樣每次要從裡面抓檔案時只要打一行程式碼就好
ex.if (body==NULL) body=myReadOne("data/body.obj");
glmDraw(body,GLM_TEXTURE|GLM_SMOOTH);
4.再去調整關節的TRT
```





沒有留言:
張貼留言