一种3D模型的临摹渲染方法与流程

文档序号:17470753发布日期:2019-04-20 05:48阅读:1278来源:国知局
一种3D模型的临摹渲染方法与流程

本发明涉及一种3d模型的临摹渲染方法,属于图像处理技术领域。



背景技术:

3d模型也可以说是用三维软件建造的立体模型,包括各种建筑、人物、植被、机械等等,比如一个大楼的3d模型图。

如今网络广告形式也多种多样,文字广告、图片广告、视频广告等等,其目的就是给用户提供更好的浏览方式、展示效果、吸引用户,提高用户的关注、互动、参与,以最终实现转化率。二维展示方式在不远的将来被三维立体方式所代替,这是一个必然趋势,但这必须以一种操作简便、成本低、真实感强的3d建模技术为基础。

现有3d建模工具进行模型建模完成之后,会形成一个模型文件,以3dmax为例,模型文件fbx,文件中描述的是大量的三角面(或四角面)、uv、材质等信息,数据复杂;数据量极大;需要专业的3d渲染引擎才能进行图形渲染;硬件配置要求高。而且,现在的互联网技术盛行,这样的文件描述信息已经脱离了互联网的发展轨道,数据扩展使用(比如说算法分析使用)难度较大,版本的维护比较麻烦,无法进行数据的结构化存储。而且,不同3d模型的模型特征无法通过机器学习进行转述,发挥更大的作用。



技术实现要素:

本发明的目的是:解决现有技术中3d渲染需要引擎对图形渲染、硬件配置要求高的问题,提出了一种新颖的3d建模方法。

技术方案是:

一种3d模型的临摹渲染方法,包括如下步骤:

第1步,针对需要建模的3d模型,构建出其包围盒;

第2步,将包围盒沿其长宽高三个方向拆分成子长方体;

第3步,将每个子长方体与原3d模型进行碰撞检测,将未发生碰撞的子长方体删除;

第4步,将剩下的子长方体在空间特征向量构建为新的3d模型。

在一个实施方式中,还包括以下步骤:根据所需要的3d模型的精度来确定第2步中拆分子长方体的个数。

在一个实施方式中,每个子长方体的大小都相等。

在一个实施方式中,在第3步中进行碰撞检测中,将相互碰撞的打上标签1,不相互碰撞的打上标签0。

在一个实施方式中,在第3步中进行碰撞检测后,构建以下向量:

[

[[a111,a121,……,a1n1],[a211,a221,……,a2n1],……,[am11,am21,……,amn1]],

[[a112,a122,……,a1y2],[a212,a222,……,a2y2],……,[am12,am22,……,amy2]],

………………

………………

[[a11p,a12p,……,a1yp],[a21p,a22p,……,a2yp],……,[ax1p,ax2p,……,axyp]],

];

其中,m、n、p分别为在包围盒的长、宽、高方向上的子长方体的个数。

有益效果

1、简化了3d模型的空间结构数据。

2、3d模型数据系统结构化存储,摆脱传统的文件存储。

3、3d模型渲染脱离了3d引擎,更轻量化,促进了3d模型的移动化展示需求,降低了模型设计到模型展示的门槛。

4、3d图形的空间计算更加简单,可以很方便的解决模型的碰撞问题,模型的位置问题

5、其他算法更加易于使用分析。

6、可以通过机器学习进行不同模型特征分析,有更大的应用空间。

附图说明

图1是拟进行重新建模的圆柱体。

图2是构建的包围盒。

图3是包围盒进行拆分成子长方体。

图4是重新构建的3d模型。

图5是本方法的流程图。

具体实施方式

在实际图像处理中,需要对3d模型进行构建和渲染,而采用常规的3d引擎渲染时,导致计算量巨大、数据处理难度高、硬件配置要求高。

本发明的总体方法是:针对3d模型,可以获取到模型的包围盒(一个三维空间长方体坐标点集合,包围3d模型的最小长方体),根据实际的精度要求,可以将包围盒拆分成若干个小长方体,借用3d引擎分别针对原始3d模型和若干个小长方体进行碰撞检测,对每个小长方体进行空间标记,那么3d模型的外围轮廓的曲面会与某个/某些长方体发生了碰撞,因此,可以利用现有的3d碰撞检测技术区别出发生了碰撞,因此挑选出那些发生了碰撞的长方体,就可以获得曲面的轮廓,进而通过这些长方体的空间坐标位置构建出新的3d模型,也就使得整体3d模型得到了简化。

以下实施例是用一个圆柱体作为例子进行对该方法的说明:

现有特殊的3d模型就是一个圆柱体,如图1,取左下脚一个点作为三维坐标系的原点,取圆柱的底面圆半径为r,底面圆的直径为d=2r,圆柱的高为h。

借用3d引擎的计算包围盒,那么它的包围核就是图2,包围盒的三维空间坐标为

(0,0,0)(d,0,0)(0,d,0)(d,d,0)

(0,0,h)(d,0,h)(0,d,h)(d,d,h)

图2经过4×4×4的拆分(即x、y、z轴各个方向都是4等份拆分)之后得到图3,形成一个由64个小长方体组成的大的长方体,我们称这64个小长方体分别为b1,b2,b3,…,b64,那么每个小长方体的长l=r/4,宽w=r/4,高h=r/4。

假定p(x,y,z)表示三维空间(x,y,z)位置上小长方体的八个坐标点

(0,0,0),(rx/4,0,0),(rx/4,ry/4,0),(0,ry/4,0)

(0,0,hz/4),(rx/4,0,hz/4),(rx/4,ry/4,hz/4),(0,ry/4,hz/4)

将得到的各个小长方体的三维空间坐标p(x,y,z)分别利用3d引擎进行自动建模,形成空间模型m(x,y,z)。

借助于3d渲染引擎或者其他3d碰撞检测的工具,我们可以分别将m(x,y,z)与原始3d模进行碰撞检测,当m(x,y,z)与原始模型相互碰撞的则打上碰撞标签1,不相互碰撞的打上碰撞标签0。这样,可以得到一个碰撞矩阵v。这样,可以得到一个碰撞矩阵v。

碰撞矩阵v如下:

碰撞矩阵v(x,y,z)x,y,z∈(1,2,3,4)如下:

v(x,y,z)=[

[[0,1,1,0],[1,1,1,1],[1,1,1,1],[0,1,1,0]],

[[0,1,1,0],[1,1,1,1],[1,1,1,1],[0,1,1,0]],

[[0,1,1,0],[1,1,1,1],[1,1,1,1],[0,1,1,0]],

[[0,1,1,0],[1,1,1,1],[1,1,1,1],[0,1,1,0]],

]

v(x,y,z)与p(x,y,z)是一一对应的。

重绘3d模型时,碰撞矩阵v中,碰撞标签为0的,则不绘制该小长方体;碰撞标签为1的,则绘制该小长方体。由上述碰撞矩阵v(x,y,z)以及p(x,y,z),可以重绘3d模型如图4所示。

那么,当拆分的小长方体足够多的时候,重绘的3d模型无限接近于原始3d模型,至于拆分多少个小长方体由具体的模型精度决定。

此时,3d模型已经变成矩阵v和p(x,y,z)组成的描述,不需要3d引擎也可以进行模型重绘、模型表示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1