2018年1月13日 星期六
2017年12月28日 星期四
俊凱的week14筆記
1.畫三角形
邊線上色
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
stroke(255,0,0);vertex(300,100);//邊線上色
stroke(255,255,0);vertex(500,500);//邊線上色
stroke(0,0,255);vertex(100,500);//邊線上色
endShape();
圖案填滿
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
fill(255,0,0);vertex(300,100);//顏色填滿
fill(255,255,0);vertex(500,500);//顏色填滿
fill(0,0,255);vertex(100,500);//顏色填滿
endShape();
重疊三角形
void setup()
{size(600,600,P3D);
}
void draw()
{
background(255);
beginShape(TRIANGLE);
beginShape(TRIANGLE);
fill(255,0,0);vertex(100,100,0);
fill(255,0,255);vertex(100,500,100);
fill(255,255,0);vertex(500,500,0);
endShape();
beginShape(TRIANGLE);
fill(0,255,0);vertex(500,100,0);
fill(0,255,255);vertex(500,500,100);
fill(255,255,0);vertex(100,500,0);
endShape();
}
邊線上色
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
stroke(255,0,0);vertex(300,100);//邊線上色
stroke(255,255,0);vertex(500,500);//邊線上色
stroke(0,0,255);vertex(100,500);//邊線上色
endShape();
圖案填滿
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
fill(255,0,0);vertex(300,100);//顏色填滿
fill(255,255,0);vertex(500,500);//顏色填滿
fill(0,0,255);vertex(100,500);//顏色填滿
endShape();
重疊三角形
void setup()
{size(600,600,P3D);
}
void draw()
{
background(255);
beginShape(TRIANGLE);
beginShape(TRIANGLE);
fill(255,0,0);vertex(100,100,0);
fill(255,0,255);vertex(100,500,100);
fill(255,255,0);vertex(500,500,0);
endShape();
beginShape(TRIANGLE);
fill(0,255,0);vertex(500,100,0);
fill(0,255,255);vertex(500,500,100);
fill(255,255,0);vertex(100,500,0);
endShape();
}
俊凱的week13筆記
1.AR體驗
cool
2.Processing 色彩
RGB色彩
size(255,255);
colorMode(RGB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
HSB色彩
size(255,255);
colorMode(HSB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
3.執行roach檔
多重貼圖
cool
2.Processing 色彩
RGB色彩
size(255,255);
colorMode(RGB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
HSB色彩
size(255,255);
colorMode(HSB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
3.執行roach檔
多重貼圖
2017年12月7日 星期四
俊凱的week12筆記
一.
1.下載上課檔案區 myGL_Frustrum221_MultiView_2012_1221-20171130T060949Z-001.zip檔案
2.開啟glut專案複製程式碼
3.修改程式碼如下並執行
二.
1.開啟Processing
2.下載collada,picking Library
3.執行collada example(Viewer 2D)
三.
1.執行老師程式碼
2.此程式可捕捉影片畫面動作
1.下載上課檔案區 myGL_Frustrum221_MultiView_2012_1221-20171130T060949Z-001.zip檔案
2.開啟glut專案複製程式碼
3.修改程式碼如下並執行
二.
1.開啟Processing
2.下載collada,picking Library
3.執行collada example(Viewer 2D)
三.
1.執行老師程式碼
2.此程式可捕捉影片畫面動作
2017年11月30日 星期四
俊凱的Week11筆記
1.GLUT 播放wav.檔
#include<mmsystem.h>
.....
int main(int argc, char *argv[])
{
PlaySound("Femaleha.wav",NULL,SND_ASYNC);//檔名,位置,如何播
.....
}
2.GLUT播放mp3.檔
加入CMP3_MCI.h
#include <stdio.h>
#include "CMP3_MCI.h" ///使用外掛,可在FB下載
CMP3_MCI mp3;/// int a; 宣告變數
int main(int argc, char *argv[])
{
//PlaySound("Femaleha.wav",NULL,SND_ASYNC);
mp3.Load ("KatawareDoki.mp3"); //讀入mp3檔
mp3.Play (); //播放mp3檔
printf("現在在待輸入a\n");
int a;
scanf("%d", &a);///等待輸入時,程式還沒結束
......
}
3.Processing 開啟mp3.檔
下載minim library
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
minim=new Minim(this);
player=minim.loadFile("KatawareDoki.mp3");
player.play();
}
void draw()
{
}
Ctrl+K注意是否有檔案鍵入!!!!
#include<mmsystem.h>
.....
int main(int argc, char *argv[])
{
PlaySound("Femaleha.wav",NULL,SND_ASYNC);//檔名,位置,如何播
.....
}
2.GLUT播放mp3.檔
加入CMP3_MCI.h
#include <stdio.h>
#include "CMP3_MCI.h" ///使用外掛,可在FB下載
CMP3_MCI mp3;/// int a; 宣告變數
int main(int argc, char *argv[])
{
//PlaySound("Femaleha.wav",NULL,SND_ASYNC);
mp3.Load ("KatawareDoki.mp3"); //讀入mp3檔
mp3.Play (); //播放mp3檔
printf("現在在待輸入a\n");
int a;
scanf("%d", &a);///等待輸入時,程式還沒結束
......
}
3.Processing 開啟mp3.檔
下載minim library
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
minim=new Minim(this);
player=minim.loadFile("KatawareDoki.mp3");
player.play();
}
void draw()
{
}
Ctrl+K注意是否有檔案鍵入!!!!
2017年11月22日 星期三
俊凱的Week10筆記
1.期末作品展示
2.製作Android App
(i).在Processing下載Android Mode
(ii).執行程式碼
void setup()
{
fullScreen();
}
void draw()
{
if(mousePressed)background(255,0,0);
else background(0,255,0);
}
(iii)展示
*手機內會多一個應用程式
*銀幕產生綠色
*按下銀幕產生紅色
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;
}
2.製作Android App
(i).在Processing下載Android Mode
(ii).執行程式碼
void setup()
{
fullScreen();
}
void draw()
{
if(mousePressed)background(255,0,0);
else background(0,255,0);
}
(iii)展示
*手機內會多一個應用程式
*銀幕產生綠色
*按下銀幕產生紅色
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月16日 星期四
俊凱的Week 09筆記
1.用processing展示圖片
PImage img=loadImage("dora.png"); //讀取圖片
size(600,600); //600*600的框
image(img,0,0,600,600); 從(0,0)呈現600*600的框
2.滑鼠位置顯示圖片
PImage img;
void setup(){
size(1280,900);
img=loadImage("dora.jpg");
}
void draw(){
image(img,mouseX,mouseY);
}
void setup(){
size(1280,900);
img=loadImage("dora.jpg");
}
void draw(){
image(img,mouseX,mouseY);
}
呈現疊影效果
3.製作簡易馬力歐*地圖製作
int [][]map={{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,2,2,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
PImage imgMario,imgBrick,imgBrick2;
void setup()
{
size(800,760);
imgMario=loadImage("mario.png");
imgBrick=loadImage("brick.png");
imgBrick2=loadImage("brick2.jpg");
}
*馬力歐位置
float marioX=200, marioY=100, marioVX=0, marioVY=0;
boolean marioOnFloor=false;
void draw()
{
background(255);
//for(int x=0;x<20;x++) image(imgBrick,x*50,500,50,50);
for(int x=0;x<14;x++){
for(int y=0;y<11;y++){
if(map[y][x]==1) image(imgBrick,x*50,y*50,50,50);
if(map[y][x]==2) image(imgBrick2,x*50,y*50,50,50);
}
}
image(imgMario,marioX,marioY,100,100);
marioY += marioVY;
marioX += marioVX;
marioVY += 0.98;
if(marioY>=500-95)
{
marioY=500-95;
marioVY=0;
marioOnFloor=true;
}
}
*鍵盤控制
void keyPressed()
{
if(keyCode==UP && marioOnFloor) { marioVY=-15; marioOnFloor=false;}
if(keyCode==RIGHT) marioVX=5;
if(keyCode==LEFT) marioVX=-5;
}
void keyReleased()
{
if(keyCode==RIGHT || keyCode==LEFT) marioVX=0;
}
2017年11月9日 星期四
俊凱的week08筆記
Topic1
1.至jsyeh.org/3dcg10下載data.zip windows.zip glut32到桌面
2.至Moodle下載 opencv2.1.0-win32-vs2008.exe
3.打開codeblocks 貝殼專案檔
4.輸入程式碼
5.此時無法執行!!
*右鍵點選左邊project,build options
*search directories->compiler->C:\openCV2.1\include
*search directories->linker->C:\openCV2.1\lib
*linker setting->cv21,cxcore210,highgui210
6.即可執行
Topic2:在glut開啟opencv圖檔
1.記號部分為新增之程式碼至glut專案檔中,並完成以上所有步驟
2.須將圖案放置freeglut的bin資料夾中
Topic3:地球轉動
1.下載老師程式碼
2017年11月2日 星期四
俊凱的Week07筆記
1.作業互評
2.Mouse-Light打光
步驟一:打開glut專案擋
步驟二:尋找main中之 glLightfv函式
步驟三:尋找相關函式的宣告變數
步驟四:將GLfloat light_position[]函式前的const去除,才可以進行修正
步驟五:新增motion函式,並在main加入glutMotionFunc(motion);函式
void motion(int x, int y)
步驟六:編譯執行,完成!!!!
2.Mouse-Light打光
步驟一:打開glut專案擋
步驟二:尋找main中之 glLightfv函式
步驟三:尋找相關函式的宣告變數
步驟四:將GLfloat light_position[]函式前的const去除,才可以進行修正
步驟五:新增motion函式,並在main加入glutMotionFunc(motion);函式
void motion(int x, int y)
{
light_position[0]=(x-150*2)/150.0*2; //變更光源座標為滑鼠座標
light_position[1]=-(y-150)/150.0*2;
glLightfv(GL_LIGHT0,GL_POSITION,light_position); //重設光源
glutPostRedisplay();
}步驟六:編譯執行,完成!!!!
2017年10月21日 星期六
俊凱的Week06筆記
1.開啟week05專案檔
2.新增打光功能
glEnable(GL_LIGHTING);//打光
glEnable(GL_DEPTH_TEST);//3D深度偵測
glEnable(GL_LIGHT0);//打光
glLightfv(GL_LIGHT0,GL_POSITION,pos);//設定打光位置
3.新增鍵盤控制,滑鼠控制,產生動畫
float rotateX=0,rotateY=0,rotateZ=0;
void keyboard(unsigned char key, int x, int y)
{
printf("now: %c ( %d %d )\n", key, x, y);
if(key=='x')rotateX++;//X軸旋轉
if(key=='y')rotateY++;//Y軸旋轉
if(key=='z')rotateZ++;//Z軸旋轉
if(key=='e')rotateX=0,rotateY=0,rotateZ=0;
glutPostRedisplay();
}
int oldX=0, oldY=0;
void mouse(int button, int state, int x, int y)
{
printf("Button: %d State: %d ( %d %d )\n", button, state, x, y);
if(state==GLUT_DOWN)//按下按鍵
{
oldX = x;
oldY = y;
}
}
void motion(int x, int y)//執行動畫
{
rotateY += -(x-oldX);//Y方向轉動
rotateX += -(y-oldY);//Y方向轉動
oldX = x;//更新座標
oldY = y;//更新座標
glutPostRedisplay();
}
2.新增打光功能
glEnable(GL_LIGHTING);//打光
glEnable(GL_DEPTH_TEST);//3D深度偵測
glEnable(GL_LIGHT0);//打光
glLightfv(GL_LIGHT0,GL_POSITION,pos);//設定打光位置
3.新增鍵盤控制,滑鼠控制,產生動畫
float rotateX=0,rotateY=0,rotateZ=0;
void keyboard(unsigned char key, int x, int y)
{
printf("now: %c ( %d %d )\n", key, x, y);
if(key=='x')rotateX++;//X軸旋轉
if(key=='y')rotateY++;//Y軸旋轉
if(key=='z')rotateZ++;//Z軸旋轉
if(key=='e')rotateX=0,rotateY=0,rotateZ=0;
glutPostRedisplay();
}
int oldX=0, oldY=0;
void mouse(int button, int state, int x, int y)
{
printf("Button: %d State: %d ( %d %d )\n", button, state, x, y);
if(state==GLUT_DOWN)//按下按鍵
{
oldX = x;
oldY = y;
}
}
void motion(int x, int y)//執行動畫
{
rotateY += -(x-oldX);//Y方向轉動
rotateX += -(y-oldY);//Y方向轉動
oldX = x;//更新座標
oldY = y;//更新座標
glutPostRedisplay();
}
2017年10月18日 星期三
KAI的Week05筆記
1.至jsyeh.org/3dcg10/下載win32.data.glut32.dll檔案
2.解壓縮檔案並注意是否在同個目錄(data資料夾需放入windows資料夾)
3.執行Transformation.exe
2.解壓縮檔案並注意是否在同個目錄(data資料夾需放入windows資料夾)
3.執行Transformation.exe
gluPerspective(fovy, aspect, zNear, zFar)
*fovy:視野大小
*aspect:x,y之比例
*zNear:切面(Light)
*zfar:fu:切面(Shadow)
glLookAt:(0.00,0.00,2.00)->eye眼睛所看過去的方向
(0.00,0.00,0.00)->center物體中心
(0.00,0.00,0.00)->物體向上之角度
5.開老師的week05懶人包
*注意:須將data資料放入freeglut/bin中
2017年10月8日 星期日
俊凱的Week04筆記
1.開啟GLUT Project
2.修改範例專案
glPushMatrix();
glTranslated(0,-1,-6);//移動位置(x,y,z)
glRotated(60,1,0,0);//旋轉(角度,x,y,z)
glRotated(a,0,0,1);//不斷旋轉(變數,x,y,z)
glScalef(1,1,1);//縮放(x,y,z)
//glutSolidCone(1,1,slices,stacks);
glColor3d(1,1,0);
glutSolidTeapot(1.5);
glColor3d(1,0,0);
glPopMatrix();
2.修改範例專案
glPushMatrix();
glTranslated(0,-1,-6);//移動位置(x,y,z)
glRotated(60,1,0,0);//旋轉(角度,x,y,z)
glRotated(a,0,0,1);//不斷旋轉(變數,x,y,z)
glScalef(1,1,1);//縮放(x,y,z)
//glutSolidCone(1,1,slices,stacks);
glColor3d(1,1,0);
glutSolidTeapot(1.5);
glColor3d(1,0,0);
glPopMatrix();
2017年10月3日 星期二
俊凱的隨堂筆記-Week03
(一)學姊優良佳作
1.開新GLUT專案並複製學姊程式碼
2.將.txt檔移至bin資料夾中,才可進行讀檔
3.成果
1.開新GLUT專案並複製學姊程式碼
2.將.txt檔移至bin資料夾中,才可進行讀檔
3.成果
*glPointSize作為防止圖形失真之函式
(二)3D Exploration
1.下載並安裝3D Exploration
2.利用老師所提供之模型
3.將.obj檔另存為.cpp檔並用sample app 模式
4.新建OpenGL專案檔
5.複製程式碼並執行//並將無法編譯之程式碼省略
6.成果
2017年9月23日 星期六
俊凱的Week02筆記
1.完成上週操作過程
2.複製部分程式碼(可用notepad++編輯)
#include <GL/glut.h>
void display()
{
glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1); //物件顏色(R,G,B)
glutSolidTeapot(0.3); //製作茶壺
glutSwapBuffers(); //交換繪圖Buffers
}
int main(int argc, char *argv[]) //主程式函式,argc參數數量,argv用陣列存參數
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //設定顯示模式
glutCreateWindow("GLUT Shapes");//產生視窗
glutDisplayFunc(display);//顯示圖像
glutMainLoop(); //主要迴圈
2.複製部分程式碼(可用notepad++編輯)
#include <GL/glut.h>
void display()
{
glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,1); //物件顏色(R,G,B)
glutSolidTeapot(0.3); //製作茶壺
glutSwapBuffers(); //交換繪圖Buffers
}
int main(int argc, char *argv[]) //主程式函式,argc參數數量,argv用陣列存參數
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //設定顯示模式
glutCreateWindow("GLUT Shapes");//產生視窗
glutDisplayFunc(display);//顯示圖像
glutMainLoop(); //主要迴圈
void display()
{
glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON); //開始畫(多邊形)
}
{
glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_POLYGON); //開始畫(多邊形)
//在頂點前用函式glColor3f(R,G,B),設定顏色
glColor3f(1,0,0); glVertex3f(1,1,0);
glColor3f(0,1,0); glVertex3f(-1,1,0);
glColor3f(0,0,1); glVertex3f(0,-1,0);
glEnd(); //結束
glutSwapBuffers(); //交換繪圖Buffers}
2017年9月14日 星期四
訂閱:
文章 (Atom)










































