SketchUp模型材质贴图自动匹配方法及系统与流程

文档序号:18010490发布日期:2019-06-25 23:58阅读:2535来源:国知局
SketchUp模型材质贴图自动匹配方法及系统与流程

本发明涉及sketchup建模的技术领域,具体来说,涉及一种sketchup模型材质贴图自动匹配方法及系统。



背景技术:

sketchup是一套面向建筑师、城市规划专家、制片人、游戏开发者以及相关专业人员的3d建模程序。

archicad是一个理想的3d建筑设计软件,它同时具备了成熟的2d绘图与布图功能,自archicad问世就以3d建模和设计为特色,并提出虚拟建筑的概念。

archicad支持导出模型为sketchup的文件格式,但是archicad导出sketchup模型后,贴图纹理出现错误,导致渲染出现问题。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的上述技术问题,本发明提出一种sketchup模型材质贴图自动匹配方法及系统,不仅能够一键调整好所有的材质贴图,避免贴图纹理出现错误,而且将所有材质符合标准,同时减小模型的体积、建模更加快速和缩短渲染时间。

为实现上述技术目的,本发明的技术方案是这样实现的:

一种sketchup模型材质贴图自动匹配方法,包括以下步骤:

s1遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出;

s2根据遍历后的所述材质,将不符合的所述材质进行筛选;

s3利用筛选后的所述材质,将不符合标准的材质进行调整;

s4将调整后材质的贴图进行匹配;

s5所述步骤s1、步骤s2、步骤s3和步骤s4均在自动化脚本中运行。

进一步地,所述步骤s4中将调整后材质的贴图进行匹配包括:

s41遍历所有的面获取贴图坐标;

s42将所述贴图坐标进行读取;

s43针对每个面读取的贴图坐标与当前的贴图坐标进行等值判断;

s44将等值判断后的所述贴图坐标进行清理。

进一步地,所述步骤s1中遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出包括:

s11利用sketchupapi遍历所有在模型中的材质;

s12将遍历后的所述材质存储为数组。

进一步地,所述步骤s2中将不符合的所述材质进行筛选包括:

s21确定筛选标准,其中,筛选标准为所述材质的名称为英文名称且使用ascii码常用字符;贴图地址正确且名称和文件路径中均不存在除ascii码以外的字符;

s22将存储的所述数组进行过滤。

进一步地,所述步骤s3中将不符合标准的材质进行调整包括:将材质的名称、材质的贴图地址和材质的贴图分别进行调整。

本发明的另一方面,提供一种sketchup模型材质贴图自动匹配系统,包括:

第一遍历模块,用于遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出;

筛选模块,用于根据遍历后的所述材质,将不符合的所述材质进行筛选;

第一调整模块,用于利用筛选后的所述材质,将不符合标准的材质进行调整;

匹配模块,用于将调整后材质的贴图进行匹配;

脚本运行模块,用于将第一遍历模块、筛选模块、第一调整模块和匹配模块均在自动化脚本中运行。

进一步地,所述匹配模块包括:

获取模块,用于遍历所有的面获取贴图坐标;

读取模块,用于将所述贴图坐标进行读取;

判断模块,用于针对每个面读取的贴图坐标与当前的贴图坐标进行等值判断;

清理模块,用于将等值判断后的所述贴图坐标进行清理。

进一步地,所述第一遍历模块包括:

第二遍历模块,用于利用sketchupapi遍历所有在模型中的材质;

存储模块,用于将遍历后的所述材质存储为数组。

进一步地,所述筛选模块包括:

确定模块,用于确定筛选标准,其中,筛选标准为所述材质的名称为英文名称且使用ascii码常用字符;贴图地址正确且名称和文件路径中均不存在除ascii码以外的字符;

过滤模块,用于将存储的所述数组进行过滤。

进一步地,所述第一调整模块包括:第二调整模块,用于将材质的名称、材质的贴图地址和材质的贴图分别进行调整。

本发明的有益效果:

一键调整好所有的材质贴图,避免贴图纹理出现错误;

