在三维空间的对象.docx

上传人:b****5 文档编号:5785823 上传时间:2023-01-01 格式:DOCX 页数:15 大小:2.53MB
下载 相关 举报
在三维空间的对象.docx_第1页
第1页 / 共15页
在三维空间的对象.docx_第2页
第2页 / 共15页
在三维空间的对象.docx_第3页
第3页 / 共15页
在三维空间的对象.docx_第4页
第4页 / 共15页
在三维空间的对象.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

在三维空间的对象.docx

《在三维空间的对象.docx》由会员分享,可在线阅读,更多相关《在三维空间的对象.docx(15页珍藏版)》请在冰豆网上搜索。

在三维空间的对象.docx

在三维空间的对象

3.在三维空间的对象

1)三维对象

在Alice中对象是指一个人或物,在本地库中建造的对象都是三维空间中的对象。

所谓三维空间就是由长、宽、高三个维度构成的空间,通常是用三个相互垂直方向的轴线构成的坐标系来表示一个三维空间。

初始场景就是一个三维空间,当编程时需要知道一个在三维空间的对象在运动时是朝向那个方向运动,它在场景中所在的位置,和另一对象的距离等,这些都需要用三维坐标来表示。

构造一个三维模型对象,除了外观模型外,还包括有:

是什么颜色,它包含哪些部件,它的尺寸(长、宽、高)以及其他细节。

(1)三维六个方向:

一个对象是三维的,是指这个对象有高度(height)、宽度(width)和厚度(depth),即上下、左右、前后。

另外,对象移动的方向有六个方向,即上下左右前后,其中左右方向是指对象的左右方向,这六个方向称为对象的方位(orient)

(2)对象的中心点:

在场景中的每个对象都有一个中心点(center),当对象移动时就是它的中心点的移动带动整个对象的移动,对象的旋转时就是围着它的中心点旋转。

对象的中心点是由设计人员根据需要而确定的,如人的中心点在双脚之间,飞机的中心点在飞机的内部。

知道对象中心点的位置是很重要的。

对象运动时的方向和距离都是以它的中心点为起始点开始衡量的。

又如被人拿着的对象如棒球棒,其中心点在手握住的地方,当挥动它的时,它才能绕着中心点正常转动。

如果对象还有组成部分,则组成部分的子对象也有它自己的中心点,如iceskater的leftLeg中的左下腿lowerLeg,其中心点在膝盖,对象的中心点是它的三条轴线的交点。

(3)距离与位置:

一个对象到另一个对象的距离是它们中心点之间的距离,如站地面上的人与地面距离为零。

在场景中地靣的中心点设为场景的中心,对象的位置即对象中心点的位置,在三维空间里,位置是三个坐标表示的,场景中心的坐标为(0,0,0),场景中对象鸟中心点的位置是相对场景中心的坐标(0.53,2.45,0.33),这些坐标可在对象的属性positionOfView中显示出来。

在编制程序的过程中,要编制场景中多个对象的运动,因为场景中的对象是手动方式加入的,并不知对象在场景中的位置(Position)和方位(Orientation),其中方位给出了对象远动的方向,在二维的画面上是很难判断它的方位,具体位置也不准确,而编程又需要知道每个对象在不同时间的位置和方位,以避免在运动中与另一个对象发生碰撞,有时要求一对象和另一对象都朝对方移动,由于每个对象方位不一样,而不能朝对方移动。

在对象树上当点击ground对象时,屏幕上会出现红、兰、绿三条坐标轴,其交点是ground的中心点。

若点击iceskater对象时,除出现黄色包围框外也会有三条轴线,红线指向右边,(注意是指iceskater的右边),兰线指向前方,绿线指向上方。

参照ground的坐标,加上对象本身的红、兰、绿三条轴线,就会知道iceskater的方位及其位置。

总之,在使用对象的方法时,经常会涉及对象的位置和方位,并以它为运动的参考点。

(4)四视图:

在二维画面上调整场景中对象中的位置是很难的,可以点击对象控制按钮上方的quadview按钮,即由单视图转为三视图,加上面向柤机的主窗口共有四个画面,三视图是从顶部、右边和前方三个方来看对象,同时还增加了二个按钮:

重定位及放大按钮。

例如雪地里有二个雪人,看起来象排成一行,从三视图看:

从顶部看出它们并不在一行(如果看不到可以使用放大按钮),利用白色箭头将它们调整成一排,从顶部看成一排,而从右边看会二雪人重叠。

现在进一步要求雪人面对面,只要使用第二个按钮就可使雪人转为面对面。

因此在三视图上能看清对象之间的位置关系,以便使用对象操作按钮对它们的位置进行调整。

要回到单视图时只要点击singleview,调整后的场景如下:

2).实例3:

Alicee与雏菊

(1)Alice六个方向的移动。

选择背景glass,并加入对象AliceLiddell和flower,通过copy使场景中有三朵雏菊flower、flower1、flower2,按DONE进入程序编辑界靣。

