发明名称 支持骨架个性化编辑的轻量化三维树木模型构建方法
摘要 支持骨架个性化编辑的轻量化三维树木模型构建方法是在提取原始树木模型骨架结构的基础上,通过人机交互个性化编辑树木模型骨架细节,使其形成具有全新骨架结构的三维树木模型。在此基础上采用基于圆台的枝干重构方法,以及基于凸包纹理模板贴图的树冠重构方法,分别对个性化编辑后的三维树木模型的枝干和树冠部分进行轻量化重构,从而快速且多样化地构建面向移动终端的三维树木模型。
申请公布号 CN103914869B 申请公布日期 2017.02.22
申请号 CN201410066348.0 申请日期 2014.02.26
申请人 浙江工业大学 发明人 董天阳;刘思远;纪磊;范菁
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 王兵;黄美娟
主权项 支持骨架个性化编辑的轻量化三维树木模型构建方法,包括下列步骤:步骤一,从三维树木模型的三角网格数据中获取树木枝干的顶点信息,将枝干部分划分成若干个拓扑结构简单的子树枝,以子树枝为基本处理单元进行骨架提取,并整合所有子树枝的骨架形成完整的树木模型骨架结构;树木枝干模型的骨架提取过程包括以下五个分步骤:1.1从模型文件中获取树木枝干的顶点信息,包括顶点编号,顶点三维坐标x、y、z的值;1.2根据树木枝干的顶点信息,建立一个枝干的带权n阶无向连通图G;根据组成每个平面图元的顶点信息可以得到无向连通图G的边(v,v');每条边的权值就是构成这条边的两个顶点(x<sub>a</sub>,y<sub>a</sub>,z<sub>a</sub>)和(x<sub>b</sub>,y<sub>b</sub>,z<sub>b</sub>)间的欧式距离d,如公式(1);<img file="FDA0001116464860000011.GIF" wi="1245" he="75" />1.3在无向连通图G中选择坐标值z最小的顶点为源点s,采用最短路径算法计算从源点s出发到图G中所有顶点的最短路径,形成有向带权图G';1.4将有向带权图G'划分成k个层次,即将每条枝干利用公式(2)平均分成k段,分别为d<sub>1</sub>,d<sub>2</sub>,d<sub>3</sub>,…,d<sub>k</sub>;d<sub>i</sub>=d<sub>max</sub>/k,(i=1,…,k)   (2)d<sub>max</sub>为有向带权图G'中所有顶点之间的最大距离,k的值根据树木的品种和树木模型的拓扑层次分别确定;随后,计算有向带权图G'中每一层次的中心节点O和半径R,中心节点即可作为枝干的骨架节点;1.5依次连接枝干的每个骨架节点,得到树木模型的骨架曲线,即树木模型的枝干骨架结构;步骤二,根据骨架节点的三维坐标点数据,依次计算每个子树枝的末端骨架节点到父亲树枝骨架节点的距离,选择其中最小距离值的一个骨架节点为子树枝的生长点,连接子树枝末端骨架节点和子树枝的生长点;p为树枝a末端骨架节点,为了寻找树枝a在主干上的生长点v<sub>grow</sub>,则需要求出主干的骨架节点中距离p最近的点;首先利用公式(3)计算出主干上的点v<sub>i</sub>∈V<sub>skeleton</sub>到点p的距离L<sub>i</sub>,i=1···n,其中n为主干上的顶点数量;设树枝上的点p(x<sub>p</sub>,y<sub>p</sub>,z<sub>p</sub>)和主干上的点v<sub>i</sub>(x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>),则两点之间的距离表示为L<sub>i</sub>:<img file="FDA0001116464860000012.GIF" wi="1174" he="86" />在所有的距离值L<sub>i</sub>中,i=1···n,求出距离最小值L<sub>min</sub>,表示为:L<sub>min</sub>=min(L<sub>i</sub>|i=1…n)   (4)则树枝a的生长点v<sub>grow</sub>为距离L<sub>min</sub>所代表的骨架节点;p点距离主干中的q点最近,q点即为树枝a的生长点;步骤三,通过鼠标、触摸屏交互方法编辑三维树木模型的生长点位置,由用户进行生长点拖拽,并根据树枝生长点位置的变化实时平移调整该生长点对应的 子树枝;设原始生长点p坐标为(x,y,z),通过交互式编辑后p’的坐标为(x’,y’,z’)则平移向量为<img file="FDA0001116464860000021.GIF" wi="35" he="65" />可表示为:<img file="FDA0001116464860000022.GIF" wi="1141" he="100" />又假设树枝b包含的骨架节点集合为V<sub>skeleton</sub>,由于树枝b生长点的位置变化将引起V<sub>skeleton</sub>中所有点坐标位置改变,则有:<img file="FDA0001116464860000023.GIF" wi="1070" he="82" />平移调整后,通过交互式编辑首先将p的位置向左下方移动,移动的向量为<img file="FDA0001116464860000024.GIF" wi="66" he="64" />树枝b和属于它的子树枝向左移动同样的向量<img file="FDA0001116464860000025.GIF" wi="65" he="62" />如果将树枝a的生长点q的位置向正下方移动<img file="FDA0001116464860000026.GIF" wi="51" he="62" />则树枝a和属于他的子树枝同样向下移动<img file="FDA0001116464860000027.GIF" wi="46" he="63" />步骤四,用户选择向上或向下保持生长角度的子树枝生长方向的调整策略,并根据选择的子树枝生长方向调整策略计算平移调整后子树枝的生长角度,使得经过骨架编辑后子树枝的生长角度与原始状态保持一致;4.1采用向上保持生长角度策略时,以子树枝与其生长点上端的父亲树枝之间的夹角为树枝生长角度;θ和<img file="FDA0001116464860000028.GIF" wi="30" he="37" />分别是树枝a和树枝b的生长角度,也就是树枝a和b与向量<img file="FDA0001116464860000029.GIF" wi="50" he="62" />和<img file="FDA00011164648600000210.GIF" wi="67" he="61" />之间的夹角;夹角计算过程如下:假设向量<img file="FDA00011164648600000211.GIF" wi="67" he="63" />的坐标为(x<sub>1</sub>,y<sub>1</sub>,z<sub>1</sub>),生长点p和树枝b的中心点o所形成的向量<img file="FDA00011164648600000212.GIF" wi="61" he="63" />的坐标为(x<sub>2</sub>,y<sub>2</sub>,z<sub>2</sub>),则<img file="FDA00011164648600000213.GIF" wi="68" he="63" />和<img file="FDA00011164648600000214.GIF" wi="59" he="63" />之间的夹角θ的余弦值利用公式(7)可求得:<img file="FDA00011164648600000215.GIF" wi="1046" he="159" />其中,分子为向量<img file="FDA00011164648600000216.GIF" wi="71" he="63" />和<img file="FDA00011164648600000217.GIF" wi="59" he="61" />的点积,分母为向量<img file="FDA00011164648600000218.GIF" wi="70" he="66" />和<img file="FDA00011164648600000219.GIF" wi="61" he="62" />模的数量积,计算公式分别如下:<img file="FDA00011164648600000220.GIF" wi="1094" he="81" /><img file="FDA00011164648600000221.GIF" wi="1197" he="107" />然后,将求得的向量之间夹角的余弦值cosθ带入公式(10),求得夹角的弧度值rad,表示为:rad=acos(cosθ)   (10)最后,将弧度值rad带入公式(11)转换成向量间的角度θ;<img file="FDA00011164648600000222.GIF" wi="989" he="103" />经过骨架编辑平移调整后的骨架结构中,由于树枝b位置的平移,使得树枝b与向量<img file="FDA00011164648600000223.GIF" wi="67" he="63" />之间的夹角变为θ';运用向上保持生长方向调整策略,调整树枝b与<img file="FDA00011164648600000224.GIF" wi="70" he="63" />之间的夹角θ',使它与θ相等;同时,由于p位置发生偏移,使得<img file="FDA00011164648600000225.GIF" wi="65" he="62" />与树枝a之间的夹角发生变化,因此树枝a的所有坐标信息同样也需要进行调整使得夹角为<img file="FDA00011164648600000226.GIF" wi="58" he="39" />4.2在向下保持生长角度的策略中,以子树枝与其生长点下端的父亲树枝之间的夹角为树枝生长角度;树枝b的生长角度为ξ,树枝b与向量<img file="FDA00011164648600000227.GIF" wi="59" he="63" />之间的夹角,与向上保持生长方向 相比,同样是生长点p的位置发生变化;4.3由于骨架节点坐标均为三维坐标,在进行骨架个性化编辑时所产生的位置偏移也是相对于三维空间的,因此在进行树枝生长方向选择调整时的旋转轴为三维空间任意坐标向量;p原始三维坐标点,p’为旋转后的坐标点,l为旋转轴;设原始点p坐标为(x,y,z),绕过点Q(x<sub>0</sub>,y<sub>0</sub>,z<sub>0</sub>)的方向向量为<img file="FDA0001116464860000031.GIF" wi="202" he="70" />的任意坐标轴l,旋转后得到p’的坐标为(x’,y’,z’);p’的计算公式(12)如下所示:x'=(x‑x<sub>0</sub>)*(n<sub>x</sub><sup>2</sup>*(1‑cosθ)+cosθ)+(y‑y<sub>0</sub>)*(n<sub>x</sub>*n<sub>y</sub>*(1‑cosθ)‑n<sub>z</sub>sinθ)+(z‑z<sub>0</sub>)*(n<sub>x</sub>*n<sub>z</sub>*(1‑cosθ)+n<sub>y</sub>sinθ)+x<sub>0</sub>y'=(x‑x<sub>0</sub>)*(n<sub>x</sub>*n<sub>y</sub>*(1‑cosθ)+n<sub>z</sub>*sinθ)+(y‑y<sub>0</sub>)*(n<sub>y</sub><sup>2</sup>*(1‑cosθ)+cosθ)+(z‑z<sub>0</sub>)*(n<sub>y</sub>*n<sub>z</sub>*(1‑cosθ)‑n<sub>x</sub>sinθ)+y<sub>0</sub>z'=(x‑x<sub>0</sub>)*(n<sub>x</sub>*n<sub>z</sub>*(1‑cosθ)‑n<sub>y</sub>*sinθ)+(y‑y<sub>0</sub>)*(n<sub>y</sub>*n<sub>z</sub>*(1‑cosθ)+n<sub>x</sub>*sinθ)+(z‑z<sub>0</sub>)*(n<sub>z</sub><sup>2</sup>*(1‑cosθ)+cosθ)+z<sub>0</sub>   (12)公式12中θ是点p绕旋转轴l的旋转角度,(n<sub>x</sub>,n<sub>y</sub>,n<sub>z</sub>)是旋转轴l的方向余弦,可表示为公式(13),其中|l|为旋转轴向量模;<img file="FDA0001116464860000032.GIF" wi="990" he="133" />生长点p经过个性化编辑平移到p’,使得被动树枝a调整自己的生长角度;利用公式(11)求出旋转后树枝a中的所有坐标值;定义旋转坐标轴l的方向向量<img file="FDA0001116464860000033.GIF" wi="35" he="55" />为<img file="FDA0001116464860000034.GIF" wi="55" he="63" />和<img file="FDA0001116464860000035.GIF" wi="65" he="63" />的法向量,且过生长点q;向量<img file="FDA0001116464860000036.GIF" wi="35" he="55" />的计算公式如下:<img file="FDA0001116464860000037.GIF" wi="1342" he="94" />步骤五,采用骨架节点和圆台的方式表示三维树木模型,根据一一对应的骨架节点和半径信息来实现枝干模型的重构;一根树枝由若干圆台表示出来,圆柱体的底面和顶面具有不同的半径,且圆柱体的上下面以枝干的骨架节点为圆心;根据一一对应的骨架节点和半径信息构造一系列具有不同上、下面的圆柱体来实现树枝模型的重构;5.1在骨架节点中获取每根树枝的骨架节点的三维坐标点数据和半径信息;5.2将树枝底向上的骨架节点和半径每两个分为一组,然后,每组中的骨架节点对应圆台的下底和上底中心位置,根据半径信息绘制圆台;5.3将所有圆台进行拼接构成模型的枝干;步骤六,通过计算树木模型局部树枝的外部轮廓,用凸包的方式进行表示,然后通过选取已有的纹理模板去填充相应的树枝凸包,实现树木模型整体树冠的重构;6.1根据树枝包含的子树枝个数和树枝的生长方向将所有纹理进行分类,在每一类纹理中选取一个纹理作为模板纹理;6.2通过采用增量凸包算法求取局部枝叶三维凸包,并记录三维坐标信息;6.3根据凸包的三维信息在纹理模板库中选用复合树枝基本信息的纹理进行三维树冠重构。
地址 310014 浙江省杭州市下城区潮王路18号
您可能感兴趣的专利