顯示具有 04163022_溫洺漢 標籤的文章。 顯示所有文章
顯示具有 04163022_溫洺漢 標籤的文章。 顯示所有文章

2017年6月30日 星期五

04163022_溫洺漢, week17

1.期末作品示範
2.背景貼圖示範
3.打光,貼圖切換
4.讀檔內插示範
5.學期總複習

必須先下載OpenCV 2.1 並安裝到桌面
還需要cv210 / cxcore210 / highgui210 這三個檔案


void display()
{   
glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
    glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glBegin(GL_POLYGON);
            glTexCoord2f(0,0); glVertex3f(-1,+1,0);///前面是貼圖座標後面是3D頂點
            glTexCoord2f(1,0); glVertex3f(+1,+1,0);
            glTexCoord2f(1,1); glVertex3f(+1,-1,0);
            glTexCoord2f(0,1); glVertex3f(-1,-1,0);
        glEnd();
    glPopMatrix();
    glFlush();
}

void myInit()
{
    quad = gluNewQuadric();
    id = myTexture("images.jpg");///id為貼圖,這樣就可以讀到貼圖的路徑

}




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;

}
 

04163022_溫洺漢, week18期末作品機器人



https://www.youtube.com/feed/my_videos

2017年6月5日 星期一

week16 溫洺漢 上課筆記

內插公式加入

Timer函式

內插公式 =A2*90000+(1-A2)*30000







存檔須加的程式碼
#include <stdio.h>
printf("%c\n", key);
    if(key=='0') now=0;///今天簡化修改
    if(key=='1') now=1;///今天簡化修改
    if(key=='2') now=2;///今天簡化修改
    if(key=='3') now=3;///今天簡化修改
    if(key=='4') now=4;///今天簡化修改
    if(key=='5') now=5;///今天簡化修改
    if(key=='s' || key=='S'){
        if(fout==NULL){///寫檔案的第3行, 如果是空的,第一次寫檔
            fout=fopen("file.txt", "w+");///寫檔案的第4行, 真的去開檔案
            printf("現在我產生一個file.txt的檔案在目錄裡面哦\n");
        }
        fprintf(fout, "%.3f %.3f %.3f %.3f %.3f\n", angle[0],angle[1],angle[2],angle[3],angle[4]);///寫檔案的第5行
        printf("現在我把一些數字印到檔案裡面%.3f %.3f %.3f %.3f %.3f\n",
               angle[0],angle[1],angle[2],angle[3],angle[4]);
    }
}

2017年5月22日 星期一

week14 溫洺漢 上課筆記

計時器: 在main()
glutDisplayFunc(display);
glutTimerFunc(0,timer,0);


void timer (int t)
{
glutTimerFunc(10,timer,++1);
angle++;
glutPostRedisplay();

改程式讓頭 身體 左右手一起旋轉


2017年5月15日 星期一

week13 溫洺漢 上課筆記

T-R-T小考練習
glPushMatrix();
glTranslatef(0.4,-1.0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.2,-0.5,0);
drawLeg();
glPopMatrix();
最後執行就能找到放在C槽裡小畫家自己所畫的作品
到Linker Settings新增3個東西 cv210 ,cxcore210 ,highgui210
到Search directories裡的Linker add c:\opencv2.1\lib
新增貝殼專案File-New-Project,
然後成是開啟後全刪,再新增新的程式碼
#include <openCV/highgui.h>
int main()
{
    IplImage * img=cvLoadImage("C:/img.png");
    cvShowImage("a",img);
    cvWaitKey(0);
}
新增完後,右鍵點選專案Build Options,然後到Search directories裡的compiler add c:\opencv2.1\include
到openCV download 2.1下載檔案,並且開啟完成設定




















設定以下東西

設定以下東西


設定以下東西

叫出一個地球出來

2017年5月8日 星期一

week12 溫洺漢 上課筆記

加入以下程式
#include <math.h>


glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60, 1, 0.001, 10000);
    glMatrixMode(GL_MODELVIEW);
到jsyeh.org/3dcg10下載data windows glut32.dll
解壓縮windows並把glut32.dll跟data的壓縮檔拉進解壓縮的windows裡面