先拖入Doinorder,再依次从方法列表中拖入move命令,并分别设置up,down,left,right,forward,andbackward六个方向,移动距离均为1meter(可通过copymove来实现)。

按Play看移动效果。

(2)找对象AliceLiddell的中心。

在AliceLiddell的方法列表中拖turn至方法编辑区内,选择forward及1revolution,按Play后她会绕自已的中心转,可以发现她的中心在她的足部。

(3)四视图的使用。

点击quadview后屏幕出现四视图,如要把雏菊移到与AliceLiddell在同一线上,在四视图是能方便地操作。

当找不到某一对象时可在四视图上用Zoom来寻找。

(4)当点击对象树上某一支雏菊时,场景中那支雏菊就会出现一个黄色的线框围住它,现在要求AliceLiddell靣向花走去,并且要走到后面两支花之间,再转向面对前面。

可以使用turntoface命令并选择flower及theentireflower,然后使用moveforward向前走,再使用turntoface命令并选择camera

使用Dotogather将AliceLiddell和最后一支flower同时movebackward时,可能两者向后移动的方向稍为不同,

AliceLiddell是直接向后移,为了保证flower也是直接向后移,需要在flower的方法列表中使用orientto,并选择AliceLiddell及theentireAliceLiddell,这就保证两者向后移动的方向是一致的。

编程的结果是

按Play后的画靣是

实例4:

机器人与外星人在月球上相遇

选择space为背景,从本地库中选择SciFi\-SpiderRobotparkingMeter(蜘蛛机器人)、SciFi\Alien-OnWheels(带轮子的外星人)及SciFi\LunarLander(登月机)到场景中,并把岩石放在外星人前面以挡住它。

点击File将要继续编写的的程序命名并存于文件系统中。

在完成场景设置后,按Done回到代码编辑屏幕。

如果不为建立新的方法命名,Alice会自动地把World.myfirstmethod作为方法名。

在此方法编辑区内编写代码,因为按Play时,Alice就会运行这个编辑区内的所写的命令行(代码)。

(2)首先拖入Doinorder至编辑区,表示在它下面的命令行是顺序执行的。

点击对象树中allenOnWheels(外星人),在其方法列表中拖move命令至Doinorder之下,选择up及1meter,执行这条命令使外星能从岩石后面露出来,向上移动的距离可以调整。

下条命令是要求外星人说slithytoves?

,因此要从方法列表中拖say命令至move命令之下,在弹出的菜单中选择other并打入slithytoves?

当机器人看到外星人时,头旋转一圈。

为此点击对象树中spiderRobot(机器人)旁边的+,对象树会将spiderRobot的组成部件显示出来,点击其中的head(头部),在其方法列表中拖入turn命令,选择left并设置1revolution,表示向左旋转一圈。

最后还要求机器人将脸转向外星人,因此还需将turntoface命令拖至Doinorder的最后一行。

下面的命令行是机器人行走的动作,并要求这些动作是同时执行的。

机器人有多条腿,为简化起见,只设计左右腿(左后腿和右前腿)行走的动作。

在机器人的组成部件中,每条腿都是分段的,通过转动某一段就可让这条腿“行走”。

或者说是让腿的每段在连接处旋转。

因此要求机器人向前移动的同时,要求backLeftLegUpperJoint(左后腿上关节)和frontRightLegUpperJoint(右前腿上关节)也依顺序转动。

这样就要在Doinorder下拖入Dotogather,再在其下拖入spiderRobotmove命令,选择toward及1meter,即机器人向前移动1米。

接着点击对象树中backLeftLegBase的部件backLeftLegUpperJoint,将其方法turn拖move命令之后,并选择toward及0.1meter,经多次试验旋转0.1是才使关节弯曲到合适位置。

一条腿在向一个方向弯曲之后总是要再回到原位置,因此将这条命令copy到下面,并将toward改为backward。

显然这两条命令应顺序执行,所以在这两条命令前拖入Doinorder,这样左腿向前迈了一步。

用类似的操作步骤,加入使右腿迈步的命令。

下面的代码就是机器人向前走一步的程序。

因为机器人向前行走命令的执行时间约的1秒,就要求左右腿迈步的时间也为1秒,左右腿迈步各有向前及向后两条命令,因此向前及向后命令的执行时间各为0.5秒,点击它们命令行中的more,设duration为0.5seconds。

下面的动作要求是:

外星人向下移动,机器人把头转向相机,机器人的头变成红色,机器人说“Houston,wehaveaproblem!

”,共有四个动作。

先复制allenOnWheels的moveup的命令行,将up改为down,再把spiderRobot的turntoface方法拖入,并选择camera及theentirecamera。

要使机器人的头变成红色,需要用到用到机器人头部的颜色属性,从机器人头部的属性列表中拖color属性到turntoface命令行后面,设setcolorto为red。

最后拖入spiderRobotsay方法,并打入Houston,wehaveaproblem!

其相应的程序编码为:

至此整个程序编制完成,按Play可检验程结果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1