07第七章3DVRI场景交互功能的制作图文精.docx

上传人:b****3 文档编号:5351820 上传时间:2022-12-15 格式:DOCX 页数:27 大小:2.81MB
下载 相关 举报
07第七章3DVRI场景交互功能的制作图文精.docx_第1页
第1页 / 共27页
07第七章3DVRI场景交互功能的制作图文精.docx_第2页
第2页 / 共27页
07第七章3DVRI场景交互功能的制作图文精.docx_第3页
第3页 / 共27页
07第七章3DVRI场景交互功能的制作图文精.docx_第4页
第4页 / 共27页
07第七章3DVRI场景交互功能的制作图文精.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

07第七章3DVRI场景交互功能的制作图文精.docx

《07第七章3DVRI场景交互功能的制作图文精.docx》由会员分享,可在线阅读,更多相关《07第七章3DVRI场景交互功能的制作图文精.docx(27页珍藏版)》请在冰豆网上搜索。

07第七章3DVRI场景交互功能的制作图文精.docx

07第七章3DVRI场景交互功能的制作图文精

第七章3DVRI场景交互功能的制作

大家通过上一章的练习已经制作出了栩栩如生的场景,操作者可以在虚拟的小区中漫步,观赏到优美的周边环境。

在下面的练习中,我们可以为场景增加一些实用的交互功能,从而使用户更深切的体会到虚拟现实的最大魅力。

在下面的练习中,您可以掌握以下几种3DVRI的交互功能的制作方法:

•场景导航图的制作

•点击场景中的物体引发事件

•在漫游中控制物体动画

•弹出控制面板的制作方法

•背景音乐开关和音量控制滑条的制作

一、场景导航图的制作

场景导航图是一项很重要的功能,在3DVRI虚拟现实场景中,对场景不熟悉的漫游者可以随时调出当前场景的平面导航图,图中的红色标记就是漫游者当前所处的位置,从而引导漫游者快速到达想去的地点。

如图7.01所示。

图7.01具有导航图功能的漫游场景

在3dsmax7.0中打开光盘\Scene\第七章\Child_S_01.max,这是上一章节中已经烘培好的练习场景。

在Top视图中将地面和背景的圆环全部隐藏,然后在小区周围路沿的外围创建一个比路沿稍大些的矩形,将它的颜色调整为白色,长为18250cm,宽为27240cm。

在矩形的创建面板中打开Rendering卷展栏,将Thickness设置为30cm,勾选Renderable选项将矩形设为可渲染线条。

如图7.02所示。

图7.02在场景外围制作一个可渲染的矩形线条

