顯示具有 40447003S_陳子維 標籤的文章。 顯示所有文章
顯示具有 40447003S_陳子維 標籤的文章。 顯示所有文章

2017年12月14日 星期四

NOTE 14

(1)期末作品Q&A
(2)Rasterization: WebGL or OpenGL

glutInitDisplayMode:
1.Bump Mapping
2.GLutDouble
3.GLUT_DEPTH

TODO:試rasteraization用processing試試
完成圖:

2017年12月7日 星期四

NOTE week13

(1)主題:VR體驗
(2)主題:期末作業點播
(3)6張圖 Texture ID
畫面等速 TIMER
KTV 特效


色彩系統        Processing

colorMode (RGB/ HSB/ YMC, 255);

stroke(X, Y, Z); 改畫筆顏色
point(X, Y);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
等色display      GLUT

void glutTimerFunc(int x, void timer, int value);
經過x秒後,執行timer。
void timer(int t)
{
    glutTimerFunc(int, void timer, int);
    無限循環↑  每次執行時就再註冊一個Timer
}


2017年11月30日 星期四

NOTE week 11

(1)主題:Scene場景
(2)Mocap,Skeleton,Model
(3)期末作品分析

TODO:
1.下載老師的myfunc檔(在上課軟體裡)
2.複製程式碼至GLUT專案
   並更改int main(int argc,char **argv)
   及新增glutInit(&argc,argv);
TODO:下載Processing ,Scene
sketch-library Load
Collada Example
View 2D 試試看各種功能
w,a,s,d鍵等





2017年11月23日 星期四

NOTE week11



播放wav音樂
#include<mmsystem.h> /// 使用Multimedia System多媒體系統
PlaySoundA("放檔名",NULL,SND_ASYNC);
 /// 檔名、在哪裡、如何播(SND_SYNC、SND_ASYNC)前者需等聲音播完才執行之後的
     程式,後者不用等

播mp3音樂
下載CMP3_MCI.h,放到專案檔
程式碼 :
#include"CMP3_MCI.h"
int main(){
    mps.Load("檔名"); /// 讀入mp3檔
    mp3.Play(); /// 播放mp3檔
}

 processing 3 播mp3音樂
下載Minim  libraries
程式碼 :
import dff.minim.*; // use ddf's minim music library
Minim minim; // int a; the whole system
AudioPlayer player; // corresponding to one mp3 file
void setup(){
     minim = new Minim(this); // constructor of Minim Object
     player = minim.loadFile("檔名"); // minim load to player
     player.play();
}

NOTE week10

1.先下載並安裝Processing,右上角選AddMode加入Android模式
安裝完後選取Android並自動安裝Android SDK
沒有Android手機可以裝虛擬機
2.小畫家
void setup()
{
  fullScreen();
}
void draw()
{
  if(mousePressed) background(255,0,0);
  else background (0,255,0);
}



3.彈力球遊戲
 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;
}

2017年11月9日 星期四

NOTEE week 09

(1)上周Texture貼圖詳解
(2)多重貼圖
(3)Bump Mapping

