Purpose

The RemotePanelRendering module is derived from the RemoteRendering module. It allows rendering module panels offscreen, which can be viewed by using a RemoteRenderingClient module or any other remote rendering client (e.g., a web browser).

Usage

Add the RemotePanelRendering module to your network and set the Panel value to the module panel that you want to render.

Tips

If you have several processes running that use RemotePanelRendering at the same time, you can set the environment variable MLAB_NUMBER_CONCURRENT_PANEL_RENDERING to a number to restrict the number of these modules that render a panel at the same time. This can avoid a GPU bottleneck by serializing the use of the GPU.

Windows

Default Panel

../../../Modules/ML/MLRemoteRendering/mhelp/Images/Screenshots/RemotePanelRendering._default.png

Output Fields

outBase

name: outBase, type: RemoteRendering(MLBase)
For accessing this object via scripting see the Scripting Reference: MLRemoteRenderingWrapper.

Parameter Fields

Visible Fields

Enable Multi Sampling

name: enableMultiSampling, type: Bool, default: FALSE

If checked, multi-sample anti-aliasing (MSAA) is enabled. This only works if a GraphicsView is rendered, since it requires OpenGL rendering.

Multi Sampling

name: multiSampling, type: Integer, default: 16

Sets the number of multi-sampling samples that are used. If the hardware supports fewer samples, the module will use the maximum supported number of samples.

Store Transparency

name: storeTransparency, type: Bool, default: FALSE

If checked, the alpha channel of the framebuffer is enabled and the resulting alpha is sent with the rendered image. This forces the usage of PNG, since JPG does not support transparency.

Intercept Double Clicks

name: interceptDoubleClicks, type: Bool, default: FALSE

If checked, the RemotePanelRendering module will intercept and remove double clicks (including the first click of a double click). This is done by delaying mouse clicks until the double click is received or the double click threshold (time or distance) is exceeded.

Be aware that using this feature can disrupt the usual ordering of input events and other messages received from the remote connection.

Enable

name: overrideStreamingQuality, type: Bool, default: FALSE

If checked, the module allows for overriding the image type and quality for image streaming.

NOTE: Typically, the client can select the desired type and quality by sending the streaming settings, e.g., from JavaScript or the HTTP URL. If this option is enabled, the quality is set by the server/this module and cannot be set from the client anymore.

Interactive Image Type

name: interactiveImageType, type: Enum, default: JPG

Defines the type of the interactive image.

Values:

Title Name
Jpg JPG
Png PNG
Bmp BMP
Webp Lossy WEBP_LOSSY
Webp Lossless WEBP_LOSSLESS
Jpg Alpha JPG_ALPHA

High Quality Image Type

name: highQualityImageType, type: Enum, default: PNG

Defines the high quality image type.

Values:

Title Name
Jpg JPG
Png PNG
Bmp BMP
Webp Lossy WEBP_LOSSY
Webp Lossless WEBP_LOSSLESS
Jpg Alpha JPG_ALPHA

Interactive Jpg Quality

name: interactiveJpgQuality, type: Integer, default: 70, minimum: 0, maximum: 100

Sets the interactive JPG Quality (0-100).

High Quality Jpg Quality

name: highQualityJpgQuality, type: Integer, default: 100, minimum: 0, maximum: 100

Sets the high quality JPG quality (0-100)

Panel

name: panel, type: String

Sets the name of the module (and optionally include also the window name) whose panel should be rendered.

The syntax is “modulename[.windowname]”. If windowname is not given, then the default panel is rendered. If you want to render the panel of a submodule, you can use “macroname.submodule.windowname”. In this case, the windowname is required to distinguish between submodule and windowname. The default panel is named “_default”, so you can write “macroname.submodule._default” to get the default panel of a submodule.

There is a special syntax for showing the panel of the parent macro, which is a single “.”. It is also possible to select a specific panel of the parent macro, which is “.windowname”.

Examples:

Value Meaning
SomeModule Show the default panel of SomeModule in the same network
SomeModule.someWindow Show the window named someWindow of SomeModule
SomeModule.SubModule._default Show the default panel of SomeModule.SubModule
SomeModule.SubModule.someWindow Show the window names someWindow of SomeModule.SubModule
. Show the default panel of the parent macro
.someWindow Show the window named someWindow of the parent macro
parent:someWindow Show the default panel of the parent macro of the parent macro
parent:SomeModule._default Show the default panel of the parent macro of the parent macro

Note that “parent:” is one level above the macro in which the RemotePanelRendering is located, which is why there is the special single “.” syntax to specify the direct parent macro.

Status

name: status, type: Enum, persistent: no

Shows the status of the RemotePanelRendering module.

Values:

Title Name
No Module Panel Specified NO_MODULE_PANEL_SPECIFIED
Module Not Found MODULE_NOT_FOUND
Window Control Not Created WINDOW_CONTROL_NOT_CREATED
Window Not Created WINDOW_NOT_CREATED
Rendering RENDERING

Enable Nested Graphics Views

name: enableNestedGraphicsViews, type: Bool, default: FALSE

If checked, the support for nested graphics views is enabled.

Enable Context Menu Events

name: enableContextMenuEvents, type: Bool, default: FALSE

If checked, a context menu event is generated when the right mouse button is released. Since embedded context menus have several limitations and there might be non-working context menus or even context menus that appear on the server, this options is disabled by default and is considered experimental.

Enable Focus Stealing

name: enableFocusStealing, type: Bool, default: TRUE

If checked, “focus-stealing” behavior is enabled when the mouse enters the remote panel rendering.

This may steal keyboard focus from the client computer if the worker process and client are on the same machine, but it is necessary to ensure that keyboard shortcuts, such as those defined with the accel keyword, function correctly.

Hidden Fields

imageRendered

name: imageRendered, type: Trigger

doubleClickIntercepted

name: doubleClickIntercepted, type: Trigger

This is triggered when a double click was intercepted by the module.

imageCacheId

name: imageCacheId, type: String

clearImageCacheOnClient

name: clearImageCacheOnClient, type: Trigger

isRenderSizeSet

name: isRenderSizeSet, type: Bool, default: FALSE