加入以下程式碼
#include <GL/glut.h>
float eyeX=0, eyeY=0, eyeZ=1;
float centerX=0, centerY=0, centerZ=0;
float upX=0, upY=1, upZ=0;
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3d(1,0,0);
    glPushMatrix();
    gluLookAt(eyeX, eyeY, eyeZ,
              centerX, centerY, centerZ,
              upX, upY, upZ);
              glutSolidTeapot(0.3);
     glPopMatrix();
    glutSwapBuffers();
}
const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/* Program entry point */
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    ///glutReshapeFunc(resize);
    glutDisplayFunc(display);
    ///glutKeyboardFunc(key);
    //glutIdleFunc(idle);
    glClearColor(1,1,1,1);
    ///glEnable(GL_CULL_FACE);
    ///glCullFace(GL_BACK);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
    glutMainLoop();
    return EXIT_SUCCESS;
}

glPushMatrix();
glTranslatef(   );掛上去
glRotatef(   );旋轉
glTranslatef(   );定旋轉中心
///重複上面的TRT
glPopMatrix();
 
#include <GL/glut.h>
#include <math.h>
float eyeX=0, eyeY= 0, eyeZ= 2;
float centerX=0, centerY=0, centerZ=0;
float upX=0, upY=1, upZ=0;
float angle=0, dir=1;;
static void display(void)
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60, 1, 0.001, 10000);
    glMatrixMode(GL_MODELVIEW);

    angle+=dir;
    if(angle>60) dir=-dir;
    if(angle<0) dir=-dir;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3d(1,0,0);
    glPushMatrix();
        gluLookAt(eyeX, eyeY, eyeZ,
                  centerX, centerY, centerZ,
                  upX, upY, upZ);

        glPushMatrix();
            glColor3f(1,0,0);
            glutSolidTeapot(0.3);///head
            glPushMatrix();
                glTranslatef(0, -0.3, 0);
                glColor3f(1,1,1);
                glutSolidTeapot(0.3);///body
                glPushMatrix();
                    ///glTranslatef(0.6,0,0);///old rotate
                    glTranslatef(0.3,0,0);/// T
                    glRotatef(angle, 0,0,1);///R
                    glTranslatef(0.3,0,0);/// T
                    glutSolidTeapot(0.3);///right upper arm
                    glPushMatrix();
                        glTranslatef(0.3, 0,0);///T
                        glRotatef(angle, 0,0,1);///R
                        glTranslatef(0.3, 0,0);///T
                        glutSolidTeapot(0.3);///right lower arm
                    glPopMatrix();
                glPopMatrix();
                glPushMatrix();
                    ///glTranslatef(0.6,0,0);///old rotate
                    glTranslatef(-0.3,0,0);/// T
                    glRotatef(-angle, 0,0,1);///R
                    glTranslatef(-0.3,0,0);/// T
                    glutSolidTeapot(0.3);///left upper arm
                    glPushMatrix();
                        glTranslatef(-0.3, 0,0);///T
                        glRotatef(-angle, 0,0,1);///R
                        glTranslatef(-0.3, 0,0);///T
                        glutSolidTeapot(0.3);///left lower arm
                    glPopMatrix();
                glPopMatrix();
            glPopMatrix();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
}
const GLfloat light_ambient[]  = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[]  = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[]    = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[]    = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[]   = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/* Program entry point */
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,480);
    glutInitWindowPosition(10,10);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    ///glutReshapeFunc(resize);
    glutDisplayFunc(display);
    ///glutKeyboardFunc(key);
    ///glutIdleFunc(idle);
    glutIdleFunc(display);
    glClearColor(1,1,1,1);
    ///glEnable(GL_CULL_FACE);
    ///glCullFace(GL_BACK);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0, GL_AMBIENT,  light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light_diffuse);
    glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glMaterialfv(GL_FRONT, GL_AMBIENT,   mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE,   mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR,  mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
    glutMainLoop();
    return EXIT_SUCCESS;
}

2017年5月1日 星期一

week11溫洺漢上課筆記

到google 3D Exploration下載1.81版本,並到jsyeh.org/3dcg10下載data資料夾然後用3D Exploration開啟

刪除原程式並加入soccerball程式


將下面這2行註解掉(LPLOGPALETTE) lpPalette = (LPLOGPALETTE)HeapAlloc (hHeap, 0,
            sizeof (LOGPALETTE) + (nColors * sizeof (PALETTEENTRY)));
