顯示具有 08160545_連展蔚 標籤的文章。 顯示所有文章
顯示具有 08160545_連展蔚 標籤的文章。 顯示所有文章

2022年5月17日 星期二

連_week13_glRectf 化矩形做 T-R-T _加入Keyboard( )函式控制關節

 glRectf  化矩形做 T-R-T 掛紅色手臂












完整程式碼

增加綠手肘












 

mouse , motion 可以改變角度

完整程式碼

加入Keyboard( )函式控制關節








keyboard()鍵盤函式  可以切換angleID,  來改變關節

完整程式碼

2022年5月10日 星期二

連_week12-T-R-T (移動 , 旋轉 , 移動)

 加入 T-R-T 六行程式碼,讓茶壺原地轉動










T-R-T 程式碼

為茶壺加入紅色手臂,並用 T-R-T 讓手臂可以在任一軸轉動









先畫出右手臂


將右手臂修改正負號, 可以繪製出左右手臂

2022年5月3日 星期二

2022年4月26日 星期二

連_week10 - 貼圖 , 旋轉 , 貼Gundam 模型

 將 week09 茶壺貼圖改成四邊形變背景圖

利用 貼圖座標 glTexCoord2f(tx,ty) 頂點座標 glVertex2f(x,y) 來設定背景圖

注意: 圖片的左上角是(0,0)









背景圖與完整程式碼

貼到一個會旋轉的圓球

step01 - 先畫出一個圓球









Q: 怎麼畫圓球 ? 

A: 圓球的貼圖座標,要用 cos(), sin()來算出來 =>  gluQuadric 繪製二次曲面

step02 - 讓球旋轉起來








(為了凸顯選轉效果,以地球圖片做範例)

重點: 

使用 glRotatef(angle,0,0,1) 做旋轉(逆時針) ,用 angle 設定旋轉角度,在 display() 最後 angle += 1 可改變角度

逆時針選轉改成平移選轉需要加上 glRotatef(90,1,0,0) 將圖形轉正,glEnable(GL_DEPTH_TEST) 加入3D深度。

貼 Gundam 模型

jsyeh.org/3dcg10 網站下載的 source.zip 解壓縮 (glm.h , glm.c) 放在新建的專案目錄中 

*** glm.c 要改附檔名為 glum.cpp

工作目錄 C:\...\freeglut\bin 裡要放 Gundam 模型









完整程式碼 :


2022年4月19日 星期二

連_week09- 貼圖

打開 Texture.exe 練習

 在 https://jsyeh.org/3dcg10/ 下載 data.zip | win32.zip 打開 Texture.exe 
















安裝 OpenCV

*不要改目錄 選第二個*



2022年4月12日 星期二

連_week08 - 讀取 .Obj 模型檔 .

讀取 .Obj 模型檔 .

https://jsyeh.org/3dcg10/ 下載 data.zip | sourse.zip 複製 lightmaterial.c 的程式碼

drawmodel() 用來畫3D模型的程式碼 

*重點*

data.zip (3D模型)解壓放在 \\freeglut\bin 

glm.hglm.c 要放在專案的資料夾 (glm.c 要改成 glm.cpp) 

glm.cpp 要讀入Code::blocks 專案中


#include glm.h 的方法

#include <GL/glut.h> //角括號,是系統的include裡 的檔案

#include "glm.h" //雙引號,同目錄裡 的檔案

