虚拟现实实验报告共17页.docx
《虚拟现实实验报告共17页.docx》由会员分享,可在线阅读,更多相关《虚拟现实实验报告共17页.docx(7页珍藏版)》请在冰豆网上搜索。
虚拟现实实验报告共17页
虚拟现实实验报告
篇一:
虚拟现实技术实验报告 虚拟现实技术实验报告 实验一:
SketchUp软件认识与使用 一、实验目的与要求:
1.目的 通过本次实验,使学生掌握SketchUp软件的基本架构,理解利用SketchUp进行场景制作的基本步骤,能够熟练运用SketchUp软件的主要功能及相关工具。
2.要求 每位学生进行SketchUp软件的安装和配置,操作练习SketchUp的主要功能及相关工具,理解体会各种操作的执行结果,并独立总结撰写完成实验报告。
二、SketchUp的主要功能:
边缘和平面:
这是绘图最基本的元素 每个SketchUp模型皆由两种元素组成:
边缘和平面。
边缘是直线,而平面是由几条边缘构成一个平面循环时所形成的平面形状。
例如,矩形平面是由四条边缘以直角角度互相连接在一起所构成的。
自己可在短时间内学会使用SketchUp的简单工具,从而绘制边缘和平面来建立模型。
一切就是这么简单容易!
推/拉:
从2D迅速转为3D 使用SketchUp专利设计的[推/拉]工具,可以将任何平面延伸成立体形状。
单击鼠标就可开始延伸,移动鼠标,然后再单击即可停止延伸。
自己可以将一个矩形推/拉成一个盒子。
或绘制一个楼梯的轮廓并将其推/拉成立体的3D形状。
想绘制一个窗户吗?
只需在墙上推/拉出一个孔即可。
SketchUp易于使用而广受欢迎,原因就在于其推/拉的功能。
精确测量:
以精确度来进行作业处理 SketchUp特别适合在3D环境中进行迅速的绘图处理,但是它的功能不仅仅只是一只神奇的电子画笔而已。
因为当自己在计算机上进行绘图处理时,自己在SketchUp中所建立的一切对象都具有精确的尺寸。
当自己准备好要建立模型时,自己可以随意根据自己想要的精确度来进行模型的建立。
如果自己愿意,自己可以将模型的比例视图打印 出来。
如果自己有SketchUpPro,自己甚至还可将自己的几何图形导出到AutoCAD和3dsMAX等其他程序内。
路径跟随:
建立复杂的延伸和板条形状 使用SketchUp创新万能的[路径跟随]工具,可以将平面沿预先定义的路径进行延伸以建立3D形状。
沿L形线路延伸一个圆形即可建立一个弯管的模型。
绘制瓶子的一半轮廓,然后使用[路径跟随]工具沿一个圆形来扫动,就能建立一个瓶子。
自己甚至还可以使用[路径跟随]工具来圆整扶手、家具和电器等对象的边缘。
颜料桶:
套用颜色和纹理 自己可以用SketchUp的[颜料桶]工具使用颜色和纹理等材料来绘制模型。
群组和组件:
建构更智能的模型 自己可将模型中几何形状的各个部分「粘在一起」成为一个群组以建立更容易移动、复制和隐藏的子对象。
组件虽然有点像群组,不过比群组更方便:
组件的各副本相互关联,因此在一个副本上所做的改变会自动影响其他副本。
窗、门、树、椅子和数以百万计的其他对象都可受惠于此功能。
阴影:
进行阴影研究以增加真实感 SketchUp强大的实时[阴影引擎]可让自己对模型进行精确的阴影研究。
截面:
查看模型的内部 自己可以使用SketchUp的交互式截面功能暂时性切开设计的一部分以查看其内部。
自己也可使用截面功能来建立正交视图(例如楼层布置图)以使用SketchUpPro将几何图形导出到CAD程序,或在处理模型时以更佳方式检视模型。
此外,自己也可使用SketchUp的场景功能来移动或旋转截面,甚至制作截面动画。
场景:
储存检视及建立动画 为了让自己可轻松储存模型的精确检视,以便稍后返回该检视,我们设计了场景功能。
需要建立动画吗?
只需建立几个场景并按下一个按钮即可。
环顾和行走:
亲自探索自己的创作 SketchUp利用一组简易的导览工具来提供第一人称检视,从而让自己身临其境的检视模型。
用[定位镜头]单击可让镜头「立在」模型内的任何地方。
使用[环顾]工具转动自己的虚拟头部。
最后,切换到[行走]模式来以步行方式探索自己的创作,自己甚至还可以上下楼梯和斜坡。
Google地球:
在周围环境中检视自己的模型 SketchUp和「Googleearth」属于同一产品系列,因此自己可以在两者之间轻易交流信息。
自己的项目需要一个建筑地点吗?
按下一个按钮即可直接从「Googleearth」中将缩放的空照图,包括地形,汇入到SketchUp中。
沙盒工具:
处理地形 SketchUp的[沙盒]工具让自己能够建立、优化和更改3D地形。
自己可以从一组汇入的等高线来产生平滑的地形,增添窄路和径流山谷以及建立房间和车道。
3D模型库:
可以在3D模型库中寻找任何自己所需要的模型 Google3D模型库是一个庞大的在线3D模型库,自己可在其中寻找任何自己所需的对象。
若自己能免费下载,为何需要自己建立呢?
汇入3DS:
在建模时拔得头筹 自己可以将3DS档案直接汇入到自己的SketchUp模型中。
有3DS格式的家具要使用?
只需要汇入即可进行处理。
汇入图像:
用照片贴墙 SketchUp可让自己汇入JPG、TIFF、PNG和PDF等文件格式的图像。
自己可以单独使用这些图像(有点像海报性质),也可以将图像粘贴到表面以建立建筑物、包装设计等具有如照片般真实感的模型。
汇出TIFF、JPEG和PNG SketchUp可让自己汇出最大10,000像素正方形的位图,因此自己可使用电子邮件进行发送、在文件中发布或投影到墙上,只要选择一些选项并单击[导出]即可进行汇出,过程简易迅速。
PRO汇入和汇出DXF和DWG:
平面线条绘图和3D模型 SketchUpPro可让自己汇入和汇出DXF和DWG,轻松地将设计图、截面、立视图或甚至整个模型移入(和移出)自己喜欢的CAD程序。
汇入和导出的几何图形尺寸将维持1:
1的比例,而且图层将予以保留。
PRO汇出PDF和EPS:
平面向量图 SketchUpPro可让自己以PDF和EPS格式导出模型的视图,从而让自己能够在Illustrator和Freehand等向量xx程序中继续进行处理。
对于需要不受分辨率限制的平面图像来说,导出到这些格式是最好的方法了。
篇二:
虚拟现实与仿真实验报告 合肥工业大学 计算机与信息学院 实验报告 课程:
虚拟现实与仿真技术 专业班级:
计算机科学与技术11-2班 学号:
20xx2497 姓名:
谢云飞 实验一 一.实验名称 从3Dmax8中导出mesh并添加mesh到场景。
二.实验过程或实验程序(增加的代码及代码注解) 2.1启动3Dmax 1.在安装有3Dmax8的计算机上,可以使用两种不同的方法来启动3Dmax8:
(1)在桌面上双击“3Dmax8”图标
(2)点击“开始”菜单,在“程序”中的选择“3Dmax8” 2.观察3Dmax8主窗口的布局。
3Dmax8主要由若干元素组成:
菜单栏、工具栏、以及停靠在右边的命令面板和底部的各种工具窗口 2.2使用3Dmax8建模并导出mesh 2.2.1导出mesh的步骤如下:
1.启动3Dmax8 2.在停靠在右边的命令面板中,点击几何体按钮 3.选择标准几何体 4.在对象类型中选择对象(如:
长方体),在“前”视口中,通过单击鼠标左键,创建出模型 5.在工具栏中单击“材质xx器”按钮,通过上步操作,可开启“材质xx器”对话框 6.在“材质xx器”对话框中,点击漫反射旁方形按钮,进入到“材质/贴图浏览器” 7.在“材质/贴图浏览器”中选择位图,鼠标左键双击位图 8.弹出选择位图图像文件对话框,从本地电脑中选择一张图片 9.选择好图片,在材质xx器对话框中,点击将材质指令给选定对象 10.点击菜单栏上的oFusion按钮,在弹出的菜单栏中选择ExportScene 11.选择文件夹并输入文件名qiu,点击保存,在弹出的对话框中勾选CopyTextures,点击Export按钮,此时mesh文件已成功导出 2.3导出的mesh文件放入到指定位置 1.找到mesh文件,把mesh文件放到当前电脑的OgreSDK的models中,以我的电脑为例,OgerSDK放在C盘中 2.打开C盘,找到OgreSDK,打开OgreSDK,找到media,打开media文件夹,找到models,打开models文件夹,将mesh文件复制到此文件夹中 3.将导出mesh文件附带的材质文件qiu.material放到OgreSDK的scripts(C:
\OgreSDK\media\materials\scripts)中 4.将导出mesn文件时同时导出的图片放到OgreSDK的textures(C:
\OgreSDK\media\materials\textures)中 2.4mesh文件导入到场景中 2.4.1mesh文件导入到场景中步骤:
1.启动vs20xx 2.在“文件”菜单中选择“打开”,然后单击“项目/解决方案” 3.找到项目MFCOgre1,选择MFCOgre1.sln,点击打开按钮 4.打开MFCOgre1View.h,创建节点变量,SceneNode*node1(MFCOgre1View.h中的第55行),创建实体变量Entity*ent1(MFCOgre1View.h中的第57行); 5.打开MFCOgre1View.cpp,在MFCOgre1View.cpp的构造函数中对创建的节点和实体对象初始化node1(NULL)、ent1(NULL)(在MFCOgre1View.cpp的第37行和第39行) 6.获取根节点的子节点,并将其赋值给节点node1(MFCOgre1View.cpp的第225行) 7.给创建的实体对象ent1赋值(MFCOgre1View.cpp的第224行) 8.设置节点的位置(MFCOgre1View.cpp的第226行) 9.将实体附在节点上(MFCOgre1View.cpp的第227行) voidCMFCOgre1View:
:
CreateEntity(void) { ent1=m_pSceneManager->createEntity("Sphere","qiu.mesh");//获取实体对象,第一个参数是实体的名字,第二个参数是要导入的mesh文件 node1=m_pSceneManager->getRootSceneNode()->createChildSceneNode();//创建结点 node1->translate(Vector3(-20,0,30));//设置实体的位置 node1->attachObject(ent1);//将实体附在节点上 ent1->setMaterialName("Examples/Chrome1");//设置实体的材质 2.5生成项目 使用“生成项目”功能可以将程序的源代码文件编译为可执行的二进制文件,方法十分简单:
在“生成”菜单中选择“生成解决方案”。
在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。
如果源代码中不包含语法错误,会在最后提示生成成功,如下图所示:
如果源代码中存在语法错误,“输出”窗口会输出相应的错误信息(包括错误 所在文件的路径,错误在文件中的位置,以及错误原因),并在最后提示生成失败。
此时在“输出”窗口中双击错误信息所在的行,OSLab会使用源代码xx器打开错误所在的文件,并自动定位到错误对应的代码行。
可以在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号),然后再次生成项目,然后在“输出”窗口中双击错误信息来定位存在错误的代码行。
将代码修改正确后再生成项目。
2.6执行项目 在MFCOgre1中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的程序,运行出实验要求的结果。
三.实验结果(包括必要的截图) 3dmax中创建实体球模型:
添加mesh到场景中后:
注释:
由于增加了九个球体,所以相应代码有所改变。
具体如下(两例,其它七个相同):
ent3=m_pSceneManager->createEntity("Sphere1","qiu.mesh");//获取实体对象,第一个参数是实体的名字,第二个参数是要导入的mesh文件 node3=m_pSceneManager->getRootSceneNode()->createChildSceneNode();//创建结点node3->translate(Vector3(-20,20,30));//设置实体的位置 node3->attachObject(ent3);//将实体附在节点上 ent3->setMaterialName("Examples/Chrome1");//设置实体的材质 ent4=m_pSceneManager->createEntity("Sphere4","qiu.mesh");//获取实体对象,第一个参数是实体的名字,第二个参数是要导入的mesh文件 node4=m_pSceneManager->getRootSceneNode()->createChildSceneNode();//创建结点node4->translate(Vector3(-20,40,30));//设置实体的位置 node4->attachObject(ent4);//将实体附在节点上 ent4->setMaterialName("Examples/Chrome1");//设置实体的材质 四.实验体会 通过此次试验,不但复习了3dmax模型的创建过程,我还知道了对模型的导出,以及添加到ogre模型库中,并能通过看代码,自己添加实体模型到场景中,更改模型的材质。
另外,我对orge也有了一定的了解,知道了在VS里面配置库目录,能够把场景转到orge里面展示。
这只是实验的开始,我希望随着后面的学习能够对其有进一步的掌握。
篇三:
虚拟现实技术实验报告三 华北水利水电学院虚拟现实技术实验报告~第学期级 班级:
学号:
姓名:
实验三虚拟现实复杂场景建模与漫游仿真 一、实验目的:
掌握虚拟现实技术复杂三维场景建模技术。
在场景中引入环境背景、动画与交互等,构建逼真的三维场景。
二、试验要求:
本次试验为综合性质试验,要求自行设计一个较为复杂的场景或者单体模型,其中包含各种造型与渲染技术,比如纹理材质、光照、环境背景、声音视频、动画与交互等。
场景内容不限。
三、试验步骤:
主要代码如下:
NavigationInfo{ type["EXAMINE","ANY"] headlightTRUE } DEFvp1Viewpoint{#settheviewpoint position2011 } Transform{ translation3-2.5-2 rotation0011.57 children[Transform{rotation0-100.33 children[ Shape{ appearanceAppearance{ materialMaterial{} textureImageTexture{url"wood.jpg"} } geometryBox{size0.13017} } ]}] } Transform#weightscale { translation-200 children[ Transform {rotation10-11.571 children[ Shape{ appearanceAppearance{ specularColor.18.25.23ambientIntensity.0433shininess.06}}#endAppearancegeometryCylinder{radius0.9height0.3}}#enddialbaseDEFweightTouchSensor{}Transform{#dialface(white)translation00.210children[Shape{appearanceAppearance{materialMaterial{diffuseColor111}}geometryCylinder{radius0.8height0.05}}]}Transform{#scalechildren[DEFscaleTransform{translation00.22-0.6rotation1001.571children[Shape{appearanceAppearance{materialMaterial{diffuseColor0.90.10.4}textureImageTexture{}}geometryCone{bottomRadius0.1height0.1}}]}]}Transform{rotation0100.5236children[USEscale]}Transform{rotation0101.0472children[USEscale]} rotation0101.5708children[USEscale]}Transform{rotation0102.0944children[USEscale]}Transform{rotation0102.6180children[USEscale]}Transform{rotation0103.1416children[USEscale]}Transform{rotation0103.6652children[USEscale]}Transform{rotation0104.1888children[USEscale]}Transform{rotation0104.7124children[USEscale]}Transform{rotation0105.2360children[USEscale]}Transform{rotation0105.7596children[USEscale]}Transform#weightscaleneedle{children[DEFindexTransform{translation-0.10.50.1rotation0100.9scale0.8510.85children[Shape{ appearanceAppearance{materialMaterial{diffuseColor10.10.1}}geometryIndexedFaceSet{ { } DEFdollTcoordCoordinate{point[0.0700,#0.030-1,-0.030-0.7,-0.0700,]}coordIndex[0,1,2,-1]}}]}]}]}Transform{translation0-1.60children[Shape{appearanceAppearance{materialMaterial{diffuseColor0.90.10.4}}geometryCylinder{radius0.08height3}}]}Transform#weightscalebasetranslation0.8-30.2rotation1-100.571children[Shape{appearanceAppearance{materialMaterial{diffuseColor0.90.10.4}}geometryBox{size20.21}}]}] DEFTimer4TimeSensor{#eyesighttabel-needleTimeSensor enabledFALSE startTime0.0ransform{ translation3-2.70.76 #rotation1001.5 #scale111 children[ DEFmovedollPlaneSensor{minPosition-5-2.5#setPlaneSensormovedollwithmaxPosition maxPosition8-0.5 } Shape{ appearanceAppearance{ textureImageTexture{url"pangpang.gif"} materialMaterial{ diffuseColor1.850 specularColor.87.25.25 ambientIntensity.157 shininess1 #transparency.737 } } geometrySphere{radius0.6} } ] } Transform{ translation8-10 rotation1100.5 children[ Shape{appearanceAppearance{ materialMaterial{diffuseColor111} textureImageTexture{url"shili.jpg"} } geometryBox{size0.141}} DEFimageTouchSensor{} ] } DEFTimerTimeSensor{enabledFALSE startTime0.0 cycleInterval10.0