Gestaltor is a visual editor for glTF files. The desktop application is developed by UX3D and available for Linux, MacOS and Windows. More information can be found on the Gestaltor product page.

Gestaltor supports glTF 2.0 and following Khronos glTF extensions:

Gestaltor can load and save an asset using all available file extensions specified by glTF:

  • .glb

  • .gltf

Community vs. Professional

The Gestaltor Community version is for non-commercial usage. It fully supports all glTF 2.0 features plus all extensions. The main advantage of the Gestaltor Professional version are the semi-automated features e.g. cleaning up a glTF asset with unused elements.

Steam vs.

The only difference between these versions is the shop and license system.

The version allows like the Steam version one activation for the Professional version. When upgrading the operating system or switching the computer, resetting the count of used installations becomes necessary.

This can be done here: My Account

  1. After login to the shop, switch to “My Account”.

  2. Click “Serial Keys”. Here, you can view all your licenses.

  3. Click “Show details” to list the “Unique identifier”.

  4. Select one or more “Unique identifier” to delete.

  5. Press “Remove Unique Identifier”

After this step, one can utilize the Gestaltor Professional license key on another computer.



Gestaltor is installed like any game on Linux, MacOS and Windows.

Following files are downloaded depending on the operating system:



After downloading, please set the AppImage executable. Gestaltor can be executed like any other Linux program.



Open the DMG file and install Gestaltor like any other program for MacOS.



Execute the installer. Gestaltor is installed like any other Windows program.

Graphical User Interface

After Gestaltor is launched, the following graphical user interface (GUI) is visible:

All widgets screenshot

The GUI consists of a menu bar and several widgets.


The GUI consists of a main widget - the viewport - and several other widgets for editing and optimizing glTF assets. The widgets - except the main widget - can be hidden, rearranged and detached depending on the user’s needs.

Global Settings

These settings are editor specific properties which are not stored inside glTF - as it is not possible - but that do have an impact on the visual output. For instance, most glTF web viewers do have similar predefined settings. These parameters do help to adapt to e.g. change the environment light by defining a custom .hdr file.


The viewport shows the rendered output of the current glTF. Property changes are updated automatically. The visual output is aligned with the official glTF Sample Viewer from Khronos. Hence, the viewport does allow a WYSIWYG editing of the glTF asset.


Keyboard Conventions

Shortcut keys are shown in the way they are visible on the keyboard. For example:


This stands for the lower case “g”.

Shift, Ctrl, Alt

These are modifier keys.

Ctrl-W, Shift-Alt-A, …

This notation means you have to press these keys at the same time.

Mouse Conventions

We use the following schema to reference mouse buttons:

LMB Left mouse button

RMB Right mouse button

MMB Middle mouse button

Wheel Mouse wheel

Camera controls

General Camera Controls









ALT-RMB or Wheel



Focus selection


Look around


Top view


Bottom view


Right view


Left view


Front view


Back view

Perspective User Camera

RMB - W A S D or Arrow keys

Flight Mode


Flight Mode up and down


Sprint (in Flight Mode)


Change Speed (in Flight Mode)

Orthographic User Camera

RMB - Q E A D or Arrow keys

Panning Mode down, up, left and right


Move Clipping Planes (forward, backward)


Fast panning (in Panning Mode)


Change Speed (in Panning Mode)

All other shortcuts are shown in their respective menus.

Command Line Interface

Note that the command line interface is only available in the Gestaltor Professional version.


[-i, --input] - Specify the path to a glTF or glb file to open with Gestaltor or to create a rendering of.

[-o, --output] - Specify an output path for the rendered image(s). Control the file type by appending .png or .jpeg to the filename.

[-x, --width] and [-y, --height] - Specify a resolution for the rendered image(s). These options will implicitly set the aspect ratio of the resulting image(s). If you are using a glTF camera with a defined aspect ratio for the rendering process, you might want to only specify height or width of the rendering. In this case, the other property will be deducted from the aspect ratio of the camera.

[-c, --camera] (optional) - Specify the index of a glTF camera. If this camera has an aspect ratio, only width or height of the resolution need to be specified.

[-s, --scene] (optional) - Specify the index of a glTF scene. If not specified, the default scene or, if not available, the first scene in the glTF will be used.

[--clearcolor] (optional) - Specify a color value in the format #RRGGBB (red, green, blue) or #AARRGGBB (alpha, red, green, blue) that is used as the background color. If not specified, the default environment map of the Gestaltor will be used as background.

