MeshAnything V2来了!30秒生成建模师级Mesh!最大可生成面数提升至1600.

168 篇文章 7 订阅
132 篇文章 3 订阅

GitHub已揽星1.9k的MeshAnything项目上新了V2版本,由来自南洋理工大学、清华大学、帝国理工学院、西湖大学等研究人员完成。

MeshAnything V2相比V1,使用了最新提出的Adjacent Mesh Tokenization(AMT)算法,将最大可生成面数从800提升到了1600。

只需30秒,AI就能像3D建模师一样,在各种指示下生成高质量人造Mesh。

NeRF、3D Gaussian Splatting生成的三维重建图像Mesh效果如下:

亮点直击

  1. 文章引入了一种相邻网格标记(AMT)网格标记方法,AMT 只需一半的标记序列长度来表示相同的网格,从而从根本上减少了网格生成的计算负担。

  2. MeshAnything 配备了 AMT,并推出了 MeshAnything V2。V2 将可生成的最大面数增加了一倍,同时实现了更高的准确性和效率。

  3. 大量实验表明,AMT 显著提高了网格生成的效率和性能。

相关链接

项目主页:https://buaacyw.github.io/meshanything-v2/

论文地址:https://buaacyw.github.io/meshanything-v2/MeshAnything_V2_Arxiv.pdf

论文阅读

摘要

我们推出了 MeshAnything V2,这是一种自回归转换器,可生成与给定形状对齐的艺术家创建的网格 (AM)。它可以与各种 3D 资产生产流程集成,以实现高质量、高度可控的 AM 生成。使用相同大小的模型,MeshAnything V2 在效率和性能方面都超越了以前的方法。

这些改进归功于我们新提出的网格标记化方法:相邻网格标记化 (AMT)。与之前用三个顶点表示每个面的方法不同,AMT 尽可能使用单个顶点。与之前的方法相比,AMT 平均需要大约一半的标记序列长度来表示相同的网格。此外,AMT 的标记序列更紧凑、结构更好,从根本上有利于网格生成。我们大量的实验表明,AMT 显著提高了网格生成的效率和性能。

方法

相邻网格标记化说明

与之前使用三个顶点表示一个面的方法不同,AMT 尽可能使用单个顶点。 当无法做到这一点时,AMT 会添加一个特殊标记 & 并重新启动。AMT 平均将 token 序列长度减少了一半。其紧凑且结构良好的序列表示增强了序列学习,从而显著提高了网格生成的效率和性能。

实验

结论

在这项工作中,我们提出了 MeshAnything V2,这是一种形状条件化的艺术家创建的网格 (AM) 生成模型,可生成与给定形状对齐的 AM。凭借我们新提出的相邻网格标记化 (AMT),V2 在性能和效率方面都明显优于 MeshAnything V1。与以前使用三个顶点表示面的方法不同,AMT 尽可能使用单个顶点。我们的实验表明,AMT 平均将标记序列长度减少了一半。来自 AMT 的紧凑且结构良好的标记序列大大增强了序列学习,从而显著提高了 AM 生成的效率和性能。

限制。 虽然与 V1 相比有很大改进,但 MeshAnything V2 的准确性仍然不足以满足工业应用。需要付出更多努力来提高模型的稳定性和准确性。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在TriangleNet生成的三角网中,每个三角形都有三个顶点,每个顶点都有一个高程值。要计算任意平面坐标点 P(X,Y) 的高程,可以使用以下步骤: 1. 确定 P(X,Y) 所在的三角形,可以使用TriangleNet中的 Locate 方法来实现。该方法可以返回 P(X,Y) 所在的三角形的索引。 2. 获取 P(X,Y) 所在三角形的三个顶点的坐标和高程值。 3. 使用三个顶点的坐标和高程值进行插值计算,得到 P(X,Y) 的高程值。可以使用线性插值、二次插值或更高阶的插值方法。 以下是一个示例代码,演示如何计算任意平面坐标点 P(X,Y) 的高程值: ``` ' 假设已经生成了三角网格 mesh,以及需要计算高程的点 P(X,Y) Dim x As Double = X Dim y As Double = Y Dim z As Double = 0.0 ' 确定 P(X,Y) 所在的三角形 Dim index As Integer = mesh.Locate(x, y) ' 获取三角形的三个顶点的坐标和高程值 Dim vertices As TriangleNet.Data.Vertex() = mesh.Vertices Dim v1 As TriangleNet.Data.Vertex = vertices(mesh.Triangles(index).P0) Dim v2 As TriangleNet.Data.Vertex = vertices(mesh.Triangles(index).P1) Dim v3 As TriangleNet.Data.Vertex = vertices(mesh.Triangles(index).P2) Dim z1 As Double = v1.z Dim z2 As Double = v2.z Dim z3 As Double = v3.z ' 使用三个顶点的坐标和高程值进行插值计算 ' 这里使用线性插值 Dim det As Double = (v2.y - v3.y) * (v1.x - v3.x) + (v3.x - v2.x) * (v1.y - v3.y) Dim w1 As Double = ((v2.y - v3.y) * (x - v3.x) + (v3.x - v2.x) * (y - v3.y)) / det Dim w2 As Double = ((v3.y - v1.y) * (x - v3.x) + (v1.x - v3.x) * (y - v3.y)) / det Dim w3 As Double = 1.0 - w1 - w2 z = w1 * z1 + w2 * z2 + w3 * z3 ``` 在上面的代码中,使用了线性插值计算 P(X,Y) 的高程值。如果需要使用其他插值方法,只需更改计算公式即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGC Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值