顯示具有 40547027S_陳泱竹 標籤的文章。 顯示所有文章
顯示具有 40547027S_陳泱竹 標籤的文章。 顯示所有文章

2018年1月13日 星期六

week 17 陳泱竹

討論專題
->共筆連結:https://hackmd.io/s/B1j4leggM

Week 16 陳泱竹

討論專題
->共筆連結:https://hackmd.io/s/B1j4leggM

week 18 陳泱竹


Week 18 40447037S王俊隆 40547027S陳泱竹 期末專題展示

一. 作品名稱:穿越蟲洞

二. Demo 影片網址: https://youtu.be/0fA0iP5g7ss

三. 介紹:
駕駛太空船穿越看不見底的超時空蟲洞,使用滑鼠左右搖擺太空船與產生蟲洞空間變化。

四. 細節:
(1) 使用 WebGL (Three.js、TweenMax)
(2) 超時空蟲洞加速效果、震動
(3) 滑鼠晃動使隧道產生空間變化
(4) 除了機體本身的晃動,蟲洞會影響機體的晃動
(5) 畫面數位雜訊效果
(6) 音效使用

五. References
(1) https://clara.io/view/814322ac-5eec-4828-8b25-a85e8c57d6fe
(2) https://youtu.be/gjc2FC3ekNo
(3) https://tympanus.net/codrops/2017/05/09/infinite-tubes-with-three-js/
(4) https://www.youtube.com/watch?v=oXa3iAj4jVI
(5) https://threejs.org/examples/#webgl_postprocessing_glitch

六、學習共筆: https://hackmd.io/s/B1j4leggM

七、注意事項:
(1) 用FireFox開啟
(2) 請注意音量大小




Week 11 陳泱竹

一、在GLUT專檔中加入音效/音樂
(1)程式碼:
專案檔打開後 加入#include<mmsystem.h>
PlaySoundA("file.wav",NULL,SND_ASYNC);
//PlaySoundA("檔名.wav",NULL,SND_ASYNC);==>SYNC不等待同步 ASYC會等音樂播完才繼續

(2)簡化:
#include <GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>

int main()
{
PlaySoundA("1.wav",NULL,SND_ASYC);
printf("*");
return 0;
}

二、在Processing 加入音效
從函式庫中尋找sound,然後選擇其中一種
載完之後可以從範例程式中學他的函式庫用法

Week 10 陳泱竹

(1)老師上課撥放了許多SIGGRAPG ASIA和圖學相關作品的影片,來幫助我們想專題題目

(2)與專題同組學長開始討論我們的專題方向及實作辦法
    學習共筆鏈結:https://hackmd.io/s/B1j4leggM

2018年1月12日 星期五

Week 9 陳泱竹

一、Bump Mapping:(利用Processing 編寫)
     (1)利用https://www.openprocessing.org/sketch/249457來獲得程式碼
     (2)在Processing貼上程式碼:

       (3)做出矩形且上色:
            size(200,200);
            fill(#832121);
            rect(50,50,100,100);
     
      (4)加入圖片:
           PImage img=loadImage("1.png");
           size(960,640);
           fill(#832121);
           image(img,0,0,960,640);
      (5)移動圖片:
           PImage img;
           void setup()
          {
                size(960,640);
                img=loadImage("1.png");
          }
          void draw()
         {
                background(255);//設定背景顏色 若沒有圖片會重疊
                image(img,mouseX,mouseY,96,64);
         }







2017年11月3日 星期五

陳泱竹 Week08

1.安裝OpenCV
2.轉動地球
由老師提供的程式碼:
#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);
    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("earth.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();
}

2017年10月26日 星期四

陳泱竹 Week07

1.打光:GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
2.用滑鼠控制光源
void motion(int x,int y)
{
    light_position[0]=(x-150)/150.0*2;
    light_position[1]=-(y-150)/150.0*2;
    glLightfv(GL_LIGHT0,GL_POSITION,light_position);
    glutPostRedisplay();
}

2017年10月19日 星期四

陳泱竹 Week06

1.開啟Lighting 打光:
從老師給的Week05範例中新增以下打光程式碼:
GLfloat pos[] = { 0.0, 0.0, -1.0, 0.0 };///

glEnable(GL_LIGHTING);///開啟打光
glEnable(GL_LIGHT0);///
glLightfv(GL_LIGHT0, GL_POSITION, pos);///
glEnable(GL_DEPTH_TEST);///



2.用滑鼠跟鍵盤控制:
void keyboard(unsigned char key,int x,int y)
{
    printf("now: %c(%d %d)\n",key,x,y);
    if(key=='1')rotateX++;
    if(key=='2')rotateY++;
    if(key=='3')rotateZ++;
    glutPostRedisplay();//立即更新畫面
}
void mouse(int button,int state ,int x, int y )
{
if(state==GLUT_DOWN)
    {
        old_X=x;
        old_Y=y;
    }
}
void motion(int x,int y)
{
    rotateY += -(x-old_X);
    rotateX += -(y-old_Y);
    old_X=x;
    old_Y=y;
    glutPostRedisplay();
}
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
配合旋轉
glRotated(rotateX,1,0,0);
glRotated(rotatey,0,1,0);
glRotated(rotatez,0,0,1);




2017年10月12日 星期四

陳泱竹 Week 05

1.複習上周進度(旋轉、縮放、移動)
從老師的網站中下載範例程式:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
從範例程式中可以清楚明白:旋轉、縮放、移動的運作

2.投影:
   gluPerspective(fovy,aspect,zNear,zFar)//視野,y/x比例

3.glOrtho(左,右,上,下,進,遠)

4.gluLookAt(eyex,eyey,eyez
                     centerx,centery,centerz
                     upx,upy,upz);



2017年10月5日 星期四

陳泱竹 WEEK4

1.開啟新GLUT 專檔
2.更改圖形圖案(轉成茶壺)
程式碼:glutSolidTeapot(1);

















3.移動程式碼:glTranslated(X,Y,Z);
   轉動程式碼:glRotated(角度,X,Y,Z);(對(X,Y,Z)軸旋轉)
                        glRotated(變數,X,Y,Z);=>一直轉
















4.縮放程式碼:glScalef(X,Y,Z):(X,Y,Z是該方向的分量)
















5.備份矩陣:  glPushMatrix();
   還原矩陣:  glPopMatrix();

6.用滑鼠控制(待補)

2017年9月28日 星期四

陳泱竹 WEEK3

模組資料:http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/
1.用3D exploration開啟足球模組

2.另存為OpenGL APP檔 
3.用codeblocks開啟新OPENGL專案 ,並將soccer.cpp程式碼取代原main.cpp 
4.執行

2017年9月21日 星期四

陳泱竹 Week2

GLUT視窗程式:

#include <GL/glut.h>
void display()
{
    glClearColor(1,0,0,0);//標示背景顏色(RGBA)
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清背景
    glColor3f(0,1,1);//設定前景顏色
    //glutSolidTeapot(0.3);//設定形狀:茶壺
    glBegin(GL_POLYGON);//開始畫(多邊形)
    glVertex3f(0,-1,0);//設定頂點:vertex
    glVertex3f(1,1,0);
    glVertex3f(-1,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();//執行迴圈

}