[--alphaChannel] (optional) - Set this option to include the alpha channel in the rendered image(s).

[--ibl] (optional) - Specify a path to an .hdr file used for image-based lighting (ibl) and as a background. Use [--clearcolor] to overwrite this background image.

[-t, --tonemapping] (optional) - Add a tone mapping to the rendered image(s) by specifying the desired algorithm via its index. None = 0, ACES Filmic (NARKOWICZ) = 1, ACES Filmic (HILL) = 2, ACES Filmic (HILL - Exposure Boost) = 3.

[-a, --animations] (optional) - Choose which animation clips to render by specifying their indices in this format: [0,3,4] or [2] or 2

[-f, --frames] (optional) - Specify the number of animated frames that should be rendered. Each frame will produce one output image.

[-r, --framerate] (optional) - Specify the framerate [frames per second] that is used when rendering multiple frames of animation. The default is 60 frames per second.

[--radius] (optional) - Specify the distance from the camera to the target. This option is used for orbit camera configuration and is ignored when a glTF camera is specified with [-c, --camera].

[--target] (optional) - Specify the target in world coordinates that the camera looks at in this format: [0.0,0.0,0.0]. This option is used for orbit camera configuration and is ignored when a glTF camera is specified with [-c, --camera].

[--theta] (optional) - Specify the horizontal camera angle [degrees]. 90 degrees looks along the -X axis. This option is used for orbit camera configuration and is ignored when a glTF camera is specified with [-c, --camera].

[--phi] (optional) - Specify the vertical camera angle [degrees]. 90 degrees looks along the -Y axis. This option is used for orbit camera configuration and is ignored when a glTF camera is specified with [-c, --camera].

[--yfov] (optional) - Specify the vertical field of view [degrees]. Using this option forces perspective projection.

[-?, -h, --help] - Display help on command line options.

[--help-all] - Displays help including Qt specific options.

[-v, --version] - Displays version information.

How to …

… create material variants

  1. Select Material Variants in the Content widget.

  2. Create two variants using one of the following ways:

  • Right click in the empty space of the Content widget and click the Create popup.

  • Select Create > Create Material Variant in the Widget menu.

  • Select Content > Create Material Variant in the menu bar.

  1. Rename the variants to e.g. “Material Variant A” and “Material Variant B”:

  1. Click on Materials and create (or duplicate) a new material. In this case, a red emissive effect is added to the duplicated material. Please note, that the effect is not visible, as this material is not assigned yet.

  1. Select the “Hello Cube Mesh” in Meshes section. In the Inspector widget, select the only available primitive.

  2. Enable the variants extension at the bottom of the Inspector widget.

  1. Assign the empty slots with the “Hello Cube Material” and the “Copy of Hello Cube Material”.

  1. Now it is possible to select the currently visible variant in the Global Settings widget.

… export to USDZ

  1. Select File > Export to USDZ… in the menu bar.

  2. Enter a filename and save the asset to the file system.


USDZ is the 3D and AR format from Apple. It does have less features compared to glTF. Non-supported properties are automatically removed.

… use an imported animation

  1. Select File > Import … in the menu bar.

  2. Import a glTF having an animation e.g. Animated Cube

  3. Selecting the second scene in the Content widget, the Gestaltor should be in this state:

  1. Switch back to the first scene and select the animation in the Content widget to assign to a new target node:

  1. In the Inspector widget, change the TargetNode to “Hello Cube”.

  2. Please make sure to activate the animations in the Viewport widget.

  1. Now the default sample asset is using the animation from the imported glTF.

… use a punctual light

When you open Gestaltor, the sample scene already contains two lights. In this case, we add one point light using the KHR_lights_punctual extension.

  1. Open any scene. In this case, we do have a sphere with a basic, metallic and rough material.

  1. In glTF, any transformation for a mesh, camera and punctual light is stored in a node.

  2. Create a node by e.g. right clicking in the Hierarchy widget. In this case, we renamed the node to “MyLight”.

  1. Create a light by pressing Ctrl+Alt+L. In this case, we change the point light’s color from the white default to blue.

  1. Select the “MyLight” node and assign the light “MyPointLight” in the Inspector widget.

  1. As the node and the light are inside the sphere, change the Translation value. The light and the effect becomes visible now.


… merge glTF files

