[发明专利]一种Revit到D5渲染器实时渲染的数据转换方法有效
申请号: | 202011150020.9 | 申请日: | 2020-10-23 |
公开(公告)号: | CN112258615B | 公开(公告)日: | 2023-10-03 |
发明(设计)人: | 张赫;原琪皓;韩静烨;光昌正;刘景明;白路;朱海天;黄首志 | 申请(专利权)人: | 南京维伍网络科技有限公司 |
主分类号: | G06T15/00 | 分类号: | G06T15/00 |
代理公司: | 南京利丰知识产权代理事务所(特殊普通合伙) 32256 | 代理人: | 任立 |
地址: | 211500 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 revit d5 渲染 实时 数据 转换 方法 | ||
1.一种Revit到D5渲染器实时渲染的数据转换方法,其特征在于:通过Revit插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:首先通过Mesh筛选和生成过程,产生有效的可以导出的Mesh集合,具体为:
(1)筛选有效模型
Revit提供了IExportContext接口和CustomExporter类,通过实现IExportContext接口,并创建一个实例传递给CustomExporter,实现导出的功能,其中,IExportContext接口的OnViewBegin方法会在每一个View被导出之前调用,用来将不需要导出的View跳过,而OnInstanceBegin方法会在每一个Revit中的对象Family Instance被导出之前调用,用来获取当前Instance的Transform矩阵,OnElementBegin方法会在每一个Revit里的元素被导出之前调用,根据其Category属性可以将用户不可见的、标注和分析元素跳过,另外属于用户选择的需要排除的Category的元素也会需要跳过,所有没有被跳过的元素的Mesh信息会在OnPolyMesh方法中给出;
(2)Mesh生成:模型材质抽取和模型三维数据抽取
a在IExportContext接口的OnPolyMesh函数中,Revit会提供计算好的模型顶点、贴图坐标以及法线数据,Revit插件将这些数据转换为Native模块可以识别的格式,并调用函数将数据发送过去;
b材质抽取由专门的MaterialExtractor实现,Revit中的材质信息保存在一个字典中,不同的材质会有不同的关键字以及对应的值,字典的关键字由材质对应的Schema决定,共有20种标准Schema,对于每一种MaterialExtractor都会读取颜色、反射率、凹凸贴图等信息,这些信息组合到XML里,并发送给Native模块;
c将上述a和b中数据及信息转换成D5渲染器内部可以处理的格式之后,发送到Native连接模块进行下一步处理,,同时在revit里面模型材质数据的导出过程开始之前,先测试跟D5渲染器的连接,没有问题后所有数据发送到Native模块,之后调用相应的函数将发送的数据通过Socket发送到渲染器中,若出现连接问题,出现错误提示,提示用户当前状态,用户根据返回的错误码,并且用户需要根据错误提示采取的下一步操作,直至与D5渲染器连接正常;
S2:Native连接模块接收模型数据,并将数据传到GPU上进行优化,其具体步骤为:
(1)准备数据:需要将数据转换为可以被GPU处理的格式;
(2)调用CUDA C函数,将数据上传到GPU;
(3)调用CUDA核,对模型进行优化;
(4)调用CUDA C函数,将数据从GPU数组拷贝回CPU数组中;
(5)调用Socket函数,将合并后的模型数据和材质数据转换为字符串,通过Socket将数据发送到D5渲染器中进行渲染。
2.根据权利要求1所述的Revit到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(1)中准备数据,其具体为:将所有的顶点数据、所有的法线数据分别打包到两个大数组中,然后再上传到GPU,同时将所有的Transform矩阵也需要打包起来,对于每个顶点或法线,都额外存储了一个Transform数组的索引,用来获取对当前坐标进行转换的矩阵,需要将数据转换为可以被GPU处理的格式。
3.根据权利要求1所述的Revit到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(2)中先在CPU分配好打包的存储空间,将数据复制过去,然后再GPU分配同样大小的存储空间,调用CUDA C函数,进行数据上传。
4.根据权利要求1所述的Revit到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(3)中对模型进行优化,具体为:将模型的顶点和法线用Transform矩阵进行变换,对于每个CUDA线程,用线程ID作为索引,从打包的顶点或法线数组里选择一个点,然后从打包的Transform矩阵数组中读取这个点对应的Transform,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京维伍网络科技有限公司,未经南京维伍网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011150020.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:机器人
- 下一篇:一种SketchUp到D5渲染器实时渲染的数据转换方法