Hi,
I made this setup:
1. 4 scene views (each has its own DXScene and they share the DXDevice as described in one of the samples)
2. All scenes render the same stuff - SimpleMesh is shared, SceneNodes are duplicated
3. UI is done in WPF
4. There is selection from two sources - 3D hit testing and from an scene hierarchy explorer
5. There is an animation system
I've ran into synchronization issues between all these components as there has to be an additional layer between WPF UI and scene node as you can't (or shouldn't unless you want to risk memory leaks) bind to scene node. This means that I either duplicate the whole structure (transformations, bounds) or access directly the scene nodes. But then you have 4 hierarchies to handle each scene. The animations also have to update four different objects.
1. Is there a way to share SceneNodes as well? The data are the same, only the camera will be different.
2. Can I render multiple cameras in one scene? Like specifying viewport for each camera instead of having multiple DXScenes.
3. Is there a way to extend MeshObjectNode by additional information? Let's say for hit testing. You hit test on the hierarchy, get back a scene node then you do some additional logic like highlighting the object in the hierarchy explorer and in the scene. The scene is simple, I can just add it to an existing custom outline render queue. But to inform the UI I need the access to additional information. It would be nice to extend the MeshObjectNode, but it's sealed. Is there a way to add additional data to MeshObjectNode. Can the Tag property be used (if it's not used for some DXEngine data), or is there a way to pass callbacks for property change or on object hit with raycast?
4. If I want to listen to SceneRendered event from DXView with this setup, you are hooking up to 4 different events.
5. Also outline has to set up the same render queues for each DXScene.
6. There is performance slow down as I have to update 4 hierarchies.
Thanks,
Sincerely
Janovský Roman
I made this setup:
1. 4 scene views (each has its own DXScene and they share the DXDevice as described in one of the samples)
2. All scenes render the same stuff - SimpleMesh is shared, SceneNodes are duplicated
3. UI is done in WPF
4. There is selection from two sources - 3D hit testing and from an scene hierarchy explorer
5. There is an animation system
I've ran into synchronization issues between all these components as there has to be an additional layer between WPF UI and scene node as you can't (or shouldn't unless you want to risk memory leaks) bind to scene node. This means that I either duplicate the whole structure (transformations, bounds) or access directly the scene nodes. But then you have 4 hierarchies to handle each scene. The animations also have to update four different objects.
1. Is there a way to share SceneNodes as well? The data are the same, only the camera will be different.
2. Can I render multiple cameras in one scene? Like specifying viewport for each camera instead of having multiple DXScenes.
3. Is there a way to extend MeshObjectNode by additional information? Let's say for hit testing. You hit test on the hierarchy, get back a scene node then you do some additional logic like highlighting the object in the hierarchy explorer and in the scene. The scene is simple, I can just add it to an existing custom outline render queue. But to inform the UI I need the access to additional information. It would be nice to extend the MeshObjectNode, but it's sealed. Is there a way to add additional data to MeshObjectNode. Can the Tag property be used (if it's not used for some DXEngine data), or is there a way to pass callbacks for property change or on object hit with raycast?
4. If I want to listen to SceneRendered event from DXView with this setup, you are hooking up to 4 different events.
5. Also outline has to set up the same render queues for each DXScene.
6. There is performance slow down as I have to update 4 hierarchies.
Thanks,
Sincerely
Janovský Roman