顯示具有 40247009S_林品瑞 標籤的文章。 顯示所有文章
顯示具有 40247009S_林品瑞 標籤的文章。 顯示所有文章

2018年1月17日 星期三

Week14

三角形繪圖








Week13

processing RGB測試



HSB 測試

Week12

1. 到moodle 下載myGL_Frustrum221

2. 新建Glut專案,複製myGL_Frustrum_skeleton.cpp的程式碼並全部取代

3. 新增以下程式


找不到M_PI只好自己定義(可能是版本太舊)


4. 執行結果




2018年1月16日 星期二

Week11

在GLUT專案加入音樂
程式碼如下:

#include <GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>

int main()
{
     PlaySoundA("test.wav",NULL,SND_ASYNC);
     return 0;
}

//SND_SYNC 同步播放,播完音樂函式才會return(此為預設值)
//SND_ASYNC 非同步撥放,一開始撥放就return

Week9

1 下載processing 3
2 貼上Bump maping 的程式碼產生以下結果

3 下載一張圖片拉入編譯器並用程式顯示圖片,如下圖

4 加入draw的函式使圖片跟著滑鼠移動,如下圖


5 貼上馬力歐小遊戲的程式碼,用以上方式設定馬力歐、磚塊、問號磚塊的圖片會產生簡單的馬力歐小遊戲,可以用鍵盤左右和上鍵控制馬力歐移動和跳躍

Week8

1 下載openCV2.1
2 新建貝殼專案
3 設定OpenCV相關資料路徑
A 對專案點擊右鍵
B 選擇Build options
C *search directories->compiler-> ……..\openCV2.1\include
*search directories->linker-> ……..\openCV2.1\lib
*linker setting->cv21,cxcore210,highgui210
4 下載圖片道專案目錄底下
5 輸入範例程式碼並執行可以開啟圖片
6 新建Glut專案
7 同樣方式再次設定路經
8 把圖檔放到freeglut/bin 底下


9 複製老師程式碼全部選取代貼上並執行,便可以看到自轉的地球了

Week 7 滑鼠移動光源

1




const刪去便可更改光源位置

2 motion 裡加入以下程式碼


按住滑鼠移動便可移動光源

Week 18 期末專題展示

https://www.youtube.com/watch?v=Lr87vhlUsqw&list=UUvT1juMSONiWoAMMNz6c4VA

2017年10月26日 星期四

40247009S_week6

下載week05的專案並執行,結果只有白色的輪廓需要加入光源並開啟深度,程式碼如下:

GLfloat pos[] = {0.0, 0.0, -1.0, 0.0}; // 光點位置
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week05");
    
    glEnable(GL_DEPTH_TEST);  // 開啟深度
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glLightfv(GL_LIGHT0, GL_POSITION, pos); // 打光
    
    glutDisplayFunc(display);
    glutMainLoop();
}


接下來鍵盤和滑鼠控制,程式碼如下:


void keybord(unsigned char key, int x, int y)                                           
  {                                                                                                               
      if(key == '1') rotateX++;
      if(key == '2') rotateY++;
      if(key == '3') rotateZ++; //按123分別轉動XYZ軸

      glutPostRedisplay();

  } 

  void mouse(int buttom, int state, int x, int y)
{
    if(state == GLUT_DOWN)
    {
        oldX = x; oldY = y; 按下滑鼠時記錄當下滑鼠座標
    }
}

void motion(int x, int y)
{
    rotateX += (y-oldY);
    rotateY += (x-oldX);
    oldX = x; oldY = y;   // 按下滑鼠移動時轉動XY軸

    glutPostRedisplay();
}   

double rotateX = 0, rotateY = 0, rotateZ = 0; //全域變數

void display()  
{                      
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  
                               
    glPushMatrix();  
        glRotatef(rotateX, 1, 0, 0);  //X軸旋轉rotateX度
        glRotatef(rotateY, 0, 1, 0);  //Y軸旋轉rotateY度  
        glRotatef(rotateZ, 0, 0, 1);  //Z軸旋轉rotateZ度
        drawmodel();  
    glPopMatrix();
                              
    glutSwapBuffers();  

}

另外在main裡面需要開啟滑鼠和鍵盤的監聽,加入以下程式碼:

glutKeyboardFunc(keybord); // 鍵盤監聽
glutMouseFunc(mouse);  // 滑鼠按鍵監聽
glutMotionFunc(motion); // 滑鼠移動監聽

  

2017年10月18日 星期三

下載win32.data.glut32.dll檔案
解壓縮後放置同目錄
注意:將data.zip解壓縮後和glut32.dll一起放進windows資料夾中


執行Transformation.exe
glTranslatef() //對x,y,z位移
glRotatef(角度,x,y,z) //以x,y或z軸為軸心旋轉
glScalef() //對x軸,y軸,z軸縮放



projection :
gluPerspective(fovy, aspect, zNear, zFar)
fovy - 視野
aspect -x/y比例(寬窄)
zNear - 前界線(前面的平面)
zFar - 後界線(後面的平面)

gluLookAt
eye - 照相機圍繞著人物旋轉
center - 照相機固定位置,以中心做旋轉
up -以某一個軸為上





2017年9月28日 星期四

40247009s-CG-Week_3








40247009S-CG-Week_2

1.如何變出一把茶壺
STEP 1:開啟GLUT專案
 STEP 2:複製部分程式碼
#include <GL/glut.h>
void display()
{
    glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1,1,1); //物件顏色(R,G,B)
    glutSolidTeapot(0.3); //製作茶壺
    glutSwapBuffers(); //交換繪圖Buffers
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes"); //設定視窗名
    glutDisplayFunc(display);//執行display函式
    glutMainLoop();//執行迴圈
}
1.檢附程式碼的部分
                                                                  2.按下執行
                                                                     就會變出一把茶壺
                                                                  3.還可以變換顏色喔
 -------------------------------------------------------------------------------------------------------------------------
二、手動描點的三角形
#include <GL/glut.h>

void display()
{
    glClearColor(1,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1,1,0); //物件色彩
    glBegin(GL_POLYGON); //開始畫
    glVertex3f(1,1,0); //三個頂點 //3是x,y,z 3個參數
    glVertex3f(-1,1,0);
    glVertex3f(0,-1,0);
    glEnd(); //結束畫
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMainLoop();
}
1.複製部分的程式碼
                                                                    2.按下執行
                                                                    3.三角形也可以變換顏色喔
     -------------------------------------------------------------------------------------------------------------
                                                        我的作業就是用三角形做延伸的