2023年计算机图形学与三维建模实验报告.pdf

上传人:文*** 文档编号:93809492 上传时间:2023-07-13 格式:PDF 页数:16 大小:1.70MB
返回 下载 相关 举报
2023年计算机图形学与三维建模实验报告.pdf_第1页
第1页 / 共16页
2023年计算机图形学与三维建模实验报告.pdf_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2023年计算机图形学与三维建模实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年计算机图形学与三维建模实验报告.pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机图形学实验报告open G L的基本使用1.项目代码:/2321 3 21.c p p:定义控制台应用程序的入口点。#includ e st d a f x .h#includ e#includ e#incl u d e#incl u d e#i n clud e u s i n g na me spa ce std;/#in c lu d e v gl.h op e ngl4.3 编程宝典第 8 版库函数/#i n clud e lo a d sha d e rs.hG Lf 1 oa t x =0.0,y=0.0,z=0.0;/用于平移的变量G Lfloa t i=l.0,j=L 0

2、,k=1.0;/用于缩放的变量int d=l;用于是否判断旋转的开关G Lfloa t a ngl e =0.Of;/旋转角度的变量v oid my D ispla y (v oid)6gic 1 e a r(G L _ C O L O R _ B U F F E R _ B I T|G L_ D EPT H _ B U F F ER _BIT);/创建透视效果视图。g I Ma trix Mod e(G L_ PR O J EC T I ON);oglL o a d ld e nti t y();gluP e rspe cti v e (9 0.Of,1.0 f,1.0 f,20.0 f);

