week08
下載老師給的範例
到老師的網頁 https://jsyeh.org/3dcg10/ 下載 win32 和data
解壓縮win32 和 data
將data放入window
打開 Transformation.exe
v ==> vertex 頂點
vt ==> glTexCoord2f(tx, ty) 貼圖座標
vn ==> vertex normal 法向量
f ==> facet 面
開啟MAYA
匯出OBJ檔
把data中的f-16拉出來
將自己做的檔案拉進去並改名成f-16
(裡面的程式碼也要改成f-16)
week08-1
複製上禮拜的程式
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
week08-2
把source.zip裡的glm.h放在同目錄
#include <GL/glut.h>
#include "glm.h"
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
week08-3
把f-16(自己做的)拉進freeglut的bin(.mtl跟.obj)
按右鍵add file
#include <GL/glut.h>
#include "glm.h"
GLMmodel * pmodel =NULL;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(pmodel==NULL){
pmodel = glmReadOBJ("f-16.obj");
glmUnitize(pmodel);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);
///glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
glutDisplayFunc(display);
glutMainLoop();
}
顏色出來
week08-4
*把顏色套進鋼彈模型
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <GL/glut.h>
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename);
cvCvtColor(img,img, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
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;
}
#include <GL/glut.h>
#include "glm.h"
GLMmodel * pmodel =NULL;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(pmodel==NULL){
pmodel = glmReadOBJ("Gundam.obj");
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90);
}
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL | GLM_TEXTURE);
///glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
myTexture("Diffuse.jpg");
glutDisplayFunc(display);
glutMainLoop();
}
千辛萬苦終於成功
轉圈圈
week08-5
*鋼彈會旋轉
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <GL/glut.h>
int myTexture(char * filename)
{
IplImage * img = cvLoadImage(filename);
cvCvtColor(img,img, CV_BGR2RGB);
glEnable(GL_TEXTURE_2D);
GLuint id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
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;
}
#include <GL/glut.h>
#include "glm.h"
float angle=0;
GLMmodel * pmodel =NULL;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(pmodel==NULL){
pmodel = glmReadOBJ("Gundam.obj");
glmUnitize(pmodel);
glmFacetNormals(pmodel);
glmVertexNormals(pmodel, 90);
}
glPushMatrix();
glRotatef(angle, 0, 1, 0);
glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL | GLM_TEXTURE);
glPopMatrix();
///glutSolidTeapot( 0.3 );
angle++;
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week08");
myTexture("Diffuse.jpg");
glEnable(GL_DEPTH_TEST);
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
如何github
1. 開啟 Git Bash
2. cd desktop 進入桌面
git clone https://github.com/jsyeh/2021cce2 把雲端複製下來
cd 2021cce2 進入你的目錄
3. 把你的 桌面\2021cce2 裡面, 放好你本週的程式 ex. week06 裡面有今天的程式
4. 先把你放好的程式,加入 git 的帳冊
git status (看到紅紅的檔案)
git add .
git status (看到綠綠的檔案)
5. 你要 commit 它
git config --global user.email jsyeh@mail.mcu.edu.tw
git config --global user.name jsyeh
git commit -m "add week06"
6. git push 推送上雲端









沒有留言:
張貼留言