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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
from vtkmodules.test import Testing as vtkTesting
from vtkmodules.vtkSerializationManager import vtkObjectManager
from vtkmodules.vtkFiltersSources import vtkSuperquadricSource, vtkPlaneSource
from vtkmodules.vtkRenderingCore import vtkActor, vtkColorTransferFunction, vtkCompositeDataDisplayAttributes, vtkGlyph3DMapper, vtkRenderer, vtkRenderWindow, vtkRenderWindowInteractor
import vtkmodules.vtkRenderingOpenGL2
import sys
class TestGlyph3DMapper(vtkTesting.vtkTest):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def setUp(self):
self.id_rwi = None
s = vtkSuperquadricSource()
p = vtkPlaneSource()
p.SetResolution(6, 6)
m = vtkGlyph3DMapper()
m.SetInputConnection(p.GetOutputPort())
m.SetSourceConnection(s.GetOutputPort())
a = vtkActor()
a.SetMapper(m)
r = vtkRenderer()
r.AddActor(a)
rw = vtkRenderWindow()
rw.AddRenderer(r)
self.server_rwi = vtkRenderWindowInteractor()
self.server_rwi.SetRenderWindow(rw)
self.server_rwi.Render()
def serialize(self):
manager = vtkObjectManager()
manager.Initialize()
self.id_rwi = manager.RegisterObject(self.server_rwi)
manager.UpdateStatesFromObjects()
active_ids = manager.GetAllDependencies(0)
manager.Export("state.json")
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(self, states, hash_to_blob_map):
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)
self.deserialized_rwi = manager.GetObjectAtId(self.id_rwi)
self.deserialized_rwi.Render()
def test(self):
self.deserialize(*self.serialize())
if __name__ == "__main__":
vtkTesting.main([(TestGlyph3DMapper, 'test')])
|