当前位置:   article > 正文

【数字孪生】从Abaqus到Unity有限元应力云图_unity3d abaqus

unity3d abaqus

从abaqus到unity:

目录

1. 数据准备

1.1 abaqus中提取element rpt文件 

element rpt文件格式:

1.2 abaqus中提取node rpt文件:

node rpt文件格式:

2. python预处理以上数据:

2.1 提取node rpt中的节点坐标及应力值

2.2 提取element rpt中的单元信息

 2.3 将以上信息写入obj文件

3. 在unity中添加obj 并挂载shader和material

显示效果:


1. 数据准备

1.1 abaqus中提取element rpt文件 

在probe中选择element,输出单元类型及连接节点信息

element rpt文件格式

abaqus默认单元类型为C3D8R,为六面体网格,含有8个节点

其中C3D8R单元nodes的排列方式如下,其他类型单元nodes排列方式:单元信息Three-dimensional solid element library (mit.edu)

1.2 abaqus中提取node rpt文件:

 在probe中选择node,输出节点坐标及应力值

node rpt文件格式:

2. python预处理以上数据:

2.1 提取node rpt中的节点坐标及应力值

2.2 提取element rpt中的单元信息

 其中C3D8R单元nodes的排列方式如下,其他类型单元nodes排列方式:单元信息Three-dimensional solid element library (mit.edu)

 

每个面切分为多个三角形,按逆时针排列节点顺序:

以以上单元face3为例:

三角1:1,2,6

三角2:1,6,5

整个单元划分为12个三角面

参考博客:从有限元到Unity——从abaqus网格模型文件到Unity模型数据_怎么把有限元结果与unity结合-CSDN博客

 2.3 将以上信息写入obj文件

文件包含:

节点坐标,材质信息,顶点法线,面信息

v;vt;vn;f

obj文件示例:

  1. v -0.500000 -0.500000 0.500000
  2. v 0.500000 -0.500000 0.500000
  3. v -0.500000 0.500000 0.500000
  4. v 0.500000 0.500000 0.500000
  5. v -0.500000 0.500000 -0.500000
  6. v 0.500000 0.500000 -0.500000
  7. v -0.500000 -0.500000 -0.500000
  8. v 0.500000 -0.500000 -0.500000
  9. vt 0.000000 0.000000
  10. vt 0.1 0.000000
  11. vt 0.2 0
  12. vt 0.3 0
  13. vn 0.000000 0.000000 1.000000
  14. vn 0.000000 0.000000 1.000000
  15. vn 0.000000 0.000000 1.000000
  16. vn 0.000000 0.000000 1.000000
  17. vn 0.000000 1.000000 0.000000
  18. vn 0.000000 1.000000 0.000000
  19. vn 0.000000 1.000000 0.000000
  20. vn 0.000000 1.000000 0.000000
  21. vn 0.000000 0.000000 -1.000000
  22. vn 0.000000 0.000000 -1.000000
  23. vn 0.000000 0.000000 -1.000000
  24. vn 0.000000 0.000000 -1.000000
  25. vn 0.000000 -1.000000 0.000000
  26. vn 0.000000 -1.000000 0.000000
  27. vn 0.000000 -1.000000 0.000000
  28. vn 0.000000 -1.000000 0.000000
  29. vn 1.000000 0.000000 0.000000
  30. vn 1.000000 0.000000 0.000000
  31. vn 1.000000 0.000000 0.000000
  32. vn 1.000000 0.000000 0.000000
  33. vn -1.000000 0.000000 0.000000
  34. vn -1.000000 0.000000 0.000000
  35. vn -1.000000 0.000000 0.000000
  36. vn -1.000000 0.000000 0.000000
  37. f 1/1/1 2/2/2 4/4/3 3/3/4
  38. f 3/3/5 4/4/6 6/1/7 5/2/8
  39. f 5/3/9 6/3/10 8/3/11 7/3/12
  40. f 7/4/13 8/4/14 2/4/15 1/4/16
  41. f 2/2/17 8/4/18 6/4/19 4/4/20
  42. f 7/3/21 1/1/22 3/3/23 5/2/24

3. 在unity中添加obj 并挂载shader和material

shader文件示例:

  1. Shader"Custom/beam"
  2. {
  3. Properties
  4. {
  5. //2D贴图
  6. _Texture2D ("Texture2D", 2D) = ""{}
  7. }
  8. SubShader
  9. {
  10. Pass
  11. {
  12. CGPROGRAM
  13. // 声明vert函数为顶点着色器
  14. #pragma vertex vert
  15. // 声明frag函数片元着色器
  16. #pragma fragment frag
  17. //需要使用以上变量,在CG程序中重新声明
  18. sampler2D _Texture2D;
  19. //结构体,用于传递应用程序到顶点函数、顶点函数到片元函数
  20. //应用程序到顶点函数结构体
  21. struct a2v
  22. {
  23. float4 vertex : POSITION;//将模型空间的顶点坐标填充给vertex
  24. float3 normal : NORMAL;//将模型空间的法线方向填充给normal
  25. float2 texcoord : TEXCOORD;//将第一套纹理坐标填充给texcoord
  26. };
  27. //顶点函数到片元函数结构体
  28. struct v2f
  29. {
  30. float4 position : SV_Position;
  31. float3 color : COLOR;
  32. float2 texcoord : TEXCOORD;
  33. };
  34. //顶点函数
  35. v2f vert(a2v v)
  36. {
  37. v2f f;
  38. f.position = UnityObjectToClipPos(v.vertex);//顶点坐标从模型空间到剪裁空间的转换
  39. f.texcoord = v.texcoord;
  40. return f;
  41. }
  42. fixed4 frag(v2f i) : SV_Target
  43. {
  44. fixed4 col = tex2D(_Texture2D, i.texcoord);
  45. return col;
  46. }
  47. ENDCG
  48. }
  49. }
  50. FallBack "Diffuse"
  51. }

显示效果:

以上全流程文件+V  17386033638

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/389515
推荐阅读
相关标签
  

闽ICP备14008679号