具体实施方式
如图1所示,是本发明影像离线编程光照环境模拟***10较佳实施例的功能模块图。该影像离线编程光照环境模拟***10安装并运行于电子装置100。该电子装置100还可以与对产品进行影像测量的影像测量机台(图中未示出)相连接。该电子装置100还包括存储设备20、处理器30及显示设备40。该电子装置100可以为计算机或其它任何具有数据处理功能的装置。
存储设备20用于储存产品三维模型信息、影像测量机台提供的光源三维模型信息及影像离线编程光照环境模拟***10的计算机化程序代码。存储设备20可以为电子装置100内置的存储器,也可以为电子装置100外接的存储器。
处理器30执行影像离线编程光照环境模拟***10的计算机化程序代码,根据产品三维模型信息及光源三维模型信息模拟产品三维模型的光照环境,并根据光照环境产生的光照效果生成影像测量程序,供影像测量机台对实际产品进行测量。
显示设备40用于显示产品三维模型、光源三维模型及模拟的光照环境。
该影像离线编程光照环境模拟***10包括:三角网格化模块11、光照参数配置模块12、光照效果产生模块13及测量程序生成模块14。
三角网格化模块11用于对产品三维模型及光源三维模型进行三角网格化处理(具体介绍请参见下文关于图3的描述)。
光照参数配置模块12用于根据产品三维模型信息及光源三维模型信息为所述三角网格化处理后的产品三维模型配置光照环境,包括确定光照范围、光源类型、光源数量、光源位置、光照方向及光源强度参数(具体介绍请参见下文关于图4的描述)。光照参数配置模块12还用于将产品三维模型、光源三维模型结合光照参数模拟产品三维模型的光照环境(如图8所示)。
光照效果产生模块13用于读取三角网格化后的产品三维模型上的测量点(如图9所示),并将产品三维模型在模拟的光照环境下投影到产品三维模型的工作平面上,确定三维的测量点在工作平面上对应的二维测量点(如图10所示)。光照效果产生模块13还用于根据工作平面上的二维测量点确定工作平面上的测量区域,根据产品三维模型的初始颜色及光照环境产生的光照效果对测量区域进行着色(具体介绍请参见下文关于图5的描述)。所述工作平面可以为三维坐标系中的XY平面、XZ平或YZ平面。
测量程序生成模块14用于在着色后的测量区域中绘制二维测量点的取点工具,并根据光照参数、测量点的坐标信息、测量区域的颜色信息及取点工具的信息生成影像测量程序,供影像测量机台对实际产品进行测量。取点工具的信息包括取点工具的类型及尺寸。所述取点工具可以为箭头、十字交叉线或其它类型的图元,用于在测量区域中标示二维测量点。
如图2所示,是本发明影像离线编程光照环境模拟方法较佳实施例的流程图。
步骤S210,三角网格化模块11从存储设备20中读取产品三维模型信息,并对产品三维模型进行三角网格化处理(具体介绍请参见图3)。产品三维模型信息包括产品三维模型的数学表达式,例如x=j(u,v),y=ψ(u,v),z=c(u,v),其中u、v为参数,其值在0~1范围内。产品三维模型上的点可以用三维坐标x、y、z表示,也可以用二维参数u、v表示。
步骤S220,三角网格化模块11从存储设备20中读取光源三维模型信息,包括光源数量、光源类型及各个光源中心点的坐标及各个光源表面的法向量。例如光源三维模型可能由一个主光源及多个辅助光源环绕主光源构成。主光源可能为环形光源,辅助光源可能为LED发光颗粒。根据各个光源中心点的坐标及各个光源表面的法向量可以确定各个光源之间的相对位置关系。三角网格化模块11也对光源三维模型进行三角网格化处理,具体方法参阅图3中对产品三维模型进行三角网格化处理的流程。
步骤S230,光照参数配置模块12根据产品三维模型信息及光源三维模型信息为所述三角网格化处理后的产品三维模型配置光照参数,包括确定光照范围、光源类型、光源数量、光源位置、光照方向及光源强度参数(具体介绍请参见下文关于图4的描述)。
步骤S240,光照参数配置模块12将产品三维模型、光源三维模型组合到同一个三维坐标系中结合光照参数模拟产品三维模型的光照环境(如图8所示)。
步骤S250,光照效果产生模块13用于读取三角网格化后的产品三维模型上的测量点,并将产品三维模型在模拟的光照环境下投影到产品三维模型的工作平面上,确定三维的测量点在工作平面上对应的二维测量点。如图9所示,光照效果产生模块13在产品三维模型上读取一个测量点A。如图10所示的平面图形为产品三维模型投影到产品三维模型的工作平面上得到的平面图形,该平面图形上的点A’为三维测量点A在工作平面上对应的二维测量点。所述工作平面可以为三维坐标系中的XY平面、XZ平面或YZ平面。所述测量点可以为一个或多个。
步骤S260,光照效果产生模块13根据工作平面上的二维测量点确定工作平面上的测量区域,根据产品三维模型的初始颜色及光照环境产生的光照效果对测量区域进行着色(具体介绍请参见下文关于图5的描述)。所述测量区域是包括二维测量点的一个区域。如图11中的矩形表示工作平面,梯形a表示测量区域。
步骤S270,测量程序生成模块14在着色后的测量区域中绘制二维测量点的取点工具。取点工具可以为箭头、十字交叉线或其它类型的图元,用于在测量区域中标示测量点,如图11中的箭头表示二维测量点A’的取点工具。
步骤S280,测量程序生成模块14根据光照参数、测量点的坐标信息、测量区域的颜色信息及取点工具的信息生成影像测量程序,供影像测量机台对实际产品进行测量。测量点的坐标信息包括产品三维模型上的三维测量点坐标及工作平面上对应的二维测量点坐标。取点工具的信息包括取点工具的类型及尺寸。
如图3所示,是图2中步骤S210的具体流程图。
步骤S310,三角网格化模块11从存储设备20中读取一个产品三维模型(例如一款手机的三维模型)。
步骤S320,三角网格化模块11检查该产品三维模型是否由三角面片组成,如果是由三角面片组成,则流程直接进入步骤S380,否则流程进入步骤S330。
步骤S330,三角网格化模块11将该产品三维模型转换为B样条曲面,得到B样条曲面在UV参数平面内的封闭边界线,对该封闭边界线以U直线和V直线进行等分,得到若干个小方格(如图6A所示)。
步骤S340,三角网格化模块11将与封闭边界线无交点的小方格的四个顶点按逆时针顺序组成两个三角形。例如,如图6B中所示的小方格box4的四个顶点P、Q、I、O均落入封闭边界线内,则三角网格化模块11将顶点P、Q、I、O按照逆时针顺序连接组成两个三角形OQP、OIQ。
步骤S350,对于与封闭边界线有交点的小方格,三角网格化模块11将小方格的顶点中落入封闭边界曲线内的顶点、小方格与封闭边界曲线的交点及封闭边界线上的边界点加入2D点组成的队列Q。例如,如图6B中所示的小方格box1中有封闭边界线上的边界点M,小方格box1与封闭边界曲线的交点E、F;小方格box2中有顶点D落入封闭边界曲线内;小方格box2与封闭边界曲线的交点E、F、C、G,则三角网格化模块11将点M、E、F、C、D、G加入2D点组成的队列Q。
步骤S360,三角网格化模块11读取2D点组成的队列Q中的第一点p1及与点p1最近的点p2,p1、p2组成三角形A的一条边,三角形第三点p3的查找原则是边p1p2对应的内角在三角形A的内角中最大以及三角形A的外接圆内没有队列Q中的点,使得三角形A接近于等边三角形。
步骤S370,三角网格化模块11根据上述查找原则在队列Q中查找其它三角形的顶点,得到产品三维模型上的所有三角形。
步骤S380,三角网格化模块11输出产品三维模型上的所有三角形组成的队列T。
如图4所示,是图2中步骤S230的具体流程图。
步骤S410,光照参数配置模块12根据三角网格化处理后的产品三维模型的最大空间包围盒的坐标确定光照范围。例如,假设产品三维模型的最大空间包围盒为图7中所示的长方体,则光照范围即为该长方体区域。产品三维模型的最大空间包围盒指的包围该产品三维模型的一个长方体,且该产品三维模型以该产品三维模型上任意一点旋转仍然落入该长方体中。
步骤S420,光照参数配置模块12根据所述最大空间包围盒上表面中心点的坐标确定主光源位置的坐标。例如,假设图7中所示的长方体上表面中心点的坐标为(x1,y1,z1),则主光源的位置坐标为(x1,y1,z1)。
步骤S430,光照参数配置模块12根据光源三维模型中的光源信息及主光源的位置坐标确定各辅助光源的位置坐标。例如,根据光源三维模型信息中各个光源中心点的坐标及各个光源表面的法向量可以确定各个光源之间的相对位置关系,再根据同一个坐标系中主光源的位置坐标及各个光源之间的相对位置关系确定各辅助光源在坐标系中的位置坐标。
步骤S440,光照参数配置模块12根据各光源位置坐标及光照范围确定一个光照圆锥,确定与该光照圆锥的旋转轴平行的射线为光照射线S,光照方向与光照射线S相同,旋转轴的高度即为光照深度。例如,如图7所示,光照参数配置模块12以主光源位置为顶点,以产品三维模型的最大空间包围盒(即所述长方体)上下表面的距离为旋转轴高度绘制光照圆锥。
步骤S450,光照参数配置模块12将光照深度切分成n个光照段得到点序列,计算每个点到光照射线S顶点的距离得到各点的衰减系数k,确定光源强度队列P,P中的各元素包括各点序列中某一点到光照射线S顶点的距离及该点的衰减系数k,其中各点的衰减系数k为该点到光照射线S顶点的距离与光照深度的比值。如图12所示,假设线段G1G5为光照深度(G1为光照射线S顶点),并被光照参数配置模块12切分成4个光照段得到点序列G1、G2、G3、G4、G5,则点G1的衰减系数为0,G2的衰减系数为|G1G2|/|G1G5|,G3的衰减系数为|G1G3|/|G1G5|,G4衰减系数为|G1G4|/|G1G5|,G5衰减系数为|G1G5|/|G1G5|=1。
如图5所示,是图2中步骤S260的具体流程图。
步骤S510,光照效果产生模块13根据各三角形顶点坐标计算各三角形的面法向量,得到产品三维模型所有三角形的面法向量组成的队列N。例如,假设三角形A1的顶点为v0,v1,v2,则三角形A的面法向量为normal=cross((v1-v0),(v2-v0))。
步骤S520,光照效果产生模块13读取产品三维模型的初始RGB颜色值,将该初始RGB颜色值等分为90个RGB颜色值区间,得到由从明到暗渐变的RGB颜色值组成的颜色队列L。例如,假设产品三维模型的初始颜色为黄色,则计算模块15将该黄色的RGB值等分为90个RGB颜色值区间,得到由从明黄到暗黄渐变的90组RGB颜色值。之所以等分为90个颜色区间,是根据一个物体(例如该三维物体)与光源的向量夹角超过90度时,该物体不可见的原理。
步骤S530,光照效果产生模块13计算光照射线S与各三角形的面法向量的向量夹角,确定各向量夹角所对应的颜色区间Ith。例如,假设光照射线S与三角形A1的向量夹角为30.5度,则该向量夹角对应于第30个颜色区间(Ith=30)。
步骤S540,光照效果产生模块13计算光照射线S与各三角形的中心点的距离,根据光源强度队列P中距离与衰减系数的对应关系得到各三角形的衰减系数k,根据Ith*k的整数部分所对应的颜色区间得到的各三角形的实际显示颜色。例如,假设光照射线S与三角形A中心点的距离为8.1cm,光照深度为10cm,则三角形A1中心点的衰减系数k为0.81,三角形A的实际颜色区间为int(30*0.81)=24,即三角形A1的实际颜色值为第24个颜色区间的RGB值。
步骤S550,光照效果产生模块13输出产品三维模型上所有三角形的实际显示颜色组成的颜色队列C。
步骤S560,光照效果产生模块13确定产品三维模型上各三角形在工作平面上对应的平面三角形,根据产品三维模型上各三角形的实际显示颜色确定工作平面上各对应的平面三角形的显示颜色。例如,三角形队列T中的三角形A1投影到工作平面得到平面三角形A1’,则平面三角形A1’的显示颜色为产品三维模型上三角形A1的实际显示颜色。
步骤S570,光照效果产生模块13根据测量区域包括的平面三…角形的显示颜色对测量区域进行着色。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照以上较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。