发明内容
鉴于现有技术当中存在的上述缺陷,本发明提供一种通过网页进行高速3D场景装饰并渲染的方法。
本发明提供一种通过网页进行3D场景装饰并渲染的方法,包括:载入装饰目标的平面图;识别装饰目标的平面图,并根据用户选择的相应的高度数据生成装饰目标的3D模型作为3D场景模型,将该3D场景模型输出到3D场景模型文件中;将3D场景模型文件载入3D渲染引擎系统,对3D场景模型文件进行预处理,生成所述3D场景模型文件的二进制快照文件;用户在3D场景中指定、选择目标位置;根据用户在3D场景中选择的目标位置,读取目标位置对应的装饰部件数据库和目标位置对应的材质数据库;当3D渲染被触发时,3D渲染引擎载入所述3D场景模型文件的二进制快照文件和用户选择的装饰部件的二进制快照文件,对用户选择的装饰部件的不同的组成部分进行分色渲染,并将分色渲染的数据保存在蒙板图片中;根据用户选择的目标组成部分在所述用户选择的装饰部件上的位置和/或目标位置,重新计算材质规格、材质延展;将用户选择的目标材质根据材质规格、材质延展显示在用户选择的目标组成部分上和/或目标位置上并在网页中显示装饰后的装饰目标的3D模型效果图。
如上所述的通过网页进行3D场景装饰并渲染的方法,通过如下方式生成二进制快照文件:申请一块与原OBJ文件同等大小的内存空间,对OBJ文件中的三维数据格式进行分析,生成用于渲染的可供3D渲染引擎直接使用的二进制格式数据,并将该二进制格式数据按照预先设定的顺序依次重新载入到该同等大小的内存空间中并相应修改指针偏移距离。
如上所述的通过网页进行3D场景装饰并渲染的方法,所述二进制快照文件是通过lzo格式压缩的二进制流的形式。
如上所述的通过网页进行3D场景装饰并渲染的方法,所述3D场景模型文件为OBJ格式文件或者专用的自定义格式文件。
如上所述的通过网页进行3D场景装饰并渲染的方法,所述OBJ格式文件中使用的数据格式是16位无符号整数。
如上所述的通过网页进行3D场景装饰并渲染的方法,所述装饰部件数据库中的装饰部件模型文件为二进制快照文件。
如上所述的通过网页进行3D场景装饰并渲染的方法,能够通过网页触发3D渲染。
如上所述的通过网页进行3D场景装饰并渲染的方法,通过Javascript技术显示装饰后的装饰目标的3D模型效果图。
如上所述的通过网页进行3D场景装饰并渲染的方法,所述效果图是装饰后的装饰目标的3D模型的360度全景的图片。
如上所述的通过网页进行3D场景装饰并渲染的方法,在屏幕页面上操作时,可以通过键盘、鼠标或触屏显示该360度全景图片,达到三维展示的效果。
本发明的方法通过将装饰目标的平面图生成对应装饰目标的3D模型的二进制快照文件,并且根据用户在3D场景模型上选择的目标位置选择对应的装饰部件,以及根据用户选择的目标组成部分在用户选择的装饰部件上的位置和/或目标位置重新计算材质规格、材质延展,然后将用户选择的目标材质根据材质规格、材质延展显示在目标组成部分和/或目标位置上来实现下列效果:用户基于装饰目标的平面图,在装饰目标中进行装饰部件的替换并对装饰部件的不同组成部分进行不同材质的替换和/或对目标位置进行不同材质的替换时,只需选定装饰目标的3D场景模型上的目标位置、需要在目标位置上显示的装饰部件、装饰部件的目标材质和/或目标位置的目标材质,不需对3D场景模型进行修改,或者重新创建新模型,就可实现在装饰目标上进行装饰部件的更换、材质在装饰部件各组成部分和/或目标位置上的逼真显示,减少了大量的计算、传输、存储时间,减轻了系统的负担,可以通过网页以云方式实现过去必须以客户端方式完成的装饰与渲染工作,同时能够节省用户的时间。
通过纳入本文的附图以及随后与附图一起用于说明本发明的某些原理的具体实施方式,本发明的方法和装置所具有的其它特征和优点将变得清楚或更为具体地得以阐明。
具体实施方式
请参阅图1所示,图1示出了本发明的一个实施例的通过网页进行高速3D场景装饰并渲染的方法的流程图。该实例提供了一种通过网页对室内装修设计进行高速3D场景装饰并渲染的方法,由用户通过网页对存储于服务器中的装饰部件以及装饰部件的不同组成部分进行选择,进行实时的装修场景装饰、设计,可以第一人称视角展现场景装饰设计的效果,并可以云方式来技术实现。所述方法包括:
步骤100、载入装饰目标的平面图。可以是通过由用户扫描平面图、上传平面图、调出已经存储的平面图或者其它方式。
步骤101、识别装饰目标的平面图,并根据用户选择的相应的高度数据生成装饰目标的3D模型作为3D场景模型,将该3D场景模型输出到3D场景模型文件中。在步骤101中,识别的装饰目标平面图可以是开发商的建筑平面图,也可以是其它有尺寸标注的平面布置图。在装饰目标平面图是建筑平面图的一个实施例中,根据装饰目标的平面图和装饰目标的高度(如楼层的层高),生成装饰目标的的3D模型来作为3D场景模型。所述3D场景模型文件包含模型的所有空间几何数据。在一个实施例中,为了便于与其他系统交换,3D场景模型的格式采用通用性较高的OBJ格式,这个格式中包括了该模型的三维几何数据,这种几何数据包含了点,线构成的几万至几百万个三角形。当然,3D场景模型也可以采用其它的或专用的自定义格式。
现有的OBJ文件中对长度的描述采用的是32位无符号整数,可以表达的范围从0到232-1,这足以描述一个4万公里的边长的物体。而对于大多数在线场景设计的需求来说,这个数值太大了,因此,本发明对此进行了改进,在本发明的一个实施例中,将该数据减小为16位无符号整数。这样可描述的物体最大到65米,足够满足大多数场景设计的需求。这一措施减少了磁盘文件的大小,经测算大约为40%。
步骤102、将3D场景模型文件载入3D渲染引擎系统,对3D场景模型文件进行预处理,生成所述3D场景模型文件的二进制快照文件。
在一个实施例中,生成快照文件的算法为:申请一块与原OBJ文件同等大小的内存空间,对OBJ文件中的三维数据格式进行分析,生成用于渲染的可供3D渲染引擎直接使用的二进制格式数据,并将该二进制格式数据按照预先设定的顺序依次重新载入到该同等大小的内存空间中并相应修改指针偏移距离。
具体地讲,待OBJ文件完全载入内存并分析其三维数据格式进而获得二进制格式数据之后,将将该二进制格式数据保存至磁盘文件,即生成二进制快照文件。这一过程仅需执行一次,之后的渲染不再需要OBJ格式的文件,除非对3D场景模型本身重新进行修改。由此可以提高渲染的速度。
在一个实施例中,为了提高载入速度,本发明没有采用系统提供的malloc机制,而是另行建立了一个内存管理模块,该模块将同一个3D场景模型的二进制格式数据连续存放于一个内存区域中,在读取二进制快照文件时不需要再次分析该快照文件的数据格式,直接将二进制快照文件读入内存中的位置即可,该过程不需对二进制快照文件的三维数据格式进行分析,只进行简单的IO操作,性能高。
在另一个具体的实施例中,考虑到磁盘IO相对于内存读写性能慢两个数量级,本发明采用lzo压缩机制来保存文件,即二进制快照文件可以是通过lzo格式压缩的二进制流的形式。这样可以进一步减小文件70%以上。采用这种机制后,OBJ文件的大小减少了80%以上,原来150M的OBJ文件被转换成了20M左右的快照文件,其载入性能也从10秒提高到了1秒以内。
步骤103、用户在3D场景中指定、选择目标位置。
步骤104、根据用户在3D场景中选择的目标位置,读取目标位置对应的装饰部件数据库和目标位置对应的材质数据库。
用户可以通过鼠标在3D场景上的滑动来选择目标位置,通过屏幕输入来选择材质数据库,如皮质、棉布、大理石、木料、墙纸等的数据,以及装饰部件数据库,如沙发、橱柜等的数据,如图2中所示。
装饰部件数据库中的装饰部件模型文件可以为二进制快照文件,也可以为OBJ文件或专用的自定义格式文件。如果为OBJ文件,则读取装饰部件模型之后,首先需要对装饰部件模型进行分析,以生成二进制快照文件。数据库中的装饰部件模型文件为二进制快照文件时,可以加快对装饰目标进行3D场景装饰并渲染的整个过程。
需要说明的是,如果装饰部件数据库中的装饰部件模型文件为OBJ文件或专用的自定义格式文件,则生成装饰部件模型文件的二进制快照文件的过程相同于生成3D场景模型文件的二进制快照文件,并且前者具有与后者相同的特性,比如为了提高渲染速度,二进制快照文件是通过lzo格式压缩的二进制流的形式,等等。
步骤105、当3D渲染被触发时,3D渲染引擎载入所述3D场景模型文件的二进制快照文件和用户选择的装饰部件的二进制快照文件,对用户选择的装饰部件的不同的组成部分进行分色渲染,并将分色渲染的数据保存在蒙板图片中。
分色渲染是使部件的不同组成部分显示不同的颜色,具体地,使作为目标的组成部分显示为一种颜色,而其他组成部分为透明色。
以用户选择沙发作为装饰部件为例,其包括靠背、坐垫等组成部分。用户可以通过鼠标在用户选择的装饰部件上的滑动来选择目标组成部分(如靠背、坐垫等)。系统将根据用户以鼠标在装饰部件上选择的位置的坐标来判断与该坐标对应的蒙板图片,以将该蒙板图片覆盖在用户选择的装饰部件上,对选择的目标组成部分进行渲染结果显示,向用户显示已选择好的目标组成部分,使得用户可以实现对装饰部件的组成部分进行材质的替换。
步骤106、根据用户选择的目标组成部分在所述用户选择的装饰部件上的位置和/或目标位置,重新计算材质规格、材质延展。
如果需要显示不同的地板,如大理石地板、木地板等,需要根据用户选择的目标位置计算大理石或木料等的规格、延展;如果需要对沙发等的不同组成部分进行材质的替换,则需要根据用户选择的目标组成部分在装饰部件上的位置计算材质规格、材质延展;如果既需要显示不同的地板,又需要对地板上放置的沙发等的不同组成部分进行材质的替换,则需要根据用户选择的目标组成部分在装饰部件上的位置和目标位置计算材质规格、材质延展。
步骤107、将用户选择的目标材质根据材质规格、材质延展显示在用户选择的目标组成部分上和/或目标位置上并在网页中显示装饰后的装饰目标的3D模型效果图。
可以通过网页触发3D渲染。在一个实施例中,可通过Javascript技术在网页中显示装饰后的装饰目标的3D模型效果图,所述效果图是装饰后的装饰目标的3D模型的360度全景的图片,用户在屏幕页面上操作,可以通过键盘、鼠标或触屏显示该360度全景图片,达到三维展示的效果。
渲染引擎可根据渲染请求读取并载入所需要渲染的装饰部件的二进制快照文件。同时还会载入渲染所需要的材质图片文件等。载入完毕之后,引擎首先设定一个相机位置,这个设定可以是系统默认的设定(如正常人的眼高),也可以是用户输入的选择设定,然后对三维模型中的每个点分析其光线反射后产生的图像,并根据用户选择的目标组成部分在装饰部件上的位置重新计算材质规格、材质延展,最终组合成一个渲染结果图。
本发明中,3D场景模型文件被载入之后的二进制格式数据,通过连续内存分配技术,在内存中直接保存为文件镜像,再次载入不需要进行分析,直接使用。这种方式最大限度的保存了渲染的中间数据,避免了每次渲染都需要在内存重构模型的过程。
本发明的方法通过将装饰目标的平面图生成对应装饰目标的3D模型的二进制快照文件,并且根据用户在3D场景模型上选择的目标位置选择对应的装饰部件,以及根据用户选择的目标组成部分在用户选择的装饰部件上的位置和/或目标位置重新计算材质规格、材质延展,然后将用户选择的目标材质根据材质规格、材质延展显示在目标组成部分和/或目标位置上来实现下列效果:用户基于装饰目标的平面图,在装饰目标中进行装饰部件的替换并对装饰部件的不同组成部分进行不同材质的替换和/或对目标位置进行不同材质的替换时,只需选定装饰目标的3D场景模型上的目标位置、需要在目标位置上显示的装饰部件、装饰部件的目标材质和/或目标位置的目标材质,不需对3D场景模型进行修改,或者重新创建新模型,就可实现在装饰目标上进行装饰部件的更换、材质在装饰部件各组成部分和/或目标位置上的逼真显示,减少了大量的计算、传输、存储时间,减轻了系统的负担,可以通过网页以云方式实现过去必须以客户端方式完成的装饰与渲染工作,同时能够节省用户的时间。
另外,由于装饰后的装饰目标的3D模型的效果图可以是装饰渲染后的装饰目标的3D模型的360度全景图片,这样,用户可以通过键盘、触屏等的动作,如图3中键盘A、D的选择,以第一人称视角显示左右转动的效果;用户也可以通过键盘、触屏等改变用户与显示目标的远近距离,如图3中键盘W、S的选择,以使显示目标的效果与距离相对应(这与现有技术中浏览图片时的移动、放大、缩小的原理是类似的),这样最终实现用户以第一人称视角浏览的效果图。在合适的数据量、计算与IO能力的情况下,就可以实现动态的第一人称视角浏览。
在上述各实施例中表述的以键盘、鼠标或触屏等方式实现的用户选择只是作为举例,并不排除采用如触屏的多指控制、专用控制器等其它方式实现用户选择。
本发明的通过网页进行高速3D场景装饰并渲染的方法,并不局限应用于室内家装设计的场景装饰与渲染。通过对装饰目标的平面图、材质数据库、装饰部件数据库或其它必要数据库的增加及变化,亦可应用于不同区域与范围的3D场景装饰与渲染,如城区建筑、街道的3D场景装饰与渲染。
本发明的通过网页进行高速3D场景装饰并渲染的方法,并不局限于以上描述的网页技术实现方式,各种以云方式,或非云方式布置的服务器架构,只要适用于本申请的通过网页进行3D场景装饰并渲染的方法,均属于本申请的技术范围。
上述实施例是用于例示性说明本发明的原理及其功效,但是本发明并不限于上述实施方式。本领域的技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修改。因此本发明的保护范围,应如本发明的权利要求书所覆盖。