计算机图形学课程设计

计算机图形学课程设计

《虚拟时钟》

1.实验目的

  1. 掌握基本三维建模软件 Blender的基本建模方法。
  2. 掌握虚拟现实引擎 WorldViz Vizard呈现三维场景的方法。
  3. 掌握三维模型呈现软件Assimp预览三维模型的方法。

2.实验方法

2.1建模阶段

  1. 简要描述设计三维钟表表盘、表针的主要步骤并给出截图。
    设计表盘: 首先设计外表盘。添加两个半径不同的圆柱体,使圆心重合、上表面重合,通过布尔修改器求差值操作获得外表盘,设置颜色为黑色。 再添加一个圆柱体,设置适当大小,使其正好放置在外表盘中间作为内表盘,两者几何中心重合,设置颜色为白色。 然后设计表盘刻度,其中0点,3点,6点及9点的刻度为圆柱体,其他时间刻度为长方体,调整合适大小,放置在实际钟表的相应刻度处,长方体刻度都集中指向圆心,刻度统一设置颜色为黑色。

三维时钟表盘和指针: 在这里插入图片描述

在这里插入图片描述

表盘

指针

  1. 给出钟表刻度放置位置及角度的计算公式并解释。
    以表盘中心为坐标原点,垂直向上为y轴,水平向左为x轴建立坐标系,设顺时针旋转为正,y轴正半轴偏转角度为0,一下角度都是相对于y轴正半轴的偏转角度。
    只设计能整除5的刻度,共12个,其中0点、3点、6点及9点的圆柱体刻度分别放置在表盘的上右下左四个方向上,这4个刻度中每相邻两个之间有两个长方体刻度。
    设表盘半径为r,表盘中心位于建模环境中三维坐标的中心点上,坐标为(0,0,0),0~11点刻度的偏转角度为α=i30度,相邻两个刻度之间角度差为30度。坐标为(rsin(α),0,r*cos(α)),因为表盘位于xOz平面内,所以y坐标均为0,只有x、z坐标有变化。

2.2呈现阶段

  1. 简要描述程序执行流程并给出钟表仿真的截图。
    准备阶段:import所需的各种包,包括viz、、vizact、datetime、math。
    加载资源:利用addChild()函数加载表盘、时针、分针和秒针的obj文件,并利用setPosition()函数设置每个组件的位置,使其呈现结果位于窗口内合适位置。为了使场景美观,使用addChild()函数加载天空盒文件“sky_day.osgb”。
    编写定时器回调函数:利用Python的datetime类查询系统当前时间,记录小时、分针和秒数,然后计算相应表针的旋转角度,利用setEuler()函数更新表针的角度和位置。
    设置定时器:利用vizact类中的ontimer()函数,vizact.ontimer(1,rotate),调用定时器回调函数rotate(),设置更新频率为每秒一次。

  2. 给出表针旋转角度的计算公式并解释。
    h、m、s表示当前系统的小时数、分钟数和秒钟数。
    时针: 初始位置为指向9点处。 小时数为h时偏转角h_r=(12-(h-9)%12)30,由于表盘上一小时为30度,所以要乘以30。设置欧拉角hourhand.setEuler(0,0,h_r),其中h_r为滚动角。
    分针: 初始位置为指向0点处。 分钟数为m时偏转角m_r=-m
    6,由于表盘上一小格为6度,所以要乘以6。设置欧拉角minutehand.setEuler(0,0,m_r),其中m_r为滚动角。
    秒针: 初始位置为指向1点处。 秒钟数为s时偏转角s_r=-(s-5)*6,由于表盘上一小格为6度,所以要乘以6。设置欧拉角secondhand.setEuler(0,0,s_r),其中s_r为滚动角。

  3. 给出表针相对于钟表圆心偏移的计算公式并解释。
    在Blender里进行表针建模时,已经设置好表针相对于表盘的偏移,程序里不需要计算偏移公式。表盘位于xOz平面内,设置表针有不同的y坐标,x、z坐标相同,即可实现表针相对于表盘的偏移。

3.实验心得

通过本次课程设计,初步掌握了三维应用软件的基本开发流程。熟悉了利用三维建模软件Blender进行建模的操作,学会用虚拟现实引擎(三维渲染呈现软件)WorldViz Vizard编程设置并呈现三维场景,还学会了用三维呈现软件Assimp预览三维模型。实验中的软件操作方法都是依靠网上查找教程自学,所以通过实验也很好地锻炼了自己的自学能力,学会查找、搜集有用信息,有效地转化为自己的知识。让我印象深刻的是Blender的强大建模功能,看到许多利用Blender制作的模型、人物和动画,非常逼真,感受到计算机图形学的巨大作用。本次课设的理论内容比较少,多是实践操作,而图形学最终就是要应用的。目前自己对这门学科的认识还远远不够,希望自己今后对这门学科有深入学习,不是仅仅学会使用一个工具,而要学会通过工具来实现自己的想法,创造价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值