按下“F9”键对TOP视图进行渲染(渲染图片的分辨率设置为640*480,将渲染出的图片保存为带有Alpha通道的DaoHang_01.TGA文件(已经渲染好的这张图片保存在光盘中的Project\SuCai目录中,在PhotoShop中打开这张渲染出的图片素材,在图片中沿最外围

的白色矩形框将图片多余部分裁切。

裁切后的图片如图7.03所示。

图7.03沿最外围的白色矩形框将图片多余部分裁切切换到这张图片的Alpha通道面板,使用魔棒工具将中间白色部分选择并且将它填充为

灰色(RGB值为160,160,160,然后反选其它部分,填充深灰色(RGB值为85,85,85。

最后按下Ctrl+A将通道全部选择,使用菜单中的编辑\描边工具将通道周围描出纯白色的宽为5个像素的边,最后将图片大小设置512*343然后保存为DaoHang_OK.tga。

如图7.04所示。

图7.04调整图片的通道

注意:

图片Alpha通道颜色的灰度值会影响将来显示在场景中的透明值,RGB值越大,图片在场景中就越接近透明,这就是大家常说的“黑透白不透”原则。

导航图的图片素材准备好后,切换回max场景或者打开光盘中第七章的Child_S_02.max文件,在TOP视图中,打开max的2.5维Vertex(顶点捕捉方式,在帮助物体创建面板中找到Point帮助物体并在白色矩形框的左下角、右下角和左上角分别放上三个Point点,将它们的大小设置为500cm以方便看的更加清楚。

如图7.05所示。

图7.05在矩形框的三个顶点放入三个帮助物体选择左下角的Point点帮助物体,在上方的工具条中的移动选择图标上点击右键,在弹出的MoveTransformType-In面板中,打开Windows记事本程序,记录下这个左下角帮助物体的XY坐标值(不要记录数值的单位如cm等。

这个数值就是白色矩形框的左下角的坐标值,在下面制作导航图时会用到这些点的坐标。

使用同样的方式将其它两个点的坐标值也记录下来并保存这个TXT文档为“场景说明.txt”文件。

最后记录的三个点的XY坐标值如

下图7.06所示。

图7.06

现在制作漫游场景的素材和数据已经准备完毕,关闭3dsmax,在硬盘新建一个文件夹,命名为Project,然后将上一章中制作好天空盒太阳光斑等特效的02_Child_Scene.IVE文件和导航图素材DaoHang_01.tga文件以及场景说明.txt文档复制到这个Project目录中。

打开NeoBook软件。

参考第四章3DVRI制作完整流程中介绍的方法,新建一个1024*768分辨率的出版物,然后画出一个充满整个画面的矩形Rectangle1,并且将它的颜色调整为RGB值均为0的纯黑色。

在上方的工具栏页面属性快捷按钮上点击,在弹出的当前页面属性面板中切换到“页面进入动作”,在其中填入以下指令:

初始化VR窗口"Rectangle1""[Return_Var]"

装入VR场景"[Pubdir]02_Child_Scene.ive""[Return_Var]"

设置当前视图为给出序号相机"0""[Return_Var]"

自由旋转相机显示VR场景"[Return_Var]"

当前场景不使用缺省的灯光照明"[Return_Var]"

在页面进入的动作中添加以上五条指令之后,将这个出版物保存在Project目录中,并且命名为Start!

.pub文件。

如图7.07所示。

图7.07页面进入时的动作指令

注意:

在以上第二条指令中,我们将装入IVE文件的绝对路径用变量[Pubdir]来代替,使用这样的相对路径后,程序运行时就会在Neobook工程文件的根目录中寻找这个IVE文件。

程序编译之后,只要我们将这个IVE文件和编译好的EXE文件放在一起,就不会出现程序编译后在别人的电脑上找不到文件的现象。

按下调试按钮测试一下程序,如果可以正常运行,就继续添加下面的功能。

打开页面属性面板,在动作指令输入框中按下插入动作按钮,查找3DVRI虚拟现实插件中的“为场景添加导航图”指令,在弹出的设置面板中填写图7.08所示的数据。

图7.08导航图设置对话框

注意:

我们在max场景中已经记录导航图最外面的矩形框的三个点对应的坐标数据,因此在填写导航图设置面板中左下角、右下角位置的X坐标和左下角、左上角位置的Y坐标数据时,只需要从我们刚才记录在记事本程序中的数据中粘贴即可。

设置面板中的“相机图标以像素为单位的长度”数值越大,在导航图中标明当前位置的红点就越大。

“为场景添加导航图”指令添加完成之后,在这条指令下面再添加一条隐藏导航图的指令,这样在调入场景后会首先隐藏导航图,在需要时再把它显示出来。

添加导航图指令时,我们用注释符“………”把两条导航图指令与上面的载入场景的初始指令分隔开,这样可以保持程序的清晰。

完成后的动作指令如图7.09所示。

图7.09添加导航图指令

注意:

NeoBook的注释符用标点符号中的句号来表示,如果我们在一条指令前插入了注释符,程序运行到这条指令时就会跳过它而不会被执行。

选择主界面菜单中的书籍\书籍属性\主菜单,在弹出的主菜单添加面板中,点击面板右上角的“添加菜单头按钮”,为出版物添加一个主菜单,并且将主菜单的标题命名为“文件”,然后在按下添加子菜单按钮,在它的下面再添加一个标题为“退出”的子菜单,为退出命令添加一条“Exit""""”指令。

如图7.10所示。

图7.10文件菜单的制作

在“文件”菜单旁边再继续添加一条主菜单,标题命名为“导航图”,在这条导航图主菜单下添加一条子菜单为“显示导航图”,在这条子菜单的动作属性中写入3DVRI虚拟现实插件\导航图操作命令\显示导航图的动作指令。

然后再添加一条“关闭导航图”的子菜单,

并且给它写入一个“隐藏导航图”的动作指令。

最后完成的菜单及动作指令如图7.11所示。

图7.11导航图控制菜单

在导航图菜单设置完成后点击调试按钮进行漫游,我们会发现导航图的显示与关闭的功能已经正常,但是当场景中已经显示了导航图时,“显示导航图”菜单仍然处于可选择状态,这样会给用户的操作带来不便,接下来对导航图菜单进一步进行设置,使“显示导航图”菜单和“关闭导航图”菜单在特定状态下变灰不能选择。

我们在页面启动时,已经写入了“隐藏场景中的导航图”指令,那么在菜单中的“关闭导航图”子菜单在场景启动时就应该是无效的,下面我们就对这个子菜单进行设置。

在当前页面的属性动作中,查找“菜单”指令并添加一条“DisableMenuItem”指令,当选择这条指令后,在弹出的属性设置面板中点击标题栏右侧的按钮并选择“关闭导航图”菜单。

如图7.12所示。

图7.12使关闭导航图菜单在启动时无效

以上步骤将为场景启动时的动作属性添加一条“DisableMenuItem"MenuItem3"”的指令,指令中的MenuItem3表示关闭导航图的子菜单的ID号码。

添加这条指令后,场景在启动时会将“关闭导航图”子菜单变灰无法选择。

在当前页面窗口上方的菜单上双击打开书籍属性的菜单设置面板,选择“显示导航图”子菜单,在它的动作面板中按下“插入动作”按钮,查找菜单动作中“EnableMenuItem”指令并选择“关闭导航图”子菜单,这条指令的作用是当用户选择“显示导航图”菜单之后,“关闭导航图”子菜单将变成有效。

接下来再添加一条“DisableMenuItem"MenuItem2"”指令将“显示导航图”子菜单变成无效不可选状态。

最后完成的指令如下图7.13所示。

图7.13显示导航图的菜单指令

同样的原理,当用户选择“关闭导航图”子菜单之后,“显示导航图”子菜单应变为有效,而“关闭导航图”菜单应变为无效不可选状态。

参考以上方法为“关闭导航图”子菜单添加EnableMenuItem"MenuItem2"和DisableMenuItem"MenuItem3"指令,这两条新添加的指令的作用正好和上一步添加的两条指令作用相反。

如图7.14所示。

图7.14关闭导航图的菜单指令

关闭菜单属性面板并将工程文件保存为Start_Step_01.pub文件,3DVRI导航图功能就设置完毕了。

二、点击场景中的物体引发事件

NeoBook的3DVRI虚拟现实插件中包含一些指令,可以通过判断鼠标对某些特定物体(主要建筑物和其它需要产生交互的物体的点击来引发一些特殊事件。

在本练习中,我们要实现点击场景中主要建筑的墙体之后弹出相应的图片和文字介绍,鼠标左键点击屋顶的风车之后使它转动,右键点击则使风车停止转动。

实现这些功能之前,事先我们要在3dsmax中将场景中的这些特定物体的物体名记录下来,还要制作一些对物体进行属性说明的图片资料,以方便在NeoBook中插入动作指令时调用这些物体名和相关的介绍资料。

使用3dsmax7.0打开第七章的范例场景Child_S_03.max,这个场景中的主要建筑的名称和对应的建筑墙体的MAX模型名称以及在漫游时鼠标点击这个物体之后需要切换到的相机的序号如下图7.15所示.

7.15主要建筑的名称和模型、相机的名称

注意:

建议将这些建筑的属性资料以文本的形式保存,这样可以在NeoBook中添加动作指令时很方便的复制和粘贴。

我们已经将这些建筑资料保存在范例光盘中Scene\第七章\Project\场景说明.txt文本中。

建筑名称和对应的max模型名称保存好之后,我们在PhotoShop中另外制作了一些鼠标点击建筑之后弹出的图片素材,这些图片中包含了建筑的类别及其面积等相关信息。

制作好的图片保存在范例光盘\Project\SuCai目录中。

打开光盘Project\Start!

.pub工程文件,在页面属性按钮上点击,然后点击插入动作按钮,查找并添加3DVRI插件\场景绘制与背景控制命令\“设置鼠标位置的物体的检测功能状态”指令,在弹出的面板中将它添加到这个页面进入的动作指令的最下边。

在弹出的对话框中选择“打开(1”,只有在页面载入时插入这条指令才能实现点击物体引发事件功能。

如下图7.16所示。

图7.16设置鼠标对物体的检测功能

在鼠标位置检测打开的指令添加完成之后,在下面再添加一条动作\高级交互命令\“物体关联鼠标形状”指令,在弹出的对话框中输入需要查询的130A型住宅在max中的模型名称“YouScene_130A-1”,并且将鼠标形状设置为“触摸状态”,然后再添加一条“物体关联子程序”指令,在对话框中输入物体名称“YouScene_130A-1”,选择“鼠标左键”方式,输

入需要连接的子程序“Check130A-1”,这些指令输入完成后如图7.17所示。

图7.17点击物体事件关联的鼠标形状和子程序的指令下面我们创建一个点击YouScene_130A-1物体之后需要连接的Check130A-1子程序。

打开主界面的菜单中的书籍\书籍属性\动作,在弹出的动作指令窗口中切换到子程序面板,并且输入以下命令:

:

Check130A-1

ImageWindow"130A-1型住宅""-1""-1""[Pubdir]SuCai\130A-1.jpg"

Return

在三条指令中,第一行是子程序的程序名,这个名字和“物体关联子程序”指令中的子程序名字相对应,第二行是运行这个子程序时引发的“ImageWindow”事件(弹出一个包含有图片130A-1.jpg的浮动窗口,这个窗口的标题为130A-1型住宅。

在动作面板中添加这条“ImageWindow”指令时,会弹出一个对话框,在这个对话框中输入标题和图片素材的路径即可。

我们也可以用其它的事件来代替这条ImageWindow指令,比如弹出一个包含有文字信息的AlertBox对话框等等,大家可以按照自己的需要自由的添加其它事件。

这一条指令在如图7.18所示的位置查找和添加。

图7.18添加这条ImageWindow指令

以上工作完成后,场景中的130A-1型建筑的查询功能就制作完毕了,按下调试按钮开始调试程序,在场景载入后,鼠标放在130A-1型建筑的黄色墙壁上就会变成手形,点击它之后,会运行“ImageWindow”子程序弹出一个图片窗口,这个图片中就是建筑的详细资料。

在调试程序正常之后,切换到NeoBook主界面,用同样的方法在载入页面的动作指令中为场景中的其它主要建筑添加如下所示的物体关联鼠标形状和子程序指令:

.....:

Check130A-2...........

物体关联鼠标形状"YouScene_130A-2""6""[Return_Var]"

物体关联子程序"YouScene_130A-2""1""Check130A-2""[Return_Var]"

.....:

Check130B-1...........

物体关联鼠标形状"YouScene_130B-1""6""[Return_Var]"

物体关联子程序"YouScene_130B-1""1""Check130B-1""[Return_Var]"

.....:

Check130A-1...........

物体关联鼠标形状"YouScene_130B-2""6""[Return_Var]"

物体关联子程序"YouScene_130B-2""1""Check130B-2""[Return_Var]"

.....:

ChickHuoDong...........

物体关联鼠标形状"YouScene_She_01""6""[Return_Var]"

物体关联子程序"YouScene_She_01""1""CheckHuoDong""[Return_Var]"

.....:

ChickHuanRe...........

物体关联鼠标形状"HuanRe_01""6""[Return_Var]"

物体关联子程序"HuanRe_01""1""CheckHanRe""[Return_Var]"

载入页面时的动作指令添加完成后,同样在书籍\书籍属性\动作\子程序面板中添加点击这些指定的建筑时需要运行的子程序,需要输入的子程序指令如下所示:

:

Check130A-2

ImageWindow"130A-2型住宅""-1""-1""[Pubdir]SuCai\130A-2.jpg"

Return

:

Check130B-1

ImageWindow"130B-1型住宅""-1""-1""[Pubdir]SuCai\130B-1.jpg"

Return

:

Check130B-2

ImageWindow"130B-2型住宅""-1""-1""[Pubdir]SuCai\130B-2.jpg"

Return

:

CheckHuoDong

ImageWindow"社区中心""-1""-1""[Pubdir]SuCai\HuoDong.jpg"

Return

:

CheckHanRe

ImageWindow"小区换热站""-1""-1""[Pubdir]SuCai\HuanRe.jpg"

Return

这些指令和子程序全部添加完成之后,保存工程文件为Start_Step_02.Pub,运行一下场景,鼠标放在主要建筑的外立面上时会变成手形,点击它就会弹出相对应的图片资料。

三、在漫游中控制物体动画的实现方法

控制物体动画是虚拟现实场景中常见的交互功能,比如开关门、打开电器的电源开关、控制汽车的运动等等,在下面的练习中,我们通过点击场景中的风车物体来引发物体的动画控制指令,从而达到控制风车的动画开始与暂停播放的功能。

打开光盘中的Project\场景说明.txt,文本中我们已经记录了需要控制的动画物体-风车模型在max中的名称为FengChe_01。

它在max中的动画时间为3秒(100帧。

打开上一个练习中完成的Start_Step_02.Pub文件,运行一下场景我们会发现场景中名称为FengChe_01的风车是黄色的,它在不停的转动,首先我们加入一条指令让它在页面载入时保持静止状态。

在当前页面进入属性的动作指令框的最下面新起一行,查找3DVRI虚拟现实插件\动画控制命令\设置TRANSFORM物体播放状态指令,在弹出的对话框中输入风车模型的名字FengChe_01,选择播放状态为暂停播放(1。

调试一下场景,在场景载入后我们会发现黄色的风车已经停止了动画。

如图7.19所示。

图7.19加入停止动画指令之后风车停止转动

在页面进入的动作指令最下面另起一行,参照上面的练习,添加“物体关联鼠标形状”指令,在弹出的指令设置对话框中,将物体名指定为FengChe_01,鼠标形状为触摸物体状态。

然后再添加一条“物体关联子程序”指令,将物体名称同样指定为FengChe_01,子程序名称为Check_FengChe_01。

打开书籍\书籍属性\动作\子程序面板,在最下面另起一行添加一条Check_FengChe_01子程序。

这个子程序的内容如下:

:

Check_FengChe_01

设置TRANSFORM物体播放状态"FengChe_01""0""[Return_Var]"

Return

这条子程序中的事件是设置物体的播放状态为开始播放(0,这样当鼠标左键点击静止的黄色风车时,就开始运行Check_FengChe_01子程序,风车就开始转动了。

接下来将上面的Check_FengChe_01子程序复制并另起一行进行粘贴,将新的子程序内容更改如下:

:

Check_FengChe_02

设置TRANSFORM物体播放状态"FengChe_01""1""[Return_Var]"

Return

大家可以看到,这个新的子程序Check_FengChe_02的作用和上面的正好相反,我们下面再打开页面载入动作设置面板,在最后面的“物体关联子程序”指令下另起一行,再给风车模型添加一条“物体关联子程序"FengChe_01""11""Check_FengChe_02""[Return_Var]"”指令,在弹出的对话框中将物体名称同样指定为FengChe_01,但是关联的子程序名称要指定为Check_FengChe_02。

并且使用鼠标右键点击的方式。

最后完成的物体关联指令和子程

序指令面板如下图7.20所示。

图7.20鼠标左键和右键点击控制物体动画

下面我们来制作一个弹出式的控制面板,在里面放入更多的控制按钮。

当场景载入时这个控制面板是隐藏的,当点击界面上方的控制菜单时,使这个控制面板显示出来。

选择NeoBook主界面左侧工具按钮中最下边的一个“容器(Container”按钮,放入主窗口中,在主界面右边的物体设置面板中,调整它的填充色为实心类型,颜色为自定义的深灰色,容器边缘的线条颜色为浅灰,容器的大小为320*240。

点击上方工具按钮中的排列按钮,将它在水平和垂直方向都设定为居中,这样就将这个容器摆放在窗口的中间位置。

完成的容

器如图7.21所示。

图7.21在窗口中放入一个容器

保持容器(Container1的选择状态,选择主界面左侧的矩形工具和线条工具,在容器中画出边缘的轮廓线和几个分隔线,以方便我们在容器中放入按钮和说明文字等内容,再使用主界面左侧的文字工具在容器中填写控制面板的标题说明文字和动画控制子栏目的说明文字(可以调整文字框的边缘来控制文本框的大小。

在主界面右侧的对象信息栏中可以看到所有创建在容器中的物体都包含在容器名称的子物体栏内。

如果主界面右侧没有显示对象信息栏,则需要选择菜单\查看\显示对象信息进行手工添加。

完成后的容器面板如图7.22所

示。

图7.22在容器中放入文字和分隔线

接下来我们在控制面板内再放入一个音乐控制开关和音量调节开关。

选择主界面左侧的创建检查框工具(CheckBox将它放入主窗口中,在弹出属性设置窗口的常规设置面板中,将它的标题更改为“音乐开关”,并且将它的变量设置为[CheckBox1],对象名也更改为CheckBox1。

在动作面板中,按下插入动作按钮,查找并添加控件\条件\If指令,在弹出的对话框中不用填写任何内容,点击确定按钮,然后将判断语句更改为如下所示的语句:

If"[CheckBox1]""=""Checked"

StopMedia""

Else

PlaySoundFile"F:

\虚拟现实书稿\Project\Music_02.mp3""Loop"

EndIf

这个判断语句的意义是当勾选这个检查框CheckBox1按钮时就停止播放音乐文件,当再次点击时就开始播放音乐文件。

其中,第一行的[CheckBox1]变量是这个音乐开关的变量,第二行的指令是按下插入动作按钮\多媒体\媒体文件指令下添加的,这个指令会将当前场景内播放的全部媒体音乐文件停止播放。

第四行的“PlaySoundFile”指令是从多媒体指令里查找并添加一个多媒体文件,添加这个指令时需要指定一个事先准备好的音乐文件路径(光盘中Project\Music_02.mp3音乐文件,并且将它设置为连续播放。

音乐开关按钮制作完成后,选择主界面左侧的滑条工具,在容器界面下方的空白区域从左上向右下角拖拽将滑条放入,在弹出的滑条属性设置窗口的常规设置面板中,将最小值设为0,最大值设置为255。

初始值为100,并且将它的变量名更改为[TrackBar1],对象名更改为TrackBar1,切换到动作设置窗口中第二项的“值正更改”面板,点击插入动作按钮,查找多媒体\音量控制\SetVolume指令,在弹出的面板中的音量级别输入框中输入一串任意数字后点击确定,选择这条刚添加的“SetVolume"Wave""123"”指令中最后一个引号内的任意数字“123”,按下上方工具按钮中的插入变量按钮,在其中的“作者定义变量”一栏中,找到[TrackBar1]变量(如果此变量没有在列表中出现,请点击右下角的刷新按钮并点击确定,这样就将任意输入的数字更改为滑条的变量名字“[TrackBar1]”,最后完成的滑条设置面板如图7.

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

当前位置:首页 > 自然科学 > 物理

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

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