183基于真实景物的虚拟现实场景的生成黄海明1,2,3,5,刘保卫4刘金刚1,2马云鹏21.
中国科学院计算技术研究所北京1000802.
首都师范大学计算机科学联合研究院北京1000373.
中国科学院研究生院北京1000394.
包头师范学院计算机系包头0140305.
衡阳师范学院计算机系衡阳421008摘要在分析基于实景的虚拟现实场景建模特点的基础上运用一个具体的实例来阐述了基于实景的虚拟现实场景的生成过程及其相关注意事项通过合理建模减小复杂度通过真实感贴图来增强逼真度通过模型导入的对象化来实现对虚拟物体的控制最终在逼真性实时性和可控性方面都达到了较好的效果关键词实景虚拟现实场景建模真实感贴图面向对象BuildingofVirtualRealitySceneBasedonRealSceneryHUANGHaiming1,2,3,5,LIUBaowei4,LIUJingang1,2,MAYunpeng2(1.
InstituteofComputingTechnology,ChineseAcademyofScience,Beijing100080;2.
JointFacultyofComputerScientificResearch,CapitalNormalUniversity,Beijing100037;3.
GraduateSchoolofChineseAcademyofScience,Beijing100039;4.
DepartmentofComputerScience,BaotouNormalCollege,Baotou014030;5.
DepartmentofComputerScience,HengyangNormalCollege,Hengyang421008)AbstractThispaperanalyzesthecharactersofvirtualrealityscenemodelingbasedonrealscenery,appliesaninstancetoexpoundthebuildingprocessofavirtualrealityscenebasedonrealscenery,setsforththerelativenoticeitems.
Decreasethecomplexitydegreebyreasonablemodeling;increasethefidelitybyrealistictexturing;realizethecontrolonvirtualobjectsbyusingobject-orientedmethodinloadingmodel.
Intheend,theresultcangettoabetterlevelinaspectsoffidelity,realtimeandcontrollability.
KeywordsRealscenery;Virtualrealityscene;Modeling;Realistictexturing;Object-oriented计算机工程ComputerEngineering第31卷第14期Vol.
31142005年7月July2005多媒体技术及应用文章编号10003428(2005)140183-04文献标识码A中图分类号TP391.
9目前对于基于真实景物还原的虚拟场景建模被提到一个比较重要的高度比如美国Stanford大学利用非接触式三维扫描仪开展了数字米开朗基罗项目浙江大学的虚拟故宫项目已经开发出一套桌面型虚拟建筑环境实时漫游系统北京新奥特开发了虚拟演播室系统[1]文化遗产数字化及保护国际研讨会将文物复原列为了一个专门方向可见对基于真实景物的虚拟现实场景建模的研究是很有意义的1基于实景的虚拟现实场景建模的说明要在虚拟现实环境中进行基于实景的建模要考虑的问题包含3个方面[2](1)逼真性(2)实时性(3)可控性从实现方式上来看一般有3种方案[3]直接用图形函数进行绘制或者用第三方建模软件建模然后导出还有一种是用特定设备依靠非接触的视觉技术来自动生成由于实景的复杂程度一般比较高包括大量的不规则曲面直接用函数绘制参数很难选择而用非接触的视觉方法来重构物体几何信息的方法需要特殊设备并要标定十分复杂这里一般用第三方建模软件建模然后导出物体信息另外用第三方建模软件的原因还在于方便在虚拟现实环境中针对虚拟物体实现各种功能比如碰撞检测等2基于实景的虚拟现实场景的生成基于实景的虚拟现实场景的生成过程具体包括实景获取用第三方软件建模场景材质设置和真实感贴图虚拟现实系统初始化模型对象化导入与实时呈现等5个方面2.
1实景获取我们要对室内室外两个实景进行建模对于室内模型要反映现实中的一个会议室所以以该会议室作为样本展开设计首先精确地采集了房间里的建筑数据用尺测出会议室的长宽高并量出会议桌等要建模物体的几何尺寸然后对实物进行数码拍照拍照要从不同的角度力求反映物体的各个细节同样室外模型是参照一个足球场进行数据采集的如图1是拍摄的一幅照片图1会议室实景2.
2第三方软件建模获得前面的数据后参照数码照片在3DSMAX中进行场景建模由于机内度量单位与实测数据存在量纲不一致性需要在3DSMAX的UnitSetup中设置长度单位为m并设定1Unit等于1cm然后严格按尺度进行建模[4]在场景建模过程中大量运用了各种修改器和工具例如在制作天花板吊顶边柱平台时采用了放样方法在制作讲台会议桌时用了挤压和弯曲方法等对于大会议桌用基金项目国家863计划基金资助项目(2001AA114201)作者简介黄海明(1972)男博士生主研方向智能接口技术计算机图形学虚拟现实刘保卫讲师刘金刚教授博导马云鹏硕士定稿日期2004-06-12E-mailhuanglong11@163.
com184布尔方法在桌面上挖出方洞为了将几个物体合并成一个物体大量运用了绑定方法复杂的椅子就是如此构成的为了将几个物体组成一个整体运用了组合方法比如门在建模过程中对于复杂度的处理体现在各个方面包括在建立几何物体时对Segment值的处理上通过法线平滑来达到较好的效果对于某些细节可以不必建模直接用图片来模仿即采用基于图像的建模及绘制技术比如窗子暖气盒的建模就是直接在一个矩形上贴上对应的图片来近似生成的有些物体在用LoftLathe等工具生成的过程中会产生大量面片在设置参数的时候也需要谨慎考虑为了更有效地提高整个系统的运行效率我们采用了多层次细节模型LevelOfDetailLOD机制为每个物体都手工建立繁简不同的模型当物体离视点远时就调用相对简单的模型而近距离观察时调用相对复杂的模型这样可以在逼真性和速度之间达到均衡由于室内活动远近区别不是特别明显因此只设定了23个层次每个层次的适用范围是动态分配且有交集的这与一般的系统不同所谓动态分配是指根据当前场景的总复杂度来决定具体策略为通过跟踪记录当前帧中要被渲染的物体数物体集和总面片数在每次渲染前判断如果场景复杂度过高则使用某些对象的简易模型否则正常渲染这样就可以自适应速度的变化来决定模型的选择所谓有交集是在保证速度和一定逼真性的前提下在某种距离范围既可以调用简单模型也可以调用复杂模型即维持模型调用的惯性减少在固定范围边界区模型频繁切换所造成的不真实感另一方面为了在系统中方便控制有些大物体譬如大会议桌要成为一个独立的对象不能够分开进行建模而对于门这样的物体必须将门把手和门面组合起来才能方便后续的运动控制图2为场景的线框模型图2场景几何线框图2.
3场景材质和贴图要保证逼真性场景的材质和贴图是很关键的而且贴图的合理运用可以极大地减小模型的复杂度我们的目标就是参照真实模型进行材质设定和贴图处理尽量还原其真实度使之表现尽量接近于现实设置材质要反复调试才能达到要求对于会议桌由于桌的表面为大理石材质而其他的部分为木质因此在赋予材质时就有一定的困难所以在会议桌的表面又覆盖了一层使得桌面可以独立出来这样就方便了材质的制作当然为了保证大会议桌的整体性必须绑定起来贴图是材质设定中最复杂的一环这里包括两个方面一是纹理图的获取二是为物体设定贴图坐标即纹理映射纹理图的获取有两个途径从3DSMAX自带的纹理库和市场上第三方制作的各种素材库中获得是比较方便的另一个方法就是自做我们的室外场景中的看台所用的水泥纹理就是纹理库中的由于制作的场景需要反映现实中实际会议室的风貌因此大量的纹理都需要自做这也是对会议室拍照的目的之一因此数码拍照时要注意独立物体的整体性照片的清晰度以及环境光强在会议室的若干数码照片基础上根据物体建模的情况进行分割如图3(a)原始照片(b)分割得到的音箱图片图3图片分割分割的原则是与模型匹配按需制作考虑到最后在系统中进行纹理贴图的图片必须是2m2n大小进一步对纹理图进行规范化为了简化模型几个窗户均采用同一张图片对音箱的操作也是如此有些情况是需要特别处理的例如右墙台是一个整体应该拍一整张照片但台体太长而室内空间有限这种方案是不可能的于是分别拍了若干张进行拼接生成大纹理图但是由于边缘扭曲拼接质量很差最后改用多shape贴图将整个面分成多个子面Shape在各Shape上贴对应的小纹理图达到了预期目的另外一个问题是在现实中材质一样的物体由于拍摄照片的角度和距离的不同以及受周围环境如光强等的影响使得图片的明暗度和对比度都有很大的差别比如图4中的两个图片所采集到的是位于讲台两侧的小门由于光线的问题这两个材质相同的门却表现出很大的差异这将直接影响到贴图后模型的真实度因此要利用Photoshop将采集到的图片进行处理主要的工作就是处理其明暗度(a)左边门(b)右边门图4同材质的图片差异另外由于图5都属于右墙台模型的相邻子Shape但是它们的差别却非常大这对贴图后整个场景的真实度有着很大的影响在这里单纯进行明暗调节效果并不令人满意这是因为图片本身的明暗度差别就比较大而且其中还包括了一些非木质材质这就使调节后的图片有很大的失真为了使图片的明暗度和别的图片相同通过吸取图5(b)的色彩然后对图片的木质部分进行填涂就得到了图6(a)鱼缸(b)暖气片图5相邻物体的图片差异图6最终鱼缸纹理图这样虽然从直观上看图6失真很大但是在将其贴入模型后得到的整体效果却较好基本上看不出两部分的明暗差别场景的真实度有了提高在获得纹理图后要进行纹理映射3DSMAX中的标准几何物体已自带了贴图坐标这时只要指定纹理图纹理图就会自动按默认的纹理坐标贴到物体上不用另外设置不过几乎所有复杂的三维几何体都需要用映射修改器贴图因185为它们不会自动产生纹理坐标或者已经丧失了原来有效的纹理坐标另一方面物体自身携带的纹理坐标往往不符合我们的愿望还需要通过UVWmapModifier来设置坐标完成材质和贴图的处理后整个场景模型已经完成用3DSMAX生成的场景模型的文件格式为MAX文件可以在了解这种文件格式后直接读取数据更一般的做法是先在3DSMAX中将模型用Export工具导出为3DS文件格式然后进行数据读取这里采用了另一种方式导出成WRL文件格式然后对WRL文件进行数据读取这样的好处是可以利用VRML语言的文本特性更加方便地进行调试将模型导出成WRL文件时需要考虑几点(1)精度比如导出的数据统一取4位有效数值(2)各类信息不丢失比如里面包含顶点颜色点法线等信息(3)便于导入模块的处理比如取消原始体素Primitive化等2.
4虚拟现实系统初始化这里包括两个方面的初始化[5]一是VC中用OpenGL进行图形环境初始化二是系统各变量的初始化具体包括如下几个方面的设置(1)调用Windows接口的系统函数将HDC与HRC关联起来(2)设置颜色模式RGBRGBA模式或颜色索引模式为了与系统中模型的颜色形式一致采用了RGB模式(3)启用双缓存来绘制图像以增加图像的输出速度(4)设置屏幕大小投影方式和视景体系统中采用透视投影方式更适合虚拟现实中人的观察习惯由于系统最后要做成第一人称的虚拟漫游系统所以视角取45~60另外参数Z_near不能取得大参数Z_far不能取得小而且两者间的比值也不能太大以免导致Z冲突现象(5)设定光源并激活光源(6)定义其他开关量包括1)打开深度检测功能达到自动消隐的效果但由于会频繁进行比较导致系统速率下降2)打开对法线的自动归一化处理功能3)渲染过程中使颜色插值平滑4)前后帧缓存间颜色的混合作用与否及具体方式等等2.
5场景模型导入与呈现系统设计专门的导入模块将场景模型的文件导入系统当中使系统可以对场景进行显示操作和管理将WRL模型文件读入系统就是要获得所有的场景信息包括各物体名空间变换位置每个物体的具体外形几何数据对应的纹理信息等具体外形数据又包含颜色值顶点坐标三角点序法线值纹理坐标等读取模型文件的过程就是处理VRML节点的过程要处理的节点信息包括DEFTransform,Shape,Appearance,Material,geometry,IndexedFaceSet,Color,Coordinate,Normal,coordIndex等模型读入模块采用面向对象思想将每个物体对象化使得在后面模块进一步处理时更加方便所有物体生成显示列表具有很强的扩展性供后面的显示模块调用虚拟场景整个结构的核心为CArray但是每个元素虚拟物体可能是子树结构在系统中将场景的所有信息都放在CVirtualEnvironment类对象m_VEScene中类声明如下classCVirtualEnvironment{public:CVirtualObject*VECurrentObject;//当前处理的虚拟对象CArrayVEObjects;//虚拟场景中包含的虚拟对象charVEIntroduce[100];//介绍floatVELight[4];//虚拟场景中的灯光unsignedintVEObjectNum;//虚拟场景中包含的可显示的虚//拟对象的数目charVEName[40];//场景名charVESceneFileName[256];//虚拟场景总数据文件名GeometryDefm_GeometryDef[100];//有些外形shape的总体几//何数据不是直接从自身得到而是从已经定义的几何数据集中得//到这个数组就是用于提取这些信息这里假设不会有100个以//上的定义物体intGeometryDef_Num;//当前已定义的geometry数目}导入与呈现的具体步骤包括(1)读入虚拟场景所有信息得到对象数组VEobjectsVELight等全部数据函数LoadSceneData()就是用来实现该功能的部分伪代码如下while(!
feof(fp)){if((strstr(buf,"Transform")!
=NULL)&&(strstr(buf,"DEF")!
=NULL))//最外层的物体或组{tempObject=newCVirtualObject();//获取文件名ReadVObjectData(fp,buf,tempObject);//读取一个物体//添加到数组中deletetempObject;objectnum++;}else}(2)纹理的处理首先要找到物体对象与纹理图对应的信息然后将纹理图置入内存空间在这过程中用到了Device-IndependentBitmap(DIB)API之后创建纹理对象再为该物体创建列表时激活对应的纹理对象这里涉及纹理的平移旋转等处理我们进行了纹理操作部分代码如下glMatrixMode(GL_TEXTURE);glLoadIdentity();glRotatef(currentnode->m_Shape[i]->m_TextureTransform.
rotation*180/3.
1416,0,0,1);glScalef(currentnode->m_Shape[i]->m_TextureTransform.
scale[0],currentnode->m_Shape[i]->m_TextureTransform.
scale[1],1.
0);glMatrixMode(GL_MODELVIEW);(3)物体列表化相关的代码如下for(unsignedintk=0;kVEObjectNum;k++){tempnode=&VScene->VEObjects.
GetAt(k);currentnode=tempnode;MakeComplexNodeList(VScene,currentnode,k);//为物体建立列表VScene->VEObjects.
SetAt(k,*currentnode);}(4)动态更新虚拟场景每一次更新显示都是一次遍历的过程这种结构是开放式的即使加入新物体或删除老物体对算法均无影响如下为绘制单个物体的函数DrawComplexNode(CVirtualObject*curnode)//显示物体{CVirtualObject*childnode;while(curnode!
=NULL){glPushMatrix();glTranslatef(curnode->position.
v[0],curnode->position.
v[1],curnode->position.
v[2]);glRotatef(curnode->m_Transform.
rotation[3]*180/3.
142,curnode->m_Transform.
rotation[0],curnode->m_Transform.
rotation[1],curnode->m_Transform.
rotation[2]);186glPushMatrix();if(glIsList(curnode->VObjectNO))glCallList(curnode->VObjectNO);//调用对应的列表glPopMatrix();if(curnode->children!
=NULL){childnode=curnode->children;DrawComplexNode(childnode);//嵌套绘某物体}glPopMatrix();curnode=curnode->brother;}}图7图8是室内外场景的系统截图图7会议室场景图8足球场场景3结论本文所述的方法在本系统的实现过程中得到了具体运用基于真实环境会议室及足球场最终获得了对应的虚拟现实场景在逼真性实时性和可控制性上都达到了预期的目标基于这种场景生成的漫游系统将会产生更强的沉浸感而且由于实景与虚景的一致性使得基于实际人体运动跟踪的人景交互更为自然下一步可以在场景效果特别是材质属性上实现更多功能参考文献1李涛.
新奥特NASET虚拟演播室结构及特点[EB/OL].
http://www.
newauto.
com.
cn/xatb/234/31.
htm,2002-03-212李振波孟祥旭向辉.
复杂虚拟场景构造及交互漫游实现研究[J].
系统仿真学报200214(9)1183-11873DebevecPE.
ModelingandRenderingArchitecturefromPhotographs:AHybridGeometry-andImage-basedApproach[A].
SIGGRAPH'96,ComputerGraphics,1996:11-204晓欧.
3DSMAX5三维造型[M]北京中国宇航出版社20035和平鸽工作室.
OpenGL高级编程与可视化系统开发[M].
北京中国水利水电出版社2003(上接第155页)图4Web服务安全集成的解决方案Web服务的提供者通过Web服务PorServer向私有的UDDIServer发布新创建的服务时首先Web服务PorServer向PassportServer进行登录验证当已受验证的UDDIServer接收到来自PorServer的消息请求时先将SOAP头中的数字签名与认证信息进行分离解析并通过PassportServer身份确认返回后开始接受PorServer提供的服务接口注册同样请求者通过AppServer向UDDI中心请求查询Web服务时也需要PassportServer身份确认并根据UDDIServer对用户的访问权限进行控制一旦用户通过AppServer查找到所需要的服务后先与相应的PorServer进行相互的验证后再进行引用与绑定此时一方面在通信过程中采用SSL/TSL并在防火墙上设置相应的访问控制与安全策略从而可以保证点到点间通信过程的安全性另外在创建服务时为保证服务的机密性在实际开发过程中采用两种方式进行处理一是将存储在数据库中的数据直接加密二是在数据从数据库提取并映射到XML文档时采用RSA算法对关键数据内容或文档进行加密并将公钥通过PassportServer进行发放为保证服务的完整性与不可否认性在开发过程中则采了SHA-1算法对SOAP消息进行数字签名同时加入时间戳以防止服务的重放式攻击与否认而在AppServer的应用程序中则需要根据前文提供的解密与签名机制对SOAP消息进行解密和验证从而实现服务的动态绑定并为其本地的用户提供了个性化的服务选择参考文献1OgbujiU.
ThePast,PresentandFutureofWebServices.
http://www.
webservices.
org/index.
php/article/articleview/663/1/61/,2001-092AJointSecurityWhite-paperfromIBMandMicrosoft.
SecurityinaWebServicesWorld:AProposedArchitectureandRoadmap.
http://www.
verisign.
com/wss/architectureRoadmap.
pdf,2002-043徐锋吕建.
Web安全中的信任管理研究与进展.
软件学报,2002,13(11):2057-20644饶元,冯博琴.
WebServices分布式网络体系新架构.
计算机工程,2004,30(20):725W3CDraft.
XMLEncryptionSyntaxandProcessing.
http://www.
w3.
org/TR/2002/REC-xmlenc-core-200212106MactaggartM.
EnablingXMLSecurity:AnIntroductiontoXMLEncryptionandXMLSignature.
http://www-900.
cn.
ibm.
com/developerworks/cn/xml/s-xmlsec/index_eng.
shtml,2001-097OASISDraft,SAMLV2.
0ScopeandWorkItems.
http://www.
oasis-open.
org/committees/download.
php/4156/sstc-saml-scope-2.
0-draft-09.
pdf,2003-118OASISXACMLSpecification.
http://www.
oasis-open.
org/committees/xacml/repository/cs-xacml-specification-1.
1.
pdf,2003-089W3CWorkingDraft,XMLKeyManagementSpecification(XKMS)BindingsV.
2.
0.
http://www.
w3.
org/TR/2003/WD-xkms2-bindings-20030418,2003-0410Specification:WebServicesSecurity(WS-Security).
http://www-106.
ibm.
com/developerworks/library/ws-secure请求发布认证认证认证Web服务ProServerSSL/TSLWeb服务SSL/TSLAPPServerInternetUDDIServerFirevallFirevallUserCUserAUserBUserDDBServerPassportServer
部落分享过多次G-core(gcorelabs)的产品及评测信息,以VPS主机为主,距离上一次分享商家的独立服务器还在2年多前,本月初商家针对迈阿密机房限定E5-2623v4 CPU的独立服务器推出75折优惠码,活动将在9月30日到期,这里再分享下。G-core(gcorelabs)是一家总部位于卢森堡的国外主机商,主要提供基于KVM架构的VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日...
想必我们有一些朋友应该陆续收到国内和国外的域名注册商关于域名即将涨价的信息。大概的意思是说从9月1日开始,.COM域名会涨价一点点,大约需要单个9.99美元左右一个。其实对于大部分用户来说也没多大的影响,毕竟如今什么都涨价,域名涨一点点也不要紧。如果是域名较多的话,确实增加续费成本和注册成本。今天整理看到Dynadot有发布新的八月份域名优惠活动,.COM首年注册依然是仅需48元,本次优惠活动截止...
DMIT怎么样?DMIT是一家美国主机商,主要提供KVM VPS、独立服务器等,主要提供香港CN2、洛杉矶CN2 GIA等KVM VPS,稳定性、网络都很不错。支持中文客服,可Paypal、支付宝付款。2020年推出的香港国际线路的KVM VPS,大带宽,适合中转落地使用。现在有永久9折优惠码:July-4-Lite-10OFF,季付及以上还有折扣,非 中国路由优化;AS4134,AS4837 均...
鬼武者3内存修改器为你推荐
骁龙750g和765g哪个好麒麟970跟骁龙730哪个更好录屏软件哪个好现在什么录屏软件好,不卡的,推荐一个,谢谢。燃气热水器和电热水器哪个好电热水器和燃气热水器哪一个更安全,且更节省能源?dnf魔枪士转职哪个好dnf魔枪士转职哪个适合平民玩云盘哪个好免费的网盘哪个好用啊?辽宁联通网上营业厅中国联通网上营业厅固定电话费查询360云盘资源360云盘 百度云 微云 和彩云 那个好360云查杀360手机安全卫士的云查杀功能是否可靠?360云盘转存百度云盘360云盘文件如何快速转存到百度云月抛隐形眼镜哪个牌子的月抛隐形眼镜戴起来比较舒服?请推荐
独立ip主机 n点虚拟主机管理系统 西安服务器 安云加速器 博客主机 mediafire softbank官网 京东云擎 12306抢票助手 debian7 绍兴高防 湖南服务器托管 vip购优汇 傲盾官网 服务器是干什么用的 vul 贵阳电信 xuni 国内空间 电脑主机打不开 更多