顯示具有 03392411_鐘程 標籤的文章。 顯示所有文章
顯示具有 03392411_鐘程 標籤的文章。 顯示所有文章

2017年5月15日 星期一

Labulaka Week13

1. TRT观念:

glPushMatrix();

    glTranslatef(xyz);
    glRotatef(angle,xyz);
    glTranslatef(xyz);
    drawArm();

glPopMatrix();

从下往上

2.use opencv 读图档

装opencv2.1













新增贝壳专案




配置opencv文件路径

读入图档



3.转动的地球

打开my Earth
运行


image.jpg 图
freeglut.dll
要状好opencv2.1
专案cbp
程式cpp






2017年5月8日 星期一

Labulaka Week12

1、check micheal bay's  spinning shot













glut上面的运镜:
gluLookAt(eyeX,eyeY,eyeZ,centerX,centerY,centerZ,upXYZ)

eye为摄影机



 范例专案:茶壶



gluperspective(fov ,1 ,near ,fav);










pushTRTpop:



2017年5月1日 星期一

Labulaka Week11

1、3d exploration 下载旧版本并且安装





打开:



下载data.zip后在3d exploration 中打开




存档:





要用OPEN GL













用sample app




模型变成了程式码:














codeblocks里面opengl打开:



效果如图 在动:













2、拆解并汇入模型

下图为范例档



hehe 画出来了







2017年4月24日 星期一

Labulaka Week10

1、声音

玩游戏:

(打**)


在codeblocks里面加程式码:





在图形演示中点击鼠标就可以有打**的声音:





2、加入小钢琴

下载钢琴音律的文件


放入指定文件夹:freeglut/bin

加入到程式码中



按键12345即可弹奏

3、放MP3的文件







2017年4月17日 星期一

Labulaka Week09

1、T-R-T 观念、测验

切换模型
jsyeh.org/3dcg10下载

source.zip
windows.zip
data.zip
glut32.dll

transformation.exe

右键切换模型 (soccerball,f16)



2、制作、汇出3D obj 档

GOOGLE: obj mtl youtube

打开myGLMsample.zip

用codeblocks执行:





2017年4月10日 星期一

Labulaka Week08

1、模拟期中考


glPushMatrix();
  glTranslatef(x,y,z);
  glRotatef(angle,x,y,z);
  glScalef(x,y,z);

  glBegin(GL_POLYGON);
    glColor3f(R,G,B);
    glNormal3f(nx,ny,nz);
    glTexCoord(nx,ny);
    glVertex3f(x,y,z);
  glEnd();
      
glPopMatrix();

要加注解!


2、打光!


修改一下原始程式码:















效果如图:


修改打光的方向

关键程式码如下:(position)




若从下往上打光:


效果如图:





3、使用旋转

加入一行程式码: glutIdleFunc(display);

并设定float angle=0; angle++;





再画一个空心球:glutWireSphere(0.4,15,5);








2017年3月27日 星期一

Labulaka Week06

1、练习10题:




glPushMatrix();
  glTranslatef(x,y,z);
  glRotatef(angle,x,y,z);
  glScalef(x,y,z);
  
  glBegin(GL_POLYGON);
    glNormal3f(nx,ny,nz);
    glTexCoord2f(tx,ty);
    glColor3f(R,G,B);
    glVertex3f(x,y,z);
  glEnd();
  
glPopMatrix();

期中考考题!


2、jsyeh.org/3dcg10


使用不同轴旋转角度:用右手法则判断旋转方向

