abaqus合并部件后应该对谁划分网格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abaqus合并部件后应该对谁划分网格相关的知识,希望对你有一定的参考价值。
参考技术A 1、ABAQUS的网格划分方法是首先对几何模型布置种子来控制单元密度和位置。2、然后使用自动算法直接生成网格。
使用 VBO 的 OpenGL 贪心网格划分
【中文标题】使用 VBO 的 OpenGL 贪心网格划分【英文标题】:OpenGL greedy meshing using VBO 【发布时间】:2015-06-29 11:14:36 【问题描述】:我正在尝试通过实施类似于 Mikola (http://0fps.net/2012/06/30/meshing-in-a-minecraft-game/) 的贪心网格算法来减少在我的体素引擎中渲染的面数
由于我使用 VBO 为每个立方体绘制每个三角形,我想知道如何合并相邻立方体的三角形?
这里是我的立方体顶点数组的样子供参考(请注意,它是交错的以允许包含纹理坐标):
GLfloat cubeInterleaved[] =
// Front face u v
-0.5f, -0.5f, 0.5f, 0, 0,
0.5f, -0.5f, 0.5f, 1, 0,
0.5f, 0.5f, 0.5f, 1, 1,
-0.5f, 0.5f, 0.5f, 0, 1,
// Right face
0.5f, -0.5f, 0.5f, 0, 0,
0.5f, -0.5f, -0.5f, 1, 0,
0.5f, 0.5f, -0.5f, 1, 1,
0.5f, 0.5f, 0.5f, 0, 1,
// Back face
0.5f, -0.5f, -0.5f, 0, 0,
-0.5f, -0.5f, -0.5f, 1, 0,
-0.5f, 0.5f, -0.5f, 1, 1,
0.5f, 0.5f, -0.5f, 0, 1,
// Left face
-0.5f, -0.5f, -0.5f, 0, 0,
-0.5f, -0.5f, 0.5f, 1, 0,
-0.5f, 0.5f, 0.5f, 1, 1,
-0.5f, 0.5f, -0.5f, 0, 1,
// Top Face
-0.5f, 0.5f, 0.5f, 0, 0,
0.5f, 0.5f, 0.5f, 1, 0,
0.5f, 0.5f, -0.5f, 1, 1,
-0.5f, 0.5f, -0.5f, 0, 1,
// Bottom Face
0.5f, -0.5f, 0.5f, 0, 0,
-0.5f, -0.5f, 0.5f, 1, 0,
-0.5f, -0.5f, -0.5f, 1, 1,
0.5f, -0.5f, -0.5f, 0, 1
;
【问题讨论】:
你的问题在哪里? 【参考方案1】:由于我使用 VBO 为每个立方体绘制每个三角形,我对如何合并相邻立方体的三角形感到困惑。
仅使用顶点的子集,这是通过正确填充索引缓冲区进行绘制来完成的。
以这组 4 个三角形为例
5
/ \
3 --- 4
/ \ / \
0 --- 1 --- 2
你可以画
GL_TRIANGLES: 0 1 3 1 2 4 1 4 3 3 4 5
或者如果所有顶点都是共面的,你可以只使用外边缘
GL_TRIANGLES: 0 2 5
您可以通过适当填充传递给glDrawElements
的索引缓冲区来对构成您的世界的块的顶点执行相同的操作
【讨论】:
对于您的 4 个三角形示例,我了解如果将 VBO 设置为绘制一个 4 个三角形形状并合并该 VBO 的三角形,这将如何工作,但是我的问题是我的索引数组只能修改哪些顶点将从我的顶点数组(已经减少到可能的三角形数量最少的立方体)中绘制,并且我的顶点数组一次只能绘制 1 个立方体,所以我看不出这如何合并来自相邻立方体的三角形.感谢您的帮助。 @user4743748:一次只使用一个立方体是非常低效的。你希望你的三角形/绘图调用比率超过 1000。你应该将尽可能多的立方体打包到一个 VBO 中。 哦.. 所以现在为了绘制一个“块”立方体,我让每个立方体由同一个立方体 VBO 单独绘制,但是我应该制作一个包含所有顶点的 VBO立方体“块”中的所有立方体(1000 个顶点),然后根据我想从那个非常大的 VBO 渲染哪些面来更新我的索引缓冲区? @user4743748:没错。一个带有大量立方体的 VBO 和一个元素索引缓冲区,根据您想要显示的内容进行更新。以上是关于abaqus合并部件后应该对谁划分网格的主要内容,如果未能解决你的问题,请参考以下文章