VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx

上传人:b****3 文档编号:10704484 上传时间:2023-05-27 格式:DOCX 页数:66 大小:617.69KB
下载 相关 举报
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第1页
第1页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第2页
第2页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第3页
第3页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第4页
第4页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第5页
第5页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第6页
第6页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第7页
第7页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第8页
第8页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第9页
第9页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第10页
第10页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第11页
第11页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第12页
第12页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第13页
第13页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第14页
第14页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第15页
第15页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第16页
第16页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第17页
第17页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第18页
第18页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第19页
第19页 / 共66页
VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx_第20页
第20页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx

《VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx》由会员分享,可在线阅读,更多相关《VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx(66页珍藏版)》请在冰点文库上搜索。

VR空间虚拟现实与可视化东北大学结课作业及实验含代码.docx

VR空间虚拟现实与可视化东北大学结课作业及实验含代码

 

 

空间信息可视化有与虚拟现实

实验报告

 

 

学院:

资源与土木工程学院

班级:

测绘1402

姓名:

古再丽努尔·喀日

学号:

20141668

指导老师:

郭甲腾

2017年5月

成绩评定表

指导教师评语:

 

 

成绩:

 

指导教师:

年月日

目录

VRML编程环境熟悉…………………………………………………4

VRML绘制基本几何模型……………………………………………7

VRML空间变换与群节点设计………………………………………16

VRML绘制复杂造型…………………………………………………20

VRML环境设计与视点控制…………………………………………22

VRML动画交互………………………………………………………28

结课作业……………………………………………………………37

 

实验一VRML编程环境熟悉

智能自动完成

在编辑VRML文本时能够根据上下文关系及其在场景图中的位置给出一个包含合适的VRML标识文本的列表以供选择。

这些VRML标识文本关键字关键字、PROTO原型定义名称、节点名称、域的名称、域类型、SFNode节点和MFNode节点的子域、标准VRML脚本对象及其属性和方法的名称。

动态错误检测。

场景图树的可视化显示

节点的代码能够根据场景图的结构展开或收起以方便编辑,可以在结构视图中选择要编辑的节点或域。

多文档同时编辑

在同一个VrmlPad中同时打开多个文件以便进行文件之间的复制、剪切、粘贴的操作,或方便的查找替换文本。

同一个文件也可以使用两个窗口来浏览同一文件的不同部分。

根据当前打开的文件能够很容易的找到与之相关的文件(例如Inlines、Anchor、EXTERNPROTOs)并进行编辑。

整合脚本调试器

可以使用此整合的脚本调试器在内嵌的vrmlscript脚本中,或在用Cortona控件插入VRML的网页中查找并修复。

这个调试器有这些控制脚本的执行的功能:

可以暂停脚本的执行,运行至指定行,设置断点,一步步的运行脚本。

监视脚本的数据状态:

当前调用的堆栈;相关的前后代码中变量,数组,对象;计算包含这些数据的表达式。

在调试阶段修改变量,数组,或对象的值。

在调试阶段添加并测试新的脚本代码。

使用QuickWatchwindow(快速监视窗口)检验或修改变化的数据。

使用CodeTips(代码上的弹出提示)快速监视脚本中的变量值。

VrmlPad可以提示用户语法、值类型的错误或警告。

提供域值是否在适当范围中。

可以校验是否有重复的节点定义,是否有不匹配的域名或路由。

网络三维技术的出现最早可追朔到VRML,VRML(VirtualRealityModelingLanguage)即虚拟现实建模语言。

VRML开始于20世纪90年代初期。

1994年3月在日内瓦召开的第一届WWW大会上,首次正式提出了VRML这个名字。

1994年10月在芝加哥召开的第二届WWW大会上公布了规范的VRML1.0草案。

1996年8月在新奥尔良召开的优秀3D图形技术会议-Siggraph\'96上公布通过了规范的VRML2.0第一版。

它在VRML1.0的基础上进行了很大的补充和完善。

它是以SGI公司的动态境界MovingWorlds提案为基础的。

1997年12月VRML作为国际标准正式发布,1998年1月正式获得国际标准化组织ISO批准简称VRML97。