One major feature of Gestaltor is to merge several glTF into a single file and to reuse their assets.

  1. Open a glTF File > Open… in the menu bar. e.g. Damaged Helmet

  2. Import a glTF File > Import… in the menu bar. e.g. Toy Car

  3. Toggling the two scenes in the Content widget should display the following:

_images/Merge_01.png _images/Merge_02.png
  1. Switch back to the first scene and add the “Fabric” node in the Hierarchy widget.

  2. Click on the “Fabric” node and adjust the scale in the Inspector widget.

  1. Adjust the translation of the first node in the Inspector widget.

  2. Delete the unused second scene in the Content widget.

  3. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.


… assign a material

In this example, we assign a material to an imported Wavefront .OBJ file from here: Utah teapot

  1. Start Gestaltor and remove all elements from the Hierarchy widget:

  1. Import an .obj file using the menu bar Content > Import OBJ .

  2. In the Hierarchy widget, add the node “teapot.obj”. The Utah teapot is now visible:

  1. The Utah teapot contains the default glTF material. Let’s assign another material e.g. for the cap.

  2. In the Viewport widget, select the cup. In the Inspector widget, click the Mesh and then the Primitive icon.

  3. In the material drop down list, assign the material “Hello Cube Material”.

  1. Click on the Material icon and e.g. change the base color and add a clear coat effect:

  1. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.

… decimate a primitive

There are two ways to decimate a primitive in Gestaltor:

  • Vertex Clustering

  • Reduce Triangle Count

Vertex Clustering is scanning a primitive for similar vertices, which do have the same data. The index buffer is rebuilt and duplicate vertices are deleted.

Reduce Triangle Count is decimating the primitive vertices count while keeping the shape of the geometry. If the quality is not sufficient, press CTRL+Z to undo this optimization. Vertex Clustering is executed before this operation automatically, as this helps to produce better results.

Both operations are only available in the Professional Gestaltor version.

These operations can be found in the Inspector widget when navigating from a mesh to a specific primitive:

  1. Open a glTF File > Open… in the menu bar. e.g. Sci Fi Helmet

  2. Navigate to the only mesh and primitive in the glTF scene

  1. Press the Reduce button in the Inspector widget and choose a target percentage and tolerance.

  2. In the Logger widget, feedback about this operation is displayed. If desired, the operation can be executed several times.

  3. In the Viewport widget, switch to Wireframe mode to see the result before and after the operation.


… rescale a texture

In some cases, the input images for a material are rectangular or even square e.g.


In general, procedural generated or scanned images do have this characteristic. In this example, the given material Fabric 026 is used. The tool pbr2gltf2 is used to generate the later imported material.

  1. Open a glTF File > Open… in the menu bar. e.g. Sheen Cloth

  1. Import a glTF having a material e.g. Fabric026 with rectangular images.

  2. Assign to the only Mesh and Primitive the Fabric026 material.

  1. In the material Fabric026, enable the KHR_texture_transform extensions.

  2. Set the Scale for the Texture Transform to e.g. 10.0 to match the original image.

  1. Either delete unused elements manually or press Ctrl+Shif+C (Professional only) to remove them automatically.

… create a screenshot

  1. In the Viewport widget, switch to the Render Mode in the drop-down list.

  2. Select the node “Camera Node” in the Hierarchy widget and select the camera:

  1. We want to render an image with a resolution of 1500 : 500, so change the Aspect Ratio to 3:

  1. Press the Render button in the Viewport widget. Change the resolution to w = 1500 and h = 500:

  1. After pressing Render now, the rendered image is stored in the folder defined in the previous dialog:


… create a screenshot from the command line interface

Note that the command line interface is only available in the Gestaltor Professional version.

  1. Specify a glb or glTF file using the [-i, --input] option. E.g. VC

Gestaltor.exe -i "C:\VC.gltf"

  1. Add an output path for the rendered image.

Gestaltor.exe -i "C:\VC.gltf" -o "C:\output_image.png"

  1. Specify the resolution, in this case it is Full HD.

Gestaltor.exe -i "C:\VC.gltf" -o "C:\output_image.png" -x 1920 -y 1080

  1. This glTF has several camera objects. Pass a camera’s index to render the scene from the camera’s point of view. In this case camera 11 is used.

Gestaltor.exe -i "C:\VC.gltf" -o "C:\output_image.png" -x 1920 -y 1080 -c 11

  1. Execute the command and view the rendered image at the output path.