(想像成竹签从坐标上插入,然后旋转摄像机




(此图为y轴正方向)

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

关键点: 

 glTranslatef(x,y,z);

 glRotatef(angle,x,y,z);

 glScalef(x,y,z);

三行程式码从下往上读:也就是说现在是先做旋转再做移动,旋转的效果会是小车本身。

若:

 glRotatef(angle,x,y,z);

 glTranslatef(x,y,z);

 glScalef(x,y,z);


则是先移动再旋转,则旋转的中心是小车移动前的中心而不是移动后,因此效果将是整个画面的旋转(漂移的效果)。


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


3、




2017年3月20日 星期一

Labulaka Week05

1、到 jsyeh.org/3dcg10 下载 data,window,glut32.dll 然后run



三个参数:translate :移动 、 rotate: 旋转 、 scale : 缩放


2、比上周多一行程式码


写入程式:

#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(0.5,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YOUNG SWAGGGY");

    glutDisplayFunc(display);
    glutMainLoop();
}

效果如图:





3、使用滑鼠控制茶壶移动

加入几行程式,以下为完整:

#include <GL/glut.h>
float mouseX=0, mouseY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void motion(int x,int y)
{
    mouseX = (x-150)/150.0;
    mouseY = -(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc, char **argv)
{               
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YOUNG SWAGGGY");

    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

效果如图:



4、使用滑鼠控制茶壶大小

 glTranslatef(mouseX,mouseY,0);
此行换成:
glScalef(mouseX,mouseY,0);

效果如图,可以拖弋滑鼠来改变大小




2017年3月13日 星期一

Labulaka Week04

HW04


1.打开GLUT专案  写入程式


#include <GL/glut.h>

void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    ///glutMouseFunc(mouse);
    ///glutMotionFunc(motion);
    glutMainLoop();
}
-------------------------------
效果如图:



接下来加入新程式码:glutMouseFunc() , glutMotionFunc()



2.使用鼠标点击显示坐标

程式码如下:

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y )
{
    printf("%d %d %d %d\n", button, state, x, y);
}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    ///glutMotionFunc(motion);
    glutMainLoop();
}
--------------------------------------
效果如图:

每点击图上部位会现实其坐标




3.使用鼠标点击改变颜色

程式码如下:
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y )
{
    printf("%d %d %d %d\n", button, state, x, y);
    glColor3f(1, x/300.0, y/300.0);
    glutPostRedisplay();
}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    ///glutMotionFunc(motion);
    glutMainLoop();
}

效果如图:

每点击图片会改变茶壶颜色




3.鼠标拖动时会改变颜色(a.中间不会变b.中间会变)


程式码如下:

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y )
{
    printf("%d %d %d %d\n", button, state, x, y);
    glColor3f(1, x/300.0, y/300.0);
    glutPostRedisplay();
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}


效果如图:


如何在拖动过程中变颜色?

将程式码搬家:
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y )
{
    printf("%d %d %d %d\n", button, state, x, y);
}
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(1, x/300.0, y/300.0);
    glutPostRedisplay();
}
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();

}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    glutMainLoop();
}

效果如图:




OK :)



4.用三角函数作个椭圆


程式码如下:

#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        for(float angle=0; angle<3.14159*2; angle+=0.001)
        {
            glVertex2f(cos(angle),sin(angle));
        }
    glEnd();
    glutSwapBuffers();
}
int main(int argc, char*argv[])
{
    glutInit( &argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YONG SWAG");

    glutDisplayFunc(display);
    glutMainLoop();
}

效果如图:


















2017年3月6日 星期一

Labulaka Week02

Review1&2:


1、openGL project


File--->New---->Project---->OpenGL project



2、GLUT project


File--->New---->Project---->GLUT project


This week content

3、写自己的程式!


在cbb中写入程式码:

#include <GL/glut.h>

static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("NICK YOUNG CONFUSED");

    glutDisplayFunc(display);
    glutMainLoop();
}
-------------------------------------------分割线-------------------------------------------------
build&run




*调整颜色;

在画图前先编辑色彩

加入程式码:glColor3d(1,0,0);




TIPS: RGB的细节

小画家提取的颜色为RGB 

THEN /255.0


4、下载压缩档跑程式

进入网站

下载文件

编辑文件

打开shapes

随便玩

5、自己制作渐层三角形