一种二维与三维结合的数字楼盘展示方法
技术领域
本发明属于数字楼盘展示领域,更具体地涉及一种二维与三维结合的数字楼盘展示方法。
背景技术
随着计算机硬件的飞速发展,越来越多的大型3D游戏,超大虚拟数字楼盘都可以流畅的运行在计算机上,但目前的移动电子设备,如手机,平板,上网本,超级本等,以及硬件配置较低计算机设备难以运行大型3D游戏及虚拟现实场景。
为解决移动设备及配置较低设备运行较为大型的场景,通常在三维制作软件中将要表现的内容渲染为序列帧,将三维模型转换为二维图片后,通过逐帧动画的形式在硬件配置较低的设备上运行。
逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。因为逐帧动画的帧序列内容不一样,不但给制作增加了负担而且最终输出的文件量也很大,但它的优势也很明显:逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容,而它类似与电影的播放模式,很适合于表演细腻的动画。例如:人物或动物急剧转身、头发及衣服的飘动、走路、说话以及精致的3D建筑效果等等。
通过单纯控制二维序列帧展现的方式,在没有交互操作时,画面是静止的,呈现在屏幕上的影像是一张二维的图片,缺乏3D技术的实时动态效果,视觉体验感不佳。
发明内容
1、本发明的目的。
本发明为了解决现有技术中在配置较低的设备中无法运行3D楼盘展示,并且通过逐帧动画处理制作复杂、文件量大无法交互的问题,而提出了一种二维与三维结合的数字楼盘展示方法。
2、本发明所采用的技术方案。
二维与三维结合的数字楼盘展示方法,按照如下步骤进行:
步骤1、对图像的二维序列进行渲染:
将图像序列分为展示图像序列以及通道图像序列,展示图像序列展示整个场景,通道图像序列将需要做通道的图像帧设为白色,不需要做通道的图像帧设为黑色,其中所述的通道为展示图像序列的动画路径;
步骤2、将步骤1中的展示图像序列和通道图像序列处理为带有透明通道的图像序列;
步骤3、3D模型制作:
对移动物体模型在3D建模软件中做帧动画,并将渲染步骤一的展示图像序列文件导出;
步骤4、不同深度的摄像头渲染:
A、步骤2的图像序列和步骤3的3D模型入到3D引擎;
B、不同深度摄像机分别渲染不含通道的图像序列,3D模型及动画,含通道的图像序列,深度的顺序为从小到大;
步骤5、交互图像加载:
根据鼠标或触摸移动的距离进行二维序列帧的持续加载显现,并对3D动画摄像机的动画进行采样处理,采样时需要赋予合适旋转因子,此参数因子可根据二维图像序列帧的总帧数及动画的旋转角度做除法计算得出,即二维图像序列帧加载到不同的角度时,3D模型也相应的旋转到所对应的位置;
步骤6、动画循环连续播放:
当前显示的二维序列帧大于总序列数时加载最小一帧,反之当二维序列帧小于第一帧时,加载最大一帧;
步骤7:对运动物体动态的处理:
当对设备没有交互操作时,对运动物体模型用编写好Shader进行动态处理。
更进一步,所述步骤1中3D MAX软件对图像的二维序列进行渲染。
更进一步,所述的步骤2中用Adobe After Effects软件将步骤1中的展示图像序列和通道图像序列处理为带有透明通道的图像序列。
更进一步,所述的步骤4中将步骤2的图像序列和步骤3的3D模型入到3D引擎,3D引擎为Unity,Unreal Engine UDK,Quest3D。
更进一步,步骤6中动画循环连续播放,在二维图像渲染过程中,将上一帧的二维图像序列卸载。
3、本发明的有益效果。
(1)本发明在通过二维图像序列与三维模型相结合的方式,为移动等低配设备实现了极为逼真震撼的大型3D效果,由于二维图片不占用渲染性能,且所用的3D模型量极少,故不会对设备造成性能上的影响,弥补了移动等低配设备无法运行大型3D场景的问题。
(2)通过本发明结合了渲染的逼真效果,又融合了3D的实时动态效果。
(3)采用本发明,在真机小米1S,小米2S,华为P6,Iphone4S, Iphone5s,Ipad3,Ipad4,Ipad mini1,三星S4以及2010年出产的老式笔记本联想G450测试,均能流畅的运行,3D效果比较明显,相较于传统的纯序列展示方式,有了较大3D视觉体验感。
附图说明
图1为处理过程方法流程图。
图2程序逻辑流程图。
具体实施方式
为了使专利局的审查员尤其是公众能够更加清楚地理解本发明的技术实质和有益效果,申请人将在下面以实施例的方式作详细说明,但是对实施例的描述均不是对本发明方案的限制,任何依据本发明构思所作出的仅仅为形式上的而非实质性的等效变换都应视为本发明的技术方案范畴。
实施例
图1是本发明技术方案的主流程图。如图1所示,本发明提出的二维与三维结合的数字楼盘展示系统及方法包括下列步骤:
步骤一:3D MAX软件进行图像二维序列的渲染,此步骤共需两种图片序列,一种为展示用的图像序列,即项目中展示的整个场景,需做一动画路径;一种为黑白标记需做通道的的图像序列,将场景中的所有光源关闭,将需要做通道的地方标记白色,不需要做通道的位置标记为黑色,动画路径为第一种序列的路径;
步骤二:Adobe After Effects(AE)软件进行影像处理将步骤一的两种序列处理为带有透明通道的图像序列(如道路,河流等皆可处理为通道)。此时的图像序列帧中的道路,河流,船只等均为透明镂空;
步骤三:3D模型的制作,如车辆,飞鸟,船只等,此类模型需要在3D建模软件中做帧动画,如车辆船只的行驶,鸟的飞行路径等,且需将渲染步骤一的动画文件导出。
步骤四:此步骤可参考附图2的介绍,详细为:
将上述步骤的二维图像序列帧,3D模型及动画导入到3D引擎(如Unity,UnrealEngine 3(UDK),Quest3D等);
多个不同深度摄像机分别渲染不含通道的图像序列,3D模型,含通道的图像序列。深度的顺序为从小到大,且渲染3D模型的摄像机含步骤三的动画;
判断鼠标或触摸移动的距离进行二维序列帧的持续加载显现,并对3D动画摄像机的动画进行采样处理,采样时需要赋予合适旋转因子,此参数因子可根据二维图像序列帧的总帧数及动画的旋转角度做除法计算得出,即二维图像序列帧加载到不同的角度时,3D模型也相应的旋转到所对应的位置;
当前显示的二维序列帧大于总序列数时加载最小一帧,反之当二维序列帧小于第一帧时,加载最大一帧。此算法主要实现动画的循环连续的播放;
卸载内存。移动等低配设备的内存有限,如若对设备的内存不加管控,则势必会造成内存的溢出,甚至程序崩溃,影响客户体验。故在二维图像渲染时,需将上一帧的二维图像序列卸载(实际在内存中处于游离状态);
步骤五:对特殊水的处理。当对设备没有交互操作时,对模型水用编写好Shader进行动态处理,已到达真实水的效果。
步骤六:经以上四个步骤,即可进行交互操作,即使没有交互时,车辆,飞鸟,船只,水同样是动态呈现。
图2为程序逻辑流程图。
步骤1、将图像序列压缩导入,引用为程序的对象;
步骤2、生成多个不同深度且不同渲染层的相机;
步骤3、判断鼠标或触摸屏划过的距离是否大于给定的像素数,如果判断鼠标或触摸屏划过的距离大于给定的像素数,跳转至步骤4,如果鼠标或触摸屏划过的距离小于等于给定的像素数,则继续循环累加像素;
步骤4、判断当前帧是否大于最大帧,如果当前帧大于最大帧则将当前帧置为等于最小帧,如果当前帧小于等于最大帧则将当前帧,则跳转至步骤3;
步骤5、同时判断当前帧是否小于最小帧,如果小于最小帧则设当前帧等于设置最大帧,如果大于等于最小帧,则跳转至步骤3。