顯示具有 40147027S_黃天裕 標籤的文章。 顯示所有文章
顯示具有 40147027S_黃天裕 標籤的文章。 顯示所有文章

2018年1月11日 星期四

40147027S-Week18


40147027S-Week04


  1. Translate(位移):glTranslated( x, y, z):朝( x, y, z)方向平移
  2. Rotate(旋轉):glRotated( degree, x, y, z):以( x, y, z)為軸轉degree角度

    PS:右手座標系統
  3. Scale(縮放):lScalef( x, y, z):x,y,z為縮放率,x, y, z座標分別縮放為原本的 x, y, z倍

40147027S-Week09

Bump Mapping

  1. https://www.openprocessing.org/sketch/249457 下載code
  2. 執行
Environment Mapping
  1. PImage img;

    void setup()
    {
       img=loadImage("banana.jpg");
       size(600,600);
    }

    void draw()
    {
    image(img,mouseX,mouseY);
    }

40147027S-Week10

以processing與手機互動

  1. 將 processing 右上角的 java改成app mode
  2. 下載 android模式
彈力球範例:

  1.  void setup() {
    size(500, 500);
    }
    float ballX=250, ballY=450, ballVX=1.3, ballVY=-10;
    float ball2X=250, ball2Y=50;
    void draw() {
    if ( dist(ballX, ballY, ball2X, ball2Y)<100 ) {
    float cx=(ballX+ball2X)/2, cy=(ballY+ball2Y)/2;
    float nx=ballX-ball2X, ny=ballY-ball2Y;
    line(ballX,ballY, ball2X,ball2Y);
    PVector N=new PVector(nx, ny);
    N.normalize();
    PVector v0=new PVector(ballVX, ballVY);
    float len= -N.dot(v0);
    v0.add(N.mult(len*2));
    line(cx,cy, cx+10*ballVX, cy+10*ballVY);
    line(cx,cy, cx+20*v0.x, cy+20*v0.y);
    ellipse(cx, cy, 10, 10);
    stroke(0);
    line(ballX, ballY, ball2X, ball2Y);
    stroke(255, 128, 0);
    line(cx, cy, cx+5*ballVX, cy+5*ballVY);
    stroke(255, 128, 0);
    line(cx, cy, cx+5*v0.x, cy+5*v0.y);
    stroke(255, 0, 0);
    line(cx, cy, cx+N.x, cy+N.y);
    //return;
    ballVX=v0.x;
    ballVY=v0.y;
    }
    background(255);
    ballX+=ballVX;
    ballY+=ballVY;
    if(ballX<50 || ballX>500-50) ballVX = -ballVX;
    if(ballY<50 || ballY>500-50) ballVY = -ballVY;
    ellipse(ballX, ballY, 100, 100);
    ellipse(ball2X, ball2Y, 100, 100);
    }
    void mouseDragged(){
    ball2X=mouseX; ball2Y=mouseY;
    }

40147027S-Week12

Processing

  1. 開啟速寫本,下載collada、picking
  2. 開啟範例程序
  3. 開啟Viewer2D,執行
  4. 將部分false改成true
OpenGL
  1. 下載myGL_Frustrum221_MultiView_2012_1221-20171130T060949Z-001.zip
  2. 加上:
    int main(int argc, char**argv)
    glutInit(&argc, argv);
  3. 執行

40147027S-Week13

AR體驗:

  1. gopro*8
  2. 環景照像機
  3. AR眼鏡
  4. 微型電腦
Processing 色彩應用

  1. RBG色彩條:
    size(255,255);
    colorMode(RGB,255);
    for(int x=0;x<255;x++)
    {
        for(int y=0;y<255;y++)
        {
          stroke(x,y,255);
          point(x,y);
        }
    }

  2. HSB色彩條:
    size(255,255);
    colorMode(HSB,255);
    for(int x=0;x<255;x++)
    {
        for(int y=0;y<255;y++)
        {
          stroke(x,y,255);
          point(x,y);
        }
    }
  3. 多重貼圖範例:下載roach.zip

40147027S-Week14

