顯示具有 Week11 標籤的文章。 顯示所有文章
顯示具有 Week11 標籤的文章。 顯示所有文章

2017年6月16日 星期五

week11_鄉下人

                                         
到3D   Exploration下載壓縮檔並解壓縮


再到老師的網站下載data的壓縮檔


將壓縮檔裡的data資料夾拉進3D   Exploration裡,並選擇一模型


接著,存檔匯出並改成open gl


開啟Codeblocks新增一Open GL專案,將檔案裡的main.c程式刪掉,並匯入所存的程式碼

ˊ

再將無法讀取的部分程式碼註解掉










2017年5月15日 星期一

week 11 楊語琛的上課筆記 レ(゚∀゚;)ヘ=З=З=З

一 小考內容示範
    
       glPushMatrix();10%
          glTranslatef(0.4 , 0.5 , 0);///20%,再把會旋轉的手腕,放在(0.4 , 0.5 , 0)
          glRotatef(30 , 0 , 0.1);///20%,對Z軸作angle旋轉角度
          glTranslatef(0.5 , 0.3 , 0);///20%,把旋轉中心點,放到畫面的中間
          drawArm();20%///畫一個手腕
        glPopMatrix();10%

      


二 OpenCV開圖
     
   1  安裝opencv-2.1.0-vs2008.exe
       確認c:\OpenCV2.1\include\opcncv\很多.h檔
                                   \lib\很多lib檔
                                   \bin\很多dll檔

    2 新增貝殼專案,File-New-Project,右上角Console App
       解壓縮myEarth.zip
       freeglut到c:\users\user\Desktop\freeglut{include、lib、bin}
       myEarth專案檔,開起來
       F9執行
      

Week11陳冠霖的上課筆記

本周課程:
TRT的應用考試
glPushMatrix();
             glTranslatef(0.4,0.5,0);~~~將東西掛上
             glRotatef(angle,0,0,1);~~~旋轉~~~小心正負號
             glTranslatef(0.5,0.3,0);~~~定住旋轉中心~~~小心反方向
             drawArm();
glPopMatrix(); 
貼圖
下載opevcv2.1,然後開始安裝,持續按下一步道了這個畫面後,選擇第三個Add OpenCV to the system PATH for current user,再持續按下一步。
完成安裝後,C槽會有三個重要的資料夾include、lib、bin。
打開Codeblock,建立新的project,選擇Console application。
建立Project。
project建立完成。
將程式碼進行修改。
程式碼如下:
#include <opencv/highgui.h>
int main()
{
    IplImage * img = cvLoadImage("C:/img.png");
    cvShowImage("a",img);
    cvWaitKey(0);
}
電腦系統找不到第一行進行設定。
選擇檔案名稱按下左鍵,選擇Bulid option。
到了這個介面後,選擇Search directories,到選下層Compiler,會跳出Add directory,在底下Directory:打上C:\opencv2.1\include,按下確定。
在下個介面,選擇Search directories,到選下層Linker,會跳出Add directory,在底下Directory:打上C:\opencv2.1\lib,按下確定。
在這個介面,選擇Linker settings,按下Add,會出現Add library,再File:上打cv210、cxcore210、highgui210,按下OK。
設定完成。
執行完成。
旋轉地球
將freeglut、myEarth解壓縮到桌面。
用Codeblock打開myEarth專案裡的myEarth.cbp。
執行完成。
修改程式碼,變成旋轉茶壺。
程式碼如下:
#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
void display()
{   glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
    glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///自動轉很帥
        glRotatef(90, 1,0,0);
        glRotatef(angle, 0,0,1);///自動轉很帥
        gluQuadricTexture(quad, 1);
        ///gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);
        glutSolidTeapot(0.3);
    glPopMatrix();///自動轉很帥
    glFlush();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///OpenCV讀圖
    cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
    glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
    GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
    glGenTextures(1, &id); /// 產生Generate 貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();
}

20170515_Week11 佳諭der課堂筆記



Week 11 課堂內容筆記摘要


作業一 - 複習並課堂小考之TRT題目觀念
1.利用老師上課複習之題目及講解觀念做詳細說明

