\n\n### Suggested solution\n\nSimilar to: [catmullromline](https://github.com/pmndrs/drei#catmullromline)\n\n### Alternative\n\nAny other alternative is considered\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/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.",[],222,"closed","catmullromline ","2023-10-05T22:50:41Z","https://github.com/Tresjs/cientos/issues/222",0.75043523,{"description":2902,"labels":2903,"number":2904,"owner":2874,"repository":2905,"state":2896,"title":2906,"updated_at":2907,"url":2908,"score":2909},"# Goal\r\nGenerate three-shakeable components on build time to avoid the need for a catalog of global components. This will be probably a BREAKING CHANGE, especially for cientos.\r\n\r\n```vue\r\n\u003Cscript setup lang=\"ts\">\r\n\r\nimport { TresCanvas, TresPerspectiveCamera, TresScene, TresAmbienLight, useRenderLoop } from '@tresjs/core' \r\nimport { OrbitControls, TransformControls } from '@tresjs/cientos'\r\n\r\nconst sphereRef = ref()\r\n\r\nconst { onLoop } = useRenderLoop()\r\n\r\nonLoop(({ elapsed }) => {\r\n sphereRef.value.position.y += Math.sin(elapsed * 0.01) * 0.1\r\n})\r\n\u003C/script>\r\n\u003Ctemplate>\r\n \u003CTresCanvas v-bind=\"state\">\r\n \u003CTresPerspectiveCamera :position=\"[5, 5, 5]\" :fov=\"45\" :near=\"0.1\" :far=\"1000\" :look-at=\"[-8, 3, -3]\" />\r\n \u003COrbitControls make-default />\r\n \u003CTresScene>\r\n \u003CTresAmbientLight :intensity=\"0.5\" />\r\n \u003CTransformControls mode=\"scale\" :object=\"sphereRef\" />\r\n\r\n \u003CTresMesh ref=\"sphereRef\" :position=\"[0, 4, 0]\" cast-shadow>\r\n \u003CTresSphereGeometry />\r\n \u003CTresMeshToonMaterial color=\"#FBB03B\" />\r\n \u003C!-- \u003CTresMeshToonMaterial color=\"#FBB03B\" /> -->\r\n \u003C/TresMesh>\r\n \u003CTresDirectionalLight :position=\"[0, 8, 4]\" :intensity=\"0.7\" cast-shadow />\r\n \u003CTresMesh :rotation=\"[-Math.PI / 2, 0, 0]\" receive-shadow>\r\n \u003CTresPlaneGeometry :args=\"[10, 10, 10, 10]\" />\r\n \u003CTresMeshToonMaterial />\r\n \u003C/TresMesh>\r\n \u003CTresDirectionalLight :position=\"[0, 2, 4]\" :intensity=\"1\" cast-shadow />\r\n \u003C/TresScene>\r\n \u003C/TresCanvas>\r\n\u003C/template>\r\n\r\n```\r\n\r\n- [ ] Using a vite plugin to generate all the components from THREE instances (Except Scene)\r\n- [ ] Each component should locally register components on the slots (is possible?)\r\n- [ ] Typescript Definition for the components generated from the ThreeJS instance\r\n- [ ] Include them in the final bundle\r\n- [ ] Strategy for replacing catalog `extend` \r\n- [ ] Update the way `cientos` extends the catalog\r\n",[],104,"tres","Generate instances on build-time rather than run-time","2023-03-13T14:26:46Z","https://github.com/Tresjs/tres/issues/104",0.75246567,{"description":2911,"labels":2912,"number":2914,"owner":2874,"repository":2905,"state":2896,"title":2915,"updated_at":2916,"url":2917,"score":2918},"The current implementation allows extending the catalog inside the core but not in the build of `cientos` or any other external pkg\r\n\r\nThe idea would be to refactor the OrbitControls on `cientos` to be able to extend the catalog. \r\n\r\nThis opens the door so anyone can create TresJS Plugin (this could be interesting to you @CarelessCourage )",[2913],{"name":2868,"color":2869},25,"Extend catalog in `cientos` ","2022-12-08T10:10:57Z","https://github.com/Tresjs/tres/issues/25",0.77180666,{"description":2920,"labels":2921,"number":2923,"owner":2874,"repository":2905,"state":2896,"title":2924,"updated_at":2925,"url":2926,"score":2927},"**Is your feature request related to a problem? Please describe.**\r\nIn three is possible to group several mesh instances https://threejs.org/docs/#api/en/objects/Group \r\n\r\n**Describe the solution you'd like**\r\nAdd support for groups on InstanceCreator\r\n\r\n",[2922],{"name":2868,"color":2869},72,"Support for Group on Instance Creator","2023-01-10T14:32:52Z","https://github.com/Tresjs/tres/issues/72",0.7732578,{"description":2929,"labels":2930,"number":2934,"owner":2874,"repository":2905,"state":2896,"title":2935,"updated_at":2936,"url":2937,"score":2938},"**Is your feature request related to a problem? Please describe.**\r\nIt would be nice if the existance of elements inside a scene could be defined programatically.\r\n\r\n**Describe the solution you'd like**\r\nMake `v-if` work on Tres-Components in the template.\r\n`\u003CTresMesh v-if=\"visible\" ... />`\r\n\r\n**Suggested solution**\r\n`nodeOp.ts` should take care about the removal of the element from the scene.\r\n\r\n**Additional context**\r\nWe should make sure geometries and materials are properly disposed when removing nodes from the scene. Furthermore, it is important that in some cases, geometries and materials should not be disposed. This is the case when the geometry or material is not declared via component but in a raw-Three.js way and passed via prop to the mesh.\r\n",[2931],{"name":2932,"color":2933},"performance","3F1D85",188,"v-if on components","2023-04-12T09:44:35Z","https://github.com/Tresjs/tres/issues/188",0.7748775,{"description":2940,"labels":2941,"number":2943,"owner":2874,"repository":2905,"state":2896,"title":2944,"updated_at":2945,"url":2946,"score":2947},"**Is your feature request related to a problem? Please describe.**\r\nAt the moment there is no working way of implementing particles using `\u003CTresBufferGeometry />`, especially attributes.\r\n\r\n**Describe the solution you'd like**\r\nA way of replicate this\r\n\r\n```\r\nconst firefliesGeometry = new THREE.BufferGeometry()\r\nconst firefliesCount = 30\r\nconst positionArray = new Float32Array(firefliesCount * 3)\r\n\r\nfor(let i = 0; i \u003C firefliesCount; i++)\r\n{\r\n positionArray[i * 3 + 0] = Math.random() * 4\r\n positionArray[i * 3 + 1] = Math.random() * 4\r\n positionArray[i * 3 + 2] = Math.random() * 4\r\n}\r\n\r\nfirefliesGeometry.setAttribute('position', new THREE.BufferAttribute(positionArray, 3))\r\n\r\n// Material\r\nconst firefliesMaterial = new THREE.PointsMaterial({ size: 0.1, sizeAttenuation: true })\r\n\r\nconst fireflies = new THREE.Points(firefliesGeometry, firefliesMaterial)\r\nscene.add(fireflies)\r\n``` \r\n\r\n\r\n**Suggested solution**\r\nSimilar to R3F \r\n\r\n```\r\n \u003Cpoints ref={geom} position={[0, 10, 0]} rotation={[-Math.PI / 4, 0, Math.PI / 6]}>\r\n \u003CbufferGeometry>\r\n \u003CbufferAttribute attachObject={[\"attributes\", \"position\"]} count={coords.length / 3} array={coords} itemSize={3} />\r\n \u003CbufferAttribute attachObject={[\"attributes\", \"size\"]} count={sizes.length} array={sizes} itemSize={1} />\r\n \u003C/bufferGeometry>\r\n \u003CdotMaterial />\r\n \u003C/points>\r\n```\r\n\r\n**Additional context**\r\nAdd any other context or screenshots about the feature request here.\r\n",[2942],{"name":2868,"color":2869},56,"BufferGeometry and BufferAttribute support","2022-12-22T10:31:58Z","https://github.com/Tresjs/tres/issues/56",0.7817034,{"description":2949,"labels":2950,"number":1562,"owner":2874,"repository":2875,"state":2896,"title":2954,"updated_at":2955,"url":2956,"score":2957},"**Is your feature request related to a problem? Please describe.**\r\nShining floors everywhere!!\r\n\r\n**Describe the solution you'd like**\r\nSame concept as R3F Drei https://github.com/pmndrs/drei#meshreflectormaterial \r\n\r\n**Suggested solution**\r\nShaders\r\n\r\n",[2951],{"name":2952,"color":2953},"duplicate","cfd3d7","Mesh Reflector Material ","2024-04-05T20:22:44Z","https://github.com/Tresjs/cientos/issues/5",0.7817464,{"description":2959,"labels":2960,"number":2451,"owner":2874,"repository":2905,"state":2896,"title":2961,"updated_at":2962,"url":2963,"score":2891},"Atm, is only possible to extend the catalogue when installing the `@tresjs/core` plugin like this:\r\n\r\n```\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\r\n\r\napp.use(plugin, {\r\n extends: {\r\n OrbitControls,\r\n },\r\n})\r\n```\r\n\r\nBut it's likely that packages like `cientos` would need to extend the initial catalogue dynamically to add new components, for example `TresTextGeometry` from `three/examples/jsm/geometries/TextGeometry` for #15 \r\n\r\nI will investigate if there is away to add more components o renderer on the fly",[],"Dynamically extend catalogue","2022-12-05T08:18:23Z","https://github.com/Tresjs/tres/issues/16",["Reactive",2965],{},["Set"],["ShallowReactive",2968],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f0rIX7Zlik1efnFRGpDwr4O-6iY2Vuxk8NLsN-BP_7q4":-1},"/Tresjs/tres/60"]