Processing 畫三角形


  1. 邊緣上色:
    size(600,600,P3D);
    background(255);
    beginShape(TRIANGLE);
      stroke(255,0,0);vertex(300,100);
      stroke(255,255,0);vertex(500,500);
      stroke(0,0,255);vertex(100,500);
    endShape();
  2. 填滿上色:
    size(600,600,P3D);
    background(255);
    beginShape(TRIANGLE);
      fill(255,0,0);vertex(300,100);//顏色填滿
      fill(255,255,0);vertex(500,500);//顏色填滿
      fill(0,0,255);vertex(100,500);//顏色填滿
    endShape();
  3. 雙三角形重疊
    void setup()
    {size(600,600,P3D);
    }
    void draw()
    {
    background(255);
    beginShape(TRIANGLE);
    beginShape(TRIANGLE);
    fill(255,0,0);vertex(100,100,0);
    fill(255,0,255);vertex(100,500,100);
    fill(255,255,0);vertex(500,500,0);
    endShape();
    beginShape(TRIANGLE);
    fill(0,255,0);vertex(500,100,0);
    fill(0,255,255);vertex(500,500,100);
    fill(255,255,0);vertex(100,500,0);
    endShape();
    }

40147027S-Week15

期末作品 分析:
  1. 背景圖著作,不能切到主件,要改變深度測試:
     glDisable(GL_DEPTH_TEST);
    之後做主件描繪時再開啟:
    glEnable(GL_DEPTH_TEST);
  2. 投籃機範例製作 (Processing)
  3. 踩地雷範例製作 (Processing)
課堂進度:

  1. Sampling Theorem:放大縮小取樣不同
  2. Antialias(反鋸齒)
  3. Dither(抖動):經過抖動處理過的影像,會更加地柔順

40147027S-Week16

期末作品 製作:

  1. selection 使用 (openGL)
  2. message box (openGL)
  3. 聲道控制 (Processing)
  4. 遊戲軌道製作 (Processing)
  5. 水波紋分享 http://madebyevan.com/webgl-water/
    PS:與我的主題操作相似

2017年11月23日 星期四

40147027S-Week11

讀wave檔:

  1. 在codeblocks 新增一個GLUT project專案
  2. 將.wave檔放入C:\Users\user\Desktop\freeglut\bin
    呼叫mmsystem.h
    並輸入以下程式碼

讀mp3檔:一般的讀音檔函式只能呼叫.wave檔

  1. 加入"CMP3_MCI.h"檔入專案
  2. 將.mp3檔放入C:\Users\user\Desktop\freeglut\bin
  3. 在檔案輸入以下程式碼:
使用Processing 程式讀音檔
  1. 將音檔拉入檔案中
  2. 在檔案輸入以下程式碼

2017年11月2日 星期四

40147027S-Week08


  1. 安裝CodeBlocks,再裝OpenCV 2.1.0,安裝OpenCV 2.1.0前先關掉CodeBlocks
  2. 開啟CodeBlocks,建立project - console application - c++
  3. 開啟https://www.youtube.com/watch?v=iu6RI4ns4n8
    複製貼上程式碼:
    #include "opencv/highgui.h" int main() { IplImage * img=cvLoadImage("a.jpg"); cvNamedWindow("hello"); cvShowImage("hello", img); cvWaitKey(0); return 0; }
  4. 下載earth map 圖片
    https://www.google.com.tw/search?q=earth+map&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjo5tfIr5_XAhXLXbwKHe3hC-gQ_AUICigB&biw=1920&bih=974#imgrc=OXFdLHR6X9lO_M:
  5. 改變設定 - project - 右鍵 - Build Options
  6. 設定 Search directories - Compiler - Add - C:\OpenCV2.1\include
  7. 設定 Search directories - Linker - Add - C:\OpenCV2.1\lib
  8. 設定 Linker settings - Add - C:\OpenCV2.1\lib\cv210.lib、cxcore210.lib、highgui210.lib

2017年10月26日 星期四

40147027S-Week07

改變光的投影:

  1. const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
    //為光源位置,去掉const,因為等下會改參數
  2. glutMotionFunc(montion);
    //增設一行motion指令
  3. void motion(int x, int y)
    //設定motion函式
    {
        light_position[0] = (x-150)/150*2;
        light_position[1] = -(y-150)/150*2;
        glLightfv(GL_LIGHT0, GL_POSITION, light_position);
        glutPostRedisplay();
    }