File  Save-as,選擇cpp Open GL,並勾選Export Dialog,然後選Sample APP

2017年4月24日 星期一

week10溫洺漢上課筆記

將MP3放到這裡面來
加入以下程式\#include "CMP3_MCI.h"CMP3_MCI myMP3;    myMP3.Load("C:\\Users\\user\\Desktop\\freeglut\\bin\\yukai.MP3");    myMP3.Play();
加入以下程式 glutKeyboardFunc(keyboard);來製造出鋼琴的聲音void keyboard(unsigned char key, int x, int y){    if(key=='1') PlaySound("Do.wav",NULL,SND_ASYNC);    if(key=='2') PlaySound("Re.wav",NULL,SND_ASYNC);    if(key=='3') PlaySound("Mi.wav",NULL,SND_ASYNC);    if(key=='4') PlaySound("Fa.wav",NULL,SND_ASYNC);    if(key=='5') PlaySound("So.wav",NULL,SND_ASYNC);}
加入以下程式#include <mmsystem.h>voidmouse(int button, int state, int x, int y)                                             {PlaySound("C:\\users\\user\\Desktop\\lesson32/Data/shot.wav",NULL,SND_ASYNC);}
glutMouseFunc(mouse);
遊戲執行的時候

先到nehe lesson 32下載lesson 31-35的射擊遊戲,並下載visual c++然後開啟解壓縮,然後開啟lesson 32並按否來開啟

2017年4月17日 星期一

week09溫洺漢上課筆記

將剛才的maya圖形匯入到cold blocks裡
freeglut和MyglutMsample解壓縮到桌面,然後開啟cold blocks一個專案,然後開啟MyglutMsample裡的04160011_HW1的汽車
配合maya匯出obj檔
究老師的程式介紹,叫出1個人

2017年4月10日 星期一

茶壺打光的上課筆記

嘗試以上的各種函式
加入以下程式
float angle=0;
static void display(void)
{
    angle++;
    glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
       glTranslatef(0,0.6,0);
       glutSolidTeapot(0.3);
    glPopMatrix();
    glPushMatrix();
       glRotatef(angle,0,1,0);
       glutSolidTeapot(0.3);
      glPopMatrix();
      glutSwapBuffers();
}


這行程式glutIdleFunc(display);
加到這行程式 glutDisplayFunc(display);的前面
讓一個茶壺移動一個茶壺旋轉







把茶壺叫出來,把下面的程式碼加入
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
       ///glTranslatef(x,y,z);
       ///glRotatef(angle,x,y,z);
      glutSolidTeapot(0.3);
      glPopMatrix();
      glutSwapBuffers();
    

2017年3月27日 星期一

week06溫洺漢上課筆記

程式必須由下往上看,按右鍵切換成 swap translate/rotate,讓車子能同時放大縮小,又能同時移動然後同旋轉,像車子在繞場一圈


若沒有按右鍵切換成 swap translate/rotate,車子只能往右移,然後在移到的位置原地旋轉而已

glRotatef(90.0 ,0.00 ,1.00 ,0.00); 的Y軸若為1,旋轉90度時車頭朝右
glRotatef(90.0 ,1.00 ,1.00 ,0.00); 的X軸與Y軸若為1,旋轉90度時車頭朝右下(竹籤由左下插,東西會向右下旋轉)

glRotatef(90.0 ,0.00 ,-1.00 ,0.00); 的Y軸若為-1,旋轉90度時車頭朝左

2017年3月20日 星期一

week4課堂作業 溫洺漢

將translate的地方改成scale使茶壺任意縮放
glScalef(mouseX,mouseY,0);
使用茶壺的程式,加入gltranslatef(0.5,0,0)讓茶壺能向右移動
延續上圖的程式加入float mouseX=0, mouseY=0;在第二行


在int main前加入下面這幾行然後把(x-150)/150.0;
然後y的值一樣照上面寫但前面須加負號
把motion的註解顯示出來


void motion(int x, int y)
     {
         mouseX = (x-150)/150.0;
         mouseY = -(y-150)/150.0;
         glutPostRedisplay();
     }

2017年3月13日 星期一

week03,04163022溫洺漢 上課筆記






利用滑鼠來顯示座標
利用滑鼠來點及茶壺顯示作標和顏色


使用滑鼠並且邊拖曳編變換顏色
劃出一個圓

叫出茶壺出來