\r\n\u003C/template>\r\n\r\n//both logs from cientos\r\ntransformData: {\r\n inheritType: 1, \r\n eulerOrder: 'ZYX', \r\n rotation: Array(3), \r\n parentMatrix: _Matrix4, \r\n parentMatrixWorld: _Matrix4\r\n}\r\ntres__name: \"Group\"\r\n```\r\n\n\n### System Info\n\n```shell\nSystem:\r\n OS: macOS 14.3.1\r\n CPU: (10) arm64 Apple M1 Pro\r\n Memory: 90.00 MB / 16.00 GB\r\n Shell: 5.9 - /bin/zsh\r\n Binaries:\r\n Node: 18.18.0 - ~/.nvm/versions/node/v18.18.0/bin/node\r\n Yarn: 1.22.21 - ~/.nvm/versions/node/v18.18.0/bin/yarn\r\n npm: 9.8.1 - ~/.nvm/versions/node/v18.18.0/bin/npm\r\n Browsers:\r\n Chrome: 125.0.6422.112\n```\n\n\n### Used Package Manager\n\nnpm\n\n### Code of Conduct\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2872,2875],{"name":2873,"color":2874},"needs reproduction","16309A",{"name":2876,"color":2877},"waiting for author","DEEAB8",429,"cientos","FBXLoader: Missing data from userData field ","2024-09-12T20:08:31Z","https://github.com/Tresjs/cientos/issues/429",0.7476586,{"description":2885,"labels":2886,"number":2894,"owner":2862,"repository":2863,"state":2864,"title":2895,"updated_at":2896,"url":2897,"score":2898},"### Description\n\nIf we found a way to put all the updates on just one loop, we can come with some interesting advantages.\r\n\r\n- What if the user wants to run the physics loop in a different priority?\r\n- What if we want to stop or apply some fps limit to the whole library?\r\n- Should this have better performance?\n\n### Suggested solution\n\nCurrently, this is an investigation and should not be prioritized\r\n\r\nI personally don't know if this is possible\n\n### Alternative\n\nWe still have the alternative to pass the limit FPS or to invalidate, or even the priority loop per component\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/rapier/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/rapier/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://rapier.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/rapier/issues) that reports the same bug to avoid creating a duplicate.",[2887,2890,2891],{"name":2888,"color":2889},"help wanted","008672",{"name":2856,"color":2857},{"name":2892,"color":2893},"p1-chore","BFD4F2",123,"All in one renderloop?","2024-09-13T14:27:45Z","https://github.com/Tresjs/rapier/issues/123",0.76092225,{"description":2900,"labels":2901,"number":2907,"owner":2862,"repository":2863,"state":2864,"title":2908,"updated_at":2909,"url":2910,"score":2911},"### Description\n\nThe current implementation is different from R3F, as you can see, the model is treat as a group (I personally prefer this approach) is best performance and cover most of the cases, BUT, not all for some specific cases maybe this is not a viable solution.\r\n\r\n\r\n\r\nR3F handling the models in which each geometry has a different RigidBody/Collider:\r\n\r\n\r\n\r\n\r\nI don't know if this will create future problems for uses cases or the people can workaround them. I don't know if this makes joints cases when models more difficult.\n\n### Suggested solution\n\nProper discussion and research\n\n### Alternative\n\nJust by the record, I like the current approach (but maybe I'm thinking in just low poly games)\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/rapier/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/rapier/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://rapier.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/rapier/issues) that reports the same bug to avoid creating a duplicate.",[2902,2903,2904],{"name":2888,"color":2889},{"name":2856,"color":2857},{"name":2905,"color":2906},"p2-to-be-discussed","97C1B1",127,"Handling models? ","2024-09-17T10:20:52Z","https://github.com/Tresjs/rapier/issues/127",0.76223856,{"description":2913,"labels":2914,"number":2928,"owner":2862,"repository":2929,"state":2864,"title":2930,"updated_at":2931,"url":2932,"score":2933},"### Describe the bug\r\n\r\nUsing ```\u003CTresCanvas>\u003C/TresCanvas>``` will cause errors: \r\nUncaught TypeError: l.default is not a function\r\n\r\n### Reproduction\r\n\r\nhttps://stackblitz.com/edit/tresjs-basic-is86dt?file=src%2FApp.vue\r\n\r\n### Steps to reproduce\r\n\r\nOpen reproduction link\r\nCheck console\r\n\r\n### System Info\r\n\r\n_No response_\r\n\r\n### Used Package Manager\r\n\r\nnpm\r\n\r\n### Code of Conduct\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2915,2918,2919,2922,2925],{"name":2916,"color":2917},"good first issue","7057ff",{"name":2888,"color":2889},{"name":2920,"color":2921},"PR welcome","2D76B0",{"name":2923,"color":2924},"p2-edge-case","ABCC40",{"name":2926,"color":2927},"has-workaround","AEA9C4",815,"tres","Error when using empty TresCanvas ","2024-09-06T14:16:26Z","https://github.com/Tresjs/tres/issues/815",0.7622712,{"description":2935,"labels":2936,"number":2943,"owner":2862,"repository":2879,"state":2864,"title":2944,"updated_at":2945,"url":2946,"score":2947},"### Describe the bug\r\n\r\nSome controls have long-standing bugs where changing props causes duplicate events to be added. \r\n\r\nE.g., flipping makeDefault in CameraControls causes duplicate events to be added. This will add 100 duplicate events:\r\n\r\n```\r\nconst makeDefault = shallowRef(true)\r\n// Flip `makeDefault` 100 times, add 100 events! Lol\r\nArray.from({length: 100}).fill(0).forEach(\r\n (_, i) => setTimeout(\r\n () => {\r\n makeDefault.value = !makeDefault.value\r\n }, i * 1000 / 25)\r\n)\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n \u003CTresLeches />\r\n \u003CTresCanvas v-bind=\"gl\">\r\n \u003CTresPerspectiveCamera :position=\"[5, 5, 5]\" />\r\n \u003CCameraControls\r\n v-bind=\"controlsState\"\r\n ref=\"controlsRef\"\r\n :make-default=\"makeDefault\"\r\n @change=\"onChange\"\r\n @start=\"onStart\"\r\n @end=\"onEnd\"\r\n />\r\n \r\n```\r\n \r\n \r\nThat means every time these emits would be expected to fire once, they're fired 100 times:\r\n\r\n```\r\nfunction addEventListeners() {\r\n useEventListener(controlsRef.value as any, 'update', () => {\r\n emit('change', controlsRef.value)\r\n invalidateOnDemand()\r\n })\r\n useEventListener(controlsRef.value as any, 'controlend', () => emit('end', controlsRef.value))\r\n useEventListener(controlsRef.value as any, 'controlstart', () => emit('start', controlsRef.value))\r\n}\r\n```\r\n\r\nThe problem is the anonymous functions:\r\n\r\nNote: If a particular anonymous function is in the list of event listeners registered for a certain target, and then later in the code, an identical anonymous function is given in an addEventListener call, the second function will also be added to the list of event listeners for that target.\r\n\r\nIndeed, anonymous functions are not identical even if defined using the same unchanging source-code called repeatedly, even if in a loop.\r\n\r\nRepeatedly defining the same unnamed function in such cases can be problematic. (See Memory issues, below.)\r\n\r\nhttps://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\nMDN Web Docs\r\n[EventTarget: addEventListener() method - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\r\nThe addEventListener() method of the EventTarget interface\r\nsets up a function that will be called whenever the specified event is delivered to the target.\r\n\r\n### Reproduction\r\n\r\nN/A\r\n\r\n### Steps to reproduce\r\n\r\n_No response_\r\n\r\n### System Info\r\n\r\n_No response_\r\n\r\n### Used Package Manager\r\n\r\nnpm\r\n\r\n### Code of Conduct\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2937,2940],{"name":2938,"color":2939},"bug","d73a4a",{"name":2941,"color":2942},"p3-minor-bug","F28C37",457,"useEventListener bug in controls","2024-07-24T06:42:25Z","https://github.com/Tresjs/cientos/issues/457",0.7635816,{"description":2949,"labels":2950,"number":2963,"owner":2862,"repository":2929,"state":2864,"title":2964,"updated_at":2965,"url":2966,"score":2967},"### Description\n\nAs a developer using TresJS, I would like to use `useTexture` and `useLoader` as true vue composition API composables rather than utility functions.\n\n## Current issue\n\nVue composables are special functions that encapsulate and reuse stateful logic (see official [definition](https://vuejs.org/guide/reusability/composables.html#what-is-a-composable)). And should only be called in `\u003Cscript setup>` or the `setup()` hook. They should also be called synchronously in these contexts. In some cases, you can also call them in lifecycle hooks like `onMounted()` (see usage [restrictions](https://vuejs.org/guide/reusability/composables.html#usage-restrictions)).\n\nThere is also this great video by @TheAlexLichter explaining the topic https://www.youtube.com/watch?v=N0QrFKBZuqA\n\nThis is going to be a big breaking change so we need to document accordingly.\n\n### `useTexture`\n\n> [!IMPORTANT]\n> We decided to move useTexture to cientos package https://github.com/Tresjs/cientos/issues/611\n\nIf we follow the official documentation we are promoting the usage of this composable as a function that returns the loaded texture. https://docs.tresjs.org/api/composables.html#usetexture\n\n```\nconst texture = await useTexture(['path/to/texture.png'])\n```\n\nThat texture is a plain object. So this \"composable\" acts more as a loader utility than an actual composable. Making it possible to be used on async operations like:\n\n```ts\nconst currentTexture = ref()\n\nwatch(state.texture, () -> {\n currentTexture.value = await useTexture(['path/to/texture.png'])\n})\n```\n\nhttps://github.com/Tresjs/tres/blob/e4f94e7d6584a151a8383cdab74495fe55948653/src/composables/useTexture/index.ts#L127-L161\n\n### `useLoader`\n\nExactly the same case, which then propagates to `@tresjs/cientos` `useGLTF` and `useFBX`\n\nhttps://github.com/Tresjs/tres/blob/e4f94e7d6584a151a8383cdab74495fe55948653/src/composables/useLoader/index.ts#L68-L101\n\n### Suggested solution\n\n### useTexture\n\nAdd a shallow state to hold the texture/s loaded.\n\n```ts\nexport function useTexture(\n paths, // Initial paths\n manager.\n) {\n const texture = shallowRef()\n const textureLoader = new TextureLoader(manager)\n\n\n async function loadTexture(path) {\n try {\n texture.value = await textureLoader.load(path)\n }\n catch() { }\n }\n}\n\n\nHow the user would use it:\n\n```ts\nconst { texture, loadTexture } = useTexture()\n\nawait loadTexture() \n\nwatch(texture.value, (newTexture) => {\n // do something about it.\n})\n```\n\n#### Considerations for API\n\n- How to handle single path vs multiple paths.\n- How to handle when paths are a PBRUseTextureMap object (Maybe another composable)\n\n\n### useLoader\n\nTBD\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [x] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [x] Read the [docs](https://tresjs.org/guide).\n- [x] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[2951,2954,2957,2960],{"name":2952,"color":2953},"p3-downstream-blocker","BFFC4F",{"name":2955,"color":2956},"p3-significant","2C78E3",{"name":2958,"color":2959},"breaking-change","5612D2",{"name":2961,"color":2962},"v5","EFC959",922,"Several composables are not truly composables.","2025-04-12T06:37:45Z","https://github.com/Tresjs/tres/issues/922",0.7673807,{"description":2969,"labels":2970,"number":2975,"owner":2862,"repository":2879,"state":2864,"title":2976,"updated_at":2977,"url":2978,"score":2979},"### Describe the bug\r\n\r\n`useAnimations` is not working when the project dependencies are installed using `npm` \r\n\r\n### Reproduction\r\n\r\nhttps://stackblitz.com/edit/stackblitz-starters-mrz7qx?file=src%2Fcomponents%2FTheExperience.vue\r\n\r\n### Steps to reproduce\r\n\r\n_No response_\r\n\r\n### System Info\r\n\r\n```shell\r\nystem:\r\n OS: Linux 5.0 undefined\r\n CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz\r\n Memory: 0 Bytes / 0 Bytes\r\n Shell: 1.0 - /bin/jsh\r\n Binaries:\r\n Node: 18.18.0 - /usr/local/bin/node\r\n Yarn: 1.22.19 - /usr/local/bin/yarn\r\n npm: 9.4.2 - /usr/local/bin/npm\r\n pnpm: 8.14.0 - /usr/local/bin/pnpm\r\n npmPackages:\r\n @tresjs/cientos: 3.7.0 => 3.7.0 \r\n @tresjs/core: 3.6.0 => 3.6.0 \r\n vite: ^5.0.11 => 5.0.11 \r\n\r\n```\r\n\r\n\r\n\r\n### Used Package Manager\r\n\r\nnpm\r\n\r\n### Code of Conduct\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\r\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2971,2972,2974],{"name":2938,"color":2939},{"name":2856,"color":2973},"D0359D",{"name":2876,"color":2877},326,"useAnimations does not work if project uses npm as package manager","2024-04-05T14:57:17Z","https://github.com/Tresjs/cientos/issues/326",0.77623934,{"description":2981,"labels":2982,"number":2986,"owner":2862,"repository":2929,"state":2864,"title":2987,"updated_at":2988,"url":2989,"score":2990},"### Description\n\nWebGPU [Three.js r171](https://github.com/mrdoob/three.js/releases) has been released and it’s a major milestone for WebGPU integration with third-party libraries such as React Three Fiber and bundlers like Vite or Next.js. We can now do this with zero configuration:\r\n\r\nThree.js Vanilla Three.js\r\n\r\n```ts\r\nimport * as THREE from 'three'\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n \r\nconst renderer = new WebGPURenderer()\r\n```\r\n\r\nR3F\r\n\r\n```ts\r\nimport { Canvas } from '@react-three/fiber'\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n \r\n\u003CCanvas gl={canvas => new WebGPURenderer({ canvas })}>\r\n```\n\n### Suggested solution\n\nEnable a `renderer` prop to override the renderer, restricted to canvas-based WebGL/WebGPU renderers.\r\n\r\n```vue\r\n\u003Cscript setup>\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n \u003CTresCanvas :renderer=\"WebGPURenderer\" />\r\n\u003C/template>\r\n```\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[2983,2984,2985],{"name":2853,"color":2854},{"name":2955,"color":2956},{"name":2961,"color":2962},883,"WebGPU support","2025-02-06T09:35:42Z","https://github.com/Tresjs/tres/issues/883",0.7801513,{"description":2992,"labels":2993,"number":1499,"owner":2862,"repository":2879,"state":2995,"title":2996,"updated_at":2997,"url":2998,"score":2999},"### Describe the bug\n\nUsing ScrollControls on the Nuxt playground gets broken \r\n\r\n\r\nhttps://github.com/Tresjs/cientos/assets/4699008/1a739f12-df88-4235-9793-f9859520c2e7\r\n\r\n\n\n### Reproduction\n\nhttps://deploy-preview-52--tresjs-playground.netlify.app/experiments/scroll-controls\n\n### Steps to reproduce\n\n_No response_\n\n### System Info\n\n```shell\nSystem:\r\n OS: macOS 13.4.1\r\n CPU: (8) arm64 Apple M1 Pro\r\n Memory: 100.84 MB / 16.00 GB\r\n Shell: 5.9 - /bin/zsh\r\n Binaries:\r\n Node: 18.14.1 - ~/.nvm/versions/node/v18.14.1/bin/node\r\n Yarn: 1.22.19 - /usr/local/bin/yarn\r\n npm: 9.3.1 - ~/.nvm/versions/node/v18.14.1/bin/npm\r\n Browsers:\r\n Brave Browser: 114.1.52.130\r\n Chrome: 114.0.5735.198\r\n Firefox: 114.0.2\r\n Safari: 16.5.1\r\n npmPackages:\r\n @tresjs/cientos: 2.3.0 => 2.3.0 \r\n @tresjs/core: ^2.4.0 => 2.4.0 \r\n @tresjs/nuxt: 1.0.0 => 1.0.0 \r\n @tresjs/post-processing: ^0.3.0 => 0.3.0\n```\n\n\n### Used Package Manager\n\npnpm\n\n### Code of Conduct\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2994],{"name":2938,"color":2939},"closed","ScrollControls not working correctly on Nuxt ","2023-07-12T06:05:12Z","https://github.com/Tresjs/cientos/issues/129",0.75182116,["Reactive",3001],{},["Set"],["ShallowReactive",3004],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fb99qEzvLur8BWYFRHXLHPe9j47LSGvuMwrFuARfbii0":-1},"/Tresjs/tres/791"]