Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: german translations #548

Merged
merged 93 commits into from
Mar 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
b61e246
initial commit: copy and change `es` folder
DennisSmuda Feb 9, 2024
86f53b8
feat: translate "Your First Scene" page
DennisSmuda Feb 9, 2024
298cd6c
feat: translate "Getting Started" page
DennisSmuda Feb 10, 2024
c0f1c25
feat: translate "Introduction" (index) page
DennisSmuda Feb 10, 2024
ab8be75
chore: whoopsie Templatecompiler instead of "Vorlagencompiler"
DennisSmuda Feb 10, 2024
1a94aba
feat: translate "Migration Guide"
DennisSmuda Feb 10, 2024
a247b66
feat: translate "Nuxt Module"
DennisSmuda Feb 10, 2024
371f634
feat: translate "Troubleshooting Guide"
DennisSmuda Feb 10, 2024
d1223e3
feat: translate "Tres-Canvas"
DennisSmuda Feb 10, 2024
e3210b3
feat: translate "Instances, Arguments and Props"
DennisSmuda Feb 10, 2024
2de7c0e
feat: translate "Composables"
DennisSmuda Feb 10, 2024
1b072d5
feat: translate "Events"
DennisSmuda Feb 10, 2024
dce5bd0
feat: translate "Extending"
DennisSmuda Feb 10, 2024
e2e496d
feat: translate "Primitive"
DennisSmuda Feb 10, 2024
342212c
feat: translate "Caveats"
DennisSmuda Feb 10, 2024
5af4002
feat: translate "Devtools"
DennisSmuda Feb 10, 2024
d9d50ce
chore: add missing directives pages
DennisSmuda Feb 10, 2024
c0bfea0
feat: translate "Basic Animations"
DennisSmuda Feb 10, 2024
85cd472
chore: add missing team page
DennisSmuda Feb 10, 2024
91dfc48
feat: translate "Groups"
DennisSmuda Feb 11, 2024
8af37ca
feat: translate "Light and Shadows"
DennisSmuda Feb 11, 2024
a96a993
feat: translate "Load Models"
DennisSmuda Feb 11, 2024
6d0a9b8
feat: translate "Load Textures"
DennisSmuda Feb 11, 2024
5bad42e
feat: translate "Load Text"
DennisSmuda Feb 11, 2024
91f510b
feat: translate "OrbitControls"
DennisSmuda Feb 11, 2024
59de67e
feat: translate "Shaders"
DennisSmuda Feb 11, 2024
52f47b4
feat: translate "v-light + v-log"
DennisSmuda Feb 11, 2024
03fce4c
feat: translate "v-always-look-at"
DennisSmuda Feb 11, 2024
c92cdab
feat: translate "v-distance-to"
DennisSmuda Feb 11, 2024
1f00be2
chore: fix links + teampage
DennisSmuda Feb 11, 2024
6d2a822
fix: dont translate cientos 🙈
DennisSmuda Feb 11, 2024
afc19de
chore: incorporate feedback
DennisSmuda Feb 12, 2024
5498cce
chore: incorporate some more feedback
DennisSmuda Feb 12, 2024
dc5c1ac
Update docs/.vitepress/config/de.ts
DennisSmuda Feb 12, 2024
5f1c09f
Update docs/de/api/tres-canvas.md
DennisSmuda Feb 12, 2024
7e30b84
Update docs/de/api/instances-arguments-and-props.md
DennisSmuda Feb 12, 2024
acff351
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
56196e0
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
2973cf0
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
a5b9e30
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
615111f
Update docs/de/api/instances-arguments-and-props.md
DennisSmuda Feb 12, 2024
a637c8e
Update docs/de/api/instances-arguments-and-props.md
DennisSmuda Feb 12, 2024
0be7ead
Update docs/de/api/instances-arguments-and-props.md
DennisSmuda Feb 12, 2024
3868bd0
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
3fc4629
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
c5250a3
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
070f779
Update docs/de/advanced/caveats.md
DennisSmuda Feb 12, 2024
bc6f274
Update docs/de/advanced/extending.md
DennisSmuda Feb 12, 2024
8b60917
Update docs/de/advanced/extending.md
DennisSmuda Feb 12, 2024
45c6960
Update docs/de/advanced/primitive.md
DennisSmuda Feb 12, 2024
33f87bf
Update docs/de/api/composables.md
DennisSmuda Feb 12, 2024
76a2be3
Update docs/de/api/instances-arguments-and-props.md
DennisSmuda Feb 12, 2024
1e12237
Update docs/de/api/events.md
DennisSmuda Feb 12, 2024
8a1e805
chore: ThreeJS -> Three.js
DennisSmuda Feb 12, 2024
d125974
merge
DennisSmuda Feb 12, 2024
2311363
chore: incorporate some more feedback
DennisSmuda Feb 12, 2024
febb8d7
chore: missed a couple
DennisSmuda Feb 12, 2024
a7b1369
feat: rework /guide pages
DennisSmuda Feb 24, 2024
7a77487
feat: rework /api pages
DennisSmuda Feb 24, 2024
ae09cff
feat: rework /directives and devtools pages
DennisSmuda Feb 24, 2024
fa882bf
Update docs/de/examples/lights-shadows.md
DennisSmuda Feb 24, 2024
6cbe94e
Update docs/de/examples/basic-animations.md
DennisSmuda Feb 24, 2024
9af0698
Update docs/de/examples/basic-animations.md
DennisSmuda Feb 24, 2024
6789698
Update docs/de/examples/basic-animations.md
DennisSmuda Feb 24, 2024
5f235e3
Update docs/de/directives/v-distance-to.md
DennisSmuda Feb 24, 2024
dc2aad9
Update docs/de/directives/v-always-look-at.md
DennisSmuda Feb 24, 2024
f63aa02
feat: rework /examples pages
DennisSmuda Feb 24, 2024
267aa52
chore: fix team page
DennisSmuda Feb 24, 2024
41ea623
Update docs/de/guide/troubleshooting.md
DennisSmuda Feb 28, 2024
1e15431
Update docs/de/guide/your-first-scene.md
DennisSmuda Feb 28, 2024
7e943f2
Update docs/de/guide/troubleshooting.md
DennisSmuda Feb 28, 2024
e288a83
Update docs/de/guide/troubleshooting.md
DennisSmuda Feb 28, 2024
ebaf5a0
Update docs/de/guide/troubleshooting.md
DennisSmuda Feb 28, 2024
b674db9
Update docs/de/examples/load-models.md
DennisSmuda Feb 28, 2024
e2a46b1
Update docs/de/examples/load-models.md
DennisSmuda Feb 28, 2024
5b80cf8
Update docs/de/examples/basic-animations.md
DennisSmuda Feb 28, 2024
baca2ed
Update docs/de/examples/load-models.md
DennisSmuda Feb 28, 2024
19a6db1
Update docs/de/examples/basic-animations.md
DennisSmuda Feb 28, 2024
f6c40d4
Update docs/de/directives/v-always-look-at.md
DennisSmuda Feb 28, 2024
a777931
Update docs/de/api/events.md
DennisSmuda Feb 28, 2024
739c77c
Update docs/de/debug/devtools.md
DennisSmuda Feb 28, 2024
29fa3ed
Update docs/de/directives/v-always-look-at.md
DennisSmuda Feb 28, 2024
bc3dad1
Update docs/de/examples/load-models.md
DennisSmuda Feb 28, 2024
d151153
Update docs/de/examples/load-textures.md
DennisSmuda Feb 28, 2024
9bf7832
Update docs/de/examples/orbit-controls.md
DennisSmuda Feb 28, 2024
5cb9bb4
Update docs/de/examples/orbit-controls.md
DennisSmuda Feb 28, 2024
c80eb18
Update docs/de/examples/orbit-controls.md
DennisSmuda Feb 28, 2024
c8cb5a8
Update docs/de/examples/shaders.md
DennisSmuda Feb 28, 2024
6ee5485
Update docs/de/api/composables.md
DennisSmuda Feb 28, 2024
d8059f4
incorporate feedback
DennisSmuda Mar 1, 2024
211132c
Merge remote-tracking branch 'refs/remotes/origin/docs/translations-d…
DennisSmuda Mar 1, 2024
94a9a84
feat: more improvements
DennisSmuda Mar 1, 2024
fd45789
chore: nicer german sounding sentences - use denglish words like prop…
DennisSmuda Mar 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 146 additions & 0 deletions docs/.vitepress/config/de.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
import type { DefaultTheme, LocaleSpecificConfig } from 'vitepress'

