1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
from vtkmodules.test import Testing as vtkTesting
class TestObjectManagerRendering(vtkTesting.vtkTest):
def testSceneManagement(self):
from vtkmodules.vtkSerializationManager import vtkObjectManager
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper, vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor
id_rwi = 0
def serialize():
global id_rwi
manager = vtkObjectManager()
manager.Initialize()
s = vtkSphereSource()
m = vtkPolyDataMapper()
m.SetInputConnection(s.GetOutputPort())
a = vtkActor()
a.SetMapper(m)
r = vtkRenderer()
r.AddActor(a)
rw = vtkRenderWindow()
rw.AddRenderer(r)
rwi = vtkRenderWindowInteractor()
rwi.SetRenderWindow(rw)
r.ResetCamera()
rw.Render()
id_rwi = manager.RegisterObject(rwi)
manager.UpdateStatesFromObjects()
active_ids = manager.GetAllDependencies(0)
states = map(manager.GetState, active_ids)
hash_to_blob_map = { blob_hash: manager.GetBlob(blob_hash) for blob_hash in manager.GetBlobHashes(active_ids) }
return states, hash_to_blob_map
def deserialize(states, hash_to_blob_map):
global id_rwi
manager = vtkObjectManager()
manager.Initialize()
for state in states:
manager.RegisterState(state)
for hash_text, blob in hash_to_blob_map.items():
manager.RegisterBlob(hash_text, blob)
manager.UpdateObjectsFromStates()
active_ids = manager.GetAllDependencies(0)
manager.GetObjectAtId(id_rwi).Render()
deserialize(*serialize())
if __name__ == "__main__":
vtkTesting.main([(TestObjectManagerRendering, 'testSceneManagement')])
|