Embedding the viewport


how can I embed the viewport of NG in another application?


Hello Ralle,

Unfortunately this is currently not possible, and the whole feature is still in research phase -> won’t be available anytime soon…


Hello, are there any news about the issue? br/Ralf



I also like to encourage you to publish an open interface for the viewports.

that would adress cool opportunities, f.e.:

  • 360° Live Renderings /Videos
  • Stereo-Rendering (easy Oculus implementation)

As far as i understand the current “shared” API:

1.) It’s possible to create a 3DWindow with own Camera/View- Setting via IApplication.Create3dWindow() and manage them via (Delete3DWindow/ActiveWindow/Windows)

2.) It’s also possible to set the newly created 3DWindow via IViewPort.SetWindow() as active

Problem here is that modifying IViewPort just affects the UIElement of the VC-Application (IViewPort.RootElement) = System.Windows.Controls.Viewport3D

I didn’t manage to “detach” or “clone” the IViewPort.RootElement from the VC-application into my application.


It would be great if IViewPort could publish for example an UIElement of type (Viewport3D)???


I manage to show the IApplication.ActiveWindow in a separate Window, but i’m not satisfied with the solution, because it’s not the viewport itself. To those who like to review the code… be warned… started .net 5 days ago. If you come up with a better solution… please share.

  1. Framerate: IApplication.SurfaceToBuffer() (1Hz) vs. IApplication.SurfaceToContineousBuffer() (30Hz)
  2. IApplication.SurfaceToContineousBuffer() needs IApplication.SetRecordingMode(true)
    -> Rendering in VC-window paused
  • you can still drop layouts in VC-windows and play simulation
  • also pan/zoom in VC-windows effects just the 2nd window, not the VC-window itself
  1. It seems that there are some async rendering functions with an explicity interface for a seperate 3DWindow:
    but i couldn’t find a way to use the SurfaceToBuffer() or SurfaceToImage() function independently from IApplication.ActiveWindow
    -> so if i like an “image” i have to make the 3dwindow active??

I didn’t tried to get a better performance:
-Direct3D UI stuff like SharpDX etc. for visualisation

WpfApplicationShowRenderImage.zip (57.4 KB)

1 Like

Thanks maik for sharing. I totally agree with you about the support for 360 video player, VC and AR type of use cases. It’ll probably need a little different type of approach from VC side.

The support for the multi viewport support is basically still in the same state as Gargamel earlier stated. It’s in a research/development phase. You might get some things already working as you managed to do but support for navigation and handles (etc…) is not quite done yet. So for the time being I’d recommend to wait… otherwise you’ll keep banging your head on a wall.

Hi eme,

thanks for reply to my investigation. As you mentioned, there are some parts of viewport already implemented. Is there any chance to get into a “fast ring” of beta releases? You may contact me also via email:




Are there any news about the embedding possiblities research? In version 2014 it was a big strength to embedd the viewport in other applications.

Thanks for showing this example.

I have a little different goal. Instead of exporting the display to a different application, I want to display a second 3D graphics window in my VC application so I can have 2 views side-by-side.

The naming implies that IApplication.Create3dWindow() would be a display ready element, but I cant seem to show it on the screen.

Does VC have the capability to display 2 3D windows?

Is this the “multi viewport” that eme indicated is still in research/development?

  • I have the same wish. Is there anyone who can help

I would love to be able to add multiple Windows at the same time, each with a different camera, to achieve a multi-angle, partial display of the same project. Can you provide demo code? thank you

1 Like