CN112258616A - 一种SketchUp到D5渲染器实时渲染的数据转换方法 - Google Patents
一种SketchUp到D5渲染器实时渲染的数据转换方法 Download PDFInfo
- Publication number
- CN112258616A CN112258616A CN202011150024.7A CN202011150024A CN112258616A CN 112258616 A CN112258616 A CN 112258616A CN 202011150024 A CN202011150024 A CN 202011150024A CN 112258616 A CN112258616 A CN 112258616A
- Authority
- CN
- China
- Prior art keywords
- data
- model
- sketchup
- renderer
- information
- 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.)
- Granted
Links
Images
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)
- Processing Or Creating Images (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种SketchUp到D5渲染器实时渲染的数据转换方法,通过SketchUp插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,本发明通过对SketchUp的所有内建材质类型进行解析,获得了良好的材质对应效果,几乎所有内建材质都可以在同步后反映出来,同时在Native模块中对模型数据进行了优化,让相同材质的模型进行合并,优化后不但提高了同步后的渲染速度,还使渲染效果得到了很大的改善。
Description
技术领域
本发明涉及3D数据转换,尤其涉及一种SketchUp到D5渲染器实时渲染的数据转换方法。
背景技术
TwinMotion一款专为建筑需求而设计的工具集该技术是将SketchUp项目同步到UnrealEngine中的一个插件,用户可以将SketchUp项目中的模型导入到UnrealEngine中进行实时可视化。主要原理是对SketchUp的数据结构进行遍历并转换到UnrealEngine可识别的格式,其缺点有:
1.Socket连接:TwinMotion采用短连接,每次更新后必须重新连接;
2.导出速度:TwinMotion的导出速度相对较慢;
3.材质对应:TwinMotion导出的材质存在不能跟SketchUp中的材质一一对应的情况;
4.模型:TwinMotion未对SketchUp产生的模型数据进行优化,在某些情形下会影响渲染效果。
发明内容
本发明所要解决的技术问题是,针对以上现有技术存在的缺点,提供一种SketchUp到D5渲染器实时渲染的数据转换方法。
本发明解决以上技术问题的技术方案是:一种SketchUp到D5渲染器实时渲染的数据转换方法,通过SketchUp插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:首先通过Mesh筛选和生成过程,产生有效的可以导出的Mesh集合,具体为:
(1)筛选有效模型
SketchUp中的ruby自带了一种ruby的libffi包装器Fiddle,在SketchUp插件的ruby脚本中,实现fiddle可以调用dll中的c语言方法连接到native模块实现导出,而在SketchUp中的ruby api中则提供了SketchUp.active_model接口,整个模型的整个mesh数据都包含在这个model中,对这个model中的entities进行遍历,最终目的是遍历到模型中的所有face,以face作为最小单位进行mesh的处理,在该插件需要处理的entity主要有三种:face,group,componentInstance.,遍历到face就取到face中的mesh,并调用dll方法进行数据传递,若是遇到isHidden为true的face则跳过不进行处理;遍历到group就对group.entities进行如上的遍历直到最底层的face为止;遍历到componentInstance也相应的对definition.entities进行遍历;
(2)Mesh生成:模型材质抽取和模型三维数据抽取
a.在Face接口的PolygonMesh函数中,SketchUp会提供计算好的模型顶点、贴图坐标以及法线数据等,然后SketchUp会将这些数据转换为Native模块可以识别的格式,并调用函数将数据发送过去;
b.材质抽取由专门的SketchUp.active_model.materials实现,SketchUp中的材质信息全岛存储在这个array里,不同的材质会有不同的唯一标识符和名称,我们在传递材质数据的时候主要是以材质名称作为关键字,对于有材质贴图的材质会把图片导出到指定的文件夹中,对于每一种material都会读取颜色,反射率,贴图等各种信息,然后把这些信息组合到XML中并发送给Native模块;
c.将上述a和b中数据及信息转换成D5渲染器内部可以处理的格式之后,发送到Native连接模块进行下一步处理,,同时在SketchUp里面模型材质数据的导出过程开始之前,先测试跟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.材质对应:本发明通过对SketchUp的所有内建材质类型进行解析,获得了良好的材质对应效果,几乎所有内建材质都可以在同步后反映出来。
3.模型优化:本发明在Native模块中对模型数据进行了优化,让相同材质的模型进行合并,不但提高了同步后的渲染速度,还使渲染效果得到了很大的改善。
4.导出类型筛选:本发明实现了用户对导出模型类别的筛选,例如用户可以只导出窗户或者屋顶。
附图说明
图1为实施例1整体流程图;
图2为实施例1中S1的具体流程图;
图3为实施例1中S2的具体流程图。
具体实施方式
实施例1
本实施例提供一种SketchUp到D5渲染器实时渲染的数据转换方法,如图1所示,通过SketchUp插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:如图2所示,首先通过Mesh筛选和生成过程,产生有效的可以导出的Mesh集合,具体为:
(1)筛选有效模型
SketchUp中的ruby自带了一种ruby的libffi包装器Fiddle,在SketchUp插件的ruby脚本中,实现fiddle可以调用dll中的c语言方法连接到native模块实现导出,而在SketchUp中的ruby api中则提供了SketchUp.active_model接口,整个模型的整个mesh数据都包含在这个model中,对这个model中的entities进行遍历,最终目的是遍历到模型中的所有face,以face作为最小单位进行mesh的处理,在该插件需要处理的entity主要有三种:face,group,componentInstance.,遍历到face就取到face中的mesh,并调用dll方法进行数据传递,若是遇到isHidden为true的face则跳过不进行处理;遍历到group就对group.entities进行如上的遍历直到最底层的face为止;遍历到componentInstance也相应的对definition.entities进行遍历;
(2)Mesh生成:模型材质抽取和模型三维数据抽取
a.在Face接口的PolygonMesh函数中,SketchUp会提供计算好的模型顶点、贴图坐标以及法线数据等,然后SketchUp会将这些数据转换为Native模块可以识别的格式,并调用函数将数据发送过去;
b.材质抽取由专门的SketchUp.active_model.materials实现,SketchUp中的材质信息全岛存储在这个array里,不同的材质会有不同的唯一标识符和名称,我们在传递材质数据的时候主要是以材质名称作为关键字,对于有材质贴图的材质会把图片导出到指定的文件夹中,对于每一种material都会读取颜色,反射率,贴图等各种信息,然后把这些信息组合到XML中并发送给Native模块;
c.将上述a和b中数据及信息转换成D5渲染器内部可以处理的格式之后,发送到Native连接模块进行下一步处理,,同时在SketchUp里面模型材质数据的导出过程开始之前,先测试跟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.一种SketchUp到D5渲染器实时渲染的数据转换方法,其特征在于:通过SketchUp插件读取当前项目的模型信息,处理后发送给Native连接模块做进一步的优化,最后同步到D5渲染器中,其具体包括以下步骤为:
S1:首先通过Mesh筛选和生成过程,产生有效的可以导出的Mesh集合,具体为:
(1)筛选有效模型
SketchUp中的ruby自带了一种ruby的libffi包装器Fiddle,在SketchUp插件的ruby脚本中,实现fiddle可以调用dll中的c语言方法连接到native模块实现导出,而在SketchUp中的ruby api中则提供了SketchUp.active_model接口,整个模型的整个mesh数据都包含在这个model中,对这个model中的entities进行遍历,最终目的是遍历到模型中的所有face,以face作为最小单位进行mesh的处理,在该插件需要处理的entity主要有三种:face,group,componentInstance.,遍历到face就取到face中的mesh,并调用dll方法进行数据传递,若是遇到isHidden为true的face则跳过不进行处理;遍历到group就对group.entities进行如上的遍历直到最底层的face为止;遍历到componentInstance也相应的对definition.entities进行遍历;
(2)Mesh生成:模型材质抽取和模型三维数据抽取
a.在Face接口的PolygonMesh函数中,SketchUp会提供计算好的模型顶点、贴图坐标以及法线数据等,然后SketchUp会将这些数据转换为Native模块可以识别的格式,并调用函数将数据发送过去;
b.材质抽取由专门的SketchUp.active_model.materials实现,SketchUp中的材质信息全岛存储在这个array里,不同的材质会有不同的唯一标识符和名称,我们在传递材质数据的时候主要是以材质名称作为关键字,对于有材质贴图的材质会把图片导出到指定的文件夹中,对于每一种material都会读取颜色,反射率,贴图等各种信息,然后把这些信息组合到XML中并发送给Native模块;
c.将上述a和b中数据及信息转换成D5渲染器内部可以处理的格式之后,发送到Native连接模块进行下一步处理,,同时在SketchUp里面模型材质数据的导出过程开始之前,先测试跟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所述的SketchUp到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(1)中准备数据,其具体为:将所有的顶点数据、所有的法线数据分别打包到两个大数组中,然后再上传到GPU,同时将所有的Transform矩阵也需要打包起来,对于每个顶点或法线,都额外存储了一个Transform数组的索引,用来获取对当前坐标进行转换的矩阵,需要将数据转换为可以被GPU处理的格式。
3.根据权利要求1所述的SketchUp到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(2)中先在CPU分配好打包的存储空间,将数据复制过去,然后再GPU分配同样大小的存储空间,调用CUDA C函数,进行数据上传。
4.根据权利要求1所述的SketchUp到D5渲染器实时渲染的数据转换方法,其特征在于,在S2(3)中对模型进行优化,具体为:将模型的顶点和法线用Transform矩阵进行变换,对于每个CUDA线程,用线程ID作为索引,从打包的顶点或法线数组里选择一个点,然后从打包的Transform矩阵数组中读取这个点对应的Transform,这样每个顶点的变换都是并行的,然后将材质相同的模型变换后的顶点组合到一个新的模型中,使得相同材质的模型进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011150024.7A CN112258616B (zh) | 2020-10-23 | 2020-10-23 | 一种SketchUp到D5渲染器实时渲染的数据转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011150024.7A CN112258616B (zh) | 2020-10-23 | 2020-10-23 | 一种SketchUp到D5渲染器实时渲染的数据转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112258616A true CN112258616A (zh) | 2021-01-22 |
CN112258616B CN112258616B (zh) | 2023-10-03 |
Family
ID=74261244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011150024.7A Active CN112258616B (zh) | 2020-10-23 | 2020-10-23 | 一种SketchUp到D5渲染器实时渲染的数据转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112258616B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113572846A (zh) * | 2021-07-27 | 2021-10-29 | 广州引力波信息科技有限公司 | 一种跨平台数据交换插件系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590862A (zh) * | 2017-09-14 | 2018-01-16 | 深圳市彬讯科技有限公司 | 一种定向快速渲染三维模型的系统 |
CN107680153A (zh) * | 2017-09-14 | 2018-02-09 | 深圳市彬讯科技有限公司 | 一种基于三维模型替换指定部位材质的渲染出图方法 |
CN109636893A (zh) * | 2019-01-03 | 2019-04-16 | 华南理工大学 | 三维OBJ模型及MTL材质在iPhone中的解析与渲染方法 |
CN109933868A (zh) * | 2019-02-27 | 2019-06-25 | 壹仟零壹艺网络科技(北京)有限公司 | SketchUp模型材质贴图自动匹配方法及系统 |
-
2020
- 2020-10-23 CN CN202011150024.7A patent/CN112258616B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590862A (zh) * | 2017-09-14 | 2018-01-16 | 深圳市彬讯科技有限公司 | 一种定向快速渲染三维模型的系统 |
CN107680153A (zh) * | 2017-09-14 | 2018-02-09 | 深圳市彬讯科技有限公司 | 一种基于三维模型替换指定部位材质的渲染出图方法 |
CN109636893A (zh) * | 2019-01-03 | 2019-04-16 | 华南理工大学 | 三维OBJ模型及MTL材质在iPhone中的解析与渲染方法 |
CN109933868A (zh) * | 2019-02-27 | 2019-06-25 | 壹仟零壹艺网络科技(北京)有限公司 | SketchUp模型材质贴图自动匹配方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113572846A (zh) * | 2021-07-27 | 2021-10-29 | 广州引力波信息科技有限公司 | 一种跨平台数据交换插件系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112258616B (zh) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104637089B (zh) | 三维模型数据处理方法和装置 | |
CN111402390A (zh) | 模型渲染方法、装置、设备及存储介质 | |
CN110751696A (zh) | 将BIM模型数据转化为glTF数据的方法、装置、设备及介质 | |
CN112989482B (zh) | Bim模型数据的生成方法及装置和构建方法及装置 | |
KR20030073424A (ko) | 렌더링시스템, 렌더링방법 및 그 기록매체 | |
CN112365598B (zh) | 倾斜摄影数据转换三维数据的方法、装置及终端 | |
CN111666114B (zh) | 一种插件式测井数据转换方法 | |
CN109615707A (zh) | 一种三维模型处理方法、装置、计算机设备和存储介质 | |
CN115618653B (zh) | 用于cae软件的仿真计算结果的后处理的方法、服务器和程序产品 | |
US20220375186A1 (en) | Method and apparatus for generating bounding box, device and storage medium | |
CN107958209B (zh) | 一种违建识别方法、系统及电子设备 | |
CN112258616B (zh) | 一种SketchUp到D5渲染器实时渲染的数据转换方法 | |
CN112258615B (zh) | 一种Revit到D5渲染器实时渲染的数据转换方法 | |
KR102346090B1 (ko) | 체적 3d 비디오 데이터의 실시간 혼합 현실 서비스를 위해 증강 현실 원격 렌더링 방법 | |
CN112258613B (zh) | 一种archicad到d5渲染器实时渲染的数据转换方法 | |
CN114004908B (zh) | 一种简化dwg二维工程图纸实现方法 | |
CN114581610A (zh) | 一种针对Autodesk 3Ds Max三维模型坐标转换的方法 | |
WO2021123346A1 (en) | 3d rendering | |
CN111583374A (zh) | 一种渲染代理文件的制作方法 | |
US11960828B2 (en) | Method and apparatus for mapping processing | |
CN117392294B (zh) | 一种动画文件检查修复方法、系统、电子设备及存储介质 | |
KR20190130959A (ko) | 크로마 서브 샘플링된 이미지들에 대한 빠른 참조 객체 저장 형식에 대한 방법 | |
CN116662266B (zh) | 一种面向NetCDF数据的并行读写方法及系统 | |
CN109165459A (zh) | 一种基于虚拟现实和增强现实的验证集成系统以及方法 | |
CN116302579B (zh) | 面向Web端的时空大数据高效加载渲染方法及系统 |
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 |