3
我剛剛開始在python中使用mayavi,並且不太瞭解編程3d圖形。我要繪製的凹面/對象,但是當我嘗試它出來連接是這樣的:用mayavi或vtk繪製凹形對象
你不能看到圖片,但它是由平行的平面上(不是我的意圖形成要麼)
當我試圖繪製結構,這種形狀:
因此,這裏是我做什麼,以獲得積分和情節:
#extract the black in the image
x,y,z = np.where(quest == 0)
#make z1,z2 the right size(y*0) and value(+12)
z1 = y*0
z2 = y*0+12
x,y,z1,z2= np.atleast_2d(x,y,z1,z2)
#duplicate the shape at z1 and z2
x = np.concatenate((x,x))
y = np.concatenate((y,y))
z = np.concatenate((z1,z2))
#plot the mesh
mlab.mesh(x,y,z)
mlab.show()
我注意到您的數據點順序對於使用網格很重要,因爲它會從每個連續點繪製一條線。
有沒有更簡單的方法來做到這一點,以某種方式組織我的觀點?
還有沒有辦法讓形狀填充點之間的區域?
所有幫助表示讚賞,感謝
後續問題:
是否有蟒蛇更好的3D庫,將服務於這個目的是什麼?
我期待與VTK做,但切割出問號這樣的凹部的同樣的問題:
這樣做的更長的代碼是:
#create the points
points = vtk.vtkPoints()
for i, j in zip(x,y):
points.InsertNextPoint(i,j,0)
#create a polygon
polygon = vtk.vtkPolygon()
polygon.GetPointIds().SetNumberOfIds(len(x))
for i in range(len(x)):
polygon.GetPointIds().SetId(i,i)
#add it to a cell array
polygons = vtk.vtkCellArray()
polygons.InsertNextCell(polygon)
#make the poly data
polyData = vtk.vtkPolyData()
polyData.SetPoints(points)
polyData.SetPolys(polygons)
#set up the window
mapper = vtk.vtkPolyDataMapper()
mapper.SetInput(polyData
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
rWindow = vtk.vtkRenderWindow()
rWindow.AddRenderer(renderer)
rWindowInteractor = vtk.vtkRenderWindowInteractor()
rWindowInteractor.SetRenderWindow(rWindow)
renderer.AddActor(actor)
renderer.SetBackground(.5,.3,.31)
rWindow.Render()
rWindowInteractor.Start()
凸性沒有什麼魔力 - 網格是一個網格,完全如何定義它。看來你正在獲取黑色像素的座標......那麼是什麼?你想如何定義這些網格?您必須將其指定給VTK(在構建多邊形時),然後才能正確繪製。 – 2014-05-13 20:33:08