(取自 : 熱血的小葉老師圖雪筆記 week08 https://2022graphicsa.blogspot.com/2022/04/week08_2)

2022年3月29日 星期二

連_week06 - 打光

 打光

. 打開 Light Material.exe
. 左邊右鍵選單 : 模型 | 右邊右鍵選單材質

 在圖片中可以看到   
. 前四行 GL_float light.... 是陣列
. glLightfv 中的 fv 是 float vector(陣列)
. glLinghtfv ( GL_LIGHT0,GL_POSITION,light_pos[ ]);
. LIGHT0=等於第幾個燈,GL_POSITION 打光的位置,light_pos [ ] 帶回前四行的陣列。

















2022年3月22日 星期二

連week05 - 用 Keyboard 函式使用鍵盤找座標

 用 Keyboard 函式使用鍵盤找座標








新學習的程式碼

void keyboard(unsigned char key , int x ,int y)
{
    printf("你按下了 %c 在 %d 座標\n",key,x,y);
}

glutKeyboardFunc(keyboard);

-----------------------------------------------------------------------------------------------------------------------------------------
完整程式碼

----------------------------------------------------------------------------------------------------------------
解決瞬間移動的錯誤














重點

glClearColor 改變背景顏色
設定 oldX=mouseX; oldY=mouseY; 去記錄滑鼠按下時的位置
-------------------------------------------------------------------------------------------------------------------
完整程式碼


-------------------------------------------------------------------------------------------------------------------
利用 glScalef() 調整茶壺大小














重點

glScalef(scale, scale, scale);///都縮放成 scale 倍
往右  -> oldX > 0,茶壺會放大 1%
往左  -> oldX < 0,茶壺會縮小 1%
-------------------------------------------------------------------------------------------------------------------
完整程式碼


2022年3月15日 星期二

連week04 - glRotatef 旋轉 , motion 滑鼠移動

 glRotatef 旋轉








*重點*

glRotatef( 角度 , x 軸 ,y 軸 ,z 軸)

。調整 x 軸 -> 前後轉動
。調整 y 軸 -> 左右轉動
。調整 z 軸 -> 水平左右旋轉

--------------------------------------------------------------------------------------------------------------------------

motion 滑鼠移動




















<mouse 是拖動位置,motion 是原地選轉>

完整程式碼

2022年3月8日 星期二

連week03 - 小畫家 , 滑鼠移動控制 與 利用滑鼠找座標


03-1 畫圖 小小兵












---------------------------------------------------------------------------------------------------------------------------
重點
#include <math.h>  // sin() ,cos()

void myCircle(float x,float y, float r)
{
    glBegin(GL_POLYGON);
    for(float a=0;a<3.1415926*2;a+=0.01){
        glVertex2f(x+r*cos(a),r*sin(a));
    } // 要畫三角函數
    glEnd();
 }

glColor3ub(255,218,102); // ( r , g , b )
      myCircle(0,0,2); // ( x軸 , y軸 , 大小 )
----------------------------------------------------------------------------------------------------------------
完整程式參考

----------------------------------------------------------------------------------------------------

滑鼠移動控制









完整程式碼



利用滑鼠找座標

----------------------------------------------------------------------------------------------------------------

重點

#include <stdio.h>  // 小黑 print 座標用

----------------------------------------------------------------------------------------------------------------








完整程式碼


2022年3月1日 星期二

連week01 - 建立 OpenGL 專案 (補寫)


*第一周還沒選到課*

一. 建立 OpenGL 專案

在 CodeBox / File / New / Project 選擇 OpenGLproject

Build & Run 可以看到彩色旋轉的三角形







二. 建立 GLUT 專案

---------------------------------------------------------------------------------------------------------------------------

 **重點**

1. moodle 下載 freeglut.zip

2. 解壓縮 把 lib 資料夾 libfreeglut.a  改成 libglut32.a

---------------------------------------------------------------------------------------------------------------------------

在 CodeBox / File / New / Project 選擇 GLUT project

設定 GLUT 目錄 freeglut 資料夾

Build & Run 可以看到旋轉的紅色立體圖形



連week02 - 打造自己的 Glut , 色彩

範例下載網址 : https://jsyeh.org/3dcg10/

下載檔案 : [data] [win32] (windows.zip 解壓縮 | 安裝 shape.exe)

------------------------------------------------------------------------------------------

1. 跑 shape.exe

    左鍵見選單 (大頂點 很多顏色) |  右鍵見選單 ( point , polygon )


------------------------------------------------------------------------------------------

2. 打造自己的 Glut

    複製 138 的程式片段





程式碼:
------------------------------------------------------------------------------------------

3. 標定色彩








程式碼 :

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...