gpt4 book ai didi

python - 为 3D 形状着色

转载 作者:行者123 更新时间:2023-12-04 14:02:22 26 4
gpt4 key购买 nike

如何给 3D 形状/点云(在我的例子中是人体)着色,使每个点都有不同的颜色,但点与点之间的颜色过渡是平滑的,如图所示下图?

enter image description here

N 个点的形状表示为点坐标x,y,zNx3 数组。我试图简单地将每个点的坐标值 x,y,z 转换为 r,g,b 颜色值,但结果并不令人满意(例如某些点根据欧几里得距离彼此接近的点用相似的颜色着色,但它们应该用不同的颜色着色,因为它们的测地距离很大)。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

pc = ...
colors = (pc - pc.min()) / (pc.max() - pc.min())

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(pc[1], pc[1], pc[2], c=colors)
plt.show()

最佳答案

我找到了一种方法,结果令人满意。

想法是根据球体顶点的坐标为球体着色(如问题所示)。这样的着色很好,因为在人体形状中不存在“欧几里德距离与测地线距离”的问题。

然后,我们可以使用 Pytorch3D 将球体变形为输入形状,如所述here .通过这种方式,球体着色可以顺利地转移到人形上。虽然我有一个只有顶点坐标的点云,但结果非常好。

下面是使用这种方法给海豚上色的例子:

enter image description here

一个问题是我们仍然需要将颜色从获得的形状转移到原始形状,这也许可以通过在两者之间找到最近的邻居来完成(虽然我还没有尝试过)。

关于python - 为 3D 形状着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69582382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com