VRML97只是在VRML2.0基础进行上进行了少量的修正。

VRML规范支持纹理映射、全景背景、雾、视频、音频、对象运动、和碰撞检测--一切用于建立虚拟世界的所具有的东西。

  但是VRML并没有得到预期的推广运用,不过这不是VRML的错,要知道当时14.4k的modems是普遍的。

VRML是几乎没有得到压缩的脚本代码,加上庞大的纹理贴图等数据,要在当时的互连网上传输简直是场噩梦。

  1998年。

VRML组织把自己改名为Web3D组织,同时制订了一个新的标准,Extensible3D(X3D),到了2000年春天,Web3D组织完成了VRML到X3D的转换。

X3D整合正在发展的XML、JAVA、流技术等先进技术,包括了更强大、更高效的3D计算能力、渲染质量和传输速度。

 在此期间,一场Web3D格式的竞争正在进行着。

在去年SIGGRAPH上,展示了超过30种Web3D格式。

当然,只会有其中的一小部分能够脱颖而出最终生存下来。

在本文后半部分将会对一些有实力且目前已经取得了一定市场的格式作介绍。

最近一些厂商瞄准了一个市场,就是从二维图像生成三维物体。

一般都是通过拍摄一个物体的多个方向,再由特殊的软件转化为3D网格。

象viewpoint、realVIZ、Immersion。

尽管出现了如此之多的解决方案,难道让我们每个人都跳上了Web3D的列车了吗?

一些困难和障碍仍然存在。

首先是没有统一的标准。

每种方案都使用不同的格式和方法。

Flash能够在今天大行其道是因为它是唯一的,JAVA在各平台得到运用也因他是唯一的。

没有标准,3D在Web上的实现过程还将继续挣扎。

另外插件的问题也是一个困绕。

几乎每个厂商开发的标准都需要自己插件的支持,这些插件从几百K到几兆不等,在带宽不理想的条件下必然限制了一部分人的使用热情。

VRML创作工具很多是“所见即所得”式的,通过图形界面可以方便地创作虚拟境界,但VRML不仅仅是普通的三维设计,尽管这些工具很容易上手,却往往屏蔽掉了VRML标准的具体细节,因为如果想深入掌握VRML,还需要全面了解节点、域、检测器等技术细节,而达成此目的的最好方法就是用编写文本文件的方式创作VRML境界。

VRML文件名全称为:

***.wrl或***.wrz。

可由文本编辑器或由VrmlPad编写。

VRML文件可由VRML浏览器直接运行,也可装插件用IE浏览器运行。

本人用的BS_Contact_VRML-X3D_62.exe,装好后可直接运行本地文件,也可在开始菜单设置(开始--程序--BSContactVRMLX3D--MakeBSContactVRMLyourdefaultviewerinIE)即可通过IE浏览器访问网上的VRML文件了。

VRML是“VirtualRealityModelingLanguage”的缩写形式,意思是“虚拟现实造型语言”。

熟悉WWW的人们都知道,受HTML语言的局限性,VRML之前的网页只能是简单的平面结构,就算Java语言能够为WWW增色不少,但也仅仅停留在平面设计阶段,而且实现环境与参与者的动态交互是非常烦琐的。

于是,VRML就应运而生了。

第一代Web是以HTML为核心的二维浏览技术,第二代Web是以VRML为核心的三维浏览技术。

第二代Web把VRML与HTML、Java、媒体信息流等技术有机地结合起来,形成一种新的三维超媒体Web。

RML被称为继HTML之后的第二代Web语言,它本身是一种建模语言,也就是说,它是用来描述三维物体及其行为的,可以构建虚拟境界(VirturalWorld),可以集成文本、图像、音响、MPEG影像等多种媒体类型,还可以内嵌用Java、ECMAScript等语言编写的程序代码。

VRML的基本目标是建立因特网上的交互式三维多媒体,基本特征包括分布式、三维、交互性、多媒体集成、境界逼真性等。

