# Instanties Het kernidee van **Tres** is een _autogenerated catalogue_ van alle ThreeJS-elementen. Deze catalogus wordt gegenereerd op basis van de ThreeJS-broncode en is dus altijd up-to-date. Wanneer je ThreeJS gebruikt, moet u de elementen importeren die u wilt gebruiken. Als je bijvoorbeeld een `PerspectiveCamera` wilt gebruiken, moet je deze importeren uit het `three`-pakket: ```js import { PerspectiveCamera } from 'three' const camera = new PerspectiveCamera(45, width / height, 1, 1000) ``` Met **Tres** hoef je niets te importeren, omdat **Tres** automatisch een **Vue-component genereert op basis van de drie objecten die je in PascalCase wilt gebruiken met een Tres-voorvoegsel**. Als je bijvoorbeeld een `PerspectiveCamera` wilt gebruiken, gebruikt je de component '``. ```vue ``` Dit betekent dat je dezelfde [documentatie](https://threejs.org/docs/) kunt gebruiken als wanneer je gewone ThreeJS gebruikt, maar met de kracht van Vue. ## Objecten declareren Als we dit argument volgen, zou je een instantie als volgt moeten kunnen opmaken: ❌ ```vue ``` Maar met **Tres** is dit niet nodig. U kunt eigenschappen declaratief als volgt definiëren: ✅ ```vue ``` ## Argumenten Sommige ThreeJS-objecten hebben argumenten, de constructor `PerspectiveCamera` heeft bijvoorbeeld de volgende argumenten: - `fov` - Camera frustum vertical field of view. - `aspect` - Camera frustum aspect ratio. - `near` - Camera frustum near plane. - `far` - Camera frustum far plane. Om deze argumenten door te geven aan de `TresPerspectiveCamera` component, kunt je de `args` prop gebruiken: ```vue ``` Dit is hetzelfde als dit doen: ```ts const camera = new PerspectiveCamera(45, 1, 0.1, 1000) ``` ## Eigenschappen Je kunt ook eigenschappen aan het component doorgeven. De `TresAmbientLight` heeft bijvoorbeeld een `intensity` eigenschap, dus je kunt deze als volgt aan de component doorgeven: ```html ``` ### Set Alle eigenschappen waarvan het onderliggende object een `.set()`-methode heeft, hebben een snelkoppeling om de waarde als een array te ontvangen. De `TresPerspectiveCamera` heeft bijvoorbeeld de eigenschap `position`, wat een `Vector3`-object is, dus je kunt deze als volgt aan de component doorgeven: ```html ``` Om transformatie-eigenschappen zoals positie, rotatie en schaal te specificeren, is er een afkorting beschikbaar waarmee u direct de assen kunt aangeven die u binnen de props wilt instellen. Een soortgelijke afkorting is ook beschikbaar voor de kleureigenschap. ```html ``` ::: warning Wanneer u de rotatie-eigenschap instelt in [three.js](https://threejs.org/docs/index.html#api/en/math/Euler), wordt standaard de volgorde 'XYZ' gebruikt. Het is belangrijk op te merken dat bij het instellen van de rotatie-eigenschap met de afkorting de volgorde waarin u de hoeken instelt van belang is. Voor meer informatie over dit onderwerp verwijzen wij je naar [Euler angles](https://en.wikipedia.org/wiki/Euler_angles) ::: ```vue ``` ### Scalar Een andere snelkoppeling die u kunt gebruiken is het doorgeven van een scalar waarde aan een eigenschap die een `Vector3`-object verwacht, waarbij u dezelfde waarde gebruikt voor de rest van de vector: ```html ✅ ``` ```html ✅ ``` ### Kleuren Je kan kleuren aan de componenten doorgeven met behulp van de `color` prop, die een string met de kleurnaam of een hexadecimale waarde accepteert: ```html ✅ ``` ```html ✅ ``` ### Methodes Sommige onderliggende eigenschappen zijn eigenlijk methoden, de `TresPerspectiveCamera` heeft een `lookAt`-methode die is overgenomen van [Object3d](https://threejs.org/docs/#api/en/core/Object3D.lookAt), dus je kan deze de coordinaten naar het component doorgeven als volgt: ```html ```