将所有材质符合标准;

减小模型的体积、建模更加快速和缩短渲染时间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例所述的sketchup模型材质贴图自动匹配方法的流程图;

图2是根据本发明实施例所述的阿拉丁室内设计工具的框图;

图3是根据本发明实施例所述的sketchup模型材质贴图自动匹配方法的效果图之一;

图4是根据本发明实施例所述的sketchup模型材质贴图自动匹配方法的效果图之二;

图5是根据本发明实施例所述的sketchup模型材质贴图自动匹配系统的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供一种使用sketchupapi二次开发技术,编写ruby语言脚本,图元是指模型最基本单元,以下所有步骤均为自动化脚本自动处理过程,无需手动操作。

如图1-4所示,根据本发明实施例所述的一种sketchup模型材质贴图自动匹配方法,包括以下步骤:

s1遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出;

s2根据遍历后的所述材质,将不符合的所述材质进行筛选;

s3利用筛选后的所述材质,将不符合标准的材质进行调整;

s4将调整后材质的贴图进行匹配;

s5所述步骤s1、步骤s2、步骤s3和步骤s4均在自动化脚本中运行。

以上步骤完成后,贴图自动匹配完成,保存当前模型,即可保存所有的数据。

遍历所有sketchup模型中的材质之前保存面的贴图坐标:其中,保存面的贴图坐标包括:

遍历所有的面获取贴图坐标

递归所有的组和组件,获取所有的面,使用sketchupapi,对当前面的正面反面,执行获取贴图坐标操作,得到每个面的贴图三维原点坐标和uv坐标。

将贴图坐标进行记录,并保存在面图元内

获取贴图的三维原点坐标[x,y,z]和uv[x,y,0]坐标后,形成哈希表(正面、反面),保存在当前面的属性中,以备恢复步骤时使用。

在本发明的一个具体实施例中,所述步骤s4中将调整后材质的贴图进行匹配包括:

s41遍历所有的面获取贴图坐标;

具体的,递归所有的组和组件,获取所有的面,使用sketchupapi,对当前面的正面反面,执行获取贴图坐标操作,得到每个面的贴图三维原点坐标和uv坐标。

s42将所述贴图坐标进行读取;

具体的,读取每个面已经保存过的贴图坐标,保存为哈希表以备下一步骤使用。

s43针对每个面读取的贴图坐标与当前的贴图坐标进行等值判断;

具体的,对每个面读取的贴图坐标与当前的贴图坐标做等值判断,如果相等则不进行任何操作;如果不相等,则当前贴图的坐标调整为读取的坐标。

s44将等值判断后的所述贴图坐标进行清理。

具体的,删除面保存的贴图坐标,以减小文件体积,使建模渲染过程更加流畅。

在本发明的一个具体实施例中,所述步骤s1中遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出包括:

s11利用sketchupapi遍历所有在模型中的材质;

具体的,使用sketchup的materialsapi,获取sketchup模型中所有的材质,在其中用sketchupapi筛选出哪些材质是在模型中正在使用的,具体方法如下:一、对所有的图元执行递归,得到所有边、面或组件正在使用的材质;二、使用sketchupapi清理未使用的材质,则剩下的材质就是当前使用的。

s12将遍历后的所述材质存储为数组。

建立一个空的数组,将上一步遍历出的材质加入到数组中,以备下一步使用。

在本发明的一个具体实施例中,所述步骤s2中将不符合的所述材质进行筛选包括:

s21确定筛选标准,其中,筛选标准为所述材质的名称为英文名称且使用ascii码常用字符;贴图地址正确且名称和文件路径中均不存在除ascii码以外的字符;

具体的,针对市面上常见的渲染器,做出最广泛的要求标准:即材质的名称应该是英文名称且使用ascii码常用字符;贴图地址正确且名称、文件路径中均不存在除ascii码以外的字符。

另外,在筛选标准的基础上,增加其他筛选标准:增加贴图轻量化标准,超过1024kb大小的贴图文件,都应进行轻量化处理。