2017年10月19日 星期四

40147027S-Week06

加入打光:

  1. 下載檔案week05.zipfreeglut-MinGW-3.0.0-1.mp.zip (moodle)
  2. 開啟codeblocks、開啟compiler、取消勾選c++11
  3. 開啟week05檔案
  4. 加入燈光程式碼:
    glEnable(GL_DEPTH_TEST);//01 深度測試
    glEnable(GL_LIGHT0);//02 開啟某燈光
    glEnable(GL_LIGHTING);//03 開啟某燈光
    glLightfv(GL_LIGHT0, GL_POSITION, pos);//04設定燈光位置
    GLfloat pos[] = { 0.0, 0.0, -1.0, 0.0 };//05設定位置
    glDisable(GL_LIGHTING);//06 關掉燈光
加入mouse、keyboard
  1. glutMouseFunc(mouse); //開啟mouse
    glutKeyboardFunc(keyboard); //開啟keyboard

  2.     

2017年10月12日 星期四

40147027S-Week05


  1. 下載檔案 http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
    [data] [win32glut32.dll
     
  2. 解壓縮至一個資料夾
  3. 開啟:Transformation.exe,變更旋轉放大參數
  4. 開啟:Projection.exe,變更運鏡參數
    按右鍵可改變參數種類:
    fovy為視角大小0~180度

40147027S-Week03

作品分析
  1. 在forloop讀檔寫入電腦,會造成程式速度降低
    fscanf(f, "%f %f %f", &r, &g, &b);
  2. 將每一格pixel放大10倍,可避免放大時縮針,
    glPointSize(10.0f);,讀圖時會一格一格寫入
  3. 介面重新上色時,也須加入深度
    glClear(GL_COLOR_BUFFER_BIT);
    ->glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
=============================================

將3D圖檔,變成cpp檔
  1. 下載3d exploration
    http://www.freespacemods.net/e107_plugins/download/download.php?view.129
  2. 下載3D free圖檔(.obj/...)
  3. 另存新檔,選取cpp格式

2017年9月21日 星期四

40147027S-Week02

Glut_Project02

  1. 將Glut_Project01的程式碼刪減後,
    加入一行  glClearColor(1,0,0,0);,改變背景顏色
    再加入一行   glutSolidTeapot(0.3);,設定茶壺座標
  2. 按下F9/Build and run,即跳出紅色背景茶壺
  3. 加入一行 glColor3f(1,1,0);,改變茶壺顏色
  4. 如果將glClearColor(1,0,0,0);,
    移至glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);下方
    則一開始背景呈黑色,移動式窗後,會重新更新成紅色
  5. 刪除glutSolidTeapot(0.3);,改由自行畫圖形
    glBegin(GL_POLYGON);,開始畫多邊形
    glVertex3f(1,0,0);,第一個點
    glVertex3f(-1,0,0);,第二個點
    glVertex3f(-1,0,0);,第三個點
    glEnd();,結束繪畫
======================================================
超強掃讀程式:procexp

2017年9月14日 星期四

40147027S-Week01

OpenGL_Project01
  1. 開啟CodeBlocks,需下載有MinGW版本
  2. New 一個 Project,選取OpenGLproject儲存在桌面
  3. 若出現error,在Setting的Compiler的Toolchain excutables,選取Auto-detect
  4. 開啟main.c,按下F9/Build and run,即跳出彩色旋轉三角形
========================================================================
Glut_Project01
  1. 下載freeglut,解壓縮檔案到桌面
  2. 開啟CodeBlocks,New 一個 Project,選取GLUT project 儲存在桌面
  3. 選擇GLUT's location 為桌面上的freeglut
  4. 在freeglut的lib中的libfreeglut.a,複製一份,並命名為 libglut32.a
  5. 貼上GLUT位置C:\Users\user\Desktop\freeglut,按下確定
  6. 開啟main.c,按下F9/Build and run,即跳出六個旋轉圖形