Как использовать NumPy для построения 3D-модели?

LiangJinWei спросил: 07 октября 2018 в 01:13 в: python

Оригинал (2018.11.01)

У меня есть 3 номера: x 、 y 、 z, созданных моим лазерным сканером (шаг 40 градусов / 1). Я хочу использовал их для построения 3D-модели.

Я думаю, что это должно быть использование matplotlib.tri
Но я понятия не имею, чтобы определить триангулированные данные

Вот мои данные: https ://www.dropbox.com/s/d9p62kv9jcq9bwh/xyz.zip? dl = 0

и оригинальная модель : https://i.imgur.com/XSyONff.jpg

Код :

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.tri as mtri    x_all=np.load("x.npy")
y_all=np.load("y.npy")
z_all=np.load("z.npy")tri = #I have no idea...fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x_all,y_all,z_all,triangles=tri.triangles)

Большое спасибо.

Обновление (2018.11.02)

Я пытаюсь таким образом определить триангулированные данные Триангуляция Делоне для точек с 2D-поверхности в 3D с помощью Python?

code:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.tri as mtri
from stl import meshx_all=np.load("x.npy")
y_all=np.load("y.npy")
z_all=np.load("z.npy")model=np.vstack((x_all,y_all,z_all))
model=np.transpose(model)
model -= model.mean(axis=0)
rad = np.linalg.norm(model, axis=1)
zen = np.arccos(model[:,-1] / rad)
azi = np.arctan2(model[:,1], model[:,0])tris = mtri.Triangulation(zen, azi)plt.show()

И моя модель выглядит следующим образом:

https://i.stack.imgur.com/KVPHP.png

https://i.stack.imgur.com/ LLQsQ.png

https://i.stack.imgur.com/HdzFm.png

Несмотря на то, что он имеет лучшую поверхность, но в моей модели есть большая дыра Любая идея, чтобы это исправить?


0 ответов