VRML的出现使得虚拟现实象多媒体和因特网一样逐渐走进我们的生活,简单地说,以VRML为基础的第二代万维网=多媒体+虚拟现实+因特网。

第一代万维网是一种访问文档的媒体,能够提供阅读的感受,使那些对Windows风格的PC环境熟悉的人们容易使用因特网,而以VRML为核心的第二代万维网将使用户如身处真实世界,在一个三维环境里随意探究因特网上无比丰富的巨大信息资源。

每个人都可以从不同的路线进入虚拟世界,和虚拟物体交互,这样控制感受的就不再是计算机,而是用户自己,人们可以以习惯的自然方式访问各种场所,在虚拟社区中“直接”交谈和交往。

事实上,目前采用VRML技术取得成功的案例已经很多,例如探路者到达火星后的信息就是利用VRML在因特网上即时发布的,网络用户可以以三维方式随探路者探索火星。

VRML的工作原理:

VRML是一种用在Internet和Web超链上的,多用户交互的,独立于计算机平台的,网络虚拟现实建模语言。

虚拟世界的显示、交互及网络互连都可以用VRML来描述。

VRML的设计是从在WEB上欣赏实时3D图象开始的。

VRML浏览器既是插件,又是帮助应用程序,还是独立运行的应用程序,它是传统的虚拟现实中同样也使用的实时3D着色引擎。

这使得VRML应用从三维建模和动画应用中分离出来,在三维建模和动画应用中可以预先对前方场景进行着色,但是没有选择方向的自由。

VRML提供了6+1度的自由,用户可以沿着三个方向移动,也可以沿着三个方向旋转,同时还可以建立与其它3D空间的超链接。

因此VRML是超空间的。

VRML定义了一种把3D图形和多媒体集成在一起的文件格式。

从语法角度看,VRML文件是显式地定义和组织起来的3D多媒体对象集合;从语义角度看,VRML文件描述的是基于时间的交互式3D多媒体信息的抽象功能行为。

VRML文件描述的基于时间的3D空间称为虚拟境界(VirtualWorld),简称境界,所包含的图形对象和听觉对象可通过多种机制动态修改。

VRML文件可以包含对其他标准格式文件的引用。

可以把JPEG、PNG和MPEG文件用于对象纹理映射,把WAV和MIDI文件用于在境界中播放的声音。

另外,还可以引用包含Java或ECMAScript代码的文件,从而实现对象的编程行为。

所有这些都是由其他标准提供的,之所以在VRML中选用它们,是因为它们在Internet上的广泛应用。

VRML97规范描述了它们在VRML中的用法。

VRML使用场景图(SceneGraph)数据结构来建立3D实境,这种数据结构是以SGI开发的OpenInventor3D工具包为基础的一种数据格式。

VRML的场景图是一种代表所有3D世界静态特征的节点等级:

几何关系、质材、纹理、几何转换、光线、视点以及嵌套结构。

几乎所有生产厂商,无论是CAD、建模、动画、VR,还是VRML,他们的结构核心都有场景图。

境界中的对象及其属性用节点(Node)描述,节点按照一定规则构成场景图(SceneGraph),也就是说,场景图是境界的内部表示。

场景图中的第一类节点用于从视觉和听觉角度表现对象,它们按照层次体系组织起来,反映了境界的空间结构。

另一类节点参与事件产生和路由机制,形成路由图(RouteGraph),确定境界随时间的推移如何动态变化。

VRML文件的解释、执行和呈现通过浏览器实现,这与利用浏览器显示HTML文件的机制完全相同。

浏览器把场景图中的形态和声音呈现给用户,这种视听觉呈现即所谓的虚拟世界(境界)。

用户通过浏览器获得的视听觉效果如同从某个特定方位体验到的,境界中的这种位置和朝向称为取景器(Viewer)。

VRML的访问方式是基于客户/服务器模式的。

其中服务器提供VRML文件及支持资源(图像、视频、声音等),客户端通过网络下载希望访问的文件,并通过本地平台上的VRML浏览器交互式地访问该文件描述的虚拟境界。

由于浏览器是本地平台提供的,从而实现了平台无关性。

