一种基于增强现实的空间绘画方法
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种基于增强现实的空间绘画方法。
背景技术
目前,大多数空间绘画技术都是基于VR(虚拟现实)的空间画笔完成,需要通过VR设备和手柄实现在虚拟场景中进行艺术创作,如果没有眼镜现实设备作为载体,则无法体验3D立体场景绘画。而在这个互联网盛行的时代,电子移动终端和AR(增强现实技术)快速发展,移动终端得到普及,基于移动终端的增强现实应用越来越受大众欢迎。现今人机交互、计算机绘图还处于一个应用多种设备辅助完成的阶段,其操作较复杂且失去创作绘画的乐趣,因此将AR技术与图形绘制算法相结合应用到资源和计算能力有限的手持移动终端随之成为研究热点。
因此,如何将增强现实技术应用于移动端实现现实场景绘画,增强绘画作品的真实感和立体感是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于增强现实的空间绘画方法,
为了实现上述目的,本发明采用如下技术方案:
一种基于增强现实的空间绘画方法,采用增强现实技术利用移动端实现在移动端的现实场景绘画,以下为具体步骤:
步骤1:利用移动端的摄像机拍摄画面,采用增强现实开发框架中的3D虚拟空间中的相机ARCamera捕捉所述拍摄画面,并作为背景纹理进行存储,通过会话ARSession管理设备相机和ARKit追踪设备与现实世界之间的相对位置和运动数据实时的捕获所述背景纹理,最后将所述背景纹理的YUV颜色空间转为RGB颜色空间,并渲染成3D场景在所述人机交互界面上显示;
步骤2:根据所述3D场景同时计算所述摄像机的V观察矩阵和P投影矩阵,用户选择任意画笔素材,进行绘图操作,所述移动端获取所述绘图操作的2D坐标轨迹,通过将所述3D场景的2D屏幕坐标转为3D空间坐标,从而对应得到所述2D坐标轨迹的3D空间运动轨迹坐标;
步骤3:采用线性插值算法和曲线平滑算法对所述3D空间运动轨迹坐标进行圆滑处理,形成均匀且圆滑的3D坐标轨迹;
步骤4:根据所述3D坐标轨迹和选择的所述画笔素材信息,构造三角网格图形;在所述3D坐标轨迹的每个3D顶点生成两个对称坐标点,将所述对称坐标点依次连接形成带状三角网格图形;然后采用OpenGL/Metal渲染管线对所述绘图操作进行3D图像渲染,将所述3D坐标轨迹数据投影到屏幕渲染输出;
步骤5:记录所述绘图操作生成过程,并生成视频文件,选择播放类型,点击开播放绘画过程,点击关,所述人机交互界面显示绘画结束时的静止状态。
优选的,所述步骤2中计算所述3D空间坐标转换的数学公式为:
pt3Dnear=pt2DscreenNear*inv(V*P*M) (1)
pt3Dfar=pt2DscreenFar*inv(V*P*M) (2)
pt3D=pt3Dnear+(pt3Dfar-pt3Dnear)*scale (3)
其中,pt2DscreenNear为近裁剪平面坐标,其中z坐标取值为0;pt2DscreenFar为远裁剪平面坐标,其中z坐标取值为1;inv()为矩阵逆运算,M为世界矩阵,V为观察矩阵,P为投影矩阵,scale是自定义的比例参数,pt3D为3D空间坐标值;根据公式(1)~(3)依次计算得到所述3D空间坐标值,形成所述3D空间运动轨迹坐标。
优选的,所述线性插值算法的输入为所述3D运动轨迹坐标,输出为均匀间距的所述3D运动轨迹坐标,其具体公式为:
q=p+α(p-n) (4)
其中α为系数,p为前驱顶点,n为后继顶点,q为需要插入的顶点。
优选的,采用曲线平滑算法对均匀间距的所述3D空间运动轨迹坐标进行计算,输出平滑的3D坐标轨迹;所述曲线平滑算法采用三角函数拟合算法,计算公式为:
k=tanf(π*fc) (5)
n=1.0/(1.0+k/α+k*k) (6)
a0=k*k*n,a1=a0*2,a2=a0 (7)
b1=(k*k-1.0)*n*2,b2=(1.0-k/α+k*k)*n (8)
z1=val*a1+z2-b1*(val*a0+z1),z2=val*a2-b2*(val*a0+z1) (9)
smothval=val*a0+z1 (10)
其中,a0,a1,a2,b1,b2,z1,z2为所述曲线平滑算法计算中的6个参数,val为所述3D空间运动轨迹坐标,k和n为中间系数,fc为平滑系数,初始值为0.01,α为常量系数;通过公式(5)~(8)初始化计算所述参数a0,a1,a2,b1,b2的值,然后利用公式(9)迭代计算z1和z2参数,最后通过公式(13)得到圆滑处理后的所述3D坐标轨迹。
优选的,所述步骤4中构造三角网格图形计算公式如下:
pt3Dleft.y=pt3D.y+width/2 (11)
pt3Dright.y=pt3D.y-width/2 (12)
其中pt3Dleft和pt3Dright为所述3D坐标轨迹的每个顶点运算生成的对称顶点坐标,依次连接形成所述带状三角网格图形。
优选的,所述步骤4中将所述3D坐标轨迹数据投影到屏幕渲染输出,是将所述3D坐标轨迹进行坐标转换,转换成2D屏幕坐标,计算公式如下:
pt2D=pt3D*V*P*M (13)
其中,M为世界矩阵,pt3D为所述3D空间坐标轨迹,pt2D为所述2D屏幕坐标,完成空间坐标到屏幕坐标的转换,从而显示在屏幕上;每绘制一笔数据,会生成一组线数据,多组所述线数据采用链表结构存储,利用快速排序算法实现绘制曲线的不同渲染次序,最终将所述绘制曲线渲染到所述人机交互界面上。
优选的,通过设定工具界面完成所述画笔素材配置,所述工具界面包括:画笔起始颜色选择框,根据颜色码选择起始颜色,当起始颜色不同时则为渐变颜色;添加纹理图片选择框,选择纹理图片并读取图片数据,设置画笔纹理,纹理不同,呈现出的效果会更加丰富多彩;画笔线宽选择框,选择固定范围内任意宽度;播放开关和播放类型选择框,控制开关播放绘画过程或切换播放绘画过程的类型。
优选的,在所述移动端系统为ios系统和android系统时,分别采用ARkit和ARcore增强现实开发框架进行空间绘画,两个所述增强现实开发框架均提供设备动作追踪、相机场景捕获、高级场景处理和AR元素展示功能。
优选的,选择保存或分享,将所述绘画过程保存或分享到QQ、微信等社交平台。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于增强现实的空间绘画方法,使用移动端在现实场景中绘画,也可以绘制各式各样的彩带,通过切换不同的纹理画刷,实现多样化绘制,并实时动态播放绘图过程。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的空间绘画实现过程示意图;
图2附图为本发明提供的基于增强现实的空间绘画方法流程结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于增强现实的空间绘画方法,采用增强现实技术利用移动端实现在移动端的现实场景绘画,以下为具体步骤:
S1:利用移动端的摄像机拍摄画面,采用增强现实开发框架中的3D虚拟空间中的相机ARCamera捕捉拍摄画面,并作为背景纹理进行存储,通过会话ARSession管理设备相机和ARKit追踪设备与现实世界之间的相对位置和运动数据实时的捕获背景纹理,最后将背景纹理的YUV颜色空间转为RGB颜色空间,并渲染成3D场景在人机交互界面上显示;
S2:根据3D场景同时计算摄像机的V观察矩阵和P投影矩阵,用户选择任意画笔素材,进行绘图操作,移动端获取绘图操作的2D坐标轨迹,通过将3D场景的2D屏幕坐标转为3D空间坐标,从而对应得到2D坐标轨迹的3D空间运动轨迹坐标;
S3:采用线性插值算法和曲线平滑算法对3D空间运动轨迹进行圆滑处理,形成均匀且圆滑的3D坐标轨迹;
S4:根据3D坐标轨迹和选择的画笔素材信息,通过构造三角网格图形,在3D坐标轨迹的每个3D顶点生成两个对称坐标点,将对称坐标点依次连接形成彩带图形;然后采用OpenGL/Metal渲染管线对绘图操作进行3D图像渲染,将3D坐标轨迹数据投影到屏幕渲染输出;
S5:记录绘图操作生成过程,并生成视频文件,选择播放类型,点击开播放绘画过程,点击关,人机交互界面显示绘画结束时的静止状态。
为了进一步优化上述技术方案,S2中计算3D空间坐标转换的数学公式为:
pt3Dnear=pt2DscreenNear*inv(V*P*M) (1)
pt3Dfar=pt2DscreenFar*inv(V*P*M) (2)
pt3D=pt3Dnear+(pt3Dfar-pt3Dnear)*scale (3)
其中,pt2DscreenNear为近裁剪平面坐标,其中z坐标取值为0;pt2DscreenFar为远裁剪平面坐标,其中z坐标取值为1;inv()为矩阵逆运算,M为世界矩阵,V为观察矩阵,P为投影矩阵,scale是自定义的比例参数,pt3Dnear为近裁剪3D坐标,pt3Dfar为远裁剪3D坐标,pt3D为3D空间坐标值;根据公式(1)~(3)依次计算得到3D空间坐标值,形成3D空间运动轨迹坐标。
为了进一步优化上述技术方案,利用线性插值算法将述3D运动轨迹坐标转换为均匀间距的3D运动轨迹坐标,线性插值算法的计算公式为:
q=p+α(p-n) (4)
其中α为系数,p为前驱顶点,n为后继顶点,q为需要插入的顶点。
为了进一步优化上述技术方案,采用曲线平滑算法对均匀间距的3D空间运动轨迹坐标进行计算,输出平滑的3D坐标轨迹;曲线平滑算法采用三角函数拟合算法,计算公式为:
k=tanf(π*fc) (5)
n=1.0/(1.0+k/α+k*k) (6)
a0=k*k*n,a1=a0*2,a2=a0 (7)
b1=(k*k-1.0)*n*2,b2=(1.0-k/α+k*k)*n (8)
z1=val*a1+z2-b1*(val*a0+z1),z2=val*a2-b2*(val*a0+z1) (9)
smothval=val*a0+z1 (10)
其中,a0,a1,a2,b1,b2,z1,z2为曲线平滑算法计算中的6个参数,val为3D空间运动轨迹坐标,k和n为中间系数,fc为平滑系数,初始值为0.01,α为常量系数;通过公式(5)~(8)初始化计算参数a0,a1,a2,b1,b2的值,然后利用公式(9)迭代计算z1和z2参数,最后通过公式(13)得到圆滑处理后的3D坐标轨迹。
为了进一步优化上述技术方案,S4中构造三角网格图形计算公式如下:
pt3Dleft.y=pt3D.y+width/2 (11)
pt3Dright.y=pt3D.y-width/2 (12)
其中pt3Dleft和pt3Dright为3D坐标轨迹的每个顶点运算生成的对称顶点坐标,依次连接形成带状三角网格图形。
为了进一步优化上述技术方案,S4中将3D坐标轨迹数据投影到屏幕渲染输出,是将3D坐标轨迹进行坐标转换,转换成2D屏幕坐标,计算公式如下:
pt2D=pt3D*V*P*M (13)
其中,M为世界矩阵,pt2D为2D屏幕坐标,pt3D为3D空间坐标轨迹;完成空间坐标到屏幕坐标的转换,从而显示在屏幕上;每绘制一笔数据,会生成一组线数据,多组所述线数据之间采用链表结构存储,利用快速排序算法实现绘制曲线的不同渲染次序,最终将所述绘制曲线渲染到人机交互界面上。
为了进一步优化上述技术方案,快速排序的基本思想是通过一趟快速排序,将要排序的数据分割成独立的两部分,其中一部分的所有数据比另外一部分的所有数据都要小,然后再按此方法递归地对这两部分数据分别进行快速排序,如此一直进行下去,直到排序完成。
为了进一步优化上述技术方案,通过设定工具界面完成画笔素材配置,工具界面包括:画笔起始颜色选择框,根据颜色码选择起始颜色,当起始颜色不同时则为渐变颜色;添加纹理图片选择框,选择纹理图片并读取图片数据,设置画笔纹理,纹理不同,呈现出的效果会更加丰富多彩;画笔线宽选择框,选择0.1cm~2.0cm(实际距离)内任意宽度;播放开关和播放类型选择框,控制开关播放绘画过程或切换播放绘画过程的类型。
为了进一步优化上述技术方案,在移动端系统为ios系统和android系统时,分别采用ARkit和ARcore增强现实开发框架进行空间绘画,两个增强现实开发框架均提供设备动作追踪、相机场景捕获、高级场景处理和AR元素展示功能。
为了进一步优化上述技术方案,选择保存或分享,将绘画过程保存或分享到QQ、微信等社交平台。
为了进一步优化上述技术方案,在绘制绘画轨迹之后还设置有绘画处理功能,可对绘制轨迹进行撤销处理,可清空动画播放等。
本发明的空间绘画方法主要包括模板配置模块和空间绘制模块两个部分,其中,模板配置过程主要负责设置画笔颜色、宽度、素材纹理、动画等,通过引擎模板配置工具快速将AE的合成转换成模板。空间绘制模块主要负责对人机交互界面产生的操作进行一系列的数据处理,生成圆滑的3D空间曲线并通过OpenGL/Metal渲染到场景中。
本发明利用移动端实现在现实场景中绘画,增强绘画作品的真实感和立体感,通过人机交互界面,切换不同的纹理画刷,实现多样化绘制,并支持实时动态播放绘图过程,满足人们的创作需求和作品欣赏。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。