1"use strict";(globalThis.webpackChunkvrgs_docs_v_3_1=globalThis.webpackChunkvrgs_docs_v_3_1||[]).push([[14471],{3421(e,n,i){i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"release-notes/r3-2-notes","title":"Release Notes 3.02","description":"VRGS 3.2 Build 49-54 : 2025-12-19 \u2192 2025-12-27","source":"@site/versioned_docs/version-3.3/release-notes/r3-2-notes.md","sourceDirName":"release-notes","slug":"/release-notes/r3-2-notes","permalink":"/docs/3.3/release-notes/r3-2-notes","draft":false,"unlisted":false,"editUrl":"https://github.com/vrgeoscience/vrgs_docs_v3/tree/master/versioned_docs/version-3.3/release-notes/r3-2-notes.md","tags":[],"version":"3.3","sidebarPosition":2,"frontMatter":{"title":"Release Notes 3.02","metaTitle":"ReleaseNotes31","metaDescription":"Release notes for VRGS version 3","sidebar_position":2},"sidebar":"docs","previous":{"title":"Release Notes 3.3","permalink":"/docs/3.3/release-notes/r3-3-notes"},"next":{"title":"Release Notes 3.01","permalink":"/docs/3.3/release-notes/r3-1-notes"}}');var r=i(74848),l=i(28453);const t={title:"Release Notes 3.02",metaTitle:"ReleaseNotes31",metaDescription:"Release notes for VRGS version 3",sidebar_position:2},d="Release Notes for VRGS Version 3.2",o={},a=[{value:"VRGS 3.2 Build 49-54 : 2025-12-19 \u2192 2025-12-27",id:"vrgs-32-build-49-54--2025-12-19--2025-12-27",level:2},{value:"\u2728 New Features",id:"-new-features",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements",level:3},{value:"\ud83d\udc1b Fixes & Stability",id:"-fixes--stability",level:3},{value:"VRGS 3.2 Build 48 : 2025-12-17",id:"vrgs-32-build-48--2025-12-17",level:2},{value:"\u2728 New Features",id:"-new-features-1",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements-1",level:3},{value:"\ud83d\udc1b Fixes & Stability",id:"-fixes--stability-1",level:3},{value:"\ud83e\uddf9 Refactoring & Maintenance",id:"-refactoring--maintenance",level:3},{value:"VRGS 3.2 Build 37\u201347 : 2025-11-25 \u2192 2025-12-14",id:"vrgs-32-build-3747--2025-11-25--2025-12-14",level:2},{value:"\u2728 New Features",id:"-new-features-2",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements-2",level:3},{value:"\ud83d\udc1b Fixes & Stability",id:"-fixes--stability-2",level:3},{value:"\ud83e\uddf9 Refactoring & Code Quality",id:"-refactoring--code-quality",level:3},{value:"VRGS 3.2 Build 33-36 : 2025-10-06",id:"vrgs-32-build-33-36--2025-10-06",level:2},{value:"\u2728 New Features",id:"-new-features-3",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements-3",level:3},{value:"\ud83d\udc1b Fixes",id:"-fixes",level:3},{value:"\ud83e\uddea Other Updates",id:"-other-updates",level:3},{value:"VRGS 3.2 Build 28-32 : 2025-08-19",id:"vrgs-32-build-28-32--2025-08-19",level:2},{value:"\u2728 New Features",id:"-new-features-4",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements-4",level:3},{value:"\ud83e\uddf9 Refactoring",id:"-refactoring",level:3},{value:"\ud83d\udc1b Fixes",id:"-fixes-1",level:3},{value:"\ud83e\uddea Testing & Quality",id:"-testing--quality",level:3},{value:"VRGS 3.2 Build 27 : 2025-06-30",id:"vrgs-32-build-27--2025-06-30",level:2},{value:"\u2728 New Features",id:"-new-features-5",level:3},{value:"\ud83e\uddea Testing & Quality",id:"-testing--quality-1",level:3},{value:"\ud83d\udee0 Improvements",id:"-improvements-5",level:3},{value:"\ud83d\udc1b Fixes",id:"-fixes-2",level:3},{value:"\ud83e\uddf9 Refactoring",id:"-refactoring-1",level:3},{value:"VRGS 3.2 Build 2 : 2025-06-26",id:"vrgs-32-build-2--2025-06-26",level:2},{value:"\ud83d\udee0 Improvements",id:"-improvements-6",level:2},{value:"\ud83e\uddf9 Refactoring",id:"-refactoring-2",level:2},{value:"\ud83e\uddef Fixes",id:"-fixes-3",level:2},{value:"VRGS 3.2 Build 26 : 2025-06-16",id:"vrgs-32-build-26--2025-06-16",level:2},{value:"\ud83d\ude80 New Features",id:"-new-features-6",level:2},{value:"\ud83d\udee0 Fixes",id:"-fixes-4",level:2},{value:"\u2728 Improvements",id:"-improvements-7",level:2},{value:"\ud83d\udd10 Stability & Thread Safety",id:"-stability--thread-safety",level:2},{value:"\ud83e\uddea Build Versions",id:"-build-versions",level:2},{value:"VRGS 3.2 Build 2 : 2025-01-24",id:"vrgs-32-build-2--2025-01-24",level:2},{value:"VRGS 3.2 Build 1 : 2025-01-22",id:"vrgs-32-build-1--2025-01-22",level:2}];function c(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,l.R)(),...e.components},{Head:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Head",!0),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(s,{children:[(0,r.jsx)("meta",{property:"og:url",content:"https://docs.vrgeoscience.com/docs/release-notes/r3-2-notes"}),(0,r.jsx)("meta",{property:"twitter:url",content:"https://docs.vrgeoscience.com/docs/release-notes/r3-2-notes"}),(0,r.jsx)("meta",{property:"og:author",content:"VRGeoscience Limited"}),(0,r.jsx)("meta",{property:"og:description",content:"Release notes for VRGS. Make sure your up to date."}),(0,r.jsx)("meta",{name:"twitter:description",content:"Release notes for VRGS. Make sure your up to date."}),(0,r.jsx)("meta",{name:"twitter:title",content:"Release notes for VRGS 3.02"})]}),"\n",(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"release-notes-for-vrgs-version-32",children:"Release Notes for VRGS Version 3.2"})}),"\n",(0,r.jsx)(n.h1,{id:"-vrgs-32-release-notes",children:"\ud83d\udce6 VRGS 3.2 Release Notes"}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-49-54--2025-12-19--2025-12-27",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 49-54 : 2025-12-19 \u2192 2025-12-27"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features",children:"\u2728 New Features"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Stereonet Plotting & Analysis (updated)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added stereonet tools for plotting and analysing orientation data, including:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Equal-angle / equal-area projections"}),"\n",(0,r.jsx)(n.li,{children:"Kamb contouring"}),"\n",(0,r.jsx)(n.li,{children:"Rose diagrams and circular statistics"}),"\n",(0,r.jsx)(n.li,{children:"Great circles and grid lines"}),"\n",(0,r.jsx)(n.li,{children:"Stress tools (slip / dilation tendency)"}),"\n",(0,r.jsx)(n.li,{children:"Fabric tensor calculations"}),"\n"]}),"\n"]}
1),"\n",(0,r.jsx)(n.li,{children:"Provides a workflow foundation for visualising and analysing fracture orientations."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"DFN Tools & Analysis (Expanded)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"DFN Slicer / Cross-Section:"})," interactively slice the DFN along X/Y/Z with intersection lines rendered when active."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fracture Propagation (\u201cGrow\u201d):"})," extend DFN tips using a stress-field driven growth command."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Connectivity Metrics:"})," new analysis outputs and menu options to visualise network connectivity, including:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"intersection density"}),"\n",(0,r.jsx)(n.li,{children:"total intersection length"}),"\n",(0,r.jsx)(n.li,{children:"mean intersection angle"}),"\n",(0,r.jsx)(n.li,{children:"connected component size / grouping"}),"\n",(0,r.jsx)(n.li,{children:"intersection count"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Performance & Responsiveness (DFN + Intersections)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Significant speed-ups for fracture/mesh intersection detection and DFN
1intersection calculations, improving usability on larger datasets."}),"\n",(0,r.jsx)(n.li,{children:"Improved robustness of intersection line generation and merging, reducing fragmentation and artefacts."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Visual Quality (Intersections)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Improved rendering of fracture intersection lines (higher quality, more consistent appearance)."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes--stability",children:"\ud83d\udc1b Fixes & Stability"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"External Drive Projects"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Improved reliability when opening/loading projects from external/USB drives, addressing intermittent SQLite misuse errors."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"General Stability"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Improved stability during shutdown and embedded web-based panels (reducing crash risk in edge cases)."}),"\n",(0,r.jsx)(n.li,{children:"Clearer diagnostics when file access fails (more actionable error messages)."}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-48--2025-12-17",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 48 : 2025-12-17"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features-1",children:"\u2728 New Features"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Discrete Fracture Network (DFN)"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Introduced licensed DFN functionality, enabling advanced fracture network workflows."}),"\n",(0,r.jsx)(n.li,{children:"Added elliptical fracture support with aspect-ratio control."}),"\n",(0,r.jsx)(n.li,{children:"Implemented fracture intersection visualization and a dedicated \u201cFracture Intersections\u201d context menu command."}),"\n",(0,r.jsx)(n.li,{children:"Enabled GPU-accelerated DFN attribute and proximity filtering for interactive exploration."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Segmentation & Image Analysis"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Added full-image SAM segmentation using tile-based inference with automatic merging."}),"\n",(0,r.jsx)(n.li,{children:"Introduced segmentation overlay display with label coloring and blending priority controls."}),"\n",(0,r.jsx)(n.li,{children:"Added persistent segmentation masks with automatic export to 16-bit TIFF and label management."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Geoscience & Data Import"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Added SEGY (rev2) seismic data loader with full header and trace parsing."}),"\n",(0,r.jsx)(n.li,{children:"Introduced GeoTIFF import/export with georeferencing support for orthoimages."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements-1",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"DFN Performance & Usability"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Parallelized proximity distance computation using BSP trees for improved scalability."}),"\n",(0,r.jsx)(n.li,{children:"Normalized proximity distances and exposed them directly in GPU VBOs for accurate filtering."}),"\n",(0,r.jsx)(n.li,{children:"Improved DFN UI integration, property binding, and stereonet support."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Rendering & Visualization"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Improved shadow map stability and precision using world-space RTE, double precision math, and texel snapping."}),"\n",(0,r.jsx)(n.li,{children:"Added debug visualizations for shadow maps and performance metrics."}),"\n",(0,r.jsx)(n.li,{children:"Enhanced procedural sky, clouds, snow, fire, and firework particle systems for improved realism."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"SAM & Segmentation UX"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Added async encoder creation, undo/redo support, adjustable mask thresholds, and clearer UI feedback."}),"\n",(0,r.jsx)(n.li,{children:"Improved click handling to ensure all relevant tiles are encoded before inference."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Code Quality & Architecture"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Introduced modern, type-safe templated systems:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"THistogram"})," for safe statistical analysis."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"TColorMapper"})," for high-performance, type-correct color mapping."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Added extensive unit test coverage (200+ tests) for new histogram and color-mapping systems."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes--stability-1",children:"\ud83d\udc1b Fixes & Stability"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Improved robustness of TIN data reading with stream validation, size checks, and allocation guards."}),"\n",(0,r.jsx)(n.li,{children:"Hardened OBJ, mesh, texture, and TIFF loading against corrupted or malformed files."}),"\n",(0,r.jsx)(n.li,{children:"Fixed race conditions in logging, shutdown, and multi-threaded progress reporting."}),"\n",(0,r.jsx)(n.li,{children:"Corrected slip-potential calculations for ENU coordinate consistency with comprehensive test coverage."}),"\n",(0,r.jsx)(n.li,{children:"Added safety checks across UI components (WebView, listboxes, early initialization paths)."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-refactoring--maintenance",children:"\ud83e\uddf9 Refactoring & Maintenance"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refactored large subsystems for clarity and maintainability:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"DFN attribute system and property grid integration."}),"\n",(0,r.jsx)(n.li,{children:"Shadow rendering pipeline and shader parameter handling."}),"\n",(0,r.jsx)(n.li,{children:"Modernized OpenGL usage and rendering state management."}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Removed hardcoded credentials and completed secure build-time injection for LicenseSpring and Sentry."}),"\n",(0,r.jsxs)(n.li,{children:["Cleaned up project structure, documentation organization, and ",(0,r.jsx)(n.code,{children:".gitignore"})," rules."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-3747--2025-11-25--2025-12-14",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 37\u201347 : 2025-11-25 \u2192 2025-12-14"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features-2",children:"\u2728 New Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Procedural sky system replacing texture-based skyboxes, with dynamic sun, turbidity, clouds, and animation."}),"\n",(0,r.jsx)(n.li,{children:"Post-processing framework with bloom, grid overlay, edge detection, depth fog, fade, and VR comfort vignette."}),"\n",(0,r.jsx)(n.li,{children:"Snow, fire fountain, and fireworks particle effects with GPU-based simulation and visual presets."}),"\n",(0,r.jsx)(n.li,{children:"Pix4D navigation profile and enhanced navigation behaviors."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements-2",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Major shadow rendering upgrades: slope-scaled biasing, tighter frustum fitting, debug overlays, and higher stability."}),"\n",(0,r.jsx)(n.li,{children:"Enhanced metadata handling, solar angle calculations, and EXIF parsing."}),"\n",(0,r.jsx)(n.li,{children:"Improved UI consistency across property grids, menus, dialogs, and project trees."}),"\n",(0,r.jsx)(n.li,{children:"Better performance and precision through double-precision math in large scenes."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes--stability-2",children:"\ud83d\udc1b Fixes & Stability"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Fixed texture serialization, multi-texture handling, and MipMap issues."}),"\n",(0,r.jsx)(n.li,{children:"Corrected coordinate conversion, camera movement, snapping, and Gaussian splat sorting artifacts."}),"\n",(0,r.jsx)(n.li,{children:"Improved OAuth, Basic Auth, and StraboSpot integration reliability."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-refactoring--code-quality",children:"\ud83e\uddf9 Refactoring & Code Quality"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Broad modernization of rendering, navigation, and attribute systems."}),"\n",(0,r.jsx)(n.li,{children:"Improved logging consistency and exception safety throughout the codebase."}),"\n",(0,r.jsx)(n.li,{children:"Expanded documentation, tooltips, and internal developer references."}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-33-36--2025-10-06",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 33-36 : 2025-10-06"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features-3",children:"\u2728 New Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fracture Scanlines"})," \u2013 new tools for creating, editing, and analyzing fracture scan lines with statistics and spreadsheet integration."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"I3S and SLPK Improvements"})," \u2013 support for I3S 1.7+ and point cloud compression (LEPCC), enabling larger and more complex scene layers."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"IVE Import Plugin"})," \u2013 import IVE models directly into VRGS."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Plugin System"})," \u2013 load and manage external plugins dynamically, including context menu integration."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Enhanced Chat with AI"})," \u2013 redesigned LLM Chat Bar using WebView2 for better formatting, streaming replies, and local LLM (Ollama) support."]}
1),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"GeoTour Login with OAuth2"})," \u2013 new secure login flow with avatar support."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"WebView2 Log Viewer"})," \u2013 new Markdown-enabled log console with color-coded message levels."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements-3",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Rendering & Performance"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Faster LOD transitions, smoother GPU uploads, and improved OpenGL threading."}),"\n",(0,r.jsx)(n.li,{children:"Better handling of large tiled and textured models."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Stability"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Thread-safety improvements across rendering and resource loading."}),"\n",(0,r.jsx)(n.li,{children:"Deferred OpenGL cleanup prevents crashes on heavy projects."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"LLM & MCP Tools"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"More reliable query execution with read-only safety."}),"\n",(0,r.jsx)(n.li,{children:"Better error feedback for API, quota, and connection issues."}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"User Interface"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Updated icons and Fluent-style tree views."}),"\n",(0,r.jsx)(n.li,{children:"Improved project tree with visibility toggles and context menus."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes",children:"\ud83d\udc1b Fixes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Fixed issues with ",(0,r.jsx)(n.strong,{children:"texture mapping"}),", ",(0,r.jsx)(n.strong,{children:"I3S node parsing"}),", and ",(0,r.jsx)(n.strong,{children:"tile visibility"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Resolved ",(0,r.jsx)(n.strong,{children:"OpenAI rate-limit handling"})," and improved retry behavior."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed rare ",(0,r.jsx)(n.strong,{children:"thread synchronization"})," errors when loading large models."]}),"\n",(0,r.jsxs)(n.li,{children:["Corrected ",(0,r.jsx)(n.strong,{children:"versioning inconsistencies"})," and removed unused resource identifiers."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-other-updates",children:"\ud83e\uddea Other Updates"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Updated dependencies and compiler settings (C++20)."}),"\n",(0,r.jsx)(n.li,{children:"Numerous quality-of-life refinements, logging improvements, and installer updates."}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-28-32--2025-08-19",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 28-32 : 2025-08-19"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features-4",children:"\u2728 New Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"faiss.dll"})," integration for improved search and indexing capabilities."]}),"\n",(0,r.jsxs)(n.li,{children:["Introduced ",(0,r.jsx)(n.strong,{children:"MCP server"})," for external communication and task execution with LLM planning."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"LLMFunctionCaller"})," to enable tool execution and context management."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"\u201cShow SQL\u201d option"})," in the LLM Chat Bar."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"copy context menu"})," and enhanced chat UI with Athos icon."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"FolderMonitor"})," for directory change notifications."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"ROI polyline import"})," and improved ",(0,r.jsx)(n.strong,{children:"SVG rendering and ribbon functionality"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"motion blur"})," functionality, including toggleable blur and subframe accumulation."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements-4",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Enhanced ",(0,r.jsx)(n.strong,{children:"LLMClient"})," and ",(0,r.jsx)(n.strong,{children:"LLMChatBar"})," with richer functionality and SQL command extraction."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"point cloud rendering"}),", ",(0,r.jsx)(n.strong,{children:"LOD logic"}),", and overall stability."]}),"\n",(0,r.jsxs)(n.li,{children:["Refined ",(0,r.jsx)(n.strong,{children:"shader updates"}),", ",(0,r.jsx)(n.strong,{children:"database command handling"}),", and ",(0,r.jsx)(n.strong,{children:"chat interactions"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Enhanced ",(0,r.jsx)(n.strong,{children:"texture management"}),", UI refresh, and rendering options."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"flight path creation"}),", ",(0,r.jsx)(n.strong,{children:"motion blur handling"}),", and ",(0,r.jsx)(n.strong,{children:"object interaction"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Enhanced ",(0,r.jsx)(n.strong,{children:"Kriging and DipAzimuth calculations"}),", orthographic view handling, and JSON import."]}),"\n",(0,r.jsxs)(n.li,{children:["Optimized ",(0,r.jsx)(n.strong,{children:"stereonet and 3D model performance"}),", including clip plane and object rendering improvements."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"UTM zone detection"})," and GeoJSON coordinate transformation."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-refactoring",children:"\ud83e\uddf9 Refactoring"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refactored ",(0,r.jsx)(n.strong,{children:"LLMChatBar"}),", ",(0,r.jsx)(n.strong,{children:"LLMClient"}),", and related components for clarity and maintainability."]}),"\n",(0,r.jsxs)(n.li,{children:["Restructured ",(0,r.jsx)(n.strong,{children:"RAGEngine"})," population and agent logic with embeddings."]}),"\n",(0,r.jsxs)(n.li,{children:["Refactored ",(0,r.jsx)(n.strong,{children:"texture handling"}),", ",(0,r.jsx)(n.strong,{children:"camera calibration"}),", and ",(0,r.jsx)(n.strong,{children:"projection logic"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Renamed and unified ",(0,r.jsx)(n.strong,{children:"VR dis
1play settings"})," and ",(0,r.jsx)(n.strong,{children:"variable handling"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Simplified ",(0,r.jsx)(n.strong,{children:"SetProjectFolder"})," usage and texture management code paths."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes-1",children:"\ud83d\udc1b Fixes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"null pointer checks"})," in tree view handling."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed potential ",(0,r.jsx)(n.strong,{children:"concurrent modification"})," issues in stereonet rendering."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"EULA handling"})," and version consistency with ",(0,r.jsx)(n.code,{children:"VRGS_PATCHLEVEL"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Removed unused ",(0,r.jsx)(n.strong,{children:"DLLs"})," and debug logging functionality."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-testing--quality",children:"\ud83e\uddea Testing & Quality"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"MSTest coverage"})," for debug log functionality."]}),"\n",(0,r.jsxs)(n.li,{children:["Expanded ",(0,r.jsx)(n.strong,{children:"stability checks"})," for LOD rendering and chat interaction components."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-27--2025-06-30",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 27 : 2025-06-30"]}),"\n",(0,r.jsx)(n.h3,{id:"-new-features-5",children:"\u2728 New Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Implemented ",(0,r.jsx)(n.strong,{children:"Kriging interpolation"}),", including support for mesh generation."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"contour drawing"})," functionality and ability to generate ",(0,r.jsx)(n.strong,{children:"ortho panels from viewpoints"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-testing--quality-1",children:"\ud83e\uddea Testing & Quality"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added and expanded ",(0,r.jsx)(n.strong,{children:"unit tests"})," for ",(0,r.jsx)(n.code,{children:"DipAzimuth"}),", improving functionality and coverage."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-improvements-5",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"polyline mesh generation"})," for more accurate surface modelling."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-fixes-2",children:"\ud83d\udc1b Fixes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Resolved ",(0,r.jsxs)(n.strong,{children:["recursive ",(0,r.jsx)(n.code,{children:"OnPaint"})," calls"]})," in ",(0,r.jsx)(n.code,{children:"CHistogramViewPane"}),", improving UI stability."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"-refactoring-1",children:"\ud83e\uddf9 Refactoring"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refactored ",(0,r.jsx)(n.code,{children:"DipAzimuth"})," test suite and related classes for clarity and maintainability."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-2--2025-06-26",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 2 : 2025-06-26"]}),"\n",(0,r.jsx)(n.h2,{id:"-improvements-6",children:"\ud83d\udee0 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"tree control"})," and ",(0,r.jsx)(n.strong,{children:"mesh generation"})," logic."]}),"\n",(0,r.jsxs)(n.li,{children:["Enhanced ",(0,r.jsx)(n.strong,{children:"SAM model loading"})," and associated ",(0,r.jsx)(n.strong,{children:"mesh generation"})," processes."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"texture loading"})," and ",(0,r.jsx)(n.strong,{children:"data handling"})," for better stability and performance."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-refactoring-2",children:"\ud83e\uddf9 Refactoring"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Refactored and updated several internal
1classes to improve maintainability."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-fixes-3",children:"\ud83e\uddef Fixes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Fixed issues with ",(0,r.jsx)(n.code,{children:"ProjectInterpTree"})," by correctly calling ",(0,r.jsx)(n.code,{children:"DeleteItem"})," after cutting or deleting polylines and groups."]}),"\n",(0,r.jsxs)(n.li,{children:["Ensured all ",(0,r.jsx)(n.strong,{children:"application and tile manager threads"})," are properly joined on exit to prevent dangling processes."]}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-26--2025-06-16",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 26 : 2025-06-16"]}),"\n",(0,r.jsx)(n.h2,{id:"-new-features-6",children:"\ud83d\ude80 New Features"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"Texture List"})," support to right-click menu."]}),"\n",(0,r.jsxs)(n.li,{children:["Enabled ",(0,r.jsx)(n.strong,{children:"visibility control for tie points"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"DEM extraction"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"connected component attribute"})," for meshes."]}
1),"\n",(0,r.jsxs)(n.li,{children:["Added support for ",(0,r.jsx)(n.strong,{children:"DeepLabV3+"})," and ",(0,r.jsx)(n.strong,{children:"Segment Anything"})," model loading."]}),"\n",(0,r.jsxs)(n.li,{children:["Accepted ",(0,r.jsx)(n.strong,{children:"multiple point selection"})," for segmentation."]}),"\n",(0,r.jsxs)(n.li,{children:["Included ",(0,r.jsx)(n.strong,{children:"SketchFab Uploader"})," and ",(0,r.jsx)(n.strong,{children:"OPF export"})," tools."]}),"\n",(0,r.jsxs)(n.li,{children:["Added ",(0,r.jsx)(n.strong,{children:"OS and COMPUTERNAME"})," to environment variable list."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-fixes-4",children:"\ud83d\udee0 Fixes"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"application crash on close"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"incorrect triangle count"})," in ",(0,r.jsx)(n.code,{children:"glDrawElements"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"locale issues"})," in date formatting."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"tiepoints missing default values"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed issues with ",(0,r.jsx)(n.strong,{children:"v1 mesh path checking"})," on import."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"internal project path"})," handling."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"saving textures"})," when model was uncompressed."]}),"\n",(0,r.jsxs)(n.li,{children:["Fixed ",(0,r.jsx)(n.strong,{children:"data type"})," issues and improved ",(0,r.jsx)(n.strong,{children:"boundary checks"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"Fixed upgrade path and installer-related issues."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-improvements-7",children:"\u2728 Improvements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Refactored ",(0,r.jsx)(n.code,{children:"HistogramViewPane::Render()"})," for improved ",(0,r.jsx)(n.strong,{children:"D2D resource handling"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"TIFF image handling"}),", including ",(0,r.jsx)(n.strong,{children:"NoData value extraction"})," and ",(0,r.jsx)(n.strong,{children:"vertex counting"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"attribute layer deletion"})," and colour handling."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"model limits"})," update handling with ",(0,r.jsx)(n.strong,{children:"debouncing"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"label and trimesh"})," display options."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"camera handling"}),", ",(0,r.jsx)(n.strong,{children:"UAS position setting"}),", and ",(0,r.jsx)(n.strong,{children:"waypoint export"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"coordinate transformation"})," and UI update logic."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"image interpretation"})," and data extraction."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"GeoJSON generation"})," and fault-to-PL conversion logic."]}),"\n",(0,r.jsxs)(n.li,{children:["Improved ",(0,r.jsx)(n.strong,{children:"file format compression"})," and ",(0,r.jsx)(n.strong,{children:"mesh storage"})," layout for performance."]}),"\n",(0,r.jsxs)(n.li,{children:["Updated ",(0,r.jsx)(n.strong,{children:"Python DLLs"})," and ONNX DLL support."]}),"\n",(0,r.jsxs)(n.li,{children:["Removed unused ",(0,r.jsx)(n.strong,{children:"ONNX test code"})," and ",(0,r.jsx)(n.strong,{children:"debug tools"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Refactored ",(0,r.jsx)(n.strong,{children:"stereonet chart resizing"}),", ",(0,r.jsx)(n.strong,{children:"mouse position handling"}),", and various UI elements."]}),"\n",(0,r.jsxs)(n.li,{children:["Removed ",(0,r.jsx)(n.strong,{children:"On-Premise licensing"})," options from installer."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-stability--thread-safety",children:"\ud83d\udd10 Stability & Thread Safety"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Ensured ",(0,r.jsx)(n.strong,{children:"thread safety"})," in mesh operations via ",(0,r.jsx)(n.strong,{children:"mutex locking"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["Handled ",(0,r.jsx)(n.strong,{children:"null returns"})," from projection context more gracefully."]}),"\n",(0,r.jsx)(n.li,{children:"Refactored and cleaned up unused variables."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"-build-versions",children:"\ud83e\uddea Build Versions"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"VRGS 3.2 Builds 3\u201325 incrementally introduced and tested the above features and fixes."}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-2--2025-01-24",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 2 : 2025-01-24"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Fix to the mesh upgrade pathway causing folders to be ungrouped in some cases."}),"\n"]}),"\n",(0,r.jsxs)(n.h2,{id:"vrgs-32-build-1--2025-01-22",children:[(0,r.jsx)(n.img,{alt:"VRGS",src:i(74418).A+"",width:"16",height:"19"})," 3.2 Build 1 : 2025-01-22"]}
1),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Enhanced Polyline & Geopolygon Rendering"}),"\n",(0,r.jsx)(n.li,{children:"Performance Boost for Tiled Model Rendering"}),"\n",(0,r.jsx)(n.li,{children:"Photogrammetric Data Import: Bring original images and camera calibrations into your project to interpret at the resolution of the source imagery."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},74418(e,n,i){i.d(n,{A:()=>s});const s=i.p+"assets/images/logo-c0e6a4a126a3223e5ece63096424acd1.svg"},28453(e,n,i){i.d(n,{R:()=>t,x:()=>d});var s=i(96540);const r={},l=s.createContext(r);function t(e){const n=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.