本发明涉及3d建模技术领域,尤其涉及一种基于骨架球的3d建模方法和系统。
背景技术:
随着3d技术的发展普及,3d模型的需求也越来越大,因此大量的3d建模软件也开始出现。然而这些建模软件虽然可以生成美观的3d模型,但其建模方式大都为对特定的点、线、面进行精细操作,其操作交互复杂度高,专业性强,上手难度高,这些因素提高了这些建模软件的入门门槛。
如此,如何简单快速而又方便地进行3d建模,已经成为本领域急需解决的问题。
技术实现要素:
基于背景技术存在的技术问题,本发明提出了一种基于骨架球的3d建模方法和系统;
本发明提出的一种基于骨架球的3d建模方法,其特征在于,所述方法包括以下步骤:
s1、对目标物体的骨架球节点进行编辑得到三维模型骨架;
s2、根据三维模型骨架定义隐式曲面;
s3、提取隐式曲面的零等值面建立三维网格;
s4、对三维网格进行光滑操作得到目标三维模型。
其中,步骤s1具体包括:
对给定的骨架球节点进行增添、删除、修改位置、修改半径大小、对称中一种或多种操作,生成三维模型骨架;
优选地,通过将骨架球节点向三维空间中任意方向进行拉伸以完成增添新的骨架球节点操作;
通过调整骨架球节点的位置以完成修改位置操作;
通过对骨架球节点进行缩放操作以完成修改半径大小操作;
通过设定对称节点,对对称节点两边同时进行增添、删除、修改位置、修改半径大小,以完成对称操作;
通过预设插值方式对任意两个相连骨架球节点进行插值,以建立三维模型骨架;
优选地,通过记录每个骨架球节点的半径ri以及该骨架球节点的中心的三维空间坐标
优选地,利用树结构对任一个骨架球节点的参数信息进行存储,具体包括:
建立初始化根节点;
以根节点为基础增添的新的骨架球节点作为根节点的叶子节点,再以所述叶子节点作为父节点,增添新的叶子节点;循环进行上述操作得到树结构,进行存储。
其中,步骤s2具体包括:
令所有骨架球节点以及任意两个相连骨架球节点间的多个中间球为骨架球,对所有骨架球建立如下函数:
其中,
其中,步骤s3具体包括:
利用隐式曲面的零等值面对骨架球进行逼近近似,再利用marchingcubes方法对该零等值面进行提取,以建立三维网格。
其中,步骤s4具体包括:
基于laplace算子对三维网格进行光滑操作,具体包括:
laplace算子定义如下:
其中,i*为vi的一邻域指标集,ωij是vj关于vi的权重值,满足
再根据以下公式对三维网格进行光滑操作:
vnew=vold+λl(vold);
其中,λ为光滑因子且0<λ<1。
一种基于骨架球的3d建模系统,其特征在于,所述系统包括:
模型骨架构建模块,用于对目标物体的骨架球节点进行编辑得到三维模型骨架;
隐式曲面定义模块,用于根据三维模型骨架定义隐式曲面;
三维网格建立模块,用于提取隐式曲面的零等值面建立三维网格;
网格模型优化模块,用于对三维网格进行光滑操作得到目标三维模型。
其中,所述模型骨架构建模块,具体用于:
对给定的骨架球节点进行增添、删除、修改位置、修改半径大小、对称中一种或多种操作,生成三维模型骨架;
优选地,通过将骨架球节点向三维空间中任意方向进行拉伸以完成增添新的骨架球节点操作;
通过调整骨架球节点的位置以完成修改位置操作;
通过对骨架球节点进行缩放操作以完成修改半径大小操作;
通过设定对称节点,对对称节点两边同时进行增添、删除、修改位置、修改半径大小,以完成对称操作;
通过预设插值方式对任意两个相连骨架球节点进行插值,以建立三维模型骨架;
优选地,通过记录每个骨架球节点的半径ri以及该骨架球节点的中心的三维空间坐标
优选地,利用树结构对任一个骨架球节点的参数信息进行存储,具体包括:
建立初始化根节点;
以根节点为基础增添的新的骨架球节点作为根节点的叶子节点,再以所述叶子节点作为父节点,增添新的叶子节点;循环进行上述操作得到树结构,进行存储。
其中,所述隐式曲面定义模块,具体用于:
令所有骨架球节点以及任意两个相连骨架球节点间的多个中间球为骨架球,对所有骨架球建立如下函数:
其中,
其中,所述三维网格建立模块,具体用于:
利用隐式曲面的零等值面对骨架球进行逼近近似,再利用marchingcubes方法对该零等值面进行提取,以建立三维网格。
其中,所述网格模型优化模块,具体用于:基于laplace算子对三维网格进行光滑操作,具体包括:
laplace算子定义如下:
其中,i*为vi的一邻域指标集,ωij是vj关于vi的权重值,满足
再根据以下公式对三维网格进行光滑操作:
vnew=vold+λl(vold);
其中,λ为光滑因子且0<λ<1。
本发明通过骨架球的理念,用户只需简单地对骨架球进行编辑得到三维模型的骨架,在该骨架的基础上,系统即可定义相应的隐式曲面,用marchingcubes算法对零等值面进行提取,自动生成具有相应外观的三维模型网格,如此,用户可以简单快速而又方便地进行3d建模,而不用像传统建模软件那样费神的对每个点、线、面进行精细操作来达到建模的目的,减少人工成本和时间成本,提高3d建模的工作效率。
附图说明
图1为本发明提出的一种基于骨架球的3d建模方法流程图;
图2为本发明提出的一种基于骨架球的3d建模系统的模块示意图;
图3为本发明提出的一种基于骨架球的3d建模方法中骨架基本元素和骨架球示意图;
图4为本发明提出的一种基于骨架球的3d建模方法中小狗骨架和小狗三维网格示意图;
图5为本发明提出的一种基于骨架球的3d建模方法中大象骨架和大象三维网格示意图。
具体实施方式
参照图1,本发明提出的一种基于骨架球的3d建模方法,该方法包括以下步骤:
步骤s1,对目标物体的骨架球节点进行编辑得到三维模型骨架;
本步骤中,对给定的骨架球节点进行增添、删除、修改位置、修改半径大小、对称中一种或多种操作,生成三维模型骨架;
具体的,通过将骨架球节点向三维空间中任意方向进行拉伸以完成增添新的骨架球节点操作;
通过调整骨架球节点的位置以完成修改位置操作;
通过对骨架球节点进行缩放操作以完成修改半径大小操作;
通过设定对称节点,对对称节点两边同时进行增添、删除、修改位置、修改半径大小,以完成对称操作;
通过预设插值方式对任意两个相连骨架球节点进行插值,以建立三维模型骨架;
具体的,通过记录每个骨架球节点的半径ri以及该骨架球节点的中心的三维空间坐标
具体的,利用树结构对任一个骨架球节点的参数信息进行存储,具体包括:
建立初始化根节点;
以根节点为基础增添的新的骨架球节点作为根节点的叶子节点,再以所述叶子节点作为父节点,增添新的叶子节点;循环进行上述操作得到树结构,进行存储。
参照图3,本实施方式中,每个骨架球节点均有两种参数可以进行调整,分别是该骨架球的中心所在的三维空间坐标,以及骨架球的半径,系统将初始给定一个骨架球节点,在该骨架球节点基础上,用户可以对骨架球进行对称、增添、删除、修改位置与半径大小等一系列操作,最终生成一个三维模型的骨架。
本实施方式中,差值方式有多种,系统默认插值方式为线性插值插值方式,系统根据不同的插值方式可以确定中间球中心位置以及半径大小。
步骤s2,根据三维模型骨架定义隐式曲面;
本步骤中,令所有骨架球节点以及任意两个相连骨架球节点间的多个中间球为骨架球,对所有骨架球建立如下函数:
其中,
本实施方式中,在得到三维模型的骨架之后,为了得到一个封闭的三维模型表面网格,对于所有的骨架球按照上述函数计算,通过该隐式曲面的零等值面即可对骨架球进行逼近近似。
步骤s3,提取隐式曲面的零等值面建立三维网格;
本步骤中,利用隐式曲面的零等值面对骨架球进行逼近近似,再利用marchingcubes方法对该零等值面进行提取,以建立三维网格。
参照图4、图5,在本实施方式中,利marchingcubes的方法对该零等值面进行提取,进而生成三维网格,图3左图为生成的小狗骨架和小狗三维网格,图4左图为生成的大象骨架和大象三维网格。
步骤s4,对三维网格进行光滑操作得到目标三维模型;
本步骤中,基于laplace算子对三维网格进行光滑操作,具体包括:
laplace算子定义如下:
其中,i*为vi的一邻域指标集,ωij是vj关于vi的权重值,满足
再根据以下公式对三维网格进行光滑操作:
vnew=vold+λl(vold);
其中,λ为光滑因子且0<λ<1。
在本实施方式中,由于生成的三维网格可以有效的混合骨架球节点连接处的凹凸形状,但最终生成的模型网格表面仍会有肉眼可见的一些细小的褶皱,此时可以使用laplace算子对网格进行光滑处理,在对网格进行光滑的同时,可以对特征点进行限制,从而可以在对网格进行光滑处理的同时保留相应的网格特征。
参照图2,一种基于骨架球的3d建模系统,其特征在于,所述系统包括:
模型骨架构建模块,用于对目标物体的骨架球节点进行编辑得到三维模型骨架;
模型骨架构建模块,具体用于,对给定的骨架球节点进行增添、删除、修改位置、修改半径大小、对称中一种或多种操作,生成三维模型骨架;
具体的,通过将骨架球节点向三维空间中任意方向进行拉伸以完成增添新的骨架球节点操作;
通过调整骨架球节点的位置以完成修改位置操作;
通过对骨架球节点进行缩放操作以完成修改半径大小操作;
通过设定对称节点,对对称节点两边同时进行增添、删除、修改位置、修改半径大小,以完成对称操作;
通过预设插值方式对任意两个相连骨架球节点进行插值,以建立三维模型骨架;
具体的,通过记录每个骨架球节点的半径ri以及该骨架球节点的中心的三维空间坐标
具体的,利用树结构对任一个骨架球节点的参数信息进行存储,具体包括:
建立初始化根节点;
以根节点为基础增添的新的骨架球节点作为根节点的叶子节点,再以所述叶子节点作为父节点,增添新的叶子节点;循环进行上述操作得到树结构,进行存储。
参照图3,本实施方式中,每个骨架球节点均有两种参数可以进行调整,分别是该骨架球的中心所在的三维空间坐标,以及骨架球的半径,系统将初始给定一个骨架球节点,在该骨架球节点基础上,用户可以对骨架球进行对称、增添、删除、修改位置与半径大小等一系列操作,最终生成一个三维模型的骨架。
本实施方式中,差值方式有多种,系统默认插值方式为线性插值插值方式,系统根据不同的插值方式可以确定中间球中心位置以及半径大小。
隐式曲面定义模块,用于根据三维模型骨架定义隐式曲面;
隐式曲面定义模块,具体用于:
令所有骨架球节点以及任意两个相连骨架球节点间的多个中间球为骨架球,对所有骨架球建立如下函数:
其中,
本实施方式中,在得到三维模型的骨架之后,为了得到一个封闭的三维模型表面网格,对于所有的骨架球按照上述函数计算,通过该隐式曲面的零等值面即可对骨架球进行逼近近似。
三维网格建立模块,用于提取隐式曲面的零等值面建立三维网格;
三维网格建立模块,具体用于:利用隐式曲面的零等值面对骨架球进行逼近近似,再利用marchingcubes方法对该零等值面进行提取,以建立三维网格。
参照图4、图5,在本实施方式中,利marchingcubes的方法对该零等值面进行提取,进而生成三维网格,图3左图为生成的小狗骨架和小狗三维网格,图4左图为生成的大象骨架和大象三维网格。
网格模型优化模块,用于对三维网格进行光滑操作得到目标三维模型。
网格模型优化模块,具体用于:基于laplace算子对三维网格进行光滑操作,具体包括:
laplace算子定义如下:
其中,i*为vi的一邻域指标集,ωij是vj关于vi的权重值,满足
再根据以下公式对三维网格进行光滑操作:
vnew=vold+λl(vold);
其中,λ为光滑因子且0<λ<1。
在本实施方式中,由于生成的三维网格可以有效的混合骨架球节点连接处的凹凸形状,但最终生成的模型网格表面仍会有肉眼可见的一些细小的褶皱,此时可以使用laplace算子对网格进行光滑处理,在对网格进行光滑的同时,可以对特征点进行限制,从而可以在对网格进行光滑处理的同时保留相应的网格特征。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。