Geo STUDIO 3.1 Release Notes
The Geo format version number is now directly tied to the release numbering of the product. As this is Geo version 3.1 the major version is 3 and minor is 1. The file format version is therefor 3100 calculated as follows… (GEO_LIB_MAJOR_VERSION*1000) +(GEO_LIB_MINOR_VERSION*100). The GEO_LIB_LEVEL_VERSION and GEO_LIB_RELEASE_VERSION values previously written to disk will now be 0.
Users of the Geo Plugin API can also query the Geo version using the new convenience function…
float GetGeoLibraryVersionF() which returns the current version as 3.1
Fixed a crash in the Radial Tick Mark Tool caused by default.vfn vector font file not being found.
Default.vfn was missing in the Geo installer. This has been added back and should reside in the same folder as the Geo executable.
Added a new PreserveAtRuntime flag to a GeoGroup (all types derived from Group will also have this new field). It has no direct effect within Geo but is intended to be used to identify a group (and its sub-hierarchy) that it is important and should not be optimized away - for example: ensuring the group can by found by name so that some post-load processing can be done on it by the image generator.
Previously Geo only defined materials at the RenderGroup level (allowing a batch optimization of all its child Polygons/Meshes). This has now been modified so that, in addition, Polygon's now have a new material palette index attribute.. If, and ONLY if, the RenderGroup material index is -1 then material definition is done individually at the Poly/Mesh level. If the Poly material index is also -1 then lighting is disabled (a valid material being required for LIT and LIT_GOURAUD rendering). The .geo format read/write has been updated to accomodate these enhancements.
The new poly-level material index also resulted in some Geo Plugin SDK changes and additions (see geoPolygon.h and geoRenderGroup.h)
The OpenFlight importer now adds a "Version" read-only attribute extension which displays the OpenFlight version of the imported file.
The OpenFlight exporter setting to "Write Geo Behaviors In Comments" no longer defaults to true. The Open Geospatial Consortium (OGC) uses OpenFlight comments to store Common DataBase (CDB) metadata within OpenFlight. With this in mind, the user determines the desired default behavior on OpenFlight export.
Entering an invalid palette entry in a node's property page (for example: Entering Texture Palette index 3 for a Face Node - when the palette only contains 2 textures) would cause an exception on application exit. This has now been fixed.
Geo's material handling has been upgraded significantly. Traditional material definitions are now called Basic materials. Alternatively the material palette can also contain Extended materials. Extended materials allow for the definition, combination and use of various advanced rendering techniques such as...
Ambient map
Diffuse map
Specular map
Emissive map
alpha map
Light map
Normal map
Bump map
Reflection map
Shadow map
Horizon map
An Extended material can have any combination of the above techniques . This allows high quality models to be modeled or modified within Geo for use in many proprietary or open source image generators or game engines. When an extended materials is referenced by a geoRenderGroup - all its polygon types (polys, meshes, primsets) will use the extended material for rendering. In addition if the geoRenderGroup has a material palette reference of -1 then each Polygon type can set its own material palette index (which of course can be either basic or extended material). If your model is appropriately structured then RenderGroup extended materials will be more efficient and faster.
Extended material components can have 1 - 4 textures and uvsets associated with them (depending on the component) thus facilitating multi-texturing and advanced rendering techniques (like normal, bump, glow, alpha, specular mapping etc.)
Internally, a new material shader is utilized to encapsulate all extended material rendering.
Geo format version 3100 (for this release) has been updated to support Extended materials. A geo file can have any combination of basic or extended materials in its material palette.
The Geo Polygon binormal and tangent VEC3 attributes have been deprecated and removed from the Polygon property panel. These were never used within Geo. Typically these Geo primitivites are used at the Vertex level. Geo already provides storage for tangent and binormals at the Vertex level.
A new alpha attribute has been added to Polygons (and derived classes). It was added to improved the accuracy of OpenFlight model rendering. Previously a fltPolygon's transparency attribute was handled as a Poly-node extension. This has been removed now that the property has been added to the native Polygon class. Pleaase note that in Geo this is a floating point value where 0.0 is fully transparent and 1.0 is fully opaque (i.e the opposite as defined in the OpenFlight format). The fltImporter and fltExporter plugin's handle this conversion when reading/writing.
The Material Editor has been rewritten and can edit both basic and extended materials. In addition, the new material editor shows a much larger material sphere than that found in the material palette. When editing an extended material any material components that’s utilize textures (for example diffuse, specular, alpha, normal map etc.) will be correctly rendered. There is also a handy repeat UV slider to allow the user to adjust the spherical texture mapping within the editor. The material editor stores the current material properties on open and directly updates the current material in real-time. Material changes can be seen in the material editor, material palette and in the 3D scene on any geometry using that material. The [Cancel] button restores the current material and closes the editor. The [OK] button confirms the changes and closes the editor.
When you create a new Extended Material in the palette it defaults to having ambient, diffuse and specular components active and material shademodel set to Phong. These can be modified or removed in the Material Editor.
Additions and changes to the Graphical User Interface (GUI) …
Geo splashscreen has been updated - it's now larger and reorganized.
The GUI right-side pop-out panel has been significantly revised…
The pop-out panel is now wider with many UI elements more logicall arranged and given more space (wider text entry fields etc.)
The Material Palette has been rewritten. It makes use of the larger side-panel space and supports the definition and editing of Extended Materials
The Material Palette also adds a new Copy button to copy the current material (basic or extended) into a new material which becomes the new current material (which can then be edited in the Material Editor.
All node property page layouts have been significantly reorganized and improved.
Some missing desktop icons are back! new
The RenderGroup material attribute now correctly honors the Modify All check box - meaning that you can modify the material index and it will propagate and change all selected RenderGroup material values.
The default shade-to and background colors have been changed to a more pleasing and contrasting color scheme. These can still be modified by the user, if desired, in the Geo Settings dialog (found under the Edit -> Options menu)
Fixed some bugs in the scene mouse handler when using Geo with a 2-button mouse.
If using a 2 button mouse...
Left Mouse = Pick one Item or Deselect All if Clicking in Space.
Left Mouse + DRAG = Fence Select
CONTROL KEY + Left Mouse = Add/Remove one item from the Selection List
Right Mouse = Trackball manipulation of the Scene or Selection
SHIFT KEY + Right Mouse = Zoom in/out of the Scene or Selection
CONTROL KEY + Right Mouse = Pan the Scene or Selection
If using a 3 button mouse (recommended)...
Left Mouse = Pick one Item or Deselect All if Clicking in Space.
Left Mouse + DRAG = Fence Select
CONTROL KEY + Left Mouse = Add/Remove one item from the Selection List
Middle Mouse = Zoom in/out of the Scene or Selection
Right Mouse = Trackball manipulation of the Scene or Selection
CONTROL KEY + Right Mouse = Pan the Scene or Selection
Fixed a bug locating secondary files (textures etc) associated with a primary file being loaded. This was related to relative paths from the primary file's location.
When changing pick mode any existing selected item would continue to be drawn selected - even after the pickmode type had changed. This put Geo into an invalid state. This has now been fixed. Changing pickmodes deselects any previously selected items.
Geo now uses an outline or silouette shader to draw highlighted groups and rendering primitives. Previously Geo would re-render the meshes in a red wireframe to indicate they were selected. The new outline shader uses a bright green outline around each selected group type (effectively each geoRenderGroup) or each Polygon if multiple polys are selected. When a tool is active the wireframe outline is used instaed of the outline shader as this makes it easier to determine any transformation changes.
Fixed a number of problems in PrimSet nodes (for example applying the 'Shrink faces' operation on a PrimSet now correctly shrinks each constituent primitive (TMesh, Fan etc.)
Fixed some errors in the FixDegenerate plugin. It was not handling geoMesh and geoPrimSet nodes correctly. The result was invalid geometry creation. Many Plugins within Geo can be invoked from another plugin to do specific functionality and these issues came to light in the rewrite of the GenPrimSets plugin.
There has been a major rewrite of the GeneratePrimSets and DecomposePrimSets plugins. In Geo the geoPrimSet is a specialized rendering node derived from geoPolygon. It contains an arbitrary number of separate mesh primitives (triangles, tri-strips, quad-strips etc) and utilizes a local shared vertex palette that can significantly reduce the memory required to represent the primitive collection. A Geo PrimSet is functionally equivalent to an OpenFlight Mesh node and contains a number of Mesh primitives. It was originally created to enable seamless import of these constructs. The Geo Mesh node (which can be either a triangle, triangle-strip, quadrilateral-strip or triangle-fan) is analogous to the mesh primitive record in OpenFlight but exists within Geo as a standard polygon-derived node type. Edit access to the constituent primitives and local vertex pool is currently not permitted within Geo - making them, to some degree, read-only.
The DecomposePrimSets plugin can be used to convert geoPrimSet nodes into their constituent primitives (usually a collection of geoMesh nodes). Once decomposed, the meshes are fully editable within Geo. Because of this, the OpenFlight import plugin now automatically calls the DecomposePrimSets plugin as a post load Execution step (which is a user preference) that can be removed or added to in the plugin preferences dialog.
The GeneratePrimSets plugin converts the children of any selected RenderGroup into 1 or more PrimSet nodes. The plugin only works on Polygon and Mesh nodes (ignoring existing Primsets, LightPts, Text and other render-able node types). A PrimSet is created for polygons or meshes that have exactly the same properties. Polygons within the PrimSet are also triangulated and automatically turned into triangle strips.
Renamed menu option Edit/Options to Edit/Preferences
Clicking on a (typically) Group node when a tool was active would cause a crash if the tool expected a poly or vertex and didn't explicitly check against that. Now selecting via the tree view checks the active tool's pickmode and only sends the correct type of nodes to the tool.
Many of the Create Tool plugins (Cube, Polygon, mesh etc.) that do no rely on a selection list as input to the tool now switch off the current selection when they are invoked.
Geo would become unstable if you tried to "fit" the selection with nothing selected while a tool was active (near and far clip planes would be reset and effectively remove everything from the scene. This has been fixed so, fit and other view commands now work correctly as expected.
Added a new TangentBinormal plugin. This calculates vertex tangents and binormals for the current selection. The ExtendedMaterial BumpMap and NormalMap layers require the existence of these vertex attributes for correct rendering. The plugin can be found in the Modify Tool menu and toolbar. The plugin is a STUDIO Pro only plugin.
Geo used to save any textures (in the .geo format) in a model with an absolute path to the textures if they were not local to the file. It now correctly computes the relative path to resource files and saves that when saving or exporting. In addition, if you save or export a file to a new location Geo now recalculates configures all texture relative paths from the perspective of the new save file location.
Fixed a minor bug when you deleted the last texture in the texture palette - Geo used to continue to show the last loaded texture's name and filename in the palette GUI. This no longer happens.
Made some Improvements and bug fixes to the Wavefront OBJ format importer. Previously if the obj material file contained materials with texture maps but no polygons in the file were actually textured then the textures would not be loaded. This has been fixed. Some additional crash bugs have also been fixed.
The OpenFlight importer now sets face materials as found in the .flt file. In OpenFlight material referencing is done at the face/polygon level. Previously Geo modified the file structure to accommodate Geo's material referencing which was done at the RenderGroup level. Since both RenderGroup or Polygon level material references are now supported within Geo - the OpenFlight importer defaults to polygon level materials (with the RenderGroup material reference being set to -1 - see details above regarding how that offloads material references to its child nodes). A Polygon Material reference of -1 is also now valid and supported by the importer.
The OpenFlight import and export have been additionally updated as follows...
OpenFlight import/export up to VERSION 16.3 SUPPORTED
Proper calculation of resource (ie texture) file relative pathing now automatically done on export or export to new file location.
If exporting to an older OpenFlight version (prior to 16.3) and the model contains extended Materials - Geo will export the ambient, diffuse, specular, shininess, emissive and alpha values for the extended material (ignoring texture/UVset references and other attributes not supported in previous versions of the format.
There is a new Geo selection preference allowing users to choose and switch between wireframe, bounding-box and the new outline (silhouette) shader for displaying highlighted geometry. The outline shader is the initial default.
Added a new optimize plugin - Create Material Groups. This will convert any RenderGroups with a material index of -1 into 1 or more RenderGroups with material references. The original polygon children are batched and sorted into the appropriate RenderGroup.
The Designer's Workbench export plugin now handles Extended Materials. Geo will export the ambient, diffuse, specular, shininess, emissive and alpha values for the extended material (ignoring texture/UVset references and other attributes not supported in the DWB format. The DWB exporter calls the new CreateMaterialGroups plugin before saving. This ensures that materials are associated at the group level which is standard practice for the DWB format. This operation can result in significant re-structuring of the database. Upon export the plugin informs the user of these changes. The original database structure can be returned by pressing Ctrl-Z (undo). The undo undoes the database changes not the export.
Fixed a bug in the Cube Tool which wasn't allowing mouse events to interact with the tool's GUI.
The Radial and Linear Tick Marks plugins would crash if Geo didn't find the vector font file (default.vfn). This has been fixed.
The "Favorites" toolbar and menu was broken in Geo 3.0. This has now been fixed. The favorites.ini text file allows users to list their favorite plugins, internal commands and scripts. When Geo starts up it reads the file and creates a toolbar and menu with all the listed items (depending on plugin licensing restrictions). This allows users to find all their frequently used tools in one location and reduces mouse clicks when invoking functionality.
Added a Current Material button on the Geo Desktop (next to the Current Color and Texture buttons)
Improved the Cube Tool by adding 8 additional "grabbers" on the cube's corners. This improves exact positioning relative to existing geometry. "grabbers" are interactive tool points that can be grabbed and manipulated by the user in various ways during a tool's operation.
Improved the Cone Tool by adding 8 additional "grabbers" on the cone's bounding box. This improves exact positioning relative to existing geometry. Tool rendering and display improved with a bounding box dashed line that helps when identifying the additional grabbers in 3D space.
Improved the Cylinder Tool by adding 8 additional "grabbers" on the cylinder's bounding box. This improves exact positioning relative to existing geometry. Tool rendering and display improved with a bounding box dashed line that helps when identifying the additional grabbers in 3D space.
Improved the Sphere Tool by adding 8 additional "grabbers" on the sphere's bounding box. This improves exact positioning relative to existing geometry. Tool rendering and display improved with a bounding box dashed line that helps when identifying the additional grabbers in 3D space.
The Cube, Cone, Cylinder and Sphere tool now correctly orient and work as expected if the header node's "up-axis" is Z-UP.
When changing the header node's up-axis attribute in the property panel - Geo no flips the grid to act as the appropriate "ground" plane.
The Extrude Tool would still generate extruded (but "flat") polygons when the extrusion offset was 0.0 but the user had clicked the tool [Done] button. This has been fixed.
Fixed a crash bug in the LightPts By Mouse tool.
Added a larger LightPt highlight bitmap if the size of the LightPt is > 3 pixels.
Improved the Tool GUI (which is available for plugins to use for their in-app GUI needs) by adding an addTextBox function. This is a muli-line text display widget that can be used for context-sensitive help within an active tool.
Fixed bugs and significantly improved the Translate tool. Added context-sensitive help explaining the differences between "Free Move", "By Grid Normal", "By Face Normal" and "By Vertex Normal". The Translate tool now works correctly when you temporaily start a grid modification tool while in the middle of translating (This is useful because the grid is used as a reference plane during the creation and modification of geometry). The tool also has context-sensitive help textbox with additional information for the user.
Added an alternative translate tool plugin. The BoxTranslate allows interactive translation to be done using "grabbers" and a second in-tool grid plane for discrete or user-controlled translations using the tool grid. The tool grid is sized to bounding box of the selection. Added an in-tool help button and textbox with additional information for the user.
Added on-tool help to the Rotate Tool.
In Geo the desktop toolbar icons share the screenspace with the area reserved for the active tool interface or the behavior tool interface (when that is active). You can click on the seperatopr and drag the tool area left and right to give you access to the full tool/behavior UI or see all the icons of a particular toolbar. Sometimes this will crop the space available for the toolbar icons. We've added a new feature that when you click on a new toolbar tab (for example to show all the modify tools) Geo will automatically adjust the space as much as possible so that you can immediately see all the tools of that particular toolbar type on screen. This makes it easy to see all tool/operations and invoke the desired functionality.
Various fixes an improvements (including tool help) for the ScaleToSize tool.
A major rewrite/rework of the Geo State Machine Editor. Lots of bugs fixed, Editor UI improvements and stateMachine Actions work as intended in the Behavior Editor allowing State Machines to be used for controling behaviors within Geo.
Select All command (or Ctrl+a) now works as expected - selects all RenderGroups (that are in the file) visually and makes the Header node the selected node for the attribute pop-out panel.
Selecting the Header node or a non-RenderGroup group node in the tree view now correctly add all RenderGroups under the selected tree node to the selection list. This also means that selecting a parent Group node in the tree view is a convenient way of setting up a selection of multiple RenderGroups for various tools within Geo.
The Polygon tool should auto-corect the orientation of a newly created polygon (if vertices were not entered anti-clockwise) and auto flip it. It does this now.
Rectangle, circle, mesh & fan tools now also auto-rectifies bad creation orientation.
Added black screen space backgrounds to the LightPt vector tools to make it easy to see the displayed 3D grabber names which are displayed on the screen but track the grabber positions in 3D space.
Previously Polygon hover highlighting was turned off when a tool was active. This is still the case but now tools can make use of this feature to highlight any of their in-tool geometry if it helps. The first tool to use this capability is the BoxTranslate tool which highlights the box sides (which are drawn in wireframe) as the mouse is moved over a side. It gives a nice visual feedback that the wireframe box is something special. The SDK was updated to faciliate this. No changes are needed to existing plugins. Only new plugins that require this functionality have to re-implement a base class function.
The Fit selection command (f-Key) is a useful way to center, zoom and reset the trackball manipulattor. It does't work duiring tools that modify the position, orientation or scale of existing geometry (such as translate, scale, rotate etc.) as only after the tool is complete will the geometry be updated in the scenegraph. The same is true for tools which create geometry (such as cube, cone, circle etc.). Tools can now (if they implement a new geoTool class function) provide information to the Fit Selection comand to make it so that fitting during an active tool will fit on the in-process location/orientation of tool's selection list. Olny the Transate, BoxTranslate, Rotate and Cube tools support this feature in this verison. This will added-to in the next release.
Creator, and OpenFlight were developed by, and are registered trademarks of Presagis inc.
Comments