Skip to content

OrbitControls

OrbitControls est un contrôleur de caméra qui vous permet d'orbiter autour d'une cible. C'est une excellente façon d'explorer votre scène.

Cependant, cela ne fait pas partie du cœur de ThreeJS. Par conséquent, pour l'utiliser, vous devrez l'importer depuis le module three/addons/controls/OrbitControls.

Cela crée un problème car TresJS crée automatiquement un catalogue du cœur de ThreeJS afin que vous puissiez les utiliser comme composants.

Heureusement, TresJS offre un moyen d'étendre le catalogue de composants. Vous pouvez le faire en utilisant la méthode extend de la bibliothèque principale.

Pour plus d'informations sur la façon d'étendre votre catalogue TresJS, consultez la section extension.

Usage de OrbitControls

Pour utiliser OrbitControls, vous devez d'abord importer le module three/addons/controls/OrbitControls.

js
import { OrbitControls } from 'three/addons/controls/OrbitControls'

Ensuite, vous devez étendre le catalogue de composants à l'aide de la méthode extend.

js
import { extend } from '@tresjs/core'
import { OrbitControls } from 'three/addons/controls/OrbitControls'

extend({ OrbitControls })

Vous pouvez maintenant utiliser le composant TresOrbitControls dans votre scène.

vue
<template>
  <TresCanvas
    shadows
    alpha
  >
    <TresPerspectiveCamera :args="[45, 1, 0.1, 1000]" />
    <TresOrbitControls
      v-if="state.renderer"
      :args="[state.camera, state.renderer?.domElement]"
    />
  </TresCanvas>
</template>

Étant donné que OrbitControls a besoin d'une référence à la caméra et au moteur de rendu, vous devez les transmettre comme arguments.

Vous pouvez utiliser le composable useTres pour obtenir la caméra et le moteur de rendu.

ts
import { useTres } from '@tresjs/core'

const { state } = useTres()

Le code final ressemblerait donc à ceci :

vue
<script setup lang="ts">
import { extend, useTres } from '@tresjs/core'
import { OrbitControls } from 'three/addons/controls/OrbitControls'

extend({ OrbitControls })

const { state } = useTres()
</script>

<template>
  <TresCanvas
    shadows
    alpha
  >
    <TresPerspectiveCamera :args="[45, 1, 0.1, 1000]" />
    <TresOrbitControls
      v-if="state.renderer"
      :args="[state.camera, state.renderer?.domElement]"
    />
  </TresCanvas>
</template>

OrbitControls de cientos

C’est là que commence la partie intéressante. ✨ Le package cientos fournit un composant appelé <OrbitControls /> qui est un wrapper pour OrbitControls du module three-stdlib.

Le meilleur? Vous n'avez pas besoin de développer le catalogue ni de transmettre d'arguments. Cela fonctionne tout simplement. 💯

vue
<template>
  <TresCanvas
    shadows
    alpha
  >
    <TresPerspectiveCamera :args="[45, 1, 0.1, 1000]" />
    <OrbitControls />
  </TresCanvas>
</template>