首页> 中国专利> 支持骨架个性化编辑的轻量化三维树木模型构建方法

支持骨架个性化编辑的轻量化三维树木模型构建方法

摘要

支持骨架个性化编辑的轻量化三维树木模型构建方法是在提取原始树木模型骨架结构的基础上,通过人机交互个性化编辑树木模型骨架细节,使其形成具有全新骨架结构的三维树木模型。在此基础上采用基于圆台的枝干重构方法,以及基于凸包纹理模板贴图的树冠重构方法,分别对个性化编辑后的三维树木模型的枝干和树冠部分进行轻量化重构,从而快速且多样化地构建面向移动终端的三维树木模型。

著录项

  • 公开/公告号CN103914869A

    专利类型发明专利

  • 公开/公告日2014-07-09

    原文格式PDF

  • 申请/专利权人 浙江工业大学;

    申请/专利号CN201410066348.0

  • 发明设计人 董天阳;刘思远;纪磊;范菁;

    申请日2014-02-26

  • 分类号G06T17/00;

  • 代理机构杭州天正专利事务所有限公司;

  • 代理人王兵

  • 地址 310014 浙江省杭州市下城区潮王路18号

  • 入库时间 2024-02-19 23:58:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-22

    授权

    授权

  • 2014-08-06

    实质审查的生效 IPC(主分类):G06T17/00 申请日:20140226

    实质审查的生效

  • 2014-07-09

    公开

    公开

说明书

技术领域

本发明涉及计算机图形学的轻量化三维树木模型构建方法。

背景技术

三维场景的构建和快速渲染已经成为计算机图形学研究的一个重要研究领 域。树木不仅在现实生活环境中随处可见,而且是自然界不可缺少的一种植物类 型,同样在虚拟三维场景中也扮演着重要的角色,例如:三维动漫、三维网络游 戏、电影特效、园林设计、城市规划和军事模拟等领域。三维树木模型是影响虚 拟环境沉浸感和逼真度的重要因素。缺少树木的三维场景将会变得黯然失色,同 样在场景中使用逼真的、形态各异的三维树木模型能够大大提高场景的逼真度和 真实感,增强用户的视觉感知效果,给人以一种身临其境的感觉。

由于自然界中树木的形态各异、种类繁多、拓扑结构十分复杂,若想构建出 视觉效果逼真的三维树木模型,其建模过程非常繁琐且十分耗时。在对不同表现 形态的三维树木模型有大量需求的应用领域,如:园林设计、城市规划场等,建 模的过程将占据大量的工作时间。同时,利用现存的建模方法构建的三维树木模 型,其包含的信息、数据量也非常庞大,这不仅增加了应用系统的存储空间,还 加大了三维场景的渲染时间和网络化应用中的模型传输时间。此外,由于当前网 络带宽、延时和拥塞等网络因素和移动终端硬件条件的限制,严重影响了三维植 物模型在移动终端应用同步操作的实时性。因此,如何能够快速且多样化地构建 面向移动终端的三维树木模型,降低三维树木建模的时间开销,已经成为计算机 图形学研究中的一个重要研究课题。

发明内容

本发明要克服现有技术的上述缺点,提供一种能够快速且多样化地构建面向 移动终端的三维树木模型。

本发明所述的支持骨架个性化编辑的轻量化三维树木模型构建方法,包括下 列步骤:

步骤一,从三维树木模型的三角网格数据中获取树木枝干的顶点信息,将枝 干部分划分成若干个拓扑结构简单的子树枝,以子树枝为基本处理单元进行骨架 提取,并整合所有子树枝的骨架形成完整的树木模型骨架结构;树木枝干模型的 骨架提取过程包括以下五个分步骤:

1.1从模型文件中获取树木枝干的顶点信息,包括顶点编号,顶点三维坐标x、 y、z的值;

1.2根据树木枝干的顶点信息,建立一个枝干的带权n阶无向连通图G;根据 组成每个平面图元的顶点信息可以得到无向连通图G的边(v,v');每条边的权值就 是构成这条边的两个顶点(xa,ya,za)和(xb,yb,zb)间的欧式距离d,如公式(1)。

d=(xa-xb)2+(ya-yb)2+(za-zb)2---(1)

1.3在无向连通图G中选择坐标值z最小的顶点为源点s,采用最短路径算法, 计算从源点s出发到图G中所有顶点的最短路径,形成有向带权图G';

1.4将有向带权图G'划分成k个层次,即将每条枝干利用公式(2)平均分成k段 (di…dk);

di=dmax/k(i=1,…,k)   (2)

dmax为有向带权图G'中所有顶点之间的最大距离,k的值根据树木的品种和 树木模型的拓扑层次分别确定;随后,计算有向带权图G'中每一层次的中心节 点O和半径R,中心节点即可作为枝干的骨架节点;

1.5依次连接枝干的每个骨架节点,得到树木模型的骨架曲线,即树木模型 的枝干骨架结构;

步骤二,根据骨架节点的三维坐标点数据,依次计算每个子树枝的末端骨架 节点到父亲树枝骨架节点的距离,选择其中最小距离值的一个骨架节点为子树枝 的生长点,连接子树枝末端骨架节点和子树枝的生长点;

p为树枝a末端骨架节点,为了寻找树枝a在主干上的生长点vgrow,则需要求出 主干的骨架节点中距离p最近的点;首先利用公式(3)计算出主干上的点 vi∈Vskeleton(i=1...n)到点p的距离di,其中n为主干上的顶点数量;

设树枝上两个点p(xp,yp,zp)和vi(xi,yi,zi),则两点之间的距离表示为di

di=(xp-xi)2+(yp-yi)2+(zp-zi)2---(3)

在所有的距离值di(i=1...n)中,求出距离最小值dmin,可表示为:

dmin=min(di|i=1…n)   (4)

则树枝a的生长点vgrow为距离dmin所代表的骨架节点;p点距离主干中的q点 最近,q点即为树枝a的生长点。

步骤三,通过鼠标、触摸屏等交互方法编辑三维树木模型的生长点位置,由 用户进行生长点拖拽,并根据树枝生长点位置的变化实时平移调整该生长点对应 的子树枝;

设原始生长点p坐标为(x,y,z),通过交互式编辑后p’的坐标为(x’,y’,z’)则平移 向量为可表示为:

p=p-p=(x-x,y-y,z-z)---(5)

又假设树枝b包含的骨架节点集合为Vskeleton,由于树枝b生长点的位置变化将 引起Vskeleton中所有点坐标位置改变,则有:

vi=vi+p{viVskeleton}---(6)

平移调整后,通过交互式编辑首先将p的位置向左下方移动,移动的向量为 树枝b和属于它的子树枝向左移动同样的向量如果将树枝a的生长点q的 位置向正下方移动则树枝a和属于他的子树枝同样向下移动

步骤四,用户可以选择向上或向下保持生长角度的子树枝生长方向的调整策 略,并根据选择的子树枝生长方向调整策略计算平移调整后子树枝的生长角度, 使得经过骨架编辑后子树枝的生长角度与原始状态保持一致;

4.1采用向上保持生长角度策略时,以子树枝与其生长点上端的父亲树枝之 间的夹角为树枝生长角度;

θ和分别是树枝a和树枝b的生长角度,也就是树枝a和b与向量和之 间的夹角;夹角计算过程如下:

假设向量的坐标为(x1,y1,z1),生长点p和树枝b的中心点o所形成的向量 的坐标为(x2,y2,z2),则和之间的夹角θ的余弦值利用公式(7)可求得:

cosθ=pm·po|pm|*|po|---(7)

其中,分子为向量和的点积,分母为向量和模的数量积,计算 公式分别如下:

pm·po=x1*x2+y1*y2+z1*z2---(8)

|pm|*|po|=x12+y12+z12*x22+y22+z22---(9)

然后,将求得的向量之间夹角的余弦值cosθ带入公式(10),求得夹角的弧度 值rad,可表示为:

rad=acos(cosθ)   (10)

最后,将弧度值rad带入公式(11)转换成向量间的角度θ;

θ=rad*1803.14---(11)

经过骨架编辑平移调整后的骨架结构中,由于树枝b位置的平移,使得树枝b 与向量之间的夹角变为θ';运用向上保持生长方向调整策略,调整树枝b与之间的夹角θ',使它与θ相等;同时,由于p位置发生偏移,使得与树枝a之 间的夹角发生变化,因此树枝a的所有坐标信息同样也需要进行调整使得夹角为

4.2在向下保持生长角度的策略中,以子树枝与其生长点下端的父亲树枝之 间的夹角为树枝生长角度;

树枝b的生长角度为ξ,树枝b与向量之间的夹角,与向上保持生长方向 相比,同样是生长点p的位置发生变化;

4.3由于骨架节点坐标均为三维坐标,在进行骨架个性化编辑时所产生的位 置偏移也是相对于三维空间的,因此在进行树枝生长方向选择调整时的旋转轴为 三维空间任意坐标向量;p原始三维坐标点,p’为旋转后的坐标点,l为旋转轴;

设原始点p坐标为(x,y,z),绕过点Q(x0,y0,z0)的方向向量为的任意 坐标轴l,旋转后得到p’的坐标为(x’,y,z’)。p’的计算公式(12)如下所示:

x'=(x-x0)*(nx2*(1-cosθ)+cosθ)+

(y-y0)*(nx*ny*(1-cosθ)-nzsinθ)+

(z-z0)*(nx*nz*(1-cosθ)+nysinθ)+x0

y'=(x-x0)*(nx*ny*(1-cosθ)+nz*sinθ)+

(y-y0)*(ny2*(1-cosθ)+cosθ)+

(z-z0)*(ny*nz*(1-cosθ)-nxsinθ)+y0

z'=(x-x0)*(nx*nz*(1-cosθ)-ny*sinθ)+

(y-y0)*(ny*nz*(1-cosθ)+nx*sinθ)+

(z-z0)*(nz2*(1-cosθ)+cosθ)+z0   (12)

公式12中θ是点p绕旋转轴l的旋转角度,(nx,ny,nz)是旋转轴l的方向余弦, 可表示为公式(13),其中|l|为旋转轴向量模。

(nx,ny,nz)=(xl|l|,yl|l|zl|l|)---(13)

生长点p经过个性化编辑平移到p’,使得被动树枝a调整自己的生长角度; 利用公式(11)求出旋转后树枝a中的所有坐标值。定义旋转坐标轴l的方向向量为和的法向量,且过生长点q。向量的计算公式如下:

n=ab=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k---(14)

步骤5,采用骨架节点和圆台的方式表示三维树木模型,根据一一对应的骨 架节点和半径信息来实现枝干模型的重构;

一根树枝由若干圆台表示出来,该圆柱体的底面和顶面具有不同的半径,且 圆柱体的上下面以枝干的骨架节点为圆心;根据一一对应的骨架节点和半径信息 构造一系列具有不同上、下面的圆柱体来实现树枝模型的重构;

5.1在骨架节点中获取每根树枝的骨架节点的三维坐标点数据和半径信息;

5.2将树枝底向上的骨架节点和半径每两个分为一组,然后,每组中的骨架 节点对应圆台的下底和上底中心位置,根据半径信息绘制圆台;

5.3将所有圆台进行拼接构成模型的枝干;

步骤六,通过计算树木模型局部树枝的外部轮廓,用凸包的方式进行表示, 然后通过选取已有的纹理模板去填充相应的树枝凸包,实现树木模型整体树冠的 重构;

6.1根据树枝包含的子树枝个数和树枝的生长方向将所有纹理进行分类,在 每一类纹理中选取一个纹理作为模板纹理;

6.2通过采用增量凸包算法求取局部枝叶三维凸包,并记录三维坐标信息;

6.3根据凸包的三维信息在纹理模板库中选用复合树枝基本信息的纹理进行 三维树冠重构。

本发明的优点是:

●根据树木模型枝干层次结构分解三维模型,对每一个子树枝分别利用距 离变换的方法进行骨架提取,不仅减小了算法的时间复杂度,而且计算 出来的骨架更能体现树木枝干模型的拓扑结构信息。

●采用基于圆台的三维树木枝干模型的轻量化重构方法,以及凸包纹理模 板贴图的三维树木树冠模型的轻量化重构方法,不仅能有效地简化三维 树木模型、减少模型存储空间和网络传输时间,而且通过三维凸包的计 算能够很好地体现原始树木模型的整体拓扑结构,从而使得构建的三维 树木模型能够保持较高的视觉质量。

●采用交互式的方法个性化编辑三维树木模型,不仅能够根据用户需求设 计树木模型的骨架,而且能够根据模型骨架快速轻量化重构三维树木模 型。

●通过采用生长点平移策略和树枝生长角度调整策略,使得个性化编辑后 的三维树木模型能够保持树枝间的生长信息和内部结构,更加符合植物 的生长规则和力学规律。

附图说明

图1是本发明的流程图

图2a是顶点数据示意图,图2b是无向连通图示意图,图2c是有向带权图示意图,

图2d是层有向带权示意图,图2e是模型骨架示意图

图3a是骨架节点距离示意图,图3b是子树枝的生长点示意图

图4a是原骨架模型示意图,图4b是个性化编辑后的骨架模型示意图

图5a是原始模型示意图,图5b是编辑树枝生长位置示意图,图5c是生长角度调整 示意图

图6a是原始模型示意图,图6b是生长角度调整示意图

图7a是三维空间点绕任意轴旋转的示意图,图7b是树枝生长角度调整的示意图

图8a是圆台表示树枝示意图,图8b是原始模型示意图,图8c是重构模型示意图

图9a是原始模型示意图,图9b是凸包效果图,图9c是凸包纹理模板贴图

具体实施方式

支持骨架个性化编辑的轻量化树木建模方法是在提取原始树木模型骨架结 构的基础上,通过人机交互个性化编辑树木模型骨架细节,使其形成具有全新骨 架结构的三维树木模型。在此基础上采用基于圆台的枝干重构方法,以及基于凸 包纹理模板贴图的树冠重构方法,分别对个性化编辑后的三维树木模型的枝干和 树冠部分进行轻量化重构,从而形成完整的三维树木模型。支持骨架个性化编辑 的轻量化三维树木模型构建过程如图1所示。

步骤一,从三维树木模型的三角网格数据中获取树木枝干的顶点信息,将枝 干部分划分成若干个拓扑结构简单的子树枝,以子树枝为基本处理单元进行骨架 提取,并整合所有子树枝的骨架形成完整的树木模型骨架结构。

树木枝干模型的骨架提取过程主要包括以下五个步骤,如图2所示。

1.1从模型文件中获取树木枝干的顶点信息,包括顶点编号,顶点三维坐标x、 y、z的值,如图2(a)所示。

1.2根据树木枝干的顶点信息,建立一个枝干的带权n阶无向连通图G,如图 2(b)所示。根据组成每个平面图元的顶点信息可以得到无向连通图G的边(v,v')。 每条边的权值就是构成这条边的两个顶点(xa,ya,za)和(xb,yb,zb)间的欧式距离d, 如公式(1)。

d=(xa-xb)2+(ya-yb)2+(za-zb)2---(1)

1.3在无向连通图G中选择坐标值z最小的顶点为源点s,采用最短路径算法, 计算从源点s出发到图G中所有顶点的最短路径,形成有向带权图G',如图2(c)所 示。

1.4将有向带权图G'划分成k个层次如图2(d)所示,即将每条枝干利用公式(2) 平均分成k段(di…dk)。

di=dmax/k(i=1,…,k)   (2)

图2(d)中,dmax为有向带权图G'中所有顶点之间的最大距离,k的值因树木的 品种和树木模型的拓扑层次的不同而不同。随后,计算有向带权图G'中每一层 次的中心节点O和半径R,中心节点即可作为枝干的骨架节点。

1.5依次连接枝干的每个骨架节点,得到树木模型的骨架曲线,即树木模型 的枝干骨架结构。

步骤二,根据骨架节点的三维坐标点数据,依次计算每个子树枝的末端骨架 节点到父亲树枝骨架节点的距离,选择其中最小距离值的一个骨架节点为子树枝 的生长点,连接子树枝末端骨架节点和子树枝的生长点。

图3为确定树枝生长点的示意图,图3(a)中点p为树枝a末端骨架节点。为了 寻找树枝a在主干上的生长点vgrow,则需要求出主干的骨架节点中距离p最近的点。 首先需要利用公式(3)计算出主干上的点vi∈Vskeleton(i=1...n)到点p的距离di,其 中n为主干上的顶点数量。

设树枝上两个点p(xp,yp,zp)和vi(xi,yi,zi),则两点之间的距离表示为di

di=(xp-xi)2+(yp-yi)2+(zp-zi)2---(3)

在所有的距离值di(i=1...n)中,求出距离最小值dmin,可表示为:

dmin=min(di|i=1…n)   (4)

则树枝a的生长点vgrow为距离dmin所代表的骨架节点。图3(a)中用虚线表示p 点到其他骨架节点的距离,从图3(b)中可以看出p点距离主干中的q点最近,所以 q点即为树枝a的生长点。

步骤三,通过鼠标、触摸屏等交互方法编辑三维树木模型的生长点位置,由 用户进行生长点拖拽,并根据树枝生长点位置的变化实时平移调整该生长点对应 的子树枝。

图4为枝干骨架个性化编辑平移调整示意图,其中图4(a)为一个树枝模型经 过骨架节点提取后的原始骨架模型示意图。图4(a)中的树枝主干上包含4个子树 枝,每一根树枝和属于它的所有子树枝共同组成一个簇,它们的生长位置随着父 亲树枝的生长点p位置改变而变化。

设原始生长点p坐标为(x,y,z),通过交互式编辑后p’的坐标为(x’,y’,z’)则平移 向量为可表示为:

p=p-p=(x-x,y-y,z-z)---(5)

又假设树枝b包含的骨架节点集合为Vskeleton,由于树枝b生长点的位置变化将 引起Vskeleton中所有点坐标位置改变,则有:

vi=vi+p{viVskeleton}---(6)

平移调整后的结果如图4(b)所示,通过交互式编辑首先将p的位置向左下方 移动,移动的向量为树枝b和属于它的子树枝向左移动同样的向量如果 将树枝a的生长点q的位置向正下方移动则树枝a和属于他的子树枝同样向下 移动

步骤四,用户可以选择向上或向下保持生长角度的子树枝生长方向的调整策 略,并根据选择的子树枝生长方向调整策略计算平移调整后子树枝的生长角度, 使得经过骨架编辑后子树枝的生长角度与原始状态保持一致。

采用向上保持生长角度策略时,定义树枝的生长角度为子树枝与其生长点上 端的父亲树枝之间的夹角为生长角度,如图5(a)中树枝b的生长角度为θ。

图5为向上保持生长方向调整策略,其中图5(a)、(b)和(c)分别为原始模型、 编辑树枝生长位置和生长角度调整后模型结构。图5(a)中θ和分别是树枝a和树 枝b的生长角度,也就是树枝a和b与向量和之间的夹角。夹角计算过程如 下:

假设向量的坐标为(x1,y1,z1),生长点p和树枝b的中心点o所形成的向量 的坐标为(x2,y2,z2),则和之间的夹角θ的余弦值利用公式(7)可求得:

cosθ=pm·po|pm|*|po|---(7)

其中,分子为向量和的点积,分母为向量和模的数量积,计算 公式分别如下:

pm·po=x1*x2+y1*y2+z1*z2---(8)

|pm|*|po|=x12+y12+z12*x22+y22+z22---(9)

然后,将求得的向量之间夹角的余弦值cosθ带入公式(10),求得夹角的弧度 值rad,可表示为:

rad=acos(cosθ)   (10)

最后,将弧度值rad带入公式(11)转换成向量间的角度θ。

θ=rad*1803.14---(11)

图5(b)为图5(a)经过骨架编辑平移调整后的骨架结构图,由于树枝b位置的平 移,使得树枝b与向量之间的夹角变为θ'。图5(c)是在图5(b)的基础上运用向 上保持生长方向调整策略,调整树枝b与之间的夹角θ',使它与图5(a)中的θ相 等。同时,由于p位置发生偏移,使得与树枝a之间的夹角发生变化,因此树 枝a的所有坐标信息同样也需要进行调整使得夹角为

在向下保持生长角度的策略中,定义树枝的生长角度为子树枝与其生长点下 端的父亲树枝之间的夹角为生长角度,如图6(a)中树枝b的生长角度为ξ。

图6为向下保持生长方向,其原理和向上保持生长方向相同。唯一的不同点 是树枝的生长方向评定标准,即为图6(a)中树枝b与向量之间的夹角。与向 上保持生长方向相比,同样是生长点p的位置发生变化。

由于骨架节点坐标均为三维坐标,在进行骨架个性化编辑时所产生的位置偏 移也是相对于三维空间的,因此在进行树枝生长方向选择调整时的旋转轴为三维 空间任意坐标向量。图7(a)为三维空间点绕任意轴旋转的示意图,其中p原始三 维坐标点,p’为旋转后的坐标点,l为旋转轴。

设原始点p坐标为(x,y,z),绕过点Q(x0,y0,z0)的方向向量为的任意 坐标轴l,旋转后得到p’的坐标为(x’,y,z’)。p’的计算公式(12)如下所示:

x'=(x-x0)*(nx2*(1-cosθ)+cosθ)+

(y-y0)*(nx*ny*(1-cosθ)-nzsinθ)+

(z-z0)*(nx*nz*(1-cosθ)+nysinθ)+x0

y'=(x-x0)*(nx*ny*(1-cosθ)+nz*sinθ)+

(y-y0)*(ny2*(1-cosθ)+cosθ)+

(z-z0)*(ny*nz*(1-cosθ)-nxsinθ)+y0

z'=(x-x0)*(nx*nz*(1-cosθ)-ny*sinθ)+

(y-y0)*(ny*nz*(1-cosθ)+nx*sinθ)+

(z-z0)*(nz2*(1-cosθ)+cosθ)+z0   (12)

公式12中θ是点p绕旋转轴l的旋转角度,(nx,ny,nz)是旋转轴l的方向余弦, 可表示为公式(13),其中|l|为旋转轴向量模。

(nx,ny,nz)=(xl|l|,yl|l|zl|l|)---(13)

图7(b)为树枝生长角度调整示意图,图中生长点p经过个性化编辑平移到p’, 使得被动树枝a调整自己的生长角度。我们可以利用公式(11)求出旋转后树枝a 中的所有坐标值。定义旋转坐标轴l的方向向量为和的法向量,且过生 长点q。向量的计算公式如下:

n=ab=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k---(14)

步骤5,采用骨架节点和圆台的方式表示三维树木模型,根据一一对应的骨 架节点和半径信息来实现枝干模型的重构。

图8(a)中一根树枝可有由若干圆台表示出来,该圆柱体的底面和顶面具 有不同的半径,且圆柱体的上下面以枝干的骨架节点为圆心。因此,本文根据一 一对应的骨架节点和半径信息构造一系列具有不同上、下面的圆柱体来实现树枝 模型的重构。

首先,在骨架节点中获取每根树枝的骨架节点的三维坐标点数据和半径信 息。其次,将树枝底向上的骨架节点和半径每两个分为一组。然后,每组中的骨 架节点对应圆台的下底和上底中心位置,根据半径信息绘制圆台。最后,将所有 圆台进行拼接构成模型的枝干。图8(b)和图8(c)分别为原始枝干模型和根据提取 出来的骨架重构的模型。

步骤六,通过计算树木模型局部树枝的外部轮廓,用凸包的方式进行表示, 然后通过选取已有的纹理模板去填充相应的树枝凸包,实现树木模型整体树冠的 重构。

首先,根据树枝包含的子树枝个数和树枝的生长方向将所有纹理进行分类, 在每一类纹理中选取一个纹理作为模板纹理。然后,通过采用增量凸包算法求取 局部枝叶三维凸包,并记录三维坐标信息。最后,根据凸包的三维信息在纹理模 板库中选用复合树枝基本信息的纹理进行三维树冠重构。具体流程如图9所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号