… create a movie clip via the command line interface and Blender

Note that the command line interface is only available in the Gestaltor Professional version. You already have learned how to create a single image via the command line interface. E.g., with .\Gestaltor.exe -i "C:\Fox.glb" -o "C:\output\image.png" -x 800 -y 600 you get an image of the Fox.glb asset. This file also includes three animations which can be rendered as an image sequence. To do so, one needs to know the index of the animation that should be used. In the following, we identify the index of the animation using Gestaltor:

  1. Open the animation widget by clicking on the icon in the toolbar

  1. Identify the animation you want to use and memorize the index. (Important: this index starts with 0, i.e., if you want to render the “Survey” animation, we need index 0)

  2. Switch back to the terminal and add the option --animations 0 to get a set of images resembling the animation:

.\Gestaltor.exe -i "C:\Fox.glb" -o "C:\output\image.png" -x 800 -y 600 --animations 0

Names of the images are automatically complemented by a progressive index.

  1. By default, the number of frames per second is set to 60. To reduce the number of frames per second, add the option --framerate 30:

.\Gestaltor.exe -i "C:\Fox.glb" -o "C:\output\image.png" -x 800 -y 600 --animations 0 --framerate 30

To convert the image sequence into a movie file format, you can use, e.g. Blender:

  1. Go to Blender and open the Video Editing panel

  1. Go to Add > Image/Sequence in the Video Editing panel

  1. Select all generated images and click Add Image Strip

  1. Now, you have the movie clip in Blender


… replace or add a new HDR file

  1. In the Global Settings widget locate the ‘Add new HDR’ button under Environment Light

  1. Click the ‘Add new HDR’ button and allow Gestaltor to access the files from the computer (only for Mac users). Select the HDR file of your choice.

  1. When the HDR file was successfully loaded it will appear as an option in the HDR image dropdown above.

  2. Select the new file from the dropdown.


… remove / delete an HDR file

  1. In the Global Settings widget locate the ‘Delete current HDR’ button under Environment Light.

  1. The ‘Delete current HDR’ button will delete the currently selected HDR file (the one shown in the viewport / dropdown). Click the button to delete it.

… compose a scene from multiple glTFs using the navigation cube

  1. Click on import in the file menu and select the glTF you want to import.

  2. Right click the hierarchy and select “Add Node to Scene”. And select the imported node from the menu. (There can be big size differences between the models already in the scene and the newly imported one. In those cases they have to be scaled up manually.)

_images/Composing_01.png _images/Composing_02.png _images/Composing_03.png
  1. Select the movement tool from the navigation toolbar.

  1. If your current view is not aligned with any axis you can use the navigation cube in the upper left corner of the render view to select an axis aligned view. You can also use the following shortcuts to achieve the same result.


Top view


Bottom view


Right view


Left view


Front view


Back view

  1. You can then press the perspective / orthographic view toggle at the top of the renderer (left of the “Render” button) to switch between perspective and orthographic mode.


Perspective mode


Orthographic mode

  1. Once you have entered orthographic mode you can then position the selected node.