程式碼
(從下面往上開始看~)

  glPushMatrix(); 
    glTranslatef( 0.4 , 0.5 , 0 );
    glRotatef( 30 , 0 , 0 , 1 );
    glTranslatef( 0.5 , 0.3 , 0 );
  glPopMatrix();

  *代表備份+還原矩陣
  *代表TRT(旋轉+平移)
     (括號內可任意更改數值)


<延伸觀念>
*TRT程式執行步驟:
(1) 最後的T是指座標值要利用原本的位置反向的平移到關節中心點上面。
(2) 中間的R是指關節要如何旋轉,以及關節中心點要往哪個座標軸做旋轉的動作,要注意旋轉軸有正負之分。
(3) 最上面的T是指關節中心點的位置放到模型的座標軸中。

(如下圖所示~)




















作業二 - 使用opencv+CodeBlocks匯入貼圖
1.從Google搜尋網址並下載 [opencv-2.1-vs2008.exe] 安裝檔。
















*安裝軟體時要注意各種選項~


















2.確認 C:\OpenCV2.1\include\opencv\很多.h檔
( \lib\很多lib檔 + \bin\很多dll檔)

















3.從CodeBlocks新增貝殼專案(第一行的第四個)
(File > New > Project > 最右上角ㄉConsole App)
















4.建好專案後,開啟.cpp檔並開始撰寫C++程式碼

截圖檔

















程式碼
(此為C++程式語言)

#include <opencv/highgui.h>
int main()
{
    IplImage * img = cvLoadImage("C:/img.png");
    cvShowImage("a",img);
    cvWaitKey(0);
}


5.撰寫完程式碼後,在Project專案中按右鍵選擇Build option,調整截圖中的參數按下ADD加入



















6.改完參數後按下Build執行即可顯示程式碼視窗畫面

















作業三 - 利用今日所學之技術做出一個會轉動的3D地球(myEarth.zip)
1.下載freeglut檔案並解壓縮到桌面
(C:\users\user\Desktop\freeglut > 包含include + lib + bin)
















2.將老師給予的myEarth.zip解壓縮到桌面,並利用CodeBlocks開啟myEarth專案執行
(如圖所示~顯示程式碼+視窗介面)






























*備註:
此上方執行檔必須包含以下幾個東西才能順利編譯~
(1) image圖檔 (可從Google下載)
(2) freeglut.dll
(3) OpenCV 2.1 (要安裝完成才可開啟圖檔)
(4) 專案.cbp + 程式.cbp



Week11 20170515 芷萱的課堂筆記

作業一 :
老師示範小考 T-R-T
以大衛雕像的小腿為例   程式碼如下:
  glPushMatrix();
    glTranslatef(0.4,-1.0,0);///(4)再把(3)的腿掛在(0.4,-1.0,0)
    glRotatef(angle,0,0,1);///(3)對Z軸做旋轉angle角度
    glTranslatef(0.2,-0.5,0);///(2)把旋轉中心點放在畫面中間
    drawLeg();///(1)畫一個小腿
  glPopMatrix();

作業二 :
讀圖檔,用OpenCV 2.1

1.先下載opencv-2.1.0-vs2008.exe
並安裝opencv-2.1.0-vs2008.exe

注意其中一個安裝視窗選項要改成第三個





2. 確認C:\OpenCV2.1\include\opencv\很多.h檔
               C:\OpenCV2.1\lib\很多lib檔
               C:\OpenCV2.1\bin\很多dll檔

3.開啟CodeBlocks → 新增貝殼專案 File-New-Project→Console application(要用C++)

4.在小畫家畫一張圖 存在C槽命名img.png

5.依序照下列圖片設定

程式碼:

#include <opencv/highgui.h>
int main()
{
    IplImage*img=cvLoadImage("C:/img.png");///圖檔儲存路徑
    cvShowImage("a",img);///a為視窗檔名
    cvWaitKey(0);
}


6.執行檔案 → 即可讀圖檔


作業三:
在視窗顯示會轉動的地球

1. myEarth.zip解壓縮製桌面 並將freeglut解壓縮至桌面

2.將myEarth.cbp在CodeBlocks中開啟

3.按F9執行此專案檔 → 即可看到視窗內有轉動的地球
程式碼:

4.變化版:將gluSphere(quad, 1, 30, 30); →glutSolidTeapot(0.3);
即可將圓形地球變成貼有世界地圖的茶壺