Changelog
Author: Gabriele Gilio Creation Date: 26/05/2025
Last Reviewer: Gabriele Gilio Last Updated: 31/10/2025
All notable changes to this project will be documented in this file.
[2.6.2] - 2025-10-31
Fixed
- In
Model.jsdynamically adjusted the global opacity to1.0or0.95of transmissive materials based on the presence of a transmission texture.
[2.6.1] - 2025-10-23
Changed
- Refactored bandwidth calculations in
LocalRenderStepper,ARShades3dViewer, andARShades3dsViewerto use three decimal places for greater accuracy. - Introduced new functions in
ARShades3dsViewerfor calculating and updating bandwidth for card images.
Fixed
- Capped opacity for transmissive materials at
0.95inModel.jsto improve rendering consistency.
[2.1.0] - 2025-09-26
Added
-
Enhanced success handling in local render flow:
LocalRenderSteppernow accepts anonSuccesscallback triggered after successful rendering.
-
Responsive layout support and square format guidance:
-
ConfigurationStepincludes mobile layout detection and adapts rendering options panel accordingly. -
Added warning alerts for templates requiring square formats when widescreen settings are selected.
-
Image download support and naming improvements:
-
saveRenderToFirebaseextracts clean names from filenames to improve saved metadata.
-
-
Local rendering pipeline:
- Introduced
LocalRenderStepper, a new multi-step modal withConfigurationStep,ProcessingStep, andOutputStepto manage local rendering. - Enabled full rendering session management with user email, product and variant info, time logs, dynamic bandwidth tracking, and Firebase integration.
- Added support for saving renders and custom templates to Firebase during local rendering.
- Improved error handling and real-time feedback during the rendering process.
- Introduced
-
Thumbnail generation system:
- Added
ThumbnailGeneratorandThumbnailGenerationModalcomponents for headless thumbnail creation and progress tracking. - Enabled conditional generation based on variant status (Client Rev.) and improved layout consistency with dynamic image heights.
- Integrated new thumbnail workflow into
VariantDetailswith batch-saving support and improved UX.
- Added
-
Template configuration & validation:
- Refactored
ConfigurationStepto support:- Custom template names and flags
- Background, reflection, and shadow settings
- Dynamic image dimensions based on format/quality
- Centralized
DEFAULT_RENDER_OPTIONSand validation logic
- Custom templates are loaded per user and linked with their email address.
- Refactored
-
Scene and camera improvements:
ThreeJSViewerandScenenow apply zoom and pan settings in rendering view, based on template parameters.
-
New utilities and rendering control:
- Added
getBaseUrlto dynamically change the URL of the 3D viewer based on the environment inARShadesDemo. - Fetched the variant with the higher priority in
ARShadesDemo. - Enhanced snapshot logic in
ThreeJSViewerwith dynamic rendering dimensions and restored scene states.
- Added
Changed
-
Updated
OutputStepwith customimageRenderlogic and grid background style in render previews. -
Added default value handling for
isRendererprop inThreeJSViewerto improve rendering reliability. -
Adaptive SSAA scaling in
ThreeJSViewer: automatically reduces supersampling from 2.0 to 1.5 when rendering high-resolution images (>12M px). -
Updated
saveRenderToFirebaseandsaveCustomTemplateToFirebasefunctions to support frame validation and dynamic template flags. -
General UI improvements in
ConfigurationStep:- Overlay feedback when positioning is complete.
- Disabled controls when manual positioning is finalized.
Fixed
- Fixed background color rendering and improved visibility in
ConfigurationStepon mobile devices. - Prevented undefined
isRendererprop issues inThreeJSViewer. - Resolved rendering issues due to hardcoded image dimensions.
- Fixed inconsistent variable usage in
ThreeJSViewer's render logic. - Prevented template errors during load/save workflows in
ConfigurationStep. - Improved error overlays and fallback logic in
ARShadesDemowhen product or variant loading fails.
[2.0.0] - 2025-09-04
Added
-
Animation handling in
ThreeJSViewer,Model, andARShadesDemo:- Introduced support for animations with
CO_andIL_prefixes. - Added default fallback animation title
"ANIMATE". - Enabled animation feedback state in
Modeland propagated interaction state fromThreeJSViewer.
- Introduced support for animations with
-
Visibility filters in single and multiple 3DViewers:
- Added variant visibility state and rendering logic in
ARShades3dViewerandARShades3dsViewer. - Introduced filtering of invisible products and updated fallback logic when initial variants are not visible.
- Added variant visibility state and rendering logic in
-
Skinned mesh rendering improvements:
- Disabled frustum culling for animated meshes in
Modelto avoid flickering artifacts.
- Disabled frustum culling for animated meshes in
-
FOV configuration enhancements:
- Improved mobile and desktop Field of View handling in
ThreeJSViewer,Scene, andARShadesDemo. - Added parsing of mobile-specific FOV from query parameters.
- Dynamic iframe height calculated based on window width for responsive layouts.
- Improved mobile and desktop Field of View handling in
-
Enhanced screenshot rendering:
ThreeJSViewernow returns{ filename, dataURL }for custom snapshot handling.RendererusesskuModeland improved naming consistency for rendered images.
Changed
-
Three.js imports & internal refactors:
- Refactors across
RendererandARShadesDemo.
- Refactors across
-
Cleaned up and simplified animation management in:
ARShades3dViewer: removed unused animation logic and legacy variables.ARShades3dsViewer: removed redundant state management and cleaned rendering flow.
-
Environment variable updates:
- Unified
REACT_APP_GENERATION_THUMBNAILSacross.env,.env.production, and.env.developmentfor consistent behavior.
- Unified
-
Updated variant data source in
Renderer:- Now retrieves variants from the
Variantscollection in Firestore, aligning with new data model.
- Now retrieves variants from the
-
Improved user interaction tracking:
ThreeJSViewerinitializes interaction state via props.- Interaction state is passed down to
Modelto control animation feedback (e.g. for hover or click).
-
Cleaned up debug logs in
Rendererand related components.
Fixed
- FOV parameter correctly parsed and applied across mobile and desktop.
- Prevented invalid iframe URL generation in
ARShadesDemowhen no variants are available. - Ensured fallback variant switching when initial one is not visible.
- Fixed
depthWritematerial issue for colored lenses. - Fixed animation duplication and feedback glitches in
Model.
[1.5.1] - 2025-07-22
Added
-
Post-processing pipeline in
ThreeJSViewerusingEffectComposer, adding Unreal Bloom, Gamma Correction, and SMAA effects for enhanced visual quality. -
Utility function to build viewer URLs with query parameters such as fov, reflection, useNoShadows, and filename.
-
Interactive cursor styles in
ThreeJSViewerto improve user feedback during model interaction. -
Global flag
window.isSceneReadyto indicate when the scene is fully initialized, enabling server-side rendering automation. -
Support for dynamic scene configuration via
templateConfiginRenderer, with the ability to trigger image rendering usingwindow.triggerServerRender. -
Close button for mobile modal in
ARShadesDemowith custom styling and improved accessibility. -
Dynamic support for fieldOfView as a URL parameter in
ARShadesDemo, enabling viewer customization on the fly. -
ARShadesDemopage, to dynamically manage the single and multiple 3DViewers.
Changed
-
Refactored all
Three.jsimports inThreeJSViewer,ARScene,Scene,Model,MaterialController,MaterialPresets, andRendererto use named imports, improving clarity and tree-shaking performance. -
Updated
useModelLoaderlogic inThreeJSViewerto handle conditional caching based on the environment. -
Comprehensive refactor of material management in
ModelandMaterialPresets:- Introduced helpers like
getClonedModel,getClonedMaterial,getMaterialWithPreset, andgetRestoredMaterial. - Added internal maps:
originalMaterialsMap,adjustedMaterialsMap,clonedMaterialsMap, andmaterialsWithPresetto streamline material cloning and restoration.
- Introduced helpers like
-
Updated
lastUpdatefield formatting to use ISO strings inMaterialPresetsandRendererfor consistency. -
Default
fieldOfViewchanged from 15° to 23° inThreeJSViewerfor a wider model view. -
Scene preset updated from 'city' to 'apartment' in
Scene.jsfor more realistic reflections, if the viewer has not a default one. -
Tweaked reflective material parameters: adjusted
blur,mixBlur,mixStrength,mirror,color, andopacityfor a better visual outcome. -
Reduced
orbitControls.maxDistanceto 0.65 for more focused user interactions with the model. -
Enhanced menus and mobile/desktop toggle behavior in
ARShadesDemo, improving layout and responsiveness. -
Changes to the fetching of the
Catologues,Products, andVariantsfrom Firebase Firestore.
Fixed
-
Properly reset model state and clear GLTF cache when exiting AR sessions (
Model,ARScene). -
Fixed issues when restoring materials after GLB export by using cloned model logic to prevent side effects.
-
Resolved
transparencyanddepthWriteissues for transmissive materials (Model,MaterialController). -
Correctly handled
sheenColorscaling during GLB export to reflect the actual preset value. -
Eliminated duplicated materials and ensured correct naming consistency in exported
.glbmodels. -
Improved iframe URL validation and construction in
ARShadesDemo.
[1.5.0] - 2025-05-26
Added
-
New
ThreeJSViewer,Scene, andModelcomponents to replace the legacy viewer based on Google'sModelViewer. -
Use of
Threejsto improve real-time rendering of 3D viewer. -
MaterialControllercomponents to enhance dynamic material configuration. -
Improvements in handling realistic materials (reflective, transmissive, lenses).
-
Edit the 3D scene with a reflective plane under the glasses.
-
Redux system to manage material names and presets application (now globalized via
MaterialConfigsState). -
High-resolution screenshot feature in the
ThreeJSViewercomponent. -
Geometric parameters (size, center) to improve rendering adaptation.
-
Advanced AR support: scale, rotation, initial positioning, visual feedback, and shadow plane.
-
AR session exit overlay and improved session control.
-
GLB/USDZ fallback support for cross-platform AR compatibility.
-
GLB export with applied material presets, using a scene reference passed to
MaterialPresets.js. -
Ability to create a material preset from a material current configuration and store or update it in Firebase.
-
MaterialPresetspage to apply or remove presets dynamically to model materials.
Changed
-
Refactored material management logic and improved the Model component.
-
Updated scene rendering for better reflections and lighting (e.g.,
Scene.js,calculateOptimalFOV). -
Optimized material map handling and preset logic when presets are added or removed.
Fixed
-
Error handling fixes when loading models (
ErrorScreen,Model,ThreeJSViewer). -
Resolved transparency and blending issues in transmissive materials.