1.Bump Mapping凹凸貼圖體驗:
老師貼的日本人寫的網址=>點進去(A)play(B){//}Code(C)Tercel的其他範例
2.Moodle解壓執行Processing
執行日本人的程式碼(記得把random裡的變數決定好)
結果:
3.簡單的利用Proccessing寫程式載入圖片:



2017年11月2日 星期四

KK NOTE week08

1.Texture 貼圖製作
2.OPen CV的安裝,讀圖
3.open GL的貼圖設定
4.EX:轉動地球

--->先下載jsyeh.org/3dc10的三個資料
data.zip->桌面\windows\data\.sgl
windows.zip->桌面\windows\Texture.exe-------->glTexCoord2f(tx,ty)
glut32.dll->桌面\windows\glut32.dll

Moodle下載->opencv-2.1-win32-vs2008.exe安裝
BE Careful:PATH要第二個或第三個打勾
然後開啟codeblocks創project-->console project-->將老師在youtube影片下的程式碼複製到codeblocks中
但是還是無法執行!!!
--->sol:到compiler視窗中加東西-->
1.Search Directories:在compiler中加入openCV中的include資料夾

2.Search Directories:在linker中加入openCV中的lib資料夾

3.Linker Settings:加入lib資料夾中的cv210 ,cxcore210 ,highgui210
4.就可以有貼圖可以跑了
----->
如何在glutproject中,也跑OPENCV--->開啟glutproject在main 函式中的顯示視窗中加入剛剛得程式碼--->灰色的視窗
???---->解決方式:將圖檔放到freeglut中的bin中
再次執行就成功了
                                                                                                                       




2017年10月26日 星期四

筆記~~ week 07

1.作業二展示跟互評
2.主題:Mouse,Model,打光

研究打光程式碼:
 GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
這是打光的位置
寫一個motion函式可以用mouse按住改變打光位置:
void motion(int x,int y)
{
    light_position[0]=(x-150)/150.0*2;=>打光的x位置
    light_position[1]=(y-150)/150.0*2;=>打光的y位置
     glLightfv(GL_LIGHT0, GL_POSITION, light_position);
     glutPostOverlayRedisplay();
}

並在主函式寫上glutMotionFunc(motion);才能夠顯示打光效果



2017年10月19日 星期四

KK的筆記 week06

(1)複習上周進度
(2)編譯上周無法編譯的transformation程式
(3)作業2:Keyboard,Mouse,轉動,移動
(4)主軸:打光Lighting

--->zouvio填寫複習上周進度
再次將glut project所必需的要件先設置好
--->如何將上禮拜原本無法編譯的程式編譯
Ans:把codeblocks的compiler的c++11勾給拿掉就可以編譯了
開起打光Lighting
技巧:將transformation的程式碼解壓並找到source.zip,找到transformation.c範例
Search:light找到
glutCreateWindow(...)
|   glEnable(GL_DEPTH_TEST);
|   glEnable(GL_LIGHTING);
|   glEnable(GL_LIGHT0);
|   glLightfv(GL_LIGHT0,GL_POSITION,pos);
glutMainLoop();
並記得要把pos的陣列宣告在全域變數中,不然無法得知打光位置

加入Keyboard,Mouse
void keyboard(unsigned char key,int x,int y)
{
    printf("now: %c (%d %d)\n",key,x,y);
}
void mouse(int button ,int state,int x,int y)
{
    ;
}

加入rotateX,rotateY,rotateZ(旋轉值)
使用glutmotionfunction(motion);
使用mouse拖曳進行旋轉(mouse+motion大象放冰箱)
 void motion(int x,int y)
{
    rotateX+=-(x-oldX);
    rotateY+=-(y-oldY);
    oldX=x;oldY=y;
    glutPostRedisplay();
    printf("%d %d\n",x,y);
}
水平移動則垂直旋轉

垂直移動是水平旋轉



2017年10月12日 星期四

圖學note week05

1.複習上周主題
2.主題:viewing
3.範例:jsyeh.org/3dch10
4.Viewing 相關函式介紹


下載jsyeh...上所需的壓縮檔並執行上面的範例












Transformation 檔:複習上禮拜的4個函式應用
(1)glTranslatef
(2)glRotatef
(3)glScalef
--->藉由游標的移動改變數值觀察並複習

Projection檔:學習觀察3D角度--->將原始碼的檔案抓到codeblocks再執行
1.將剛剛下載的檔案解壓
2.將需要的.c檔跟.h檔放入專案中


2017年10月5日 星期四

week04,圖學筆記

1.主題:移動,旋轉,縮放
2.實作:Translate Rotate Scale
3.觀念:矩陣實作,push,pop
4.加入移動&旋轉

TODO:
先將每次執行glut的環境設置好~~
TODO:
開啟Glut專案,將範例專案裡的display函式裡都加上茶壺
->>>glTranslatef(x,y,z)將圖形移動到(x,y,z)座標,f代表float型態,d代表示整數型態
->>>glRotatef(角度,x,y,z)以(x,y,z)為軸進行角度旋轉
怎麼一直旋轉???
->>>旋轉延伸:glRotatef(a,0,0,1);
可是執行出來卻不是投影到眼前的旋轉???












--->>>因為投影到的面並非垂直到自己的面前
Tips:若要仔細觀察旋轉的角度,先只讓其中一個圖形進行旋轉,並進行座標軸旋轉的預知

---->>>原來各座標軸可以縮小放大!!!!
使用glscalef(1,0.5,0.5);
茶壺經由此函式變成~~

如何使用滑鼠移動圖形~~~


設全域變數dx(x變化量),dy(y變化量),dz(z變化量),oldX,oldY,oldZ
先寫mouse函式使標記如果放掉滑鼠會有所記錄oldX=x;oldY=y;oldZ=z;
在改寫原本的display函式使用今天教的gltranstlatef(dx,dy,dz);
再寫一個motion函式將紀錄量縮小150倍:dx+=(x-oldX)/150.0,yz也是
oldX=x;oldY=y;(交棒)
glutPostRedisplay();==>貼便利貼請電腦要重畫畫面





2017年9月28日 星期四

soccer3d week03

目標:將學姐的小小兵執行在自己的視窗中
1.下載學姐的cpp檔和讀檔
2.再創一個新的專案將學姐的程式碼複製進來
3.執行後發現的問題:
(1)fscanf讀檔速度過慢
(2)draw函式中的ClearColor裡沒有GL_DEPTH_BUFFER_BIT可能在其他介面執行時會無法顯示
4.為何這個小小兵在放大後不會破圖(柵狀)~~??
一個細心的函式使用glPointSize(10.0f)--->將每個點放大為原本的十倍











5.老師使用額外函式功能讓我們清楚看到小小兵慢慢浮現的過程
使用類似紅色的刷子,一個一個由左往右移動直到右下角才停止

目標:3d物體程式執行
1.使用3d explorer將自己所用的圖繪入


2.將其save file並以cpp形式寫出

3.將程式碼複製到專案中並執行

 
4.注解掉有bug的部分即可正常執行



2017年9月21日 星期四

KK筆記_Week02


先複習上周進度
1.zouvio回饋
2.截圖
3.blog Edit


(1)主題:點 線 面 色彩
(2)實作:OpenGL,GLUT,Web

程式碼:
#include <GL/glut.h>



//剪貼
void display()
{
    glClearColor(1,0,0,0);//紅色油漆(清掉顏色後)
    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);
    glutSolidTeapot(0.3);//茶壺形狀外掛
    glutSwapBuffers();//交換記憶體空間
}

int main(int argc, char *argv[])//argc代表參數個數,argv參數用陣列來存
{
    glutInit(&argc, argv);//GLUT開始功能

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);//DISPLAY模式開始

    glutCreateWindow("GLUT Shapes");//建立視窗

    glutDisplayFunc(display);//main Loop










    glutMainLoop();


}

Additional function(改變3D物體顏色)
glColor3f(1,0,1);(gl表示開啟gl,color顏色物件(此參數是紫色),3個參數,f 浮點數型態)


使用座標概念製成面
glBegin(GL_POLYGON)表明要開始製作多邊形
glVertex3f(1,1,0);製作點並給予點座標
glVertex3f(-1,1,0);
glVertex3f(0,-1,0);
輸入三點形成一面(此座標可形成三角形)


2017年9月14日 星期四

第一個OpenGL(簡陋版)

 1.安裝好codeblocks,並打開main.c
 2.按下F9執行結果

 人生第一個OpenGL專案完成
出現了~~