# Guía de migración Esta guía tiene como objetivo ayudarte con la migración de la v1 ha la mas reciente v2 de Tresjs ::: code-group ```bash [pnpm] pnpm update @tresjs/core ``` ```bash [npm] npm update @tresjs/core ``` ```bash [yarn] yarn upgrade @tresjs/core ``` ::: ## ¡Lo nuevo! ### Vue Custom Renderer **TresJs** ahora utiliza [Vue Custom Renderer](https://vuejs.org/api/custom-renderer.html#createrenderer) 🎉, vive dentro del componente `TresCanvas` que es el responsable de la creación del `WebGLRenderer` y la `Scene`. ### Soporte para Typescript y Intellisense 🦾 ![TresJs v2 Intellisense](/v2-intellisense.gif) Esta es probablemente una de las **funcionalidades mas solicitadas para TresJs**. Ahora los componentes de TresJs trabajan en conjunto con Volar, para proveerte intellisense y tipado. **TresJs** ahora genera los tipos de todos tus componentes al momento de hacer la compilación, basado en el catalogo de Threejs. Esto significa que podrás usar todos los componentes de Threejs y obtener intellisense ### TresJs Plugin es opcional 👍 El `TresPlugin` ahora es opcional. Tu podrás usar Tresjs importando lo directamente desde `tresjs/core`: ```vue ``` ::: tip Esta es la forma recomendada para obtener mejor rendimiento, tree-shaking será mejor porque solo se importarán los componentes que se usaran ::: ### TresScene no es necesario El componente `` queda deprecado, la escena ahora vive dentro de ``. Al comienzo, pensamos que podría ser una buena idea trabajar estos componentes de forma separada, pero pronto nos dimos cuenta que realmente no es util. Las escenas se crean de esta manera: ```vue ``` Para migrar tu código, debes remover el componente `` y colocar todos tus componentes de Tresjs dentro del componente padre `` ### `useCatalog` esta deprecado La función del `useCatalog` esta ahora deprecada para la v2. Ahora puedes importar todo el catalogo directamente desde `@tresjs/core` Puedes leer mas información aquí: [Extendiendo](/advanced/extending.md) Cambia de esto: ```ts {2,5,7} // Wrong ❌ import { useCatalog } from '@tresjs/core' import { TextGeometry } from 'three/addons/geometries/TextGeometry' const { extend } = useCatalog() extend({ TextGeometry }) ``` A esto: ```ts {2,6} // Correct ✅ import { extend } from '@tresjs/core' import { TextGeometry } from 'three/addons/geometries/TextGeometry' // Add the element to the catalogue extend({ TextGeometry }) ``` ### En los modelos el `getModel` fue deprecado La función `getModel` fue deprecada. Ahora puedes usar el modelo directamente Cambia de esto: ```vue {7,9-12} // Wrong ❌ ``` A esto: ```vue {7,9-12} // Correct ✅ ``` ### Las cámaras necesitan vivir antes de cualquier control🎥 El componente `TresOrbitControls` necesita ser colocado después de la cámara. Esto es así debido a que los componentes `controls` necesitan la cámara para trabajar de manera correcta Cambia de esto: ```vue {3,5} // Wrong ❌ ``` A esto: ```vue {3,5} // Correct ✅ ```