顯示具有 08160581_江秉鴻 標籤的文章。 顯示所有文章
顯示具有 08160581_江秉鴻 標籤的文章。 顯示所有文章

2021年6月2日 星期三

08160581 薑餅 圖學筆記 week15

 

改專案設定working.dir改成小數點
讀取字串



茶壺程式碼

會轉的茶壺

水壺加上水壺
水壺加上水壺加上水壺



角度加上陣列變可以控制單關節轉動

2021年5月26日 星期三

08160581 薑餅 圖學筆記 week14

 

剛開始老師先複習上周內容,介紹打光程式,貼圖程式在哪.

程式碼做出圓形
加上經緯線以及timer

修改程式碼,timer裡面+timer
改變angle換角度
改wiresphere成solidcube圓形變方形

2021年5月19日 星期三

2021年5月12日 星期三

08160581 薑餅 圖學筆記 week12

 

用老師給的程式 3D exploration打開上周的鋼但
在另存新檔成openGL,CPP檔

2. CodeBlocks開OpenGL專案
2.1. main.c換 gundam_3dexp.cpp
    (放同目錄裡) 切換 Remove, Add
2.2. Build & Run, 有錯誤
    #define GL_BGR_EXT 0x80E0 
    #define GL_BGRA_EXT 0x80E1
    再註解 (//)Palette的2行
改掉他噁心的旋轉(紅色框)
換上我們的放大旋轉(黃色框)
    glScalef (3,3,3);
    glRotatef (nAngle, 0, 1, 0);
開啟 Maya, Import 模型
   選取你要的 Faces(黃框), Export Selection
   要 OBJexport 匯成 .obj .mtl檔(黃框)

5.1
用老師給的打光,陣列,茶壺程式
跑出茶壺
#include <GL/glut.h>
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot( 0.3 );
    glutSwapBuffers();
}
///下面是從 GLUT專案main.cpp剪貼來的
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 };

int main( int argc, char** argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("week12 hw4");

    glutDisplayFunc(display);

    ///下面是從 GLUT專案main.cpp剪貼來的
    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();
}

5.1. GLUT專案, 把打光弄好
5.2. 要改專案執行目錄!!!!
     再手動把 freeglut.dll 放好
5.3. 把貼圖弄好
5.4. 把 glm 弄好
5.2

下禮拜繼續做
#include <opencv/highgui.h> ///使用 OpenCV 2.1 比較簡單, 只要用 High GUI 即可
#include <opencv/cv.h>
#include <GL/glut.h>
#include "glm.h"
GLMmodel * pmodel=NULL;

GLuint id1, id2; ///TODO:增加2個 貼圖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;
}
void
drawmodel(void)
{
    if (!pmodel) {
pmodel = glmReadOBJ("Gundam.obj");
if (!pmodel) exit(0);
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90.0);
    }

    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
}
void display()
{
    glClearColor(1,0,0,1);
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    drawmodel();

    glutSwapBuffers();
}
///下面是從 GLUT專案main.cpp剪貼來的
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 };

int main( int argc, char** argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);
    glutCreateWindow("week12 hw4");

    glutDisplayFunc(display);

    ///下面是從 GLUT專案main.cpp剪貼來的
    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);

    myTexture("Diffuse.jpg");///如果只有1張,就不用記 id 了啦

    glutMainLoop();
}


















2021年5月5日 星期三

08160581薑餅 圖學筆記 week11

 

2. 目標: 建出自己的 Transformation.exe
2.1. File-New-Project, GLUT專案 (設好 freeglut)
2.2. source.zip 裡的檔案加進去...
     glm.h 放同目錄 (桌面的week11_model專案目錄)
     glm.c 改檔名成 glm.cpp
     transformation.c 內容放到 main.cpp
2.3. 把 glm.cpp 放入專案
     左邊Project裡, Add檔案, glm.cpp加入



設定自己的transformation專案
把transformation專案開起來
4. 親手打造 20行程式 (copy啦)
4.1. #include "glm.h" //要雙引號用同目錄的.h檔, 使用外掛
4.2. GLMmodel * pmodel; //使用指標pmodel
4.3. 畫模式, 使用 glm系列的函式
     glmReadOBJ(), glmDraw() ....
   ====以上3個copy自 transformation.c, 以下copy你的github
4.4. void display()
4.5. int main()
做出來ㄌ
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 };

    glEnable(GL_DEPTH_TEST);
    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);

加上打光程式
用老師給的檔案開剛但模型










2021年4月28日 星期三

08160581薑餅 圖學筆記 week06

 

#include <GL/glut.h>
float angle=0; ///TODO:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清空
    glPushMatrix();
    glRotatef(angle, 0, 0, 1);
       glutSolidCube(1); ///todo:畫個方塊
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

 #include <GL/glut.h>
