Geo STUDIO Pro 3.5 Release Notes
- Andy Bushnell
- Sep 16, 2025
- 9 min read
RELEASE NOTES
GEO STUDIO PRO
(VERSION 3.5)
⦁ The application & Geo format VERSION have increased to 3500 (3.5)
⦁ The Wavefront Obj importer has been re-written using the TinyObjLoader header-only library. It is much more robust and has a greater level of format-coverage than the previous loader. In addition, the new loader creates PBR materials from the material definitions found in the .mtl material library file. lastly, if polygon materials have dissolve set to a degree of transparency - these polygons are moved into a RenderGroup at the end of the file so that alpha-blending is correct.
⦁ The Wavefront Obj exporter has been updated so that it correctly converts Basic Materials, Extended Materials or PBR materials when writing into the wavefront .mtl material file. Also if the in-memory model contains LOD or Switch nodes then only the LOD or switch branches that are currently active in the scene are exported (this helps insure that the exported file doesnt export all LOD geometry into the exported file).
⦁ Copy/Paste between files has been improved and various bugs squashed.
⦁ Added a simple but convenient SceneGraph plugin - MergeRenderGroups. Select some RenderGroups and this plugin will move all the selection children (Polygons etc) into a new user-name RenderGroup. This is a handy clean-up tool as some imported obj files come with multiple RenderGroups when one logical group would suffice.
⦁ We are pleased to announce that generation of AUTOMATIC LEVEL OF DETAIL (LOD's) is now available in Geo STUDIO Pro! You simply select the RenderGroups in the current model that you wish to generate a lower-level of detail for, and specify the triangle reduction percentage desired. Current options are a reduction of 80%, 70%, 60% or 50% from the current model/LOD. Generating LODs on a RenderGroup-basis means that geometry simplification will not decimate between polygon groups or merge triangles with different texture or material assignments which can cause unsatisfactory results. The generated LOD is saved as a new Wavefront .Obj file alongside the original source model (in order to access any texture maps). Once the auto-generated model is loaded into Geo, it can simply be copy/pasted into the source model under an LOD node. If, for example. a 50% triangle reduction did not work for a particular RenderGroup - then the node can be reprocessed with different triangle reduction percentages.
⦁ The following example was originally an OpenFlight model that included 3 LODS. Those LODs were removed to showcase our new automatic LOD generation feature.

⦁ The entire process took 3 minutes (and that included setting the LOD nodes, switch distances etc.). Its a tremendous starting point for rapid generation of LOD - mating this new functionality with Geo STUDIO's existing real-time modeling tools is a very powerful combo. Check out the previous blog post with a video showcasing this effort.
⦁ Other snaps to show how the feature coped with very irregular topography.

⦁ Of course, an experienced modeler or artist can immediately see where detail can be lost or must be retained

⦁ The magic behind this feature is a product called MeshLab. MeshLab is an open source, portable, and extensible system for the processing and editing of unstructured large 3D triangular meshes. It is aimed to help the processing of models arising in 3D scanning, providing a set of tools for editing, cleaning, inspecting, rendering and converting those kind of meshes. We've focused on a simple but seamless integration but we believe that over time we can connect more aspects of MeshLab that are applicable to the needs of the training and simulation market with Geo STUDIO. The good news is that we will ship a complete MeshLab install with the Geo installer - meaning you're free to dive into an explore its rich feature set. It may be geared towards huge scanned datasets but It's one of the first tools we've found that also seems to handle lower-poly models well.
⦁ Added a convenience option under the LOD menu to "Open Current File in MeshLab". This is handy if you want to manually explore MeshLab. This option runs a diagnostic on the current file to determine what, if any, characteristics of the file will not seamlessly transfer (i.e. since MeshLab input is via Wavefront .obj format so nodes like LOD, Switches etc and resources like shaders, multi-UV sets etc willl not convert). This is flagged to the user who can choose to export anyway or fix the issues before transferring to MeshLab.
⦁ Found and fixed 2 bugs associated with deleting materials in the material palette. The first was that you couldn't delete all materials (it insisted you needed to have at least 1 material in the palette - which is no longer a requirement). The second (more serious) bug was that Polygon-types that referenced the material being deleted did not have their material references updated to -1
⦁ When Geo loads textures it tries its best to determine whether to flip the texture origin (most image format have their origin at the top left, whereas OpenGL expects the image data origin to be at the bottom left). A lot depends on whether the image was saved OpenGL friendly or not. If you load a model and its not textured correctly there's a new submenu in the Texture Palette File menu called Fix Display Orientation. The two options are Flip Current Image and Flip All Images. Flipping all images will fix things.
⦁ This version comes with a collection of short video tutorials that are a great way of getting up to speed quickly. The tutorials are..
⦁ Overview
⦁ Scene Interaction & Tool Grabbers
⦁ Materials, Textures & Texture Mapping
⦁ Using The Automatic LOD Feature
⦁ Using DCS Nodes For Simple 3D Articulation
⦁ Behaviors And The StateMachine Editor
⦁ Driving Behaviors From Simulation Data
⦁ Fixed a bug in the Material Editor. Extended Materials which were not using the PBR component would render incorrectly on the Material Editor material ball and in the palette. The materials would, however, render correctly on any geometry using those materials. This regression has been fixed.
⦁ The PBR drop-down panel in the Material Editor would refuse to open under certain circumstances. This has been fixed.
⦁ The Helper Tool plugin - HelperPt on Line/Line Intersection had a bug that failed to open the tool gui. This has been fixed.
⦁ The Tree View Delete command didn't delete the selected items. This has been fixed.
⦁ Added a Tool Menu option and keyboard shortcut - Toggle Selection Display Hint (with the keyboard shortcut being 5 ). During any tool operation its now possible to toggle on/off selection highlighting while a tool is active. This is only a hint (or request) to the tool as it may ignore the request if rendering the current selection is required for the tool's successful operation.
⦁ The behavior system's Copy/Paste Behavior functions didn't work in some situations. This has been fixed.
⦁ Attempting to add a behavior to a Group node (that wasn't a RenderGroup) would fail - instead adding it to the first RenderGroup found under the selected Group node. This has been fixed.
⦁ Closing the current file when the Behavior Action Editor was open would result in a program termination. This has been fixed.
⦁ Added 3 new keyboard shortcuts to snap the trackball (and hence the model) to a particular orientation...
⦁ ALT+r = right (viewing YZ)
⦁ ALT+t = top (viewing XZ)
⦁ ALT+f = front (viewing XY)
⦁ Adding more than one user Node (either Group or Primitive) to a User Site in the User Node & Private Data Editor wasn't permitted. Also deleting one selected user node would delete all user nodes that hadn't yet been exported as plugin code (as Node GUID's were generated when the plugin code was written). These have been fixed.
⦁ Added a couple of simple GeoScripts to the SceneGraph tools toolbar - ActivateSequences.gs and DeactivateSequences.gs. These turn on and off all Sequence Nodes that are currently visible (i.e not children of inactive LOD nodes)
⦁ Found and fixed a couple or per-frame memory leaks which would eventually cause Geo to run out of memory after loading a model.
⦁ Geo PrimSet nodes can now have coplanar decal polygon types (AKA subfaces) just like Geo's Polygon & Mesh nodes.
⦁ In some cases muti-texturing did not work for polygons that did not use Extended or PBR Materials. This has been fixed.
⦁ The manually-controlled Fast-Path Renderer that was introduces in version 3.4 has been replaced by an fully-automatic fixed function emulation shader. This is now the default if a polygon-type is not using an extended or PBR material shader (where the material fully encapsulates the render state). This new shader is useful in the case of older OpenFlight models that use Basic Materials. All the per-face rendering controls (drawstyle, shademodel, face and vertex colors etc.) work seamlessly with the new shader - giving you high performance rendering with face-level control.
⦁ Texture environment options between multi-textures include MODULATE, BLEND, REPLACE, DECAL & DETAIL. The image below shows a base polygon with 3 textures (Modulate, Blend and Detail). The polygon also has a coplanar decal (or subface) polygon which itself has a different Detail texture applied.
⦁ In addition Detail textures have their own Detail Distance and Detail Scale properties so you can control when the detail begins to blend in.

⦁ Fixed a number of bugs in the Aechelon HIE format importer...
⦁ Textures were loaded but not being assigned
⦁ The HIE import preference "Flatten SCS Transform Nodes" did not work in all transform node cases - resulting in geometry being moved to the origin.
⦁ Unchecking the preference: "Convert to Poly Textures" reverted to using the MultiTexShader node for texturing at the RenderGroup level (the MultiTexShader being derived from a RenderGroup). Unfortunately this node hadn't been updated to work with all the recent enhancements and changes in Geo and didn't work as advertised. See below for the fix.
⦁ The solution was a complete rewrite. Previously, and contrary to its name - the MultiTexShader node was not a shader - just an implementation of multi-texturing and multi-pass rendering in classic OpenGL. It now renders via a new GLSL shader and is properly integrated into the program. This node acts like an Extended Material in a way - meaning it defines texturing for all its poly children, but unlike Extended or PBR materials - the child polys can still define per-poly attributes like material usage, drawstyle, shademodel, linewidth etc. The MultiTexShader node is mainly intended (and originally implemented) for Aechelon Hie import/export
⦁ If a textured polygon (using basic materials and not textured as a result of an extended material) was inspected in the attribute editor - it would show a thumbnail of the texture - as expected. If you subsequently selected a polygon being textured by an extended material - the thumbnail button would still show the previous poly's texture - even when the poly texture index was -1 in the extended material poly case (basically just a GUI holdover from the initial poly being viewed in the attribute editor). This has been fixed.
⦁ Made a minor change to the UI to improve usability (especially for new users). This was done to highlight a useful tool that converts an existing RenderGroup selection to the equivalent selection of Polys (the drawable primitives that are the children of the selected RenderGroups). The button's active image is now just the text: "Select As Polys".
⦁ A Quick recap on why this is useful:
⦁ It's a quick way to send a poly-selection list to tools that specifically require that input.
⦁ Converting a Group selection to a Poly selection automatically switches the pickmode to poly.
⦁ If you invoke this tool when the RenderGroup attribute page is being shown - the selection will switch to the first poly child. Conversely, clicking on the parent or child navigate buttons in the Node attribute page (or pressing the Up or Down Arrow-Key shortcuts) will also switch the selection (and pickmode) as you change the selection list by moving up and down the scene graph.
⦁ Switching between RenderGroups and Polygon attributes is also useful when inspecting or changing materials (which can be applied at the Group or Poly level).
⦁ This tool is only active (and clickable) when you are in Group selection mode and something is actually selected.
⦁ Since a Group selection and a selection of a Group's children polys look exactly the same - the active (or not) state of the Select As Polys icon can be used for quick selection confirmation if needed.
⦁ Removed the GridMap dll plugin from the application. This was too similar to the PlaneMap plugin and wasn't as intuitive either.
⦁ Rewrote the Cylindrical UV Mapping tool. Its much improved - including optional planar mapping on cap polys, Cap polys are controlled by a cap threshold angle. There's also U and V scaling, offset rotation (to try and hide the wrap seam, if any) and major axis alignment snapping.

⦁ The Move Vertex tool has ben rewritten to be much more interactive. Now you just grab and move any vertex with one click and drag. You can drag the same vertex more than once or drag different vertices as desired. The tool's Undo Last Move feature (in the tool GUI) has been replaced with a generic undo that will allow you to unwind all vertex moves. Once the tool is completed the Edit->Undo will undo to the state when the Move Vertex tool was initiated. This tool translates all vertices of all polygons that share that vertex location. If you wish to translate just one poly's vertex - select that vertex only (ie press the 'k-Key' to shrink all faces then select the desired poly-vertex) and use the standard translate tool. NOTE: the Freeze axis buttons can be used in conjunction with this tool to constrain the translate position.
⦁ The Bake (Flatten) Transforms tool had a bug if the selected node (the one having its transforms baked into its child vertices) was itself a child of a transformed node. In that case the selection display of the selected node was wrong. This has been fixed.
















Comments