s22将存储的所述数组进行过滤。

具体的,遍历后保存的数组,判断每一个材质的名称和贴图是否满足标准,如果满足,此材质剔除数组,如果不满足,保留在数组中。

在本发明的一个具体实施例中,所述步骤s3中将不符合标准的材质进行调整包括:将材质的名称、材质的贴图地址和材质的贴图分别进行调整。

将材质的名称进行调整

对筛选出的数组遍历,判断每一个材质,名称是否是英文名称且使用ascii码,如果不满足要求,则使用ascii字符替换不规则字符,如果出现中文文字等,使用拼音转换,如果字符还是无法替换,则使用uuid直接生成一个uuid作为材质名称。

材质的贴图地址进行调整

对筛选出的数组遍历,判断每一个材质的贴图地址及名称是否是英文名称且使用ascii码,如果不满足要求,则使用ascii字符替换不规则字符,如果出现中文文字等,使用拼音转换,如果字符还是无法替换,则使用uuid直接生成一个uuid作为材质名称,替换后将原来贴图复制到新的地址,并赋予刚才生成的名称,这样即使材质贴图地址变换,也不会导致贴图丢失。

材质的贴图进行调整

采用外部处理程序(如imagemagick开源软件)对贴图进行轻量化处理,在保证贴图质量的情况下,尽可能压缩贴图的体积,这样做不仅能够使三维软件更加流畅,而且在渲染器执行渲染进程时,能够节省内存,提高渲染效率,节约渲染时间,处理过程中,贴图的尺寸(像素)值应保持原来的状态,从而避免因尺寸发生变化导致贴图纹理错乱。

如图5所示,本发明的另一方面,提供一种sketchup模型材质贴图自动匹配系统,包括:

第一遍历模块,用于遍历所有sketchup模型中的材质,其中,sketchup模型从archicad导出;

筛选模块,用于根据遍历后的所述材质,将不符合的所述材质进行筛选;

第一调整模块,用于利用筛选后的所述材质,将不符合标准的材质进行调整;

匹配模块,用于将调整后材质的贴图进行匹配;

脚本运行模块,用于将第一遍历模块、筛选模块、第一调整模块和匹配模块均在自动化脚本中运行。

在本发明的一个具体实施例中,所述匹配模块包括:

获取模块,用于遍历所有的面获取贴图坐标;

读取模块,用于将所述贴图坐标进行读取;

判断模块,用于针对每个面读取的贴图坐标与当前的贴图坐标进行等值判断;

清理模块,用于将等值判断后的所述贴图坐标进行清理。

在本发明的一个具体实施例中,所述第一遍历模块包括:

第二遍历模块,用于利用sketchupapi遍历所有在模型中的材质;

存储模块,用于将遍历后的所述材质存储为数组。

在本发明的一个具体实施例中,所述筛选模块包括:

确定模块,用于确定筛选标准,其中,筛选标准为所述材质的名称为英文名称且使用ascii码常用字符;贴图地址正确且名称和文件路径中均不存在除ascii码以外的字符;

过滤模块,用于将存储的所述数组进行过滤。

在本发明的一个具体实施例中,所述第一调整模块包括:第二调整模块,用于将材质的名称、材质的贴图地址和材质的贴图分别进行调整。

为了方便理解本发明的上述技术方案,以下通过具体使用方式上对本发明的上述技术方案进行详细说明。

在具体使用时,根据本发明所述的sketchup模型材质贴图自动匹配方法,加载到sketchup软件中,在使用sketchup打开由archicad导出的skp模型后,使用阿拉丁设计工具中贴图自动修复的功能,如图2,单击按钮即可修复所有的不符合标准的材质,再进行渲染,贴图不会产生任何错误,图3和图4是两种渲染器渲染后的结果。

综上所述,借助于本发明的上述技术方案,一键调整好所有的材质贴图,避免贴图纹理出现错误;将所有材质符合标准;减小模型的体积、建模更加快速和缩短渲染时间。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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