float angle=0; ///TODO:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(angle, 0, 0, 1);
    glScalef(0.5,0.1,0.1);
    glColor3f(0,0,1);
       glutSolidCube(1); ///todo:畫個方塊
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034!!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

#include <GL/glut.h>
float angle=0; ///TODO:
void hand(){
     glPushMatrix();
        glScalef(0.5,0.1,0.1);///細長的
        glColor3f(0,0,1);///藍色的
        glutSolidCube(1);///方塊
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清空
    glPushMatrix();
        glRotatef(angle, 0, 0, 1);///對中心轉動
        glTranslatef(0.25,0,0);///把關節移到中心
        hand();///細長藍色小手
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

#include <GL/glut.h>
float angle=0; ///TODO:
void hand(){
     glPushMatrix();
        glScalef(0.5,0.1,0.1);///細長的
        glColor3f(0,0,1);///藍色的
        glutSolidCube(1);///方塊
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清空
    glColor3f(1,1,1); glutSolidCube(1);///大身體
    glPushMatrix();
        glTranslatef(0.5,0.5,0);///(3)整個移到右上角掛著
        glRotatef(angle, 0, 0, 1);///對中心轉動
        glTranslatef(0.25,0,0);///把關節移到中心
        hand();///細長藍色小手
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


#include <GL/glut.h>
float angle=0; ///TODO:
void hand(){
     glPushMatrix();
        glScalef(0.5,0.1,0.1);///細長的
        glColor3f(0,0,1);///藍色的
        glutSolidCube(1);///方塊
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清空
    glColor3f(1,1,1); glutSolidCube(0.5);///大身體
    glPushMatrix();
        glTranslatef(0.25,0.25,0);///(3)整個移到右上角掛著
        glRotatef(angle, 0, 0, 1);///(2)對中心轉動
        glTranslatef(0.25,0,0);///(1)把關節移到中心
        hand();///細長藍色小手
        glPushMatrix();
            glTranslatef(0.25,0,0);///(3)往右上過去
            glRotatef(angle, 0,0,1);///(2)
            glTranslatef(0.25,0,0);///(1)
            hand();///下手臂/手肘
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


#include <GL/glut.h>
float angle=0; ///TODO:
void hand(){
     glPushMatrix();
        glScalef(0.5,0.1,0.1);///細長的
        glColor3f(0,0,1);///藍色的
        glutSolidCube(1);///方塊
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ///清空
    glColor3f(1,1,1); glutSolidCube(0.5);///大身體
    glPushMatrix();
        glTranslatef(0.25,0.25,0);///(3)整個移到右上角掛著
        glRotatef(angle, 0, 0, 1);///(2)對中心轉動
        glTranslatef(0.25,0,0);///(1)把關節移到中心
        hand();///細長藍色小手
        glPushMatrix();
            glTranslatef(0.25,0,0);///(3)往右上過去
            glRotatef(angle, 0,0,1);///(2)
            glTranslatef(0.25,0,0);///(1)
            hand();///下手臂/手肘
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左半邊
        glTranslatef(-0.25,0.25,0);///(3)整個移到左上角掛著
        glRotatef(-angle, 0, 0, 1);///(2)對中心轉動
        glTranslatef(-0.25,0,0);///(1)把關節移到中心
        hand();///細長藍色上手臂
        glPushMatrix();
            glTranslatef(-0.25,0,0);///(3)往左上過去
            glRotatef(-angle, 0,0,1);///(2)
            glTranslatef(-0.25,0,0);///(1)
            hand();///下手臂/手肘
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();
    angle++; ///todo:

}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08163034 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


08160581 薑餅 圖學筆記 week05

 

用老師給的程式開角度了解以下
glTranslatef(x,y,z);移動
glRotatef(angle,x,y,z);轉動
glScalef(x,y,z);縮放
車可以改成猛男喔
做出可以畫圈的程式

#include <GL/glut.h>

int N=0,vx[3000],vy[3000];

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glRotatef(angle,0,0,1);

    glBegin(GL_LINE_LOOP);

    for (int i=0;i<N;i++)

    {

        glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);

    }

    glEnd();

    glPopMatrix();

    glutSwapBuffers();

}

void keyboard(unsigned char key,int x,int y)

{

    angle++;

    display();

}

void motion(int x,int y)

{

    vx[N]=x; vy[N]=y;

    N++;

    display();

}

int main(int argc, char *argv[]){

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("08160121 good!");

    glutDisplayFunc ( display );

    glutKeyboardFunc (keyboard);

    glutMotionFunc(motion);

    glutMainLoop();






08160581 薑餅 圖學筆記 week03

 

創建Github帳號


今天最後畫ㄌ一個大圓型







距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...