3、g I Ma t r i x Mo d e(G L_ M0D ELV I E W);s g I Loa d ld e n t i ty ();gluLookA t(0.0,0.0,10.0,0.0,0.0,0.0,0.0,1.0,0.0);glC l e a r(G L_ C OL0R _ B U F F E R _ B I T I G L_ D EPT H _ B U F FER B I T);。/定义4光源,从4个方向入射,第一个是白光,其他为红绿蓝(G L floa t s u n_ light_ p o s i ti o n =-5.Of,5.Of,0.0 f,l.Of ;G L f

4、1 o a t s u n_ l i gh t _posit i o n 1 =5.0 f,5.Of,0.Of,1.Of;G L f lo a t sun_ 1 i g h t_ positi o n2 =-5.Of,-5.0 f,0.Of,l.Of;G L floa t sun_ light_ position3 =5.0 f,5.Of,0.Of,1.0 f;G L f 1 o a t s un_ 1 i g h t _ a mb i e n t =0.Of,0.Of,0.0 f,l.Of;o G Lfloa t sun_1 i gh t _ d iffu s e =1.Of,1.Of,1.

5、0 f,1.0 f;o G Lflo a t s un_ light_ d i f f u s e 1 =1.Of,0.0 f,0.Of,l.Of;。GL f loa t sun_ ligh t _ d i f fuse 2 =0.Of,l.Of,0.Of,l.Of);G Lfloa t s u n_ 1 ight_ d iffu s e 3 =0.0 f,0.Of,1.0 f,1.0 f;o GL f loa t su n _1 i g h t_ spe cu 1 a r =1,Of,1.Of,l.Of,l.Of;8g 1 Ligh t f v(G L_ LI G H T O,G L_ PO

6、 S I T I ON,s un_ li g ht_ posit ion);。g lLightfv(G L_ LI G H T O,G L_ A MB I ENT,s un_ l i ght_ a mb i e n t);glL i gh tf v (G L_ LI G H T 0,G L_ D I F F U S E,sun_ l i g h t_d i f fuse);g 1 Lightf v (G L_ LI G H T 0,G L_ S PEC U LA R,sun_ l i ght_ spe cula r);glLight f v(G L_ LI G H T l,G L _ P 0

7、S I T I ON,s u n_ 1 ight_ pos i ti o n 1);。g 1 L i ghtfv(G L_ LI G H T l,G L_ A MB I ENT,sun_ ligh t _amb ie nt);o g 1 Light fv(G L_ LI G H T 1,G L_ D I F F U S E,sun_ light_d i ffuse l);glLi gh t f v (G L_ L I G H T 1,G L _ S P EC U LA R,sun_ 1 igh t_ s p e cu 1 a r);og I Lightfv (G L_ L I G H T 2,

8、G L_ POS I T I ON,s u n_ 1 i ght_ p osit i on2);oog 1 L i gh t fv (G L_ LI G H T 2,G L_ A MB I ENT,sun_ lig h t _ a mb ie nt);1 Ligh t f v (G L_ LI G H T 2,G L_ D I F F U S E,s un_ l i gh t _d i f f use 2);恰 1 Ligh t f v(G L_ L I G H T 2,G L_ S PEC U L A R,sun_ l i gh t_ spe cula r);glLightfv(G L_ L

9、I G H T 3,G L_ P0S I T I 0N,sun_ light_ p osi t i o n 3);o g 1 Ligh t fv(G L_ LI G H T 3,G L_ A MB I ENT,sun_ li ght_ a mb ie nt);ooglL i ght f v(G L_ L I G H T 3,G L_ D I F F U S E,sun_ li ght_ d if fuse 3);glLight f v(G L_ L I G H T 3,G L_ S PEC U LA R,t_ spe cula r);。g 1 Ena b le(G L_ L I G H T O

10、);glE n a b 1 e (G L_ L I G H T 1);G Lf loa t s p ec u l ar =1.Of,1.Of,l.Of,1.Of;/镜面反射a oG Lf 1 o a t e mi s sion =0.0 f,0.Of,0.Of,0.5 f;/发射光颜色(G Lf 1 o a t hini n e ss=5 0.Of;/反射指数 glMa te ri a I f v (G L_ F R 0N T ,G L_ A MB I ENT,a mb ie nt);ooglMa te r i a lfv(G L_ F R O NT,G L_ D I F F U S E,d

11、i f f use);glMa te ria l fv (G L_ F R 0NT,G L_ S PE C U L A R,spe cu 1a r);glM a te r i a l f v(G L_ F R ONT,G L _ E M I S S I ON,e mi ssion);g I Ma te ria l f(G L_ F R ONT,G L_ S H I N I NE S S,s hin ine s s);glT r a nsla te f(x ,y,z );glS ca le f(i,j,k);if(d =1)00 o o glR o ta t e f(a n g le,0.0 f

12、,0.Of,4.Of);。glT ra ns la t e f(2.5 f,2.5f,0.Of);6glutS ol i d S phe r e(2.0,60.0,6 0.0);a glutS w a pB uff e r s();v oid C ha ng e S iz e(G Lsiz e i W,G Lsiz e i H )/当视口改变时改变裁剪部分保证图形观测时不形变(G L f loa t a sp e ct R a tio;if(H=0)1;恰1 V ie w port(0,0,W,H);视口设立glMa t r ix Mod e(G L_ PR OJEC T I ON);/重置坐

13、标系统g I Lo a d I d e n t it y ();as p e ctR a tio=(G Lfl o a t)W/(G L f loa t)H ;if(a sp e ctR a tio if(ch=11 9)/w6。y+=0.1;o g lutPost R e d isp 1 a y();e 1 se if(ch=l 1 5)/sy -=o.1;o g lutP o stR e d ispla y ();e lse i f(c h=97)/a6x =0.1;ooog 1 u t PostR e d i s pla y ();e 1 se if(ch=10 0)/d0 x+=0.1

14、;g g lutPostR e d is p 1 a y ();06 e l s e if(c h=1 2 0)/x(叱 一=0.1;glutPost R e d i s p 1 a y ();86 e l se if(ch=122)/z6。oz+=0.1;6o glu t Po s tR e d isp 1 a y();0)e 1 se if(c h=43)/+(。i +=0.1;j+=0.1;。k+=0.1;glut P ostR e d i spla y ();)oe lse if(c h=4 5)/-6 i-=0.1;。j-=0.1;。k =0.1;j glutPost R e d i

15、spl a y();6-e l s e i f(ch=32)/空格键0(。if(d =0)g d=l;e ls e d=0;8coutd e n d 1;/按空格开关旋转v o i d Idl eFu n c ()(i f(d =1)o a n g le+=l.0 f;。if(a n g 1 e=360.Of)g a ngle=0.0 f;8co u ta n gl e e n d l;my D is p 1 a y ();当)i n t _ tma i n(in t a r gc,cha r*ar g v )(glutlnit(&a rgc,(c h a r*)a rgv);glu t I

16、nitD ispla y Mo d e(G L U T _ D E P T H|G LU T _ D OU B LEG L UT_RG B A);g lutlnitWi n d ow P o s iti o n(100,10 0);glutlnitWi n d ow S iz e (5 00,5 0 0);glutC re a te Wind ow (H e i 1 o 0 p e nG L);glutD ispla y F un c(my D ispla y);o glutR e s h a p e F unc(C ha n g e S i z e);o o g lutl d 1 e F u

17、 nc(I d le F unc);glutKe y b o a rd F unc(Proce ssKe y s);o glutR e sha p e F u n c(C h a nge S i z e);glutMa i nLoo p();r et u r n 0;)二.系统总体布局系统流程图:本系统是常规的openGL系统,初始化后先设立视角、投影、光照、材质等因素,绘制基本的图形,再通过函数判断键盘输入进行反复绘制,完毕基本的平移,缩放,旋转等操作三.系 统 设 计 思 绪在 系 统 设 计 最 初,本 来 想 直 接 使 用 默 认 视 角 后 直 接 设 立 光 照 和 平 移 旋转

18、 等 功 能,但 是 发 现 在 默 认 视 角 下 对 物 体,特 别 是 正 方 体 的 三 维 效 果无 法 很 好 地 观 测,因 此 采 用 侧 视 视 角 然 后 在 对 材 质 的 定 义 上,由于立方 体 设 立 比 较 麻 烦,最 后 决 定 画 一 个 球 体,然 后 在 平 移 旋 转 缩 放 等 功能 的 演 示 上,直 接 演 示 过 于 简 朴,就 是 一 个 函 数 的 执 行,因 此 决 定 采用 运 用 键 盘 控 制 移 动 和 缩 放 及 旋 转 的 方 式。具 体 操 作 方 法 为ws a dzx分 别 控 制 前 后 左 右 上 下,sp a ce控

19、 制 开 始/停 止 旋转四.感想和心得在本次实验中,对我来说最大的问题是对的地理解视点,投影等概念;在默认状态下视角从Z 轴正方向看向负方向,对于很多规则物体不旋转的话无法清楚地看到其三维特性,在调整视角的过程中碰到一些问题。然后在加入光照效果的过程中,本来想画多个物体,然后在给物体直接上色再运用光线追踪算法。但是代码上一直由于某些我不知道的因素无法实现。最后只能一步一步设立物体的材质效果;由于缺少经验,在材质设立上很长时间都无法设立出“看上去真实”的效果,最后参考了网上的参数设立才达成这样的效果。最后在平移和旋转及缩放的操作上,本来的思绪是运用在空间中点画线再画面最后围成一个三维图形的方法,这样在平移和旋转的过程中就是一个坐标的矩阵变换,并且还可以通过栈实现变换后还原的功能。但是在第一步点画线再画面的过程中就碰到了问题。因此放弃了这种想法,在平移和旋转的操作上只是一个函数就完毕了。这是我这次实验中最大的遗憾。以下是测试截图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