… create a 3D Commerce compliant environment

  1. Go to Edit > Preferences > Viewport and set ‘MSAA’ to ‘Disabled’, ‘IBL resolution limit’ to 256 and ‘Background color’ to white (#FFFFFF).

  1. If the MSAA setting was changed restart Gestaltor

  2. Download the Neutral.hdr file from here

  3. Load the downloaded HDR file into Gestaltor and select it

  4. In Global Settings disable the Show Background option


Once you have performed the steps outlined above, you are able to create certification screenshots. This can be done either in Gestaltor via the Render functionality or via CLI. The certification models can be downloaded from this repository.

To create a screenshot in Gestaltor, load a model select the Render Mode and the desired gltf camera. Now create a screenshot with the Render functionality and use 1024 pixel as width and height.

Professional feature: To create a screenshot via CLI use the following command:

Gestaltor.exe -i <path to model> -o <path to save location> --height 1024 --camera <camera to select> --ibl <path>/Neutral.hdr --clearcolor #FFFFFFFF

… cleanup glTF for NFT

Non-fungible token - in short NFT - does allow to certify a digital asset to be unique and therefore not interchangeable. This certification is also possible for glTF. Some platforms only allow 100% valid glTF plus no extensions. One can go through all glTF objects and remove the extensions manually. However Gestaltor Professional does allow to do this automatically.

  1. Execute Content > Remove Light Extensions… > KHR_lights_punctual to remove the light extension in the sample asset

  1. Execute for any other extension. If an extension is not present in the asset, the menu is grayed out

  2. Execute Content > Cleanup to remove all non-required data in the glTF

  3. Save the asset as glTF or glb

Gestaltor always saves a valid glTF.

… create a volume effect using a thickness map

  1. Open a glTF File > Open… in the menu bar. E.g. DragonAttenuation

  2. Navigate to the mesh, primitive and material in the glTF scene.

  1. Press the checkbox next to the Volume extension at the bottom.

  2. The Transmission extension is automatically enabled. Choose a Transmission Factor between 0 and 1.

Dependencies: The KHR_materials_volume extension needs to be combined with an extension which allows light to transmit through the surface, e.g. KHR_materials_transmission.

Exclusions: This extension must not be used on a material that also uses KHR_materials_pbrSpecularGlossiness or KHR_materials_unlit.

  1. Define the parameters to describe the transmission and volume effects.

  2. Use an existing texture or create one using the Bake Thickness Map Gestaltor Professional feature.

  3. To access the Bake Thickness Map feature, navigate to the primitive in the glTF scene.

  1. Press the Bake button in the primitive Inspector widget and set Resolution, TexCoord Set and Occluder Distance.

  2. The texture will be generated and stored in the Content panel. This process might take a while.

  3. Use the created texture as the Thickness Texture in the Volume extension. Adjust the Thickness Factor, Attenuation Distance and Colour accordingly.


… store images of a glTF to the file system

Images in a glTF can be stored as a file, embedded or to the binary buffer. If stored as .gltf, the images are referenced either as a file, embedded or the binary buffer. If stored as .glb, the images are referenced either as embedded or the binary buffer. After executing the following steps, the images stored inside a glTF - especially a .glb file - are accessible on the file system.

  1. Open a glTF File > Open… in the menu bar. e.g. the binary version of the Damaged Helmet

  2. Select in the Content widget the Images section and click one of the images.

  3. In the Inspector widget is the Storage Format displayed. In this case, the immage is stored in the binary buffer.

  1. Choose the required storage format. In this case, switch to File.

  2. Repeat this step for all images.

  3. Save the asset as .glTF and the images are stored in the same folder as the .gltf.

For convenience, this repeating step can be automated in the Gestaltor Professional version:


… create a basic animation in Gestaltor

Gestaltor Professional supports creating basic animations inside the editor. Following a more sophisticated example, where another Professional feature is used.

  1. Open a glTF File > Open… in the menu bar. e.g. the Dragon Attenuation

  2. Pick in the Viewport widget the Dragon.

  3. Press Apply Transform in the Inspector widget (Professional only). The transformation of the node is applied to the mesh …

  1. … and the material has to be adapted to the new mesh dimension. Navigate to the material of the Dragon.

  1. As the mesh is now 4 times larger, the thickness factor must become a quarter of it. Adjust the Thickness Factor from 2,27 to 0,5675.

  2. Open in the menu Create > Animation… and set the following values for a turntable effect.

  1. Move the node a little bit from the Cloth Backdrop and start the animation.


… convert an image to KTX using Basis Universal supercompression

Gestaltor supports converting images to specify textures using KTX images with Basis Universal supercompression.

  1. Open a glTF File > Open… in the menu bar. e.g. Corset

  2. In the Content widget, select the first entry in the images section.

  1. In the Inspector widget, press Convert image and choose ktx2 as the format.

  1. Choose the compression of choice and press Apply. Depending on the image, this can take some time.

  2. Gestaltor automatically enables the KHR_texture_basisu extension in glTF.

… create a sheen effect from scratch

  1. Create an empty glTF by executing File > New empty glTF in the menu bar.

  2. Create a torus by executing Create > Mesh….

  1. Enable both the PBR Metallic Roughness and Sheen effect in the material. Set Metallic Factor and Roughness Factor both to 0.0.

  1. Set the sheen roughness factor to e.g. 0.2 and the sheen color factor to white. Keep it to white, as later a texture for the color is used.

  1. For the sheen color texture, the following image is used:

  1. Import the image by executing File > Import image… in the menu bar. Create a texture in the Content widget and assign the imported image.

  1. Open the Inspector widget again and use the just created texture for the sheen color.