# 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
```