[发明专利]一种ARCHICAD到D5渲染器实时渲染的数据转换方法在审
申请号: | 202011148402.8 | 申请日: | 2020-10-23 |
公开(公告)号: | CN112258613A | 公开(公告)日: | 2021-01-22 |
发明(设计)人: | 朱海天;缪源清;马宗阳;方志成;韩峰;黄首志;牛泽平;刘景明 | 申请(专利权)人: | 南京维伍网络科技有限公司 |
主分类号: | G06T15/00 | 分类号: | G06T15/00 |
代理公司: | 南京利丰知识产权代理事务所(特殊普通合伙) 32256 | 代理人: | 任立 |
地址: | 211500 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 archicad d5 渲染 实时 数据 转换 方法 | ||
1.一种ARCHICAD到D5渲染器实时渲染的数据转换方法,其特征在于:通过ARCHICAD插件读取当前项目的模型信息,处理后发送给本地连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:首先产生有效的可以导出的材质与几何结构的集合,具体为:
(1)获取模型
a.通过调用SDK提供的接口获取3D模型;
(2)读取材质信息
a.调用SDK提供的接口GetMaterialCount,获取当前模型的材质数目;
b.以材质编号为索引,获取材质的信息。若材质存在贴图则获取此贴图的像素信息,
将像素写入png文件中以保持RGB以及alpha通道的信息;
c.将材质的名称、可能存在的材质贴图的位置、颜色信息保存至相应的数据结构中;
(3)读取三维数据
a.调用SDK提供的接口GetElementCount获取当前模型的元素个数;
b.以元素编号为索引,获取每个元素的信息。调用GetMeshBody调取每个元素中的实体信息。调用GetPolygonCount获取每个实体的多边形信息,再获取每个多边形的顶点数,加入顶点数组中。调用GetConvexPolygonCount获取每个多边形中的凸多边形信息,再将凸四边形分解成三角形,求出每个点在实体的顶点数组中的索引,获取面上的每个点的uv值与法向量;
c.将顶点数组、索引信息、uv数组、法向量数组保存到相应的数据结构中,将恒等矩阵作为变换矩阵保存;
(4)建立实例信息
a.将步骤(2)(3)中得到的信息进行组合,得到实例信息;
(5)发送给本地连接模块
a.将材质、三维数据以及实例信息组织成特定的结构;
b.调用本地连接模块的接口,传递以上结构化的数据;
S2:本地连接模块接收模型数据,并将数据传到GPU上进行优化,其具体步骤为:
(1)准备数据:需要将数据转换为可以被GPU处理的格式;
(2)调用CUDA C函数,将数据上传到GPU;
(3)调用CUDA核,对模型进行优化;
(4)调用CUDA C函数,将数据从GPU数组拷贝回CPU数组中;
(5)调用Socket函数,将合并后的模型数据和材质数据转换为字符串,通过Socket将数据发送到D5渲染器中进行渲染。
2.根据权利要求1所述的ARCHICAD到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(1)中准备数据,其具体为:将所有的顶点数据、所有的法线数据分别打包到两个大数组中,然后再上传到GPU,同时将所有的转置矩阵也需要打包起来,对于每个顶点或法线,都额外存储了一个转置数组的索引,用来获取对当前坐标进行转换的矩阵,需要将数据转换为可以被GPU处理的格式。
3.根据权利要求1所述的ARCHICAD到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(2)中先在CPU分配好打包的存储空间,将数据复制过去,然后再GPU分配同样大小的存储空间,调用CUDA C函数,进行数据上传。
4.根据权利要求1所述的ARCHICAD到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(3)中对模型进行优化,具体为:将模型的顶点和法线用转置矩阵进行变换,对于每个CUDA线程,用线程ID作为索引,从打包的顶点或法线数组里选择一个点,然后从打包的转置矩阵数组中读取这个点对应的转置,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京维伍网络科技有限公司,未经南京维伍网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011148402.8/1.html,转载请声明来源钻瓜专利网。