下图描述了VRML的工作方式。

VRML是一个开发标准,为了加强协作,避免技术重复和市场冲突,而鼓励其他技术引用VRML或成为VRML的一部分。

与VRML关系密切的三项技术是Java3D、MPEG-4和Chrome。

其中,Java3D和VRML都把3DWeb作为关键应用对象,前者的优势在于程序设计,后者的优势在于场景构造,二者在可编程性3DWeb应用方面密切合作。

MPEG-4面向基于内容的交互式视讯应用,可以为VRML提供流技术、压缩和音响同步技术,而MPEG-4用VRML来描述3D内容。

在2D页面集成方面,可以探索VRML和Microsoft的Chrome协作的可能性。

VRML的应用:

VRML在电子商务、教育、工程技术、建筑、娱乐、艺术等领域的广泛应用,将会促使它迅速发展,并成为构建网络虚拟现实应用系统的基础。

虚拟现实作为一种全新的人机接口技术,必须研究用户和计算机之间的协调关系问题,这样一个问题只有通过大量的使用才能逐步解决,VRML以因特网作为应用平台,最有希望成为构筑虚拟现实应用的基本构架。

实验二,VRML绘制基本几何模型

平移几何体:

几何体的平移实际上是坐标系的平移,而将几何体平移实际上就是通过使用节点Transform的translation域,相对原坐标系形成新的子坐标系,再在子坐标系中创建所要平移的几何体就达到了我们平移几何体的目的。

旋转几何体:

旋转几何体是通过使用节点Transform的rotation和center域,指定旋转轴或者旋转点、旋转角度,形成新的旋转子坐标系,再在子坐标系中创建需要的造型。

1.绕轴的旋转

Transform节点的rotation域设定父子坐标系原点的连线作为旋转轴,同时还设定了旋转的角度。

2.围绕中心的旋转

有时候单一地围绕某个轴旋转来创建造型并不很方便,通过使用Transform节点的center域,就可以使几何体围绕某个中心点旋转,这种旋转有时会比围绕轴旋转更自然灵活。

缩放几何体:

1.在不同方向上的缩放

通过对Transform节点的scale和scaleOrientation域的使用,可以沿任何方向缩放需要的造型

2.围绕中心点的缩放

使用Transform的center域可以指定一个缩放中心,使要创建的造型根据需要相对该点来进行缩放,像旋转中心一样,围绕点的缩放有时会对造型的创建提供比在不同方向上的缩放更大的方便。

VRML绘制基本几何模型,我们创建了第一个虚拟境界,涉及到如何用几何体构建境界,以及如何设定几何体的颜色与材质。

尽管这个由方块、圆锥和球体组成的场景图比较简单,但已经反映了VRML的基本功能。

当然,除了可用鼠标改变视点外,这还只是一个静态世界,在下一节,我们将引进VRML的动态特征。

接下来我们把方块所在的Transform节点复制三份,并把各自包含的几何形状依次定义为方块、球体和圆锥:

  Group{

  children[

   Transform{

    translation500

     children[

      Shape{....

       geometryBox{}#立方体

       }

      ]

     }

   Transform{

    translation000

     children[

      Shape{...

       geometrySphere{}#球体

        }

       ]

      }

   Transform{

    translation-500

     children[

      Shape{...

       geometryCone{}#圆锥体

        }

       ]

      }

     ]#endofGroupchildren

    }

  你可能已经感觉到,VRML文件中有许多括号(花括号“{}”和方括号“[]”),所以务请注意括号的配对,建议采用本教程的缩进风格。

注意上面的VRML文件中三个Transform节点的平移量是不同的,因而三个几何体的位置也就不同。

另外,还可以修改三个几何体的颜色:

球面Sphere为绿色(010),圆锥为蓝色(010)。

