CN112258615B - 一种Revit到D5渲染器实时渲染的数据转换方法 - Google Patents

一种Revit到D5渲染器实时渲染的数据转换方法 Download PDF

Info

Publication number
CN112258615B
CN112258615B CN202011150020.9A CN202011150020A CN112258615B CN 112258615 B CN112258615 B CN 112258615B CN 202011150020 A CN202011150020 A CN 202011150020A CN 112258615 B CN112258615 B CN 112258615B
Authority
CN
China
Prior art keywords
data
revit
renderer
model
gpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011150020.9A
Other languages
English (en)
Other versions
CN112258615A (zh
Inventor
张赫
原琪皓
韩静烨
光昌正
刘景明
白路
朱海天
黄首志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Dimension 5 Network Technology Co ltd
Original Assignee
Nanjing Dimension 5 Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Dimension 5 Network Technology Co ltd filed Critical Nanjing Dimension 5 Network Technology Co ltd
Priority to CN202011150020.9A priority Critical patent/CN112258615B/zh
Publication of CN112258615A publication Critical patent/CN112258615A/zh
Application granted granted Critical
Publication of CN112258615B publication Critical patent/CN112258615B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种Revit到D5渲染器实时渲染的数据转换方法,通过Revit插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,本发明通过对Revit的所有内建材质类型进行解析,获得了良好的材质对应效果,几乎所有内建材质都可以在同步后反映出来,同时在Native模块中对模型数据进行了优化,让相同材质的模型进行合并,优化后不但提高了同步后的渲染速度,还使渲染效果得到了很大的改善。

Description

一种Revit到D5渲染器实时渲染的数据转换方法
技术领域
本发明涉及3D数据转换,尤其涉及一种Revit到D5渲染器实时渲染的数据转换方法。
背景技术
TwinMotion一款专为建筑需求而设计的工具集该技术是将Revit项目同步到UnrealEngine中的一个插件,用户可以将Revit项目中的模型导入到UnrealEngine中进行实时可视化。主要原理是对Revit的数据结构进行遍历并转换到UnrealEngine可识别的格式,其缺点有:
1.Socket连接:TwinMotion采用短连接,每次更新后必须重新连接;
2.导出速度:TwinMotion的导出速度相对较慢;
3.材质对应:TwinMotion导出的材质存在不能跟Revit中的材质一一对应的情况;
4.模型:TwinMotion未对Revit产生的模型数据进行优化,在某些情形下会影响渲染效果。
发明内容
本发明所要解决的技术问题是,针对以上现有技术存在的缺点,提供一种Revit到D5渲染器实时渲染的数据转换方法。
本发明解决以上技术问题的技术方案是:一种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渲染器中进行渲染。
本发明进一步限定的技术方案是:
优选地,在S2(1)中准备数据,其具体为:将所有的顶点数据、所有的法线数据分别打包到两个大数组中,然后再上传到GPU,同时将所有的Transform矩阵也需要打包起来,对于每个顶点或法线,都额外存储了一个Transform数组的索引,用来获取对当前坐标进行转换的矩阵,需要将数据转换为可以被GPU处理的格式。
优选地,在S2(2)中先在CPU分配好打包的存储空间,将数据复制过去,然后再GPU分配同样大小的存储空间,调用CUDA C函数,进行数据上传。
优选地,在S2(3)中对模型进行优化,具体为:将模型的顶点和法线用Transform矩阵进行变换,对于每个CUDA线程,用线程ID作为索引,从打包的顶点或法线数组里选择一个点,然后从打包的Transform矩阵数组中读取这个点对应的Transform,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
本发明的有益效果是:
1.本发明基础采用了持久的连接,只要连接一次之后,用户每次更新模型之后就可以立即反映到D5渲染器中,不需要用户再选择或者多操作什么;
2.材质对应:本发明通过对Revit的所有内建材质类型进行解析,获得了良好的材质对应效果,几乎所有内建材质都可以在同步后反映出来。
3.模型优化:本发明在Native模块中对模型数据进行了优化,让相同材质的模型进行合并,不但提高了同步后的渲染速度,还使渲染效果得到了很大的改善。
4.导出类型筛选:本发明实现了用户对导出模型类别的筛选,例如用户可以只导出窗户或者屋顶。
附图说明
图1为实施例1整体流程图;
图2为实施例1中S1的具体流程图;
图3为实施例1中S2的具体流程图。
具体实施方式
实施例1
本实施例提供一种Revit到D5渲染器实时渲染的数据转换方法,如图1所示,通过Revit插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:如图2所示,首先通过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:如图3所示,Native连接模块接收模型数据,并将数据传到GPU上进行优化,其具体步骤为:
(1)准备数据:将所有的顶点数据、所有的法线数据分别打包到两个大数组中,然后再上传到GPU,同时将所有的Transform矩阵也需要打包起来,对于每个顶点或法线,都额外存储了一个Transform数组的索引,用来获取对当前坐标进行转换的矩阵,需要将数据转换为可以被GPU处理的格式;
(2)先在CPU分配好打包的存储空间,将数据复制过去,然后再GPU分配同样大小的存储空间,调用CUDA C函数,将数据上传到GPU;
(3)调用CUDA核,对模型进行优化,具体为:将模型的顶点和法线用Transform矩阵进行变换,对于每个CUDA线程,用线程ID作为索引,从打包的顶点或法线数组里选择一个点,然后从打包的Transform矩阵数组中读取这个点对应的Transform,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并;
(4)调用CUDA C函数,将数据从GPU数组拷贝回CPU数组中;
(5)调用Socket函数,将合并后的模型数据和材质数据转换为字符串,通过Socket将数据发送到D5渲染器中进行渲染。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。

Claims (4)

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,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
CN202011150020.9A 2020-10-23 2020-10-23 一种Revit到D5渲染器实时渲染的数据转换方法 Active CN112258615B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011150020.9A CN112258615B (zh) 2020-10-23 2020-10-23 一种Revit到D5渲染器实时渲染的数据转换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011150020.9A CN112258615B (zh) 2020-10-23 2020-10-23 一种Revit到D5渲染器实时渲染的数据转换方法

Publications (2)

Publication Number Publication Date
CN112258615A CN112258615A (zh) 2021-01-22
CN112258615B true CN112258615B (zh) 2023-10-03

Family

ID=74262293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011150020.9A Active CN112258615B (zh) 2020-10-23 2020-10-23 一种Revit到D5渲染器实时渲染的数据转换方法

Country Status (1)

Country Link
CN (1) CN112258615B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115311429B (zh) * 2022-08-09 2023-05-02 北京飞渡科技股份有限公司 一种基于Revit的数据导出方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109636893A (zh) * 2019-01-03 2019-04-16 华南理工大学 三维OBJ模型及MTL材质在iPhone中的解析与渲染方法
CN109658487A (zh) * 2018-11-01 2019-04-19 苏州蜗牛数字科技股份有限公司 一种实时渲染器优化方法及系统
CN109978981A (zh) * 2019-03-15 2019-07-05 广联达科技股份有限公司 一种提高建筑模型显示效率的批次渲染方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109658487A (zh) * 2018-11-01 2019-04-19 苏州蜗牛数字科技股份有限公司 一种实时渲染器优化方法及系统
CN109636893A (zh) * 2019-01-03 2019-04-16 华南理工大学 三维OBJ模型及MTL材质在iPhone中的解析与渲染方法
CN109978981A (zh) * 2019-03-15 2019-07-05 广联达科技股份有限公司 一种提高建筑模型显示效率的批次渲染方法

Also Published As

Publication number Publication date
CN112258615A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
US11747976B2 (en) Method and system for ink data generation, ink data rendering, ink data manipulation and ink data communication
US11620768B2 (en) Point cloud geometry compression using octrees with multiple scan orders
CN111402390A (zh) 模型渲染方法、装置、设备及存储介质
CN110751696A (zh) 将BIM模型数据转化为glTF数据的方法、装置、设备及介质
CN101853162B (zh) 一种可编辑的网页三维几何造型渲染方法
CN114064813A (zh) 一种海洋多维数据的查询及可视化方法
CN112258615B (zh) 一种Revit到D5渲染器实时渲染的数据转换方法
CN108537891A (zh) 三维材质和贴图数据自动转换到ue4的方法
CN111275826A (zh) 一种适用于ar情景的三维模型自动转换方法
CN112258616B (zh) 一种SketchUp到D5渲染器实时渲染的数据转换方法
US12014470B2 (en) Model generation apparatus, model generation system, model generation method
CN119278627A (zh) 高效的映射坐标创建和传输
CN110096484B (zh) 一种基于Revit的3D模型批量导出方法
CN104200520B (zh) 一种基于部件模型组合的三维云渲染方法及三维云渲染系统
CN110942128B (zh) 一种基于AutoCAD的绘制二维码方法及系统
CN112258613B (zh) 一种archicad到d5渲染器实时渲染的数据转换方法
CN114004908A (zh) 一种简化dwg二维工程图纸实现方法
WO2025050831A1 (zh) 建筑群渲染方法、装置、计算机设备和存储介质
CN109684751B (zh) 一种装配式建筑的大样图调用方法、装置、设备及系统
CN110473264B (zh) 基于霍夫曼编码的深度图压缩方法、解压缩方法及编码器
CN110134684B (zh) 一种bim模型数据的数据库存储方法
CN114820903A (zh) 基于Unity3D的Web端3D效果同步方法、装置、设备及介质
CN110515993B (zh) 税务数据转换方法及系统
CN114494619A (zh) 一种三维地理pdf地图制作方法和系统
CA2973811C (en) Containment of data structures with data objects in data modeling tools

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant