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

相关文章
|
1月前
|
Kubernetes 网络协议 数据库
在Service Mesh内访问网格外的服务
阿里云服务网格ASM提供了访问外部服务的三种方式,包含设置外部服务访问策略、配置ServiceEntry和设置拦截对外访问的网段。本文介绍如何在服务网格ASM上访问外部服务。
66 0
|
15天前
|
机器学习/深度学习 算法 数据可视化
Open3D Mesh 网格
Open3D Mesh 网格
|
15天前
|
JSON 算法 数据可视化
Open3d-Point cloud (点云)
Open3d-Point cloud (点云)
|
15天前
|
传感器 数据可视化 索引
Open3D Ray Casting 光线投射
Open3D Ray Casting 光线投射
|
1月前
|
负载均衡 Dubbo Java
Service Mesh 的基本模式
【5月更文挑战第16天】Service Mesh分为两种模式:Sidecar和第二代Service Mesh。
|
1月前
|
运维 Kubernetes 安全
Service Mesh 落地路径
【2月更文挑战第29天】该文讨论了在非Kubernetes环境下如何引入Service Mesh。若业务已在Kubernetes上,Istio是理想选择;否则,有两种路径:1) 先采用Sidecar解决眼前需求,若未来计划容器化,再转向Istio;2) 先进行Kubernetes改造,然后接入Istio以充分利用其优势。文章建议,出于性能考虑,可简化Istio的Mixer组件,仅保留核心的Envoy和Pilot,安全特性应根据业务环境灵活选择。对于特定平台,可以定制优化Istio以提高性能。
|
9月前
|
运维 监控 安全
什么是service mesh?
什么是service mesh?
|
负载均衡 监控 Cloud Native
观点:Service Mesh和API网关正在逐步融合
观点:Service Mesh和API网关正在逐步融合
|
负载均衡 Kubernetes Cloud Native
对 Service Mesh 望而却步?可能都没理解这一点
Service Mesh 发展已经有 6-7年的时间,很多人对 Service Mesh 只停留在知道的水平上,特别是很多技术人第一次接触到 Service Mesh,看到服务网格的解释,看到 Istio 的架构,对这门技术仍然云里雾里。实际上,劝退大多数人的不是技术,而是概念本身。
184 0
对 Service Mesh 望而却步?可能都没理解这一点
|
网络协议 Java API
Service Mesh
Service Mesh
223 0