2013-05-03 8 views
6

이미지에서 추출한 3D 데이터를 표시하려면 mayavi.mlab을 사용하고 있습니다. 일반적 mlab.plot3d()를 사용하여 약 20 카메라 용 카메라 중심 주위 x, y, x 방향 3 라인뿐만대형 파이프 라인이있는 mayavi 장면을 더 빨리 렌더링합니다.

  1. 3D 카메라 매개 변수를 다음과 같이 데이터이다.
  2. 공간에 3D 착색 한 점 점을 사용하여 mlab.points3d()을 사용합니다.

(1) 각 카메라마다 각 라인을 별도로 그릴 수있는 기능이 있습니다. 내가 맞다면 모든 라인이 현재 장면의 mayavi 파이프 라인에 추가됩니다. mlab.show()시에는이 모든 선을 렌더링하는 데 약 10 초가 걸립니다.

(2) 각 점마다 다른 색을 한꺼번에 그리는 방법을 찾지 못했습니다. 따라서 지금은 mlab.points3d(x,y,z, color = color)으로 반복합니다. 나는이 루틴이 오래 걸릴 때까지 기다리기 위해 새롭게 기다렸다. 한 번에 같은 색으로 모든 점을 표시하면 약 2 초가 걸립니다.

는 이미 fig.scene.disable_render = True 내 스크립트를 시작하고 mlab.show()과 장면을 표시하기 전에 fig.scene.disable_render = False를 재설정하기 위해 노력했다.

합법적 인 대기 시간 내에 어떻게 mayavi로 데이터를 표시 할 수 있습니까?

+0

비슷한 질문이있는 다른 게시물을 찾았습니다. [http://stackoverflow.com/questions/16364311/render-a-mayavi-scene-with-a-large-pipeline-faster](http://stackoverflow. com/questions/12935231/annotating-many-points-with-text-in-mayavi-using-mlab). 본인은 조사 결과를 조사하고 업데이트 할 것입니다. –

+0

나는 (2)에 대한 해결책을 찾았습니다. http://stackoverflow.com/questions/22253298/mayavi-points3d-with-different-size-and-colors –

답변

1

일반적인 원칙은 vtk 객체가 많은 오버 헤드를 가지므로 성능 렌더링을 위해 가능한 한 많은 객체를 하나의 객체에 패킹하려는 것입니다. points3d과 같은 mlab 편의 함수를 호출하면 해당 데이터를 처리 할 새 vtk 객체가 만들어집니다. 따라서 vtk 객체로 수천 개의 단일 점을 반복 작성하는 것은 매우 나쁜 생각입니다.

다른 질문 에서처럼 렌더링을 일시적으로 사용하지 못하게하는 속임수 - "올바른"방법은 모든 다른 점을 보유하는 하나의 VTK 개체를 갖는 것입니다.

다른 점을 다른 색으로 설정하려면 vtk 개체에 스칼라 값을 지정하십시오.

X, Y, Z = np.random.random ((3100)) some_data mlab.points3d = (X, Y, Z, 컬러 맵 = '쿨') = some_data.mlab_source.dataset.point_data.scalars np.random.random ((100,))

이것은 색상 표에 필요한 색상 값을 적절하게 표현할 수있는 경우에만 작동합니다. 작은 유한 수의 색상이나 작은 유한 번호의 간단한 색상 맵이 필요한 경우이 작업은 쉽지만 완전히 임의의 색상이 필요한 경우 매우 어렵습니다.

+0

어떻게하면 여러개의 "팩"을 할 수 있는지 설명해주십시오. Mayavi/TVTK 오브젝트를 단일 오브젝트로 변환합니까? 이 질문은 http://stackoverflow.com/questions/22241499/how-to-join-connect-group-multiple-objects-in-mayavi2에 게시했습니다. 대단히 감사합니다. –