赞
踩
分享针对大型结构体数字孪生的技术思路给到大家,给大家提供一些灵感,促进交流。
1、这段时间优化和改进了Abaqus模型转Unity的流程,完成从超50W结点的大型装配体Abaqus inp文件自动提取各部件的结点、面片信息,并在Unity当中进行重构。
2、成功走通Unity-MySQL实时显示应变云图的路线,通过分部件多线程的方式从MySQL数据库中以0.05s的速度提取几十万条数据,满足数字孪生的实时性需求。
当面对的是比较少量的结点(少于1W)的时候,比如说单个零部件,通过Abaqus的Query功能,能够获得结点的空间位置,有限单元的结点构成,但是,当结点数巨大(我的模型有50W个结点),而且有多个零部件,由于零部件之间的坐标关系复杂,通过Abaqus查询的功能获得的文件就可能出错。我遇到的问题是,模型直接重构成一坨不可名状的东西。
如果要使用Abaqus的有限元分析结果,在Unity当中重建有限元网格这个问题是绕不开的。多次尝试使用查询或者report的方式,仍然失效。想到在Abaqus转Ansys时,能够通过inp文件来重建网格,那么inp文件当中必定含有Abaqus的网格信息。一看果然有,而且inp文件不是二进制文件,是能够通过记事本打开的。而且记录的方式是通过分部件的形式,那也就是说,可以编写程序解析inp文件,获得多个部件的网格信息,并按照Unity的模型构成的方式来重构部件。而且一个好消息是,在Unity当中重构的mesh是自动保持部件之间的装配关系,不需要后期再繁琐地进行部件之间的装配。
当模型的结点数过大的时候,由于IO接口读取大量数据过于缓慢,根本无法实现实时更改颜色。
生成的网格是呈粉红色,如果给其赋予默认白色shader,则模型会变成灰白色。
如果要产生云图的效果,则需要编写特定的Shader,来根据模型mesh上的数值来采样颜色,然后进行实时渲染。当IO接口读取文件的速度特别慢的时候,则想到利用数据库,因为数据库技术本身就是管理海量数据的技术。在MySQL的数据库当中有根据表的某一列建立索引的功能,一旦建立索引之后,便能够迅速地找到所需要的数据。我将Abaqus不同的分析步的应变数据存储在MySQL数据库当中,然后在模型的不同的部件上挂代码,让其根据我的指令自动从数据库当中读取数据。这样则实现了模型在更换不同的颜色的时间缩短到0.05s,能够满足实时性的要求。
欢迎小伙伴私信交流,基本上都会回复。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。