最后,为了以后引用方便,分别给这三个Transform节点指定一个名称:

  DEFboxTransform{...}

  DEFsphereTransform{...}

  DEFconeTransform{...}

  这个VRML场景的完整代码是:

  #VRMLV2.0utf8

  Group{

   children[

    DEFboxTransform{

     translation4.500

      children[

       Shape{

        appearanceAppearance{

         materialMaterial{

          diffuseColor100

          }

         }

        geometryBox{}

       }

      ]

     }

    DEFsphereTransform{

     translation000

      children[

       Shape{

        appearanceAppearance{

         materialMaterial{

          diffuseColor010

           }

          }

         geometrySphere{}

        }

       ]

      }

    DEFconeTransform{

     translation-4.500

      children[

       Shape{

        appearanceAppearance{

         materialMaterial{

          diffuseColor001

          }

         }

        geometryCone{}

       }

      ]

     }

    ]#endofGroupchildren

   }

  把此文件保存为HelloWorld4.wrl,用VRML浏览器打开这个文件,通过调整视点从多个方位浏览自己的作品。

  在这个场景中,红色的立方体位于屏幕的中心,它的中心坐标为{000}。

若想把它移动一个位置,可以通过为它外套一个Transform(变换节点)来实现:

  Transform{

   translation500 #平移向右5米

    children[

     Shape{

      appearanceAppearance{

       materialMaterial{}

        }

       geometryBox{}

       }

     ]

    }

  在VRML中,Transform节点除了可以引进平移、旋转和缩放变换以外,其作用和Group节点的作用一样。

把Transform节点的translation域(平移)设置为500,意味着Transform节点所在的坐标系相对于其上层坐标系向右平移(即x轴方向)5个单位,在其它两个方向不移动,VRML的距离单位是米,5个单位相当于5米。

我们第三个场景的完整代码是:

  #VRMLV2.0utf8

   Group{

    children[

     Transform{

      translation500

       children[

        Shape{

         appearanceAppearance{

          materialMaterial{

           diffuseColor100

            }

           }

          geometryBox{}

         }

         ]

        }

       ]

      }

  下面定义立方体的外观,这只需改变Shape节点的appearance域(外观),appearance域是一个Appearance节点,此Appearance节点的material域(材质)定义为一个Material节点:

 appearanceAppearance{

 materialMaterial{}

 }

 这样,上面的Shape节点变成了:

 Shape{

  appearanceAppearance{

   materialMaterial{}

   }

   geometryBox{}

   }

  这是定义几何造型的基本格式。

现在立方体还是白色的,这是因为其中的Material节点采用的还是缺省值,下面修改它的diffuseColor域(漫射色),VRML的颜色说明采用的是RGB颜色模型,所以要定义红色的立方体,漫射色应该是{100},三个数字依次表示红色、绿色和蓝色,取值范围都是0到1:

  materialMaterial{diffuseColor100}

  现在我们生成了第二个场景,完整的代码是:

  #VRMLV2.0utf8

  Group{

   children[

    Shape{

     appearanceAppearance{

      materialMaterial{

       diffuseColor100 #红色

       }

      }

      geometryBox{}

     }

    ]

   }

  按照惯例,我们以"Hello,World!

"作为我们的第一个虚拟境界,它由立方体、圆锥和球体组成,你可能已经注意到,VRML的标志正是由这三个几何形状构成的。

输入的第一行文字是:

  #VRMLV2.0utf8

  这是VRML文件的标志,所有2.0版本的VRML文件都以这行文字打头,VRML97是由VRML2.0版修订而成的,符合VRML97规范的VRML文件也以这行文字打头。

其中“#”表示这是一个注释。

而utf8表示此文件采用的是utf8编码方案,这在标准中有详细说明。

  先加入一个Group节点(组节点):

  Group{

  组节点的花括号之内的所有内容视为一个整体,利用组节点可以把虚拟场景组织成条理清晰的树形分支结构。

下面定义组节点的children域(孩子域):

  children[

  在children后的方括号内定义Group节点的所有孩子对象,第一个孩子是一个Shape节点(形态节点),它描述一个几何形状及其颜色等特征:

  Shape{

  在Shape节点内定义一个几何体Box(方盒节点):

  geometryBox{}

  注意我们没有为Box定义任何域,这意味着它的尺寸和坐标位置等特性取缺省值(单位立方体)。

随后补齐各右括号:

     }

   

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2