Skip to main content
Version: 1.0.0

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.js dynamically adjusted the global opacity to 1.0 or 0.95 of transmissive materials based on the presence of a transmission texture.

[2.6.1] - 2025-10-23

Changed

  • Refactored bandwidth calculations in LocalRenderStepper, ARShades3dViewer, and ARShades3dsViewer to use three decimal places for greater accuracy.
  • Introduced new functions in ARShades3dsViewer for calculating and updating bandwidth for card images.

Fixed

  • Capped opacity for transmissive materials at 0.95 in Model.js to improve rendering consistency.

[2.1.0] - 2025-09-26

Added

  • Enhanced success handling in local render flow:

    • LocalRenderStepper now accepts an onSuccess callback triggered after successful rendering.
  • Responsive layout support and square format guidance:

    • ConfigurationStep includes 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:

    • saveRenderToFirebase extracts clean names from filenames to improve saved metadata.

  • Local rendering pipeline:

    • Introduced LocalRenderStepper, a new multi-step modal with ConfigurationStep, ProcessingStep, and OutputStep to 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.
  • Thumbnail generation system:

    • Added ThumbnailGenerator and ThumbnailGenerationModal components 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 VariantDetails with batch-saving support and improved UX.
  • Template configuration & validation:

    • Refactored ConfigurationStep to support:
      • Custom template names and flags
      • Background, reflection, and shadow settings
      • Dynamic image dimensions based on format/quality
      • Centralized DEFAULT_RENDER_OPTIONS and validation logic
    • Custom templates are loaded per user and linked with their email address.
  • Scene and camera improvements:

    • ThreeJSViewer and Scene now apply zoom and pan settings in rendering view, based on template parameters.
  • New utilities and rendering control:

    • Added getBaseUrl to dynamically change the URL of the 3D viewer based on the environment in ARShadesDemo.
    • Fetched the variant with the higher priority in ARShadesDemo.
    • Enhanced snapshot logic in ThreeJSViewer with dynamic rendering dimensions and restored scene states.

Changed

  • Updated OutputStep with custom imageRender logic and grid background style in render previews.

  • Added default value handling for isRenderer prop in ThreeJSViewer to 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 saveRenderToFirebase and saveCustomTemplateToFirebase functions 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 ConfigurationStep on mobile devices.
  • Prevented undefined isRenderer prop issues in ThreeJSViewer.
  • 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 ARShadesDemo when product or variant loading fails.

[2.0.0] - 2025-09-04

Added

  • Animation handling in ThreeJSViewer, Model, and ARShadesDemo:

    • Introduced support for animations with CO_ and IL_ prefixes.
    • Added default fallback animation title "ANIMATE".
    • Enabled animation feedback state in Model and propagated interaction state from ThreeJSViewer.
  • Visibility filters in single and multiple 3DViewers:

    • Added variant visibility state and rendering logic in ARShades3dViewer and ARShades3dsViewer.
    • Introduced filtering of invisible products and updated fallback logic when initial variants are not visible.
  • Skinned mesh rendering improvements:

    • Disabled frustum culling for animated meshes in Model to avoid flickering artifacts.
  • FOV configuration enhancements:

    • Improved mobile and desktop Field of View handling in ThreeJSViewer, Scene, and ARShadesDemo.
    • Added parsing of mobile-specific FOV from query parameters.
    • Dynamic iframe height calculated based on window width for responsive layouts.
  • Enhanced screenshot rendering:

    • ThreeJSViewer now returns { filename, dataURL } for custom snapshot handling.
    • Renderer uses skuModel and improved naming consistency for rendered images.

Changed

  • Three.js imports & internal refactors:

    • Refactors across Renderer and ARShadesDemo.
  • 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_THUMBNAILS across .env, .env.production, and .env.development for consistent behavior.
  • Updated variant data source in Renderer:

    • Now retrieves variants from the Variants collection in Firestore, aligning with new data model.
  • Improved user interaction tracking:

    • ThreeJSViewer initializes interaction state via props.
    • Interaction state is passed down to Model to control animation feedback (e.g. for hover or click).
  • Cleaned up debug logs in Renderer and related components.

Fixed

  • FOV parameter correctly parsed and applied across mobile and desktop.
  • Prevented invalid iframe URL generation in ARShadesDemo when no variants are available.
  • Ensured fallback variant switching when initial one is not visible.
  • Fixed depthWrite material issue for colored lenses.
  • Fixed animation duplication and feedback glitches in Model.

[1.5.1] - 2025-07-22

Added

  • Post-processing pipeline in ThreeJSViewer using EffectComposer, 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 ThreeJSViewer to improve user feedback during model interaction.

  • Global flag window.isSceneReady to indicate when the scene is fully initialized, enabling server-side rendering automation.

  • Support for dynamic scene configuration via templateConfig in Renderer, with the ability to trigger image rendering using window.triggerServerRender.

  • Close button for mobile modal in ARShadesDemo with custom styling and improved accessibility.

  • Dynamic support for fieldOfView as a URL parameter in ARShadesDemo, enabling viewer customization on the fly.

  • ARShadesDemo page, to dynamically manage the single and multiple 3DViewers.

Changed

  • Refactored all Three.js imports in ThreeJSViewer, ARScene, Scene, Model, MaterialController, MaterialPresets, and Renderer to use named imports, improving clarity and tree-shaking performance.

  • Updated useModelLoader logic in ThreeJSViewer to handle conditional caching based on the environment.

  • Comprehensive refactor of material management in Model and MaterialPresets:

    • Introduced helpers like getClonedModel, getClonedMaterial, getMaterialWithPreset, and getRestoredMaterial.
    • Added internal maps: originalMaterialsMap, adjustedMaterialsMap, clonedMaterialsMap, and materialsWithPreset to streamline material cloning and restoration.
  • Updated lastUpdate field formatting to use ISO strings in MaterialPresets and Renderer for consistency.

  • Default fieldOfView changed from 15° to 23° in ThreeJSViewer for a wider model view.

  • Scene preset updated from 'city' to 'apartment' in Scene.js for more realistic reflections, if the viewer has not a default one.

  • Tweaked reflective material parameters: adjusted blur, mixBlur, mixStrength, mirror, color, and opacity for a better visual outcome.

  • Reduced orbitControls.maxDistance to 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, and Variants from 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 transparency and depthWrite issues for transmissive materials (Model, MaterialController).

  • Correctly handled sheenColor scaling during GLB export to reflect the actual preset value.

  • Eliminated duplicated materials and ensured correct naming consistency in exported .glb models.

  • Improved iframe URL validation and construction in ARShadesDemo.

[1.5.0] - 2025-05-26

Added

  • New ThreeJSViewer, Scene, and Model components to replace the legacy viewer based on Google's ModelViewer.

  • Use of Threejs to improve real-time rendering of 3D viewer.

  • MaterialController components 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 ThreeJSViewer component.

  • 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.

  • MaterialPresets page 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.