export const deConfig: LocaleSpecificConfig<DefaultTheme.Config> = {
themeConfig: {
editLink: {
pattern: 'https://github.com/tresjs/tres/edit/main/packages/docs/:path',
text: 'Änderungen an dieser Seite vorschlagen',
},
sidebar: [
{
text: 'Anleitung',
items: [
// Dies zeigt die Seite `/guide/index.md`.
{ text: 'Einführung', link: '/de/guide/' },
{ text: 'Loslegen', link: '/de/guide/getting-started' },
{ text: 'Deine erste Szene', link: '/de/guide/your-first-scene' },
{ text: 'Nuxt', link: '/de/guide/nuxt' },
{ text: 'Fehlerbehebung', link: '/de/guide/troubleshooting' },
{ text: 'Migration von v1', link: '/de/guide/migration-guide' },
],
},
{
text: 'API',
items: [
{ text: 'TresCanvas', link: '/de/api/tres-canvas' },
{
text: 'Instanzen, Argumente und Props',
link: '/de/api/instances-arguments-and-props',
},
{
text: 'Composables',
link: '/de/api/composables',
},
{
text: 'Events',
link: '/de/api/events',
},
],
},

{
text: 'Fortgeschritten',
items: [
{ text: 'Erweitern', link: '/de/advanced/extending' },
{ text: 'Primitive', link: '/de/advanced/primitive' },
{
text: 'Warnhinweise',
link: '/de/advanced/caveats',
},
],
},
{
text: 'Debugging',
items: [
{ text: 'Entwicklungstools', link: '/de/debug/devtools' },
],
},
{
text: 'Beispiele',
collapsed: true,
items: [
{ text: 'Orbit-Controls', link: '/de/examples/orbit-controls' },
{ text: 'Einfache Animationen', link: '/de/examples/basic-animations' },
{ text: 'Gruppen', link: '/de/examples/groups' },
{ text: 'Texturen laden', link: '/de/examples/load-textures' },
{ text: 'Modelle laden', link: '/de/examples/load-models' },
{ text: 'Text laden', link: '/de/examples/text-3d' },
{ text: 'Lichter und Schatten', link: '/de/examples/lights-shadows' },
{ text: 'Shaders', link: '/de/examples/shaders' },
],
},
{
text: 'Direktiven',
collapsed: true,
items: [
{ text: 'v-log', link: '/de/directives/v-log' },
{ text: 'v-light-helper', link: '/de/directives/v-light-helper' },
{ text: 'v-always-look-at', link: '/de/directives/v-always-look-at' },
{ text: 'v-distance-to', link: '/de/directives/v-distance-to' },
],
},
{
text: 'Ökosystem',
items: [
{
text: 'Cientos 💛',
link: 'https://cientos.tresjs.org/',
},
{
text: 'Nuxt-Modul',
link: 'https://github.com/Tresjs/nuxt',
},
{
text: 'TresLeches 🍰',
link: 'https://tresleches.tresjs.org/',
},
{
text: 'Nachbearbeitung (Demnächst)',
},
],
},
],
nav: [
{ text: 'Anleitung', link: '/de/guide/' },
{ text: 'API', link: '/de/api/tres-canvas' },
/* { text: 'API', link: '/de/api/' },
{ text: 'Konfiguration', link: '/de/config/' }, */
{
text: 'Ressourcen',
items: [
{ text: 'Team', link: '/de/team' },
{ text: 'Versionen', link: 'https://github.com/Tresjs/tres/releases' },
{
text: 'Spielplatz',
link: 'https://playground.tresjs.org/',
},
{
text: 'Github',
link: 'https://github.com/Tresjs/tres/',
},
{
text: 'Probleme',
link: 'https://github.com/Tresjs/tres/issues',
},
{
text: 'Ökosystem',
items: [
{
text: 'Cientos 💛',
link: 'https://cientos.tresjs.org/',
},
{
text: 'Nuxt-Modul',
link: 'https://github.com/Tresjs/nuxt',
},
{
text: 'TresLeches 🍰',
link: 'https://tresleches.tresjs.org/',
},
],
},
],
},
],
},
}
2 changes: 2 additions & 0 deletions docs/.vitepress/config/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { defineConfig } from 'vitepress'
import { enConfig } from './en'
import { esConfig } from './es'
import { deConfig } from './de'
import { sharedConfig } from './shared'

