나는 삼각 얻기 위해 노력하고 vtkPolyData
A로부터 mlab.contour3d
줄거리. 내가 사용하고 mayavi
그것을 얻을 수있는 가장 빠른 방법이있을 것 때문에 최소한의 표면이 제대로 삼각. vtkPolyData
.stl 파일로 저장하고 싶기 때문에 필요 합니다.
다음은 내 코드의 MWE입니다.
import numpy as np
from mayavi import mlab
def fun(x, y, z):
return np.cos(x) + np.cos(y) + np.cos(z)
x, y, z = np.mgrid[-1:1:100j, -1:1:100j, -1:1:100j]
contour = mlab.contour3d(x, y, z, fun)
mlab.show()
내가 얻은 mayavi
것은 이미 삼각 측량되어 VTK
(또는 tvtk
)을 사용하여 표시된 표면 이므로 vtkPolyData
거기에서 가져올 수 있습니다. 하지만 지금까지 발견 된 유일한 방법은 사용하는 것입니다 mlab.savefig(test.obj)
(이 파일마다 저장하는 데 시간이 걸리기 때문에, 불량 인 .OBJ 파일을 내보낼 mayavi
및 파일을 다시 사용하여 해당 수입 UI가 열립니다) vtkOBJReader
중동를 제공, vtkPolyData
내가 원하는합니다.
누구든지 이것을 수행하는 더 직접적인 방법을 알고 있습니까?
편집 : 내 문제를 좀 더 명확히하기 위해 : 예를 들어를 사용하여 시각화에서 데이터에 액세스 할 수 mayavi.tools.pipeline.get_vtk_src()
있지만 형식은 vtkImageData
. 누구든지 그것을으로 변환하는 방법을 알고 있다면 vtkPolyData
그것도 해결책이 될 것입니다.
우연히 나는 해결책을 찾았습니다.
import numpy as np
from mayavi import mlab
def fun(x, y, z):
return np.cos(x) + np.cos(y) + np.cos(z)
x, y, z = np.mgrid[-1:1:100j, -1:1:100j, -1:1:100j]
contour = mlab.contour3d(x, y, z, fun)
actor = contour.actor.actors[0]
polydata = tvtk.to_vtk(actor.mapper.input) # solution
mlab.show()
트릭은 PolyDataMapper 인 파이프 라인에서 매퍼에 액세스하는 것 같습니다. 그런 다음 적어도 지금은 내가 선호하는 것을 tvtk.to_vtk()
계속할 수 있도록 함수를 사용합니다 .vtk
tvtk
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다