We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
SceneGraph: HowTo view single scene in different viewboxes
Using https://github.com/vispy/vispy/blob/master/examples/basics/scene/one_scene_four_cams.py to view a single scene in four different viewboxes doesn't work.

The scene is actually generated four times, not only once. There are reminders of multi-parenting commented out in the example, but this won't work any more (since removal of multi-parenting).

Is it possible to have one scene viewed from different angels (eg. top view, front view and side view) without recreating the scene four times?


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `examples/basics/scene/one_scene_four_cams.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 # -----------------------------------------------------------------------------
3 # Copyright (c) Vispy Development Team. All Rights Reserved.
4 # Distributed under the (new) BSD License. See LICENSE.txt for more info.
5 # -----------------------------------------------------------------------------
6 # vispy: gallery 2
7 
8 """
9 Demonstrating a single scene that is shown in four different viewboxes,
10 each with a different camera.
11 """
12 
13 # todo: the panzoom camera sometimes work, sometimes not. Not sure why.
14 # we should probably make iterating over children deterministic, so that
15 # an error like this becomes easier to reproduce ...
16 
17 import sys
18 
19 from vispy import app, scene, io
20 
21 canvas = scene.SceneCanvas(keys='interactive')
22 canvas.size = 800, 600
23 canvas.show()
24 
25 # Create two ViewBoxes, place side-by-side
26 vb1 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
27 vb2 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
28 vb3 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
29 vb4 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
30 scenes = vb1.scene, vb2.scene, vb3.scene, vb4.scene
31 
32 # Put viewboxes in a grid
33 grid = canvas.central_widget.add_grid()
34 grid.padding = 6
35 grid.add_widget(vb1, 0, 0)
36 grid.add_widget(vb2, 0, 1)
37 grid.add_widget(vb3, 1, 0)
38 grid.add_widget(vb4, 1, 1)
39 
40 # Create some visuals to show
41 # AK: Ideally, we could just create one visual that is present in all
42 # scenes, but that results in flicker for the PanZoomCamera, I suspect
43 # due to errors in transform caching.
44 im1 = io.load_crate().astype('float32') / 255
45 #image1 = scene.visuals.Image(im1, grid=(20, 20), parent=scenes)
46 for par in scenes:
47     image = scene.visuals.Image(im1, grid=(20, 20), parent=par)
48 
49 #vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
50 #volume1 = scene.visuals.Volume(vol1, parent=scenes)
51 #volume1.transform = scene.STTransform(translate=(0, 0, 10))
52 
53 # Assign cameras
54 vb1.camera = scene.BaseCamera()
55 vb2.camera = scene.PanZoomCamera()
56 vb3.camera = scene.TurntableCamera()
57 vb4.camera = scene.FlyCamera()
58 
59 
60 # If True, show a cuboid at each camera
61 if False:
62     cube = scene.visuals.Cube((3, 3, 5))
63     cube.transform = scene.STTransform(translate=(0, 0, 6))
64     for vb in (vb1, vb2, vb3, vb4):
65         vb.camera.parents = scenes
66         cube.add_parent(vb.camera)
67 
68 if __name__ == '__main__':
69     if sys.flags.interactive != 1:
70         app.run()
71
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/examples/basics/scene/one_scene_four_cams.py b/examples/basics/scene/one_scene_four_cams.py
--- a/examples/basics/scene/one_scene_four_cams.py
+++ b/examples/basics/scene/one_scene_four_cams.py
@@ -8,11 +8,12 @@
 """
 Demonstrating a single scene that is shown in four different viewboxes,
 each with a different camera.
-"""
 
-# todo: the panzoom camera sometimes work, sometimes not. Not sure why.
-# we should probably make iterating over children deterministic, so that
-# an error like this becomes easier to reproduce ...
+Note:
+    This example just creates four scenes using the same visual.
+    Multiple views are currently not available. See #1124 how this could
+    be achieved.
+"""
 
 import sys
 
@@ -22,7 +23,7 @@
 canvas.size = 800, 600
 canvas.show()
 
-# Create two ViewBoxes, place side-by-side
+# Create four ViewBoxes
 vb1 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
 vb2 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
 vb3 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)
@@ -38,33 +39,16 @@
 grid.add_widget(vb4, 1, 1)
 
 # Create some visuals to show
-# AK: Ideally, we could just create one visual that is present in all
-# scenes, but that results in flicker for the PanZoomCamera, I suspect
-# due to errors in transform caching.
 im1 = io.load_crate().astype('float32') / 255
-#image1 = scene.visuals.Image(im1, grid=(20, 20), parent=scenes)
 for par in scenes:
     image = scene.visuals.Image(im1, grid=(20, 20), parent=par)
 
-#vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']
-#volume1 = scene.visuals.Volume(vol1, parent=scenes)
-#volume1.transform = scene.STTransform(translate=(0, 0, 10))
-
 # Assign cameras
 vb1.camera = scene.BaseCamera()
 vb2.camera = scene.PanZoomCamera()
 vb3.camera = scene.TurntableCamera()
 vb4.camera = scene.FlyCamera()
 
-
-# If True, show a cuboid at each camera
-if False:
-    cube = scene.visuals.Cube((3, 3, 5))
-    cube.transform = scene.STTransform(translate=(0, 0, 6))
-    for vb in (vb1, vb2, vb3, vb4):
-        vb.camera.parents = scenes
-        cube.add_parent(vb.camera)
-
 if __name__ == '__main__':
     if sys.flags.interactive != 1:
         app.run()

{"golden_diff": "diff --git a/examples/basics/scene/one_scene_four_cams.py b/examples/basics/scene/one_scene_four_cams.py\n--- a/examples/basics/scene/one_scene_four_cams.py\n+++ b/examples/basics/scene/one_scene_four_cams.py\n@@ -8,11 +8,12 @@\n \"\"\"\n Demonstrating a single scene that is shown in four different viewboxes,\n each with a different camera.\n-\"\"\"\n \n-# todo: the panzoom camera sometimes work, sometimes not. Not sure why.\n-# we should probably make iterating over children deterministic, so that\n-# an error like this becomes easier to reproduce ...\n+Note:\n+    This example just creates four scenes using the same visual.\n+    Multiple views are currently not available. See #1124 how this could\n+    be achieved.\n+\"\"\"\n \n import sys\n \n@@ -22,7 +23,7 @@\n canvas.size = 800, 600\n canvas.show()\n \n-# Create two ViewBoxes, place side-by-side\n+# Create four ViewBoxes\n vb1 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\n vb2 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\n vb3 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\n@@ -38,33 +39,16 @@\n grid.add_widget(vb4, 1, 1)\n \n # Create some visuals to show\n-# AK: Ideally, we could just create one visual that is present in all\n-# scenes, but that results in flicker for the PanZoomCamera, I suspect\n-# due to errors in transform caching.\n im1 = io.load_crate().astype('float32') / 255\n-#image1 = scene.visuals.Image(im1, grid=(20, 20), parent=scenes)\n for par in scenes:\n     image = scene.visuals.Image(im1, grid=(20, 20), parent=par)\n \n-#vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']\n-#volume1 = scene.visuals.Volume(vol1, parent=scenes)\n-#volume1.transform = scene.STTransform(translate=(0, 0, 10))\n-\n # Assign cameras\n vb1.camera = scene.BaseCamera()\n vb2.camera = scene.PanZoomCamera()\n vb3.camera = scene.TurntableCamera()\n vb4.camera = scene.FlyCamera()\n \n-\n-# If True, show a cuboid at each camera\n-if False:\n-    cube = scene.visuals.Cube((3, 3, 5))\n-    cube.transform = scene.STTransform(translate=(0, 0, 6))\n-    for vb in (vb1, vb2, vb3, vb4):\n-        vb.camera.parents = scenes\n-        cube.add_parent(vb.camera)\n-\n if __name__ == '__main__':\n     if sys.flags.interactive != 1:\n         app.run()\n", "issue": "SceneGraph: HowTo view single scene in different viewboxes\nUsing https://github.com/vispy/vispy/blob/master/examples/basics/scene/one_scene_four_cams.py to view a single scene in four different viewboxes doesn't work.\n\nThe scene is actually generated four times, not only once. There are reminders of multi-parenting commented out in the example, but this won't work any more (since removal of multi-parenting).\n\nIs it possible to have one scene viewed from different angels (eg. top view, front view and side view) without recreating the scene four times?\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n# -----------------------------------------------------------------------------\n# Copyright (c) Vispy Development Team. All Rights Reserved.\n# Distributed under the (new) BSD License. See LICENSE.txt for more info.\n# -----------------------------------------------------------------------------\n# vispy: gallery 2\n\n\"\"\"\nDemonstrating a single scene that is shown in four different viewboxes,\neach with a different camera.\n\"\"\"\n\n# todo: the panzoom camera sometimes work, sometimes not. Not sure why.\n# we should probably make iterating over children deterministic, so that\n# an error like this becomes easier to reproduce ...\n\nimport sys\n\nfrom vispy import app, scene, io\n\ncanvas = scene.SceneCanvas(keys='interactive')\ncanvas.size = 800, 600\ncanvas.show()\n\n# Create two ViewBoxes, place side-by-side\nvb1 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb2 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb3 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb4 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nscenes = vb1.scene, vb2.scene, vb3.scene, vb4.scene\n\n# Put viewboxes in a grid\ngrid = canvas.central_widget.add_grid()\ngrid.padding = 6\ngrid.add_widget(vb1, 0, 0)\ngrid.add_widget(vb2, 0, 1)\ngrid.add_widget(vb3, 1, 0)\ngrid.add_widget(vb4, 1, 1)\n\n# Create some visuals to show\n# AK: Ideally, we could just create one visual that is present in all\n# scenes, but that results in flicker for the PanZoomCamera, I suspect\n# due to errors in transform caching.\nim1 = io.load_crate().astype('float32') / 255\n#image1 = scene.visuals.Image(im1, grid=(20, 20), parent=scenes)\nfor par in scenes:\n    image = scene.visuals.Image(im1, grid=(20, 20), parent=par)\n\n#vol1 = np.load(io.load_data_file('volume/stent.npz'))['arr_0']\n#volume1 = scene.visuals.Volume(vol1, parent=scenes)\n#volume1.transform = scene.STTransform(translate=(0, 0, 10))\n\n# Assign cameras\nvb1.camera = scene.BaseCamera()\nvb2.camera = scene.PanZoomCamera()\nvb3.camera = scene.TurntableCamera()\nvb4.camera = scene.FlyCamera()\n\n\n# If True, show a cuboid at each camera\nif False:\n    cube = scene.visuals.Cube((3, 3, 5))\n    cube.transform = scene.STTransform(translate=(0, 0, 6))\n    for vb in (vb1, vb2, vb3, vb4):\n        vb.camera.parents = scenes\n        cube.add_parent(vb.camera)\n\nif __name__ == '__main__':\n    if sys.flags.interactive != 1:\n        app.run()\n", "path": "examples/basics/scene/one_scene_four_cams.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n# -----------------------------------------------------------------------------\n# Copyright (c) Vispy Development Team. All Rights Reserved.\n# Distributed under the (new) BSD License. See LICENSE.txt for more info.\n# -----------------------------------------------------------------------------\n# vispy: gallery 2\n\n\"\"\"\nDemonstrating a single scene that is shown in four different viewboxes,\neach with a different camera.\n\nNote:\n    This example just creates four scenes using the same visual.\n    Multiple views are currently not available. See #1124 how this could\n    be achieved.\n\"\"\"\n\nimport sys\n\nfrom vispy import app, scene, io\n\ncanvas = scene.SceneCanvas(keys='interactive')\ncanvas.size = 800, 600\ncanvas.show()\n\n# Create four ViewBoxes\nvb1 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb2 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb3 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nvb4 = scene.widgets.ViewBox(border_color='white', parent=canvas.scene)\nscenes = vb1.scene, vb2.scene, vb3.scene, vb4.scene\n\n# Put viewboxes in a grid\ngrid = canvas.central_widget.add_grid()\ngrid.padding = 6\ngrid.add_widget(vb1, 0, 0)\ngrid.add_widget(vb2, 0, 1)\ngrid.add_widget(vb3, 1, 0)\ngrid.add_widget(vb4, 1, 1)\n\n# Create some visuals to show\nim1 = io.load_crate().astype('float32') / 255\nfor par in scenes:\n    image = scene.visuals.Image(im1, grid=(20, 20), parent=par)\n\n# Assign cameras\nvb1.camera = scene.BaseCamera()\nvb2.camera = scene.PanZoomCamera()\nvb3.camera = scene.TurntableCamera()\nvb4.camera = scene.FlyCamera()\n\nif __name__ == '__main__':\n    if sys.flags.interactive != 1:\n        app.run()\n", "path": "examples/basics/scene/one_scene_four_cams.py"}]}