/* import { zhConfig } from './zh' */
Expand All @@ -11,6 +12,7 @@ export default defineConfig({
locales: {
root: { label: 'English', lang: 'en-US', link: '/', ...enConfig },
es: { label: 'Español', lang: 'es-ES', link: '/es/', ...esConfig },
de: { label: 'Deutsch', lang: 'de-DE', link: '/de/', ...deConfig },
/* zh: { label: '简体中文', lang: 'zh-CN', link: '/zh/', ...zhConfig }, */
},
})
4 changes: 2 additions & 2 deletions docs/api/composables.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The `onLoop` callback receives an object with the following properties based on
- `delta`: The delta time between the current and the last frame. This is the time in seconds since the last frame.
- `elapsed`: The elapsed time since the start of the render loop.

This composable is based on `useRafFn` from [vueuse](https://vueuse.org/core/useRafFn/). Thanks to [@wheatjs](https://github.com/orgs/Tresjs/people/wheatjs) for the amazing contribution.
This composable is based on `useRafFn` from [vueuse](https://vueuse.org/core/useRafFn/). Thanks to [@wheatjs](https://github.com/wheatjs) for the amazing contribution.

### Before and after render

Expand Down Expand Up @@ -200,7 +200,7 @@ const { camera, renderer, camera, cameras } = useTresContext()
```

::: warning
`useTresContext` can be only be used inside of a `TresCanvas` since `TresCanvas` acts as the provider for the context data. Use [the context exposed by TresCanvas](tres-canvas#exposed-public-properties) if you find yourself needing it in parent components of TresCanvas.
`useTresContext` can be only be used inside of a `TresCanvas` since `TresCanvas` acts as the provider for the context data. Use [the context exposed by TresCanvas](tres-canvas#exposed-public-properties) if you find yourself needing it in parent components of TresCanvas.
:::

```vue
Expand Down
121 changes: 121 additions & 0 deletions docs/de/advanced/caveats.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Warnhinweise 😱

Unser Ziel ist es, eine einfache Möglichkeit zu bieten, Three.js in Vue.js mit der bestmöglichen Entwicklererfahrung zu nutzen. Es gibt jedoch einige Vorbehalte, derer du dir bewusst sein solltest.

## ~~HMR und Three.js~~

:::info

Dies wurde in **TresJS** v1.7.0 🎉 behoben. Jetzt kannst du HMR nutzen, ohne die Seite neu laden zu müssen 🥹.

:::

Hot Module Replacement (HMR) ist eine Funktion, die es dir erlaubt, deinen Code zu aktualisieren, ohne die Seite neu zu laden. Dies ist eine großartige Funktion, die die Entwicklung viel schneller macht. **TresJS** verwendet [Vite](https://vitejs.dev/). Es ist jedoch wirklich kompliziert, dies korrekt mit Three.js zu bewerkstelligen.

Warum? Weil Tres die Szene deklarativ aufbaut. Das bedeutet, dass es die Instanz erstellt und der Szene hinzufügt, wenn die Komponente gemountet wird. Die Komplexität liegt darin zu wissen, wann die Instanz aus der Szene entfernt und wann sie wieder hinzugefügt werden soll.

Obwohl ein minimaler Aufräummechanismus implementiert wurde, ist er nicht perfekt. Das bedeutet, dass du manchmal die Seite neu laden musst, um die Änderungen korrekt zu sehen, insbesondere wenn du Instanzen über [Template Refs](https://v3.vuejs.org/guide/component-template-refs.html) referenzierst.


```vue
<script setup lang="ts">
const boxRef: Ref<TresInstance | null> = ref(null)

onLoop(({ _delta, elapsed }) => {
if (boxRef.value) {
boxRef.value.rotation.y += 0.01
boxRef.value.rotation.z = elapsed * 0.2
}
})
</script>

<template>
<TresMesh
ref="boxRef"
:scale="1"
cast-shadow
>
<TresBoxGeometry :args="[1, 1, 1]" />
<TresMeshStandardMaterial color="teal" />
</TresMesh>
</template>
```

Wenn du eine Änderung an der `color`-Property bei Instanzen der `TresMeshStandardMaterial`-Komponente vornimmst, wirst du sehen, dass die Änderung angewendet wird, aber die Rotation nicht mehr funktioniert. Dies liegt daran, dass die Instanz entfernt und neu erstellt wird.

:::tip
Als **Faustregel**, solltest du die Seite neu laden, wenn du die von dir vorgenommenen Änderungen nicht siehst.
:::

Wir arbeiten bereits an einer besseren Lösung dafür 😁. Wenn du eine Idee hast, wie man dies lösen könnte, lass es uns bitte wissen.

Du kannst der Diskussion in [HMR Disposal Discussion](https://github.com/Tresjs/tres/issues/23) folgen.

## Reaktivität

Wir alle lieben Reaktivität 💚. Es ist eines der mächtigsten Features von Vue.js. Allerdings sollten wir vorsichtig sein, wenn wir Three.js verwenden.

Die Reaktivität von Vue basiert auf [Proxies](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Proxy). Dies ermöglicht es Vue 3, automatisch Änderungen an Datenobjekten zu verfolgen und die entsprechenden DOM-Elemente jedes Mal zu aktualisieren, wenn sich die Daten ändern.

Da wir eine Szene rendern und sie bei jedem Frame (60FPS) aktualisieren, bedeutet das, dass wir die Szene 60 Mal pro Sekunde aktualisieren. Wenn das zu aktualisierende Objekt reaktiv ist, wird Vue versuchen, dieses Objekt so oft zu aktualisieren. Das ist keine gute Idee 😅 und wird sich negativ auf die Performance auswirken.

Hier ist ein Benchmark, der den Unterschied zwischen der Verwendung eines Proxy-Objekts und eines einfachen Objekts zeigt.

<figure>
<img src="/proxy-benchmark.png" alt="Proxy vs Plain" style="width:100%">
<figcaption>Fig.1 - Ausführungen pro Sekunde: Objekt vs Proxy. </figcaption>
</figure>

Quelle: [Proxy vs Plain Object](https://www.measurethat.net/Benchmarks/Show/12503/0/object-vs-proxy-vs-proxy-setter)

Falls es wirklich notwendig ist, Reaktivität zu nutzen, verwende [shallowRef](https://vuejs.org/api/reactivity-advanced.html#shallowref).

Im Gegensatz zu `ref()` wird der innere Wert eines shallow Ref gespeichert und so wie er ist exponiert. Nur der Zugriff auf `.value` ist reaktiv. Quelle: [Vue.js Docs](https://vuejs.org/api/reactivity-advanced.html#shallowref)

### Beispiel

❌ Falsch

```vue
<script setup lang="ts">
const position = reactive({ x: 0, y: 0, z: 0 })

onLoop(({ _delta, elapsed }) => {
position.x = Math.sin(elapsed * 0.1) * 3
})
</script>

<template>
<TresMesh
:position="position"
cast-shadow
>
<TresBoxGeometry :args="[1, 1, 1]" />
<TresMeshStandardMaterial color="teal" />
</TresMesh>
</template>
```

✅ Richtig

```vue
<script setup lang="ts">
const position = { x: 0, y: 0, z: 0 }
const boxRef: ShallowRef<TresInstance | null> = shallowRef(null)

onLoop(({ _delta, elapsed }) => {
boxRef.value.position.x = Math.sin(elapsed * 0.1) * 3
})
</script>

<template>
<TresMesh
ref="boxRef"
:position="position"
cast-shadow
>
<TresBoxGeometry :args="[1, 1, 1]" />
<TresMeshStandardMaterial color="teal" />
</TresMesh>
</template>
```
44 changes: 44 additions & 0 deletions docs/de/advanced/extending.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Erweitern 🔌

Tres bietet grundlegende Funktionalitäten, aber es ist einfach, Drittanbieterelemente hinzuzufügen und den internen Katalog zu erweitern.

Die meisten 3D-Szenen nutzen `OrbitControls`, die allerdings nicht Teil der Hauptbibliothek sind. Um es zu deinem Projekt hinzufügen, kannst du es aus dem Modul `three/addons/controls/OrbitControls` importieren.

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

## Ein Element dynamisch erweitern

Oder du erweiterst den Katalog dynamisch innerhalb deiner Komponente:

```vue {2,3,4,7,13,15}
<script setup lang="ts">
import { extend } from '@tresjs/core'
import { OrbitControls } from 'three/addons/controls/OrbitControls'
import { TextGeometry } from 'three/addons/geometries/TextGeometry'

// Element dem Katalog hinzufügen
extend({ TextGeometry, OrbitControls })
</script>

<template>
<TresCanvas
shadows
alpha
>
<TresPerspectiveCamera :position="[5, 5, 5]" />
<TresOrbitControls
v-if="state.renderer"
:args="[state.camera, state.renderer?.domElement]"
/>
<TresMesh>
<TresTextGeometry
:args="['TresJS', { font, ...fontOptions }]"
center
/>
<TresMeshMatcapMaterial :matcap="matcapTexture" />
</TresMesh>
</TresCanvas>
</template>
```
47 changes: 47 additions & 0 deletions docs/de/advanced/primitive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Primitives

Die `<primitive />`-Komponente ist eine vielseitige Low-Level-Komponente in TresJS, die es dir ermöglicht, ohne Abstraktion jedes Objekt von Three.js direkt in deiner Vue-Anwendung zu verwenden. Sie dient als Brücke zwischen dem Reaktivitätssystem von Vue und dem Szenengraph von Three.js.

## Verwendung

```html
<script setup lang="ts">
// Importieren der notwendigen Klassen von three.js
import { Mesh, BoxGeometry, MeshBasicMaterial } from 'three';

// Geometry und Material erstellen
const geometry = new BoxGeometry(1, 1, 1);
const material = new MeshBasicMaterial({ color: 0x00ff00 });

// Mesh mit der Geometrie und dem Material erstellen
const meshWithMaterial = new Mesh(geometry, material);
</script>

<template>
<TresCanvas>
<primitive :object="meshWithMaterial" />
</TresCanvas>
</template>
```

## Props

`object`: Diese Property erwartet ein `Object3D`-Objekt von three.js oder eine seiner abgeleiteten Klassen. Es ist das Hauptobjekt, das die `<primitive />`-Komponente rendern wird. Im aktualisierten Beispiel wird ein `Mesh`-Objekt mit dem entsprechenden `Material` an diese Property übergeben.

## Verwendung mit Modellen

Die `<primitive />`-Komponente ist besonders nützlich, um komplexe Objekte wie Modelle, die aus externen Quellen geladen werden, zu rendern. Das folgende Beispiel zeigt, wie ein Modell aus einer GLTF-Datei geladen und mit der `<primitive />`-Komponente gerendert wird.

```html
<script lang="ts" setup>
import { useGLTF } from '@tresjs/cientos'

const { nodes } = await useGLTF('/models/AkuAku.gltf')
</script>

<TresCanvas>
<Suspense>
<primitive :object="nodes.AkuAku" />
</Suspense>
</TresCanvas>
```
Loading
Loading