MAYA 2015安裝pdf示意圖
https://www.dropbox.com/s/tp93pmixtjp1t3i/%E5%AE%89%E8%A3%9D%20%EF%BC%ADaya%202015%20free%203%20year%20license.pdf?dl=0
電腦圖學 2015 3/26
(1).自製3D模型
(2).利用mouse旋轉
(3).回家作業
首先 先讓我們回顧 上周 及 上上周 的 函式功能
#include <GL/glut.h>
float a=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT); ///清畫面
glRotatef(a,0,1,0); //--------------------->在y軸 做旋轉
glutWireTorus(0.3,0.7,30,30);
glFlush();
a+=0.1; //------------------>角度 每次 改 0.1度
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160270 冠羽");
glutDisplayFunc(display);
glutMainLoop();
}
緊接著 試著 改變 成 自己產生的圖形
其中
glPushMatrix();
.........程式碼
glPopMatrix(); ------------->為一個block
glBegin(GL_LINE_LOOP); ----------->一個block 可產生一個 連線
........
glEnd();
再改成 3維的 移動
三維向量(glVertex3f)-->三維向量就是指只有X軸跟Y軸跟Z軸
glVertex3f(X軸,Y軸,Z軸);
試著拉出會旋轉的長立方體
讓黑色邊線和它做疊合
做的特殊 測試
利用2D 疊圖 來做 偽3D的電圖
float a=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT); ///清畫面
glPushMatrix();
glRotatef(a,0,1,0.4);
///前面是面
glColor3f(0,1,1);///------------------------------------->青藍色三角立體柱
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
//glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
///後面是黑色邊線
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
//glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
///------------------------------------------
glRotatef(a,0,-1,0.4);
///前面是面
glColor3f(0,1,0); ///---------------------->綠色立體柱
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2, 0.2,0.8);
glVertex3f(-0.2, 0.2,-0.8);
glEnd();
///後面是黑色邊線
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
glVertex3f(-0.2, 0.2,0.8);
glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glPopMatrix();
glFlush();
a+=0.01;
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutCreateWindow("02160270 冠羽");
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}
加入 可使用滑鼠來旋轉的功能
#include <GL/glut.h>
#include <stdio.h>
float a=0 , a2 = 0;
void display()
{
glEnable(GL_DEPTH_TEST);///開啟Depth Test 深度測試 (近的會擋到遠的,遠的不會擋到近的)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///
glPushMatrix();
glRotatef(a,0,1,0);
glRotatef(a,1,0,0);
///前面是面
glColor3f(0,1,1);
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
//glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_POLYGON);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_QUAD_STRIP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
///後面是黑色邊線
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,0.8);
//glVertex3f(-0.2, 0.2,0.8);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glBegin(GL_LINES);
glVertex3f( 0.2, 0.2,0.8);
glVertex3f( 0.2, 0.2,-0.8);
glVertex3f( 0.2,-0.2,0.8);
glVertex3f( 0.2,-0.2,-0.8);
glVertex3f(-0.2,-0.2,0.8);
glVertex3f(-0.2,-0.2,-0.8);
//glVertex3f(-0.2, 0.2,0.8);
//glVertex3f(-0.2, 0.2,-0.8);
glEnd();
glPopMatrix();
glFlush();
///a+=0.01;
}
void motion(int x, int y )
{
printf("%d %d\n",x,y);
a = x ;
a2 = y ;
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH);///讓顯示的window有3D深度
glutCreateWindow("02160270 冠羽");
glutDisplayFunc(display);
glutIdleFunc(display);
glut
glutMotionFunc(motion); ///mouse 的 motion
glutMainLoop();
}
沒有留言:
張貼留言