Open3D Mesh deformation

简介: Open3D Mesh deformation

Mesh deformation

如果我们想根据少量的约束来变形三角形网格,我们可以使用网格变形算法。Open3D通过[SorkineAndAlexa2007]实现了尽可能严格的方法,该方法优化了以下能量函数


ijN(i)wij(pipj)Ri(pipj)2,

R i 是我们想要优化的旋转矩阵,p i ,

分别是优化前后的顶点位置N(i)是顶点i的邻居的集合。权重w i j是余切权重。

Open3D 在deform_as_rigid_as_possible中实现了此方法。此方法的第一个参数constraint_ids是一组引用三角形网格中的顶点的参数。第二个参数constrint_pos定义优化后这些顶点应位于哪个位置。优化过程是一个迭代方案。因此,我们还可以通过 max_iter定义迭代次数。

armadillo = o3d.data.ArmadilloMesh()
mesh = o3d.io.read_triangle_mesh(armadillo.path)

vertices = np.asarray(mesh.vertices)
static_ids = [idx for idx in np.where(vertices[:, 1] < -30)[0]]
static_pos = []
for id in static_ids:
    static_pos.append(vertices[id])
handle_ids = [2490]
handle_pos = [vertices[2490] + np.array((-40, -40, -40))]
constraint_ids = o3d.utility.IntVector(static_ids + handle_ids)
constraint_pos = o3d.utility.Vector3dVector(static_pos + handle_pos)

with o3d.utility.VerbosityContextManager(
        o3d.utility.VerbosityLevel.Debug) as cm:
    mesh_prime = mesh.deform_as_rigid_as_possible(constraint_ids,
                                                  constraint_pos,
                                                  max_iter=50)

Smoothed ARAP 平滑的 ARAP

Open3D 还实现了 ARAP 目标的平滑版本,定义为

ijN(i)wij(pipj)Ri(pipj)2+αARiRj2


这会惩罚相邻旋转矩阵的偏差。 α是正则化项的权衡参数,并且A是表面积。

平滑化的目标可以通过deform_as_rigid_as_possible将参数energy与参数Smoothed 一起使用。https://zhuanlan.zhihu.com/p/25846219

https://zhuanlan.zhihu.com/p/25804146

相关文章
|
6月前
|
机器学习/深度学习 算法 数据可视化
Open3D Mesh 网格
Open3D Mesh 网格
164 2
|
6月前
|
JSON 算法 数据可视化
Open3d-Point cloud (点云)
Open3d-Point cloud (点云)
445 5
|
6月前
|
传感器 数据可视化 索引
Open3D Ray Casting 光线投射
Open3D Ray Casting 光线投射
130 2
|
7月前
|
JavaScript API
Composition Api 与 Options Api 有什么区别?
Composition Api 与 Options Api 有什么区别?
138 0
|
JavaScript API
Componsition API与Options API的对比
Componsition API与Options API的对比
68 0
|
JSON NoSQL 应用服务中间件
podman REST API 的images操作
podman REST API 的images操作
206 0
|
负载均衡 监控 Cloud Native
观点:Service Mesh和API网关正在逐步融合
观点:Service Mesh和API网关正在逐步融合
|
负载均衡 Java 微服务
服务网格(Service Mesh)是什么?
概述服务网格的概念,了解服务网格的作用及业界产品
363 1
|
运维 监控 安全
服务网格(Service Mesh)在中国工商银行的探索与实践
ServiceMesh是下一代的微服务架构基础。蚂蚁集团从 2018 年初开始技术探索并进行了落地试点。目前, Service Mesh 覆盖了蚂蚁集团数千个应用,实现了核心链路全覆盖。蚂蚁集团通过 Service Mesh 的大规模落地向云原生走出了坚实的一步,真切看到了基础设施下沉后为业务快速增长提供了支撑,以及对基础设施团队在研发和运维效率的提升、成本的降低上带来极大收益。现在,Service Mesh技术解决方案也正在开放给社会。 下文为工商银行在应用蚂蚁Service Mesh方面的实践案例。
524 0
服务网格(Service Mesh)在中国工商银行的探索与实践
|
负载均衡 Java API
Service Mesh 和 API Gateway 关系深度探讨
Service Mesh 和 API Gateway 之间的关系,是“泾渭分明”还是“兼容并进”?本文结合作者理解给出了一些看法,欢迎阅读
1291 0
Service Mesh 和 API Gateway 关系深度探讨