Skip to content

Conversation

andretchen0
Copy link
Contributor

Port of THREE/Drei's <MarchingCubes /> to Cientos. Adds:

  • component
  • demo
  • docs

Copy link

netlify bot commented Dec 3, 2024

Deploy Preview for cientos-tresjs ready!

Name Link
🔨 Latest commit 74aed64
🔍 Latest deploy log https://app.netlify.com/sites/cientos-tresjs/deploys/6752b7b14ab4f90008ea5dc6
😎 Deploy Preview https://deploy-preview-553--cientos-tresjs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@andretchen0 andretchen0 changed the title feat(MarchingCubes): add component, demo, docs feat(MarchingCubes): add component, demo, docs (WIP) Dec 3, 2024
Copy link

pkg-pr-new bot commented Dec 4, 2024

Open in Stackblitz

npm i https://pkg.pr.new/@tresjs/cientos@553

commit: 0de8936

@andretchen0 andretchen0 changed the title feat(MarchingCubes): add component, demo, docs (WIP) feat(MarchingCubes): add component, demo, docs Dec 6, 2024
@andretchen0 andretchen0 added the feature New feature or request label Dec 6, 2024
@andretchen0 andretchen0 marked this pull request as ready for review December 6, 2024 08:44
@JvanderHeide
Copy link
Contributor

Would love to see this merged

@andretchen0
Copy link
Contributor Author

Would love to see this merged

Good to hear!

@alvarosabu alvarosabu changed the base branch from main to next December 14, 2024 09:04
@alvarosabu alvarosabu added the p3-significant High-priority enhancement (priority) label Dec 14, 2024
Copy link
Member

@alvarosabu alvarosabu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like this abstraction. I just have some questions about how to use materials and some typescript stuff long the way

@alvarosabu alvarosabu merged commit 2ebc1e6 into next Dec 17, 2024
4 checks passed
@andretchen0 andretchen0 deleted the feat/marching-cubes branch December 17, 2024 08:31
alvarosabu added a commit that referenced this pull request Sep 20, 2025
* docs: un-comment back the new features

* feat(Helper): add component, demo, docs (#543)

* feat(Helper): add component, demo, docs

* refactor(useHelper): use destructuring

* refactor(useHelper): remove

---------

Co-authored-by: Alvaro Saburido <[email protected]>

* feat(PointMaterial): add component, demo, docs (#545)

* feat(PointMaterial): add component, demo, docs

* chore: lint

* refactor: remove unused function argument

* feat: deconstruct points material imports

---------

Co-authored-by: alvarosabu <[email protected]>

* feat(ScreenQuad): add component, playground, docs (#530)

* feat(MarchingCubes): add component, demo, docs (#553)

* feat(MarchingCubes): add component, demo, docs

* feat(MarchingCubes): add default material

* chore: lint

---------

Co-authored-by: alvarosabu <[email protected]>

* feat(CubicBezierLine): add component, demo, docs (#546)

* feat(CubicBezierLine): add component, demo, docs

* docs: revert broken link

* feat(QuadraticBezierLine): add component, demo, docs (#548)

Co-authored-by: alvarosabu <[email protected]>

* feat(AccumulativeShadows): add component, demo, docs (#558)

* feat(AccumulativeShadows): add component, demo, docs

* refactor(RandomizedLights): rename interface

* refactor(AccumulativeShadows): change default alphaTest value

* refactor(AccumulativeShadows): expose update function

* feat(Bounds): add component, demo, docs (#408) (#568)

* feat(Bounds): add component, demo, docs

* refactor(Bounds): useScreenSize -> useResize

* refactor(Bounds): rename variables, remove unneeded state

* docs: fix material items merge issue

---------

Co-authored-by: alvarosabu <[email protected]>

* refactor(Align): change callback to emit, improve naming (#571)

* feat(CircleShadow): add component, demo, docs (#549)

* feat(CircleShadow): add component, demo, docs

* docs(CircleShadow): fix prop name

---------

Co-authored-by: alvarosabu <[email protected]>

* feat(Stage): add component, demo, docs (#572)

* feat(AccumulativeShadows): add component, demo, docs

* feat(Bounds): add component, demo, docs

* refactor(Bounds): useScreenSize -> useResize

* refactor(Bounds): rename variables, remove unneeded state

* refactor(Align): change callback to emit, improve naming

* refactor(RandomizedLights): rename interface

* refactor(AccumulativeShadows): change default alphaTest value

* refactor(AccumulativeShadows): expose update function

* feat(Stage): add component, demo, docs

* docs: fix material items

* feat: import RandomizedLightsProps from correct file

* refactor(Stage): update types

---------

Co-authored-by: alvarosabu <[email protected]>

* chore(Outline): type material

* feat(LOD): add component, playground, docs (#524)

Co-authored-by: Alvaro Saburido <[email protected]>

* refactor(Bounds): replace clamp import with MathUtils.clamp for consistency

* feat(useIntersect): add function, demo, docs (#550)

Co-authored-by: alvarosabu <[email protected]>

* chore: update dependencies in package.json and pnpm-lock.yaml

- Bump versions for several dependencies including:
  - @vueuse/core from ^12.0.0 to ^12.3.0
  - three-stdlib from ^2.34.0 to ^2.35.2
  - eslint from ^9.16.0 to ^9.17.0
  - release-it from ^17.10.0 to ^18.0.0
  - typescript-eslint packages to ^8.19.0
  - Update various other dependencies to their latest versions for improved compatibility and performance.

- Update pnpm-lock.yaml to reflect the changes in package.json and ensure consistency across the project.

* fix: fixes to next components and docs (#586)

* docs(Environment): remove demo

- page contained multiple instances of useProgress
- useProgress instances interfere with one another

* docs(sidebar): use data from component-list

* docs: add unlisted components

* docs(Environment): fix code snippet formatting

* docs: remove non-existant directives from component list

* docs(Backdrop): fix demo errors

- TS errors
- traverse and cast-shadows on null

* fix(Lensflare): add THREE src

* three-stdlib Lensflare is not working
* use THREE examples/jsm src in the meantime

* chore(Lensflare): add TODO

* chore: update dependencies and refactor logging

- Updated `@Tresjs/core` dependency to next version
- Removed the `useLogger` composable and replaced its usage with direct calls to `logError` and `logWarning` in various files for improved clarity and performance.
- Updated `package.json` and `pnpm-lock.yaml` to reflect the changes in dependencies.

* feat!: 609-refactor-usegltf (#610)

* feat!: refactor useGLTF to use new useLoader based on `useAsyncState`

BREAKING CHANGE: useGLTF no longer returns the plain obj, it now returns an object with reactive data (state, isLoading, error) and a load method.

- Refactored GLTF loading in components to use the updated `useGLTF` composable, improving state management and performance.
- Removed unnecessary `Suspense` wrappers in demo components for cleaner rendering.
- Added new demo components for showcasing GLTF model loading with DRACO compression.
- Updated documentation to reflect changes in GLTF model usage.

* fix: update import syntax and clean up unused code

- Changed import statement for `TresObject` in `gltf-model.md` to use the correct TypeScript syntax.
- Removed unused imports in `use-gltf/index.vue` for cleaner code.
- Added ESLint directive to disable console warnings in `TheModel.vue` for development purposes.

* docs: update useGLTF implementation and clean up components

- Refactored components to utilize the new `useGLTF` structure, replacing direct access to nodes with reactive state management.
- Removed unused imports and commented-out code for improved clarity and maintainability.
- Updated documentation references to reflect changes in component usage and structure.

* feat: adapt useAnimations to new useAsyncState loader's model

- Added a new demo page for `use-animations` showcasing the animated GLTF model.
- Refactored the `useAnimations` composable to support reactive animations using `MaybeRef`.
- Updated the `TheModel.vue` component to utilize the new reactive state for animations.
- Enhanced the main demo layout with `TresCanvas`, `OrbitControls`, and lighting for improved visualization.

* chore: update @Tresjs/core dependency to version 5.0.0-next.0

- Changed the dependency for @Tresjs/core in package.json and playground/vue/package.json to the stable version 5.0.0-next.0 from a previous URL reference.
- Updated pnpm-lock.yaml to reflect the new version of @Tresjs/core across all relevant sections.
- Adjusted the useGLTF implementation in documentation to align with the new state management approach.

* fix: return nodes and materials computed directly (#612)

* feat: return nodes and materials computed directly

* docs: correct lint issues in markdown and update latest changes of useLoader

* feat: 616-adapt-code-to-core-ctx-renderer-state-breaking-change (#620)

* feat: update to latest core v5 next

* feat: update renderer access in components to use instance reference

- Updated various components to access the renderer through `renderer.instance.value` instead of `renderer.value`, ensuring compatibility with the latest core changes.
- Adjusted related watch and invalidate calls to check for `renderer.canBeInvalidated.value` before invoking invalidate, improving performance and stability.
- Refactored multiple files including shapes, controls, and materials to reflect these changes, enhancing overall code consistency and maintainability.

* feat: 615-adapt-camera-dependant-abstractions-to-core-v5-camera-changes (#621)

* feat: adapt core camera ctx changes to cientos

* fix: remove unused Camera type import in useFBO module

- Removed the unused `Camera` type import from `index.ts` in the `useFBO` module to clean up the code and improve maintainability.

* chore(deps): update dependencies to latest versions

- Upgraded several dependencies in `package.json` and `pnpm-lock.yaml` to their latest versions, including:
  - `@release-it/conventional-changelog` from `10.0.0` to `10.0.1`
  - `@types/three` from `0.172.0` to `0.176.0`
  - `@vitejs/plugin-vue` from `5.2.1` to `5.2.4`
  - `eslint` from `9.17.0` to `9.27.0`
  - `eslint-plugin-vue` from `9.32.0` to `10.1.0`
  - `gsap` from `3.12.5` to `3.13.0`
  - `three` from `0.173.0` to `0.176.0`
  - `typescript` from `5.7.2` to `5.8.3`
  - `vite` from `6.0.7` to `6.3.5`
  - `vite-plugin-banner` from `0.8.0` to `0.8.1`
  - `vite-plugin-dts` from `4.4.0` to `4.5.4`
  - `vite-plugin-glsl` from `1.3.1` to `1.4.1`
  - `vitepress` from `1.5.0` to `1.6.3`
- Adjusted related dependencies in `pnpm-lock.yaml` to ensure compatibility and stability across the project.

* chore(deps): update @Tresjs/core to version 965 and upgrade Vue to 3.5.14

- Updated the dependency for `@Tresjs/core` in `package.json` and `playground/vue/package.json` to the new version `965`.
- Upgraded Vue from `3.5.13` to `3.5.14` in `pnpm-lock.yaml` to ensure compatibility with the latest features and improvements.
- Adjusted related references in the codebase to utilize the updated context and camera handling methods, enhancing overall functionality and maintainability.

* chore(deps): update @Tresjs/core to version 0731c19

- Updated the dependency for `@Tresjs/core` in `package.json` and `pnpm-lock.yaml` to the new version `0731c19`.
- Adjusted related references in the lock file to ensure consistency and compatibility across the project.

* feat: 611 move cores usetexture to cientos (#617)

* feat: add useTexture composable and related documentation

- Introduced the `useTexture` composable for loading textures in TresJS scenes using THREE.js's texture loader.
- Created a new demo component `UseTextureDemo.vue` to showcase the usage of the `useTexture` composable.
- Updated the documentation to include a guide for `useTexture`, detailing its options and providing usage examples.
- Added new routes and components in the playground for testing and demonstrating the `useTexture` functionality.
- Ensured all new components follow best practices and TypeScript standards.

* feat: introduce useTextures composable and related documentation

- Added the `useTextures` composable for loading multiple textures simultaneously in TresJS scenes using THREE.js's texture loader.
- Created a new demo component `PBRTexturesDemo.vue` to showcase the usage of the `useTextures` composable with PBR textures.
- Updated the documentation to include a guide for `useTextures`, detailing its parameters, return values, and providing usage examples.
- Added new routes and components in the playground for testing and demonstrating the `useTextures` functionality.
- Ensured all new components adhere to best practices and TypeScript standards.

* fix: clean up logging and formatting in PBRTexturesDemo and related documentation

- Removed unnecessary console logging of loading state in `PBRTexturesDemo.vue` for cleaner output.
- Adjusted formatting in `use-textures.md` for improved readability.
- Updated import statements in `PBRTextures.vue` to remove unused dependencies, streamlining the component.
- Ensured all changes adhere to TypeScript standards and best practices.

* chore: disable console warnings in PBRTextures.vue for cleaner development output

- Added an ESLint directive to disable console warnings in `PBRTextures.vue`, allowing for a more streamlined development experience without cluttering the console.
- This change is aimed at improving the usability of the component during development while maintaining adherence to TypeScript standards.

* fix: set new texture as initial value for textue loader

* fix: added initial value to useTextures

* chore: update @Tresjs/core dependency to latest version

- Updated the @Tresjs/core dependency from version be3280b to 0731c19 in package.json and playground/vue/package.json for improved functionality.
- Adjusted pnpm-lock.yaml to reflect the updated version of @Tresjs/core across all relevant sections.

* refactor: abstractions using useTextures from core now use local useTexture

* refactor: update texture loading in Ocean and Precipitation components

- Replaced the use of destructured state from `useTexture` with direct texture loading using `TextureLoader` in the `Ocean.vue` component for improved clarity and performance.
- Updated the `watchEffect` in `Precipitation.vue` to use a more descriptive variable name for the texture state, enhancing code readability.
- Ensured that texture loading logic is consistent across components, aligning with best practices for resource management.

* chore: fix some demos shenanigans

* feat!: 608 drop umd support (#622)

* chore(vite): update output formats and remove UMD globals

- Added 'es' format to the Vite configuration for better module compatibility.
- Removed the UMD globals section from the output configuration as it is no longer necessary, streamlining the build process.

* feat!: update output formats and remove UMD globals

BREAKING CHANGE: cientos  is now ESM only

- Added 'es' format to the Vite configuration for better module compatibility.
- Removed the UMD globals section from the output configuration as it is no longer necessary, streamlining the build process.

* fix: rollback to previous use tres usage (#623)

* refactor: useTres partial context to simplify

* refactor: update useFBO to utilize useTres for improved context handling

* refactor: update BakeShadows to use useTres for improved renderer access

* refactor: update MouseParallax to use useTres for improved renderer access

* refactor: update controls to use useTres for improved renderer access and simplify context handling

* refactor: remove unused StatsGl import in KeyboardControlsDemo.vue for cleaner code

* refactor: remove unused parameter from onBeforeRender in LensflareImpl and clean up imports in OrbitControls for improved code clarity

* refactor: update Bounds component to use camera directly from useTres for improved clarity and simplify renderer invalidation logic

* refactor: update components to use useTres for improved renderer access and simplify invalidation logic

* refactor: update shape components to use useTres for improved renderer access and simplify invalidation logic

* refactor: update shape and staging components to use useTres for improved renderer access and simplify invalidation logic

* chore: update pnpm-lock.yaml to reflect dependency version upgrades including Vue, ESLint, and various plugins for improved stability and performance

* refactor: format code for improved readability by adjusting indentation in Atlas.ts, HTML.vue, and ShaderData.ts

* chore: update @Tresjs/core dependency to version 5.0.0-next.1

- Changed the dependency for `@Tresjs/core` in `package.json` and `playground/vue/package.json` from a specific commit URL to the latest pre-release version `5.0.0-next.1`.
- Updated `pnpm-lock.yaml` to reflect this change across all relevant sections, ensuring consistency and compatibility with the updated core features.

* chore: release v5.0.0-next.0

* chore: update @Tresjs/core dependency to version 5.0.0-next.2

- Updated the `@Tresjs/core` dependency in `package.json` and `playground/vue/package.json` to the latest pre-release version `5.0.0-next.2`.
- Adjusted `pnpm-lock.yaml` to reflect this change across all relevant sections, ensuring consistency and compatibility with the updated core features.

* chore: release v5.0.0-next.1

* fix: adapt to renderer.isntance no longer being shallowRef

* fix: type issues from v5

- Added type imports for `WebGLRenderer` and `TresRenderer` in various components to enhance type safety and clarity.
- Simplified prop emit definitions in `Align.vue` by combining event types into a single union type.
- Ensured consistent usage of `TresRenderer` in `SoftShadows.vue` and `useCubeCamera.ts` for better integration with TresJS.
- Updated `MouseParallax.vue` to use non-null assertion for camera reference, improving type safety.
- Adjusted `AccumulativeShadows/component.vue` to cast renderer to `WebGLRenderer` where necessary for compatibility.

* fix: remove unused type import in MouseParallax.vue

- Removed the unused import of `Object3D` from `MouseParallax.vue` to enhance code clarity and maintainability.
- This change aligns with the ongoing effort to streamline type imports and improve type safety across the codebase.

* chore: release v5.0.0-next.2

* chore(playground): update BlenderCube component to use correct GLTF node

- Changed the reference from `state.value?.nodes?.Cube` to `nodes.value?.BlenderCube` in the BlenderCube.vue component to correctly access the GLTF model.
- Imported `computed` and `shallowRef` from Vue to enhance reactivity and maintainability of the component.

* fix: typescript issues (#624)

* fix: update Stats component to use onRender instead of onAfterRender

- Replaced the `onAfterRender` hook with `onRender` in the Stats component to align with the updated rendering lifecycle.
- This change ensures that the stats rendering ends at the correct point in the render cycle, improving performance and accuracy.

* fix: update useIntersect to use onRender instead of onAfterRender

- Replaced the `onAfterRender` hook with `onRender` in the `useIntersect` function to align with the updated rendering lifecycle.
- This change ensures that intersection checks occur at the correct point in the render cycle, improving performance and accuracy.

* fix: update ContactShadows component to use TresRenderer for improved type safety

- Replaced instances of `WebGLRenderer` with `TresRenderer` in the `ContactShadows.vue` component to enhance type safety and align with the TresJS framework.
- Updated the `update` and `blurShadow` functions to accept the new renderer type, ensuring compatibility with the latest rendering lifecycle.
- Added a `toValue` conversion for the `scene` parameter in the `update` function to maintain reactivity and proper scene handling.

* fix: remove unused type import in ContactShadows.vue

- Removed the unused import of `WebGLRenderer` from `ContactShadows.vue` to enhance code clarity and maintainability.
- This change aligns with the ongoing effort to streamline type imports and improve type safety across the codebase.

* fix: update model traversal to use Three.js Mesh for improved type safety

- Replaced the type import of `TresObject` with `Mesh` from Three.js in both `useFBX` and `useGLTF` components to enhance type safety and align with Three.js standards.
- Updated model traversal logic to utilize `instanceof Mesh` for better type checking, ensuring that shadow properties are correctly applied to mesh objects.

* fix: improve object addition in EnvironmentScene for better type handling

- Updated the `add` method in `EnvironmentScene` to iterate over objects and add them individually to `virtualScene`, enhancing type safety and clarity.
- Added a TypeScript error suppression comment to address a type error encountered during the update.

* fix: update type definitions for @types/node and @types/three

- Upgraded `@types/node` from `22.10.5` to `24.0.3` and `@types/three` from `0.176.0` to `0.177.0` in `package.json` to ensure compatibility with the latest TypeScript features and improvements.
- Updated `pnpm-lock.yaml` to reflect these changes, ensuring all dependencies are aligned with the new type definitions.

* fix: enhance type definitions in Align component for improved type safety

- Updated the type definition for the `parent` property in the `AlignCallbackOptions` interface to use `Object3D<Object3DEventMap>` for better type accuracy.
- Changed the type of the `container` property to `Group` to align with Three.js standards.
- Adjusted the `emit` call in the `update` function to cast `parent` as `Object3D<Object3DEventMap>`, ensuring type safety during event handling.

* fix: update StatsGl component to use onRender for improved rendering lifecycle

- Replaced the `onAfterRender` hook with `onRender` in the `StatsGl` component to align with the updated rendering lifecycle.
- This change ensures that the stats update occurs at the correct point in the render cycle, enhancing performance and accuracy.

* fix: refactor MeshReflectionMaterial to improve rendering lifecycle and type safety

- Replaced the custom `onBeforeRender` function with the `onBeforeRender` from `useLoop` for better integration with the rendering lifecycle.
- Enhanced type safety by ensuring the correct types are used for `renderer`, `scene`, and `camera`.
- Removed redundant code related to rendering logic, streamlining the component and improving maintainability.
- Added warnings for unsupported WebGPURenderer to inform users of limitations.
- Updated texture matrix and projection matrix calculations to ensure accurate rendering behavior.

* fix: enhance type safety in LOD component by updating Object3D type

- Updated the import statement to include `Object3DEventMap` for improved type accuracy.
- Modified the `levels` array and `object` assignment to use `Object3D<Object3DEventMap>`, ensuring better type handling and alignment with Three.js standards.

* fix: enhance type safety and streamline imports in MeshReflectionMaterial and BakeShadows

- Removed unused imports of `Object3D` and `Scene` in `MeshReflectionMaterial` to improve code clarity.
- Updated the `BakeShadows` component to conditionally set shadow map properties only if the renderer is an instance of `WebGLRenderer`, enhancing type safety and preventing potential runtime errors.

* fix: update @Tresjs/core dependency to a specific version URL for improved stability

- Changed the dependency for `@Tresjs/core` from version `5.0.0-next.4` to a specific URL `https://pkg.pr.new/@tresjs/core@bb01f3d` in both `package.json` and `playground/vue/package.json` to ensure consistent behavior across environments.
- Updated `pnpm-lock.yaml` to reflect the new dependency URL, maintaining alignment with the updated package structure.
- Enhanced type safety in various components by refining type imports and ensuring correct usage of `Object3D<Object3DEventMap>` where applicable.

* fix: update @Tresjs/core dependency to a stable version

- Changed the dependency for `@Tresjs/core` from a specific URL to version `5.0.0-next.5` in both `package.json` and `pnpm-lock.yaml` to ensure consistent behavior and stability across environments.
- Updated the lock file to reflect the new version, maintaining alignment with the updated package structure.

* chore: update @Tresjs/core dependency to version 5.0.0-next.6

- Updated the `@Tresjs/core` dependency in `package.json` and `playground/vue/package.json` to the latest pre-release version `5.0.0-next.6` for improved stability and features.
- Adjusted `pnpm-lock.yaml` to reflect this change across all relevant sections, ensuring consistency and compatibility with the updated core functionalities.

* chore: release v5.0.0-next.3

* fix(transform-controls): use correct emit on mouse up (#625)

* fix: create a local raycast for the HTML component (#627)

* chore: release v5.0.0-next.4

* feat!: refactor useFBX (#628)

* feat!: refactor useFBX

BREAKING CHANGE: useFBX no longer returns the plain obj, it now returns an object with reactive data (state, isLoading, error) and a load method.

- Updated `vue` to version `3.5.17` and `three` to version `0.178.0` in `package.json` for enhanced compatibility and features.
- Upgraded `@vitejs/plugin-vue` to version `6.0.0` and `vite` to version `7.0.2` to leverage the latest improvements in the build process.
- Enhanced the `useFBX` composable to provide a reactive state for loading FBX models, allowing for better handling of model properties and loading states.
- Improved the `FBXModel` component to support shadow properties and added a new demo for better visualization of FBX model loading.
- Updated documentation to reflect changes in the FBX model loading process and added examples for better clarity.

* fix(TheModel.vue): remove unused type import for improved clarity

- Removed the unused import of `Group` from TheModel.vue to enhance code clarity and maintainability. This change aligns with the ongoing effort to streamline type imports and improve type safety across the codebase.

* feat: expose model state in useFBX and useGLTF components

- Added `defineExpose` to both `useFBX` and `useGLTF` components to expose the reactive model state, allowing for better integration and access to the model instance in parent components.
- This enhancement improves the usability of the components by providing a direct reference to the model state, facilitating more dynamic interactions and updates.

* fix(useFBX): add missing comma in defineExpose for model instance

- Added a missing comma in the `defineExpose` call within the `useFBX` component to ensure proper syntax and prevent potential runtime errors. This minor fix enhances code clarity and maintains consistency in the component's structure.

* refactor: streamline instance exposure and remove unused refs (#629)

* refactor(Sky.vue, Sparkles/component.vue): streamline instance exposure and remove unused refs

- Updated `Sky.vue` to directly expose the `skyImpl` instance instead of using a shallow reference, improving clarity and performance.
- Removed the unused `sparkleRef` in `Sparkles/component.vue`, simplifying the component structure while maintaining functionality.
- These changes enhance code maintainability and align with best practices for instance management in Vue components.

* fix: update camera reference handling in Billboard and ScreenSpace components

- Modified the `update` function in `Billboard.vue` to correctly use `camera.value` for improved reactivity.
- Updated the camera reference handling in `ScreenSpace.vue` to ensure both `outerRef` and `camera.value` are checked before accessing their properties, enhancing stability.
- Adjusted the `imageBounds` computed property in `Image/component.vue` to safely access image dimensions, preventing potential runtime errors.
- Removed unused `shallowRef` import in `Sparkles/component.vue` to streamline the component structure.

* refactor: update type references to TresObject for improved type safety

- Changed the type of `dummy` in `TransformPayload` to `TresObject` for better alignment with TresJS framework.
- Updated `objRef` and `parentRef` in `Helper/component.vue` to use `TresObject`, enhancing type accuracy.
- Modified the `useHelper` function to accept `MaybeRefOrGetter<TresObject>` instead of `Object3D`, ensuring consistency across helper functionalities.
- These changes improve type safety and maintainability in the codebase.

* refactor(Text3D.vue, material.ts, component.vue): enhance type safety and clarity

- Updated `Text3D.vue` to explicitly type the `slots` variable as `Slots` and the return type of `localText` as `string`, improving type safety and clarity.
- Removed the unused type import of `Object3D` in `Helper/component.vue` to streamline the component structure.
- Extended Three.js types in `material.ts` to include runtime properties in the `Material` interface and created a properly typed interface for `MeshGlassMaterial`, enhancing type accuracy and maintainability.
- These changes contribute to better type safety and code clarity across the components.

* fix(ContactShadows.vue): remove unnecessary TypeScript error suppression

- Removed the `@ts-expect-error` comments in the `blurShadow` function, as they are no longer needed. This change improves code clarity and maintains a cleaner codebase by eliminating outdated error handling comments.
- The removal aligns with ongoing efforts to enhance type safety and maintainability in the project.

* refactor(Atlas.ts): replace useLoader with TextureLoader for improved texture handling (#631)

- Removed the use of `useLoader` from `@Tresjs/core` and implemented a direct instantiation of `TextureLoader` from Three.js for loading textures. This change enhances clarity and performance by simplifying the texture loading process.
- Updated the promise handling for texture loading to ensure proper resolution and rejection, improving error handling.
- Adjusted the way texture dimensions are accessed to streamline the code and enhance maintainability.

* refactor: replace SVG component with useSVG composable for improved SVG handling (#632)

* refactor: replace SVG component with useSVG composable for improved SVG handling

- Updated `SVGDemo.vue` to utilize the new `UseSVG` component from `@Tresjs/cientos`, enhancing the way SVGs are loaded and displayed in TresJS scenes.
- Modified the component list to reflect the change from `SVG` to `useSVG`, ensuring consistency in documentation and usage.
- Removed the outdated `svg.md` guide and created a new `use-svg.md` guide to document the `useSVG` composable, providing comprehensive usage instructions and examples.
- Added new demo components in the playground to showcase the capabilities of the `useSVG` composable, improving the developer experience and demonstrating advanced use cases.
- Updated the router to include new routes for the `useSVG` functionality, ensuring easy navigation to the new features.

* refactor: improve code formatting and consistency in SVG documentation and components

- Updated `use-svg.md` to enhance readability by adjusting the formatting of interface properties and ensuring consistent spacing.
- Refactored the `component.vue` file to maintain consistent formatting in the `defineExpose` call, improving code clarity.
- These changes contribute to better maintainability and adherence to coding standards across the documentation and component files.

* refactor(PositionalAudio.vue): streamline audio buffer handling

- Replaced the direct use of `shallowRef` for the audio buffer with a destructured state from `useLoader`, enhancing clarity and maintainability.
- This change simplifies the audio loading process and aligns with best practices for reactive state management in Vue components.

* refactor(PositionalAudio.vue): remove duplicate audio buffer state declaration

- Eliminated the redundant declaration of the audio buffer state by consolidating it into a single instance using `useLoader`. This change enhances code clarity and maintains best practices for state management in Vue components.

* chore: release v5.0.0-next.5

* refactor: remove useRenderLoop and implement onLoop function directly in components

- Updated multiple demo components to eliminate the use of `useRenderLoop` from `@Tresjs/core`, replacing it with a direct `onLoop` function for improved clarity and performance.
- Each component now handles the animation loop directly, enhancing maintainability and aligning with best practices for reactive state management in Vue.
- Adjusted the event binding for the `TresCanvas` component to utilize the new `onLoop` function, ensuring smooth integration of animation logic.

* chore: comment out alias configuration in VitePress config

- Commented out the alias configuration in `docs/.vitepress/config.ts` for `@Tresjs/cientos`, maintaining the existing structure while preventing potential conflicts during development.
- This change ensures that the deduplication of `three` remains intact without altering the current functionality.

* chore: remove unused import in VitePress config

- Eliminated the unused import of `resolve` from `pathe` in `docs/.vitepress/config.ts`, streamlining the configuration file and enhancing clarity. This change contributes to better maintainability and aligns with best practices for code cleanliness.

* chore: update alias configuration in VitePress config

- Restored the alias configuration for `@Tresjs/cientos` in `docs/.vitepress/config.ts`, pointing it to the source directory. This change enhances module resolution during development and maintains consistency in the project structure.
- The update ensures that the deduplication of `three` remains intact while allowing for easier access to the TresJS components.

* chore: update Node.js version in Netlify configuration

- Changed the Node.js version from 18 to 22 in the `netlify.toml` file to ensure compatibility with the latest features and improvements. This update aligns with best practices for maintaining an up-to-date build environment.

* chore: update alias configuration in VitePress config

- Changed the alias for `@Tresjs/cientos` in `docs/.vitepress/config.ts` to point to the distribution file `../../dist/trescientos.js`. This update ensures that the correct module is resolved during the build process, aligning with the project's deployment structure.

* fix(orbit-controls): added key to force re-render

* chore: release v5.0.0-next.6

* feat: add `traverse` option to model loaders (#635)

* feat: add `traverse` option to model loaders

* refactor: `Object3D` to `TresObject`

* refactor: `Object3D` to `TresObject`

* chore: cleanup old comments

---------

Co-authored-by: lihbr <[email protected]>

* fix: enhance audio and sprite loading logic

- Updated `PositionalAudio.vue` to ensure the audio buffer is valid before setting it, preventing potential runtime errors.
- Modified `AnimatedSprite/component.vue` to handle texture results more robustly, ensuring compatibility with both single and array texture results.
- Improved type annotations in `useFBX`, `useGLTF`, and `useSVG` loaders to provide clearer return types and enhance type safety.

These changes improve error handling and maintainability across audio and sprite components.

* chore: release v5.0.0-next.7

* feat: set peer @Tresjs/core to 5.0.0 and alpha, updated dev deps (#641)

* chore: release v5.0.0-alpha.0

* feat: enhance `useAnimations` composable with manual update option (#637)

- Renamed `useAnimation` to `useAnimations` for consistency.
- Added support for manual updates in the `useAnimations` composable, allowing users to control when the animation mixer updates.
- Updated documentation to reflect the new manual update feature and provided usage examples.
- Adjusted the implementation to utilize a computed property for the `AnimationMixer`, ensuring proper reactive updates.

These changes improve flexibility and control over animations in the TresJS framework.

* chore: release v5.0.0-alpha.1

* chore: update dependencies and package manager version

- Upgraded package manager from [email protected] to [email protected].
- Updated @Tresjs/core from version 5.0.0-alpha.1 to 5.0.0-rc.0.
- Bumped @types/three from 0.179.0 to 0.180.0.
- Updated three from version 0.179.1 to 0.180.0.
- Upgraded vite from version 7.1.3 to 7.1.6.
- Updated vue-tsc from version 3.0.6 to 3.0.7.

These changes ensure compatibility with the latest features and improvements in the respective packages.

* chore: release v5.0.0-rc.0

* chore: update dependencies and release v5.0.0

- Updated @Tresjs/core from version 5.0.0-rc.0 to 5.0.0.
- Bumped vue-router from version 4.5.0 to 4.5.1.
- Upgraded dev dependencies:
  - @tresjs/leches from ^0.14.0 to ^0.14.1
  - unplugin-auto-import from ^0.18.6 to ^20.1.0
  - unplugin-vue-components from ^0.27.5 to ^29.0.0
  - vite-plugin-glsl from ^1.3.1 to ^1.5.1
  - vite-plugin-qrcode from ^0.2.3 to ^0.3.0
  - vue-tsc from ^2.1.10 to ^3.0.7

These updates ensure compatibility with the latest features and improvements in the respective packages.

---------

Co-authored-by: andretchen0 <[email protected]>
Co-authored-by: Gerard del Castillo <[email protected]>
Co-authored-by: Lucie <[email protected]>
Co-authored-by: lihbr <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request p3-significant High-priority enhancement (priority)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants