2022年5月31日 星期二

電腦圖學筆記week15

 Step01-1

  • 開CodeBlocks->建立新的Empty File week15-1_PlaySound.cpp 

#include <windows.h>

#include <stdio.h>

int main()

{

    printf("PlaySound()之前\n");

    PlaySound("badbad.wav", NULL, SND_SYNC);

    printf("PlaySound()之後\n");

}

  • 但執行不了,因為還沒有在settings->compiler加入winmm
  • 執行真的聲音,去BBC網站下載免費聲音,在把檔案解壓縮後放到跟week15-1_PlaySound.cpp 一樣位置的資料夾內,再執行即可
  • 另存新檔 week15-2_SND_SYNC_SNDASYNC.cpp
  •  SND_SYNC -> 等待同步, SND_ASYNC -> 不等待同步 (直接執行下一行)

Step02-1
  • SND_ASYNC 不等待會比較快執行到下一行,互動性會比較好

#include <windows.h>
#include <stdio.h>
int main()
{

    PlaySound("07071034.wav", NULL, SND_ASYNC);
    while(1){
        printf("請輸入數字:");
        int N;
        scanf("%d",&N);
        if(N==1) PlaySound("do.wav", NULL, SND_ASYNC);
        if(N==2) PlaySound("re.wav", NULL, SND_ASYNC);
        if(N==3) PlaySound("mi.wav", NULL, SND_ASYNC);
    }
}

只能播wav檔不能播mp3檔,因為mp3檔被壓縮過,wav檔沒被壓縮過,所以執行程式碼時,如果把壓縮過的mp3檔讓音效卡讀取時就會無法讀取,所以只能用原始大小的wav檔

Step02-2

    讓程式可以讀取mp3

  • 去moodle下載CMP3_MCI.h,並放到week15資料夾內
  • 建立新的Empty File week15-3_mp3.cpp
  • 再程式碼內新增 #include "CMP3_MCI.h"

#include <stdio.h>
#include "CMP3_MCI.h"
CMP3_MCI mp3;

int main ()
{
    mp3.Load("07071034.wav");
    mp3.Play();
    printf("輸入數字程式卡住");
    int N;
   scanf("%d",&N);
}



Step02-3
  • 建立新GLUT專案 week15-1_angles_TRT_again
  • Copy上周的程式碼並貼上
  • myWrite()會寫一行,myRead()會讀一行
  • 為了只讀取到動作完成的位置,所以要把motion()裡面的myWrite()去掉
  • 因為在motion()裡面myWrite()會將所有過程都記錄下來
  • 然後要在keyboard()裡面新增動作s,當按下s後會儲存當前手臂的位置


Step03-1
    讓機器人擺動作
  • 需要3D Model (glm.h,glm.cpp .obj....)
  • 需要切割模型分別讀入
  • 使用TRT程式轉動分割後的模型
  • keboard() 切換關節, mouse motion()用滑鼠轉動關節
  • 建立一個新GLUT專案 week15_hw_gundam_parts
  • 用Notepad++將工作目錄的路徑改成 "."
  • 將glut資料夾內的freeglut.dill檔按複製到week15_hw_gundam_parts內
  • 把glm.h跟glm.c複製到week15_hw_gundam_parts內



Week15作業: 
  • 先去網路找模型再用maya切割成各個身體部位
  • 選取要切割的部位 -> shift+右鍵 ->  multi-cut


  • 再將模型匯出到week15_hw_gundam_parts的data內


  • 程式碼環節:
  • 宣告模型空指標NULL

  • 讓每個部位的關節,透過鍵盤切換關節的轉動

  • 在void display()裡面將關節讀入


  • 調整程式碼,讓關節合起來

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...