CN112258615B - 一种Revit到D5渲染器实时渲染的数据转换方法 - Google Patents
一种Revit到D5渲染器实时渲染的数据转换方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000009877 rendering Methods 0.000 title claims abstract description 14
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 9
- 238000005457 optimization Methods 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims abstract description 5
- 230000001360 synchronised effect Effects 0.000 claims abstract description 3
- 239000000463 material Substances 0.000 claims description 39
- 230000006870 function Effects 0.000 claims description 23
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims description 14
- 239000011159 matrix material Substances 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 12
- 238000012216 screening Methods 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 5
- 238000013075 data extraction Methods 0.000 claims description 3
- 238000002310 reflectometry Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 3
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 4
- 239000004566 building material Substances 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [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
技术领域
本发明涉及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,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115311429B (zh) * | 2022-08-09 | 2023-05-02 | 北京飞渡科技股份有限公司 | 一种基于Revit的数据导出方法及系统 |
Citations (3)
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 | 广联达科技股份有限公司 | 一种提高建筑模型显示效率的批次渲染方法 |
-
2020
- 2020-10-23 CN CN202011150020.9A patent/CN112258615B/zh active Active
Patent Citations (3)
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 |