{"id":11076,"date":"2024-11-15T09:25:16","date_gmt":"2024-11-15T07:25:16","guid":{"rendered":"https:\/\/store.algosyntax.com\/?post_type=asx-lms-tutorial-cpt&#038;p=11076"},"modified":"2026-04-08T23:58:11","modified_gmt":"2026-04-08T21:58:11","slug":"ue5-separate-viewport-from-widgets-enhancedui","status":"publish","type":"documentation","link":"https:\/\/store.algosyntax.com\/documentation\/ue5-separate-viewport-from-widgets-enhancedui\/","title":{"rendered":"UE5 Separate Viewport From Widgets: EnhancedUI"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"11076\" class=\"elementor elementor-11076\" data-elementor-post-type=\"documentation\">\n\t\t\t\t<div class=\"elementor-element elementor-element-98283ca e-flex e-con-boxed e-con e-parent\" data-id=\"98283ca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e604205 elementor-widget elementor-widget-text-editor\" data-id=\"e604205\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>In Unreal Engine, you may encounter the need to separate the 3D Viewport from the rest of the UI. The default 3D viewport overlays all widgets, leading to visual clutter. In this tutorial, we&#8217;ll demonstrate how the enhanced UI plugin can be used to separate the 3D viewport from UMG widgets while ensuring they work together seamlessly.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2ddc789 elementor-widget elementor-widget-video\" data-id=\"2ddc789\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/w60BOhpfgsI&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9aebd8e elementor-widget elementor-widget-button\" data-id=\"9aebd8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/store.algosyntax.com\/marketplace\/unreal-engine\/enhanced-ui\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Enhanced UI Plugin Full Feature List<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58fe3e2 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"58fe3e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1437\" height=\"674\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/edd\/marketplace\/unreal-engine\/enhancedui\/multiplewindow-system.jpg\" class=\"attachment-full size-full wp-image-10968\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b3d65b elementor-widget elementor-widget-text-editor\" data-id=\"9b3d65b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>In order to do this , we simply steal the 3D Viewport that epic\/ unreal engine already creates for us and place that in a UserWidget of our choosing. Allowing you to freely develop Application that area similar to Blender 3D, After Effects, and even unreal engine itself where the UI is separate from the Widgets that control it or the game play.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9085726 elementor-widget elementor-widget-heading\" data-id=\"9085726\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Setting The Viewport Client<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b21634e elementor-widget elementor-widget-text-editor\" data-id=\"b21634e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The first step before opening our demo map is to change the Viewport Client in the unreal engine project settings. If we don&#8217;t do this, our viewport windows will complain and won&#8217;t take the viewport.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c63247e elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"c63247e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1451\" height=\"333\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/enhancedui\/axenhancedviewportclient.jpg\" class=\"attachment-full size-full wp-image-11090\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-abeaa04 elementor-widget elementor-widget-text-editor\" data-id=\"abeaa04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Go to your\u00a0<strong>Project Settings\u00a0<\/strong> and\u00a0 Search for &#8220;<strong>GameViewport Client<\/strong>&#8221; or simply find it under &#8220;<strong>Engine &#8211;&gt; General Settings<\/strong>&#8220;.<br \/>Then simply set the Class to &#8220;<strong>AxEnhancedViewportClient<\/strong>&#8220;, or &#8220;<strong>AxEnhancedCommonViewportClient<\/strong>&#8220;<br \/><br \/>The AxEnhnced<strong>Common<\/strong>ViewportClient is supposed to be used when you have the <strong>Common UI\u00a0\u00a0<\/strong>enabled and are using its features&#8230; It simply inherits from the CommonUI ViewportClient and its the same functionality as the &#8220;<strong>AxEnhancedViewportClient<\/strong>&#8220;.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8972810 elementor-widget elementor-widget-heading\" data-id=\"8972810\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">The Viewport Window Demo Map<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b1b0816 elementor-widget elementor-widget-text-editor\" data-id=\"b1b0816\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Now lets take a look at the demo map located at :<\/p><p><strong>EnhancedUI_Content\/MainGUI\/Maps\/ViewportGUIMap<\/strong><\/p><p><strong>You must be in PlayInEditorWindow, StandaloneGame or In A packaged Game to see this effect.<\/strong> So use PlayInEditor Window.<\/p><p>In this map, we simply create the widget that is capable of hosting the 3D Viewport and capable of resizing it\u00a0 and move it around. Run this map, play around then let&#8217;s head over to the widget blueprints making all this happen.<br \/><strong><br \/>EnhancedUI_Content\/MainGUI\/Blueprints<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3211f70 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"3211f70\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"2489\" height=\"663\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/enhancedui\/maingui-blueprint-content.jpg\" class=\"attachment-full size-full wp-image-11101\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e07d71 elementor-widget elementor-widget-heading\" data-id=\"1e07d71\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">MainGUI and ViewportWindow Blueprints\/Classes<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e64fd95 elementor-widget elementor-widget-text-editor\" data-id=\"e64fd95\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The ViewportWindow Widget\/Blueprint is the widget that is designed to host a 3D Viewport within it. If you want to customize how your Viewport host looks , customize this template\u00a0 like hide the buttons or change the colors etc. It inherits from AxViewportWindow so if you want to create your own , inherit from that.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-149132f elementor-widget elementor-widget-heading\" data-id=\"149132f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">MainGUI<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d692c4d elementor-widget elementor-widget-text-editor\" data-id=\"d692c4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>MainGUI, for lack of a better term, is your application&#8217;s top most UserInterface, it should have the ViewportWindow widget as part of it, but you can add many other widgets to it as part of it.\u00a0<br \/><br \/>The MainGUI, on begin play will take the 3D Viewport and place it within its&#8217; child , the ViewportWindowWidget.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-03e915d elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"03e915d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1612\" height=\"992\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/enhancedui\/maingui-widget.jpg\" class=\"attachment-full size-full wp-image-11109\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f02d43 elementor-widget elementor-widget-text-editor\" data-id=\"4f02d43\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>As you can see from the image above , we have the &#8220;ViewportWindow&#8221; as part of our widget.\u00a0<br \/>That&#8217;s the window that will host the 3D Viewport&#8230;<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d7b4799 elementor-widget elementor-widget-heading\" data-id=\"d7b4799\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Creating Main GUI  Widgets<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a5a2e2 elementor-widget elementor-widget-text-editor\" data-id=\"0a5a2e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>To ensure that MainGUI widgets behave as expected and properly take the 3D Viewport, you have to create them with the &#8220;<strong>CreateMainGUI()<\/strong>&#8221; function from the <strong>MainGUISubsytem.\u00a0<\/strong> You can call this on begin play of your persistent level&#8217;s blueprint or anywhere you like.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e440538 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"e440538\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1595\" height=\"990\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/marketplace\/unreal-engine\/enhancedui\/maingui-creation.jpg\" class=\"attachment-full size-full wp-image-11113\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78dd24f elementor-widget elementor-widget-heading\" data-id=\"78dd24f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">What happens when you call \"AddToViewport\"<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c1a7d5 elementor-widget elementor-widget-text-editor\" data-id=\"7c1a7d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>AddToViewport() function will behave as you&#8217;re used to when you call, it will add a widget to the 3DViewport thats hosted by our Host Window&#8230;<br \/><br \/>NB: you should never call &#8220;AddToViewport&#8221; with a MainGUI Widget. But you can with all other widget.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ee9a17 elementor-widget elementor-widget-heading\" data-id=\"0ee9a17\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">How to add more widgets to the MainGUI widget<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-829f41e elementor-widget elementor-widget-text-editor\" data-id=\"829f41e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>You can add widgets normally using the widget designer or at runtime. At design time, its recommended you add them to the Window Manager Canvas, but really there is no hard rule on it. The same goes for runtime, Get the Window Manager Canvas and just add more windows to it. It will manage windows for you, like display order , minimizing , resizing etc&#8230;<strong> if they are SmartWidgets.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ca5efe elementor-widget elementor-widget-button\" data-id=\"6ca5efe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/store.algosyntax.com\/marketplace\/unreal-engine\/enhanced-ui\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Get The Enhanced UI Plugin<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":0,"template":"elementor_header_footer","categories":[129,132],"tags":[],"class_list":["post-11076","documentation","type-documentation","status-publish","hentry","category-unreal-engine","category-enhanced-ui","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/11076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation"}],"about":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/types\/documentation"}],"version-history":[{"count":2,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/11076\/revisions"}],"predecessor-version":[{"id":13350,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/documentation\/11076\/revisions\/13350"}],"wp:attachment":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media?parent=11076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/categories?post=11076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/tags?post=11076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}