|
| 1 | +--- |
| 2 | +title: Authored Motion |
| 3 | +description: Authored Motion treibt kosmetische und sekundäre Bewegungen — Schwänze, Ohren, Accessoires — über einen einzigen gebündelten Job statt eines Animators pro Avatar an und bleibt so auch in einer überfüllten Instanz günstig. |
| 4 | +--- |
| 5 | + |
| 6 | +import { Callout } from 'fumadocs-ui/components/callout'; |
| 7 | + |
| 8 | +`Basis Authored Motion` ist für die sich wiederholende, ambiente Bewegung gedacht, die ein Avatar von selbst abspielt: ein wedelnder Schwanz, zuckende Ohren, ein sich drehendes Accessoire, eine handanimierte Geste. Traditionell würden Sie diese mit einem Unity Animator antreiben, aber jede replizierte Kopie des Avatars zahlt die feststehenden Kosten dieses Animators pro Instanz — was sich in einer belebten Instanz schnell summiert. Authored Motion deklariert dieselbe Bewegung als reine Daten und wertet die Bewegung aller Avatare gemeinsam in einem gebündelten Job aus, sodass die Kosten kaum steigen, wenn sich die Instanz füllt. |
| 9 | + |
| 10 | +Es treibt nur die Transforms an, die das humanoide Rig und IK nicht berühren — Schwanz- und Ohrenketten, zusätzliche Knochen, eigenständige Accessoires. |
| 11 | + |
| 12 | +<Callout type="info"> |
| 13 | +Authored Motion, Jiggle-Physik und das vernetzte Skelett ergänzen sich, statt zu konkurrieren: Das Skelett ist die primäre Pose, Authored Motion liefert die animierte Basis, und [Jiggle-Physik](/docs/avatar/jiggle) legt die physikalische Nachbewegung darüber. Authored Motion schreibt jeden Frame, bevor Jiggle abtastet, sodass ein Jiggle-Rig auf demselben Schwanz sich automatisch damit verbindet. |
| 14 | +</Callout> |
| 15 | + |
| 16 | +## Hinzufügen der Komponente |
| 17 | + |
| 18 | +- Fügen Sie einem beliebigen GameObject unter dem Stamm Ihres Avatars eine `Basis Authored Motion`-Komponente hinzu (suchen Sie im Menü **Add Component** nach „Authored Motion"). Eine Komponente enthält eine Liste von **Movements**; gruppieren Sie die Bewegungen, die zusammen umgeschaltet werden sollen, auf derselben Komponente, und fügen Sie mehrere Komponenten hinzu, wenn Sie unabhängige Umschaltgruppen benötigen. |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | +- Klicken Sie auf **+ Add Movement**, um einen Eintrag hinzuzufügen, und wählen Sie dann seinen **Kind** (Typ). Der Inspektor zeigt nur die Felder, die dieser Typ tatsächlich verwendet, sodass sich die Karte ändert, wenn Sie den Typ wechseln. Verwenden Sie die **▲ ▼**-Schaltflächen zum Umsortieren und **✕** zum Entfernen. Das **Label** ist nur ein autorenseitiger Name ohne Laufzeitwirkung. |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | +<Callout type="info"> |
| 27 | +Bewegen Sie den Mauszeiger über ein Feld, um eine Beschreibung seiner Funktion zu sehen. Jedes Feld unten ist im Tooltip des Inspektors dokumentiert. |
| 28 | +</Callout> |
| 29 | + |
| 30 | +## Bewegungstypen |
| 31 | + |
| 32 | +| Typ | Was es tut | Treibt an | Wichtige Felder | |
| 33 | +|------|--------------|--------|-----------| |
| 34 | +| **Oscillate** | Periodisches Schwingen (Sinus / Dreieck / Rechteck / Puls). Ein einzelner Knochen ist ein einfaches Schwingen; eine Kette wird zu einer Wanderwelle. | `Chain` | `Axis`, `Amplitude`, `Frequency (Hz)`, `Waveform`, `Chain Phase Step`, `Chain Falloff` | |
| 35 | +| **Rotate** | Konstante Drehung auf der Stelle. | `Target` | `Axis`, `Speed (deg/sec)` | |
| 36 | +| **Orbit** | Lässt ein Ziel um einen Drehpunkt kreisen. | `Target` | `Pivot`, `Axis`, `Radius`, `Orbit Speed (deg/sec)` | |
| 37 | +| **Noise** | Organische Simplex-Drift — sanfter als Oscillate, weniger repetitiv. | `Chain` | `Axis`, `Amplitude`, `Noise Speed`, `Seed`, `Chain Falloff` | |
| 38 | +| **RandomSelect** | Wählt in einem festen Intervall eine gewichtete Pose (oder Leerlauf) und blendet sie ein/aus. Gut für Ohrenzucken und Blinzeln. | `Options` / `Select Target` | `Options` (+`weight`), `Idle Weight`, `Interval Range`, `Attack`, `Release` | |
| 39 | +| **Sequence** | Spielt einen gebackenen AnimationClip über mehrere Knochen ab. | `Baked Clip` | `Baked Clip`, `Sequence Root`, `Loop` | |
| 40 | + |
| 41 | +<Callout type="warn"> |
| 42 | +**Oscillate und Noise werden durch die `Chain`-Liste angetrieben, nicht durch `Target`.** Ein einfaches Schwingen eines einzelnen Knochens ist eine `Chain` mit einem Eintrag — lassen Sie `Target` für diese Typen leer. `Target` wird nur von Rotate und Orbit verwendet. |
| 43 | +</Callout> |
| 44 | + |
| 45 | +### Oscillate — ein wedelnder Schwanz |
| 46 | + |
| 47 | +Weisen Sie die Schwanzknochen der **Chain** zu, oberster Knochen zuerst. Mit einem Knochen erhalten Sie ein einfaches Schwingen; mit mehreren verzögert `Chain Phase Step` jeden Knochen entlang der Kette, um eine Wanderwelle zu erzeugen, und `Chain Falloff` skaliert die Amplitude pro Knochen (1 = kein Abfall). `Amplitude` ist in Grad, wenn `Channel` auf Rotation steht. |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | +### RandomSelect — zuckende Ohren |
| 52 | + |
| 53 | +Fügen Sie pro Pose eine **Option** hinzu und geben Sie jeder ein `Target`, `Axis`, `Angle` und `Weight`. Eine Option, die ihr `Target` leer lässt, fällt auf `Select Target` zurück, sodass eine Bewegung einen einzelnen Knochen auf mehrere Arten posieren *oder* pro Option einen anderen Knochen antreiben kann. `Idle Weight` ist die relative Wahrscheinlichkeit, in einem Zyklus nichts zu tun — erhöhen Sie ihn, um das Zucken gelegentlich statt konstant zu machen. |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | +## Abspielen eines gebackenen Clips mit Sequence |
| 58 | + |
| 59 | +Wenn die Bewegung zu komplex ist, um sie mit einem Primitiv zu beschreiben — eine handanimierte Schleife, die eine ganze Knochenkette krümmt — backen Sie den AnimationClip in ein gemeinsames `Basis Motion Clip`-Asset und spielen Sie ihn mit einer **Sequence**-Bewegung ab. |
| 60 | + |
| 61 | +- Öffnen Sie **Basis ▸ Authored Motion ▸ Bake Clip**. |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +- Setzen Sie **Animation Clip** auf den Quellclip und **Root (in scene)** auf den Avatar, auf dem der Clip erstellt wurde — die Knochenpfade werden relativ zu diesem Stamm gebacken. Lassen Sie **Frame Rate** bei 60, sofern Sie keine feinere Abtastung benötigen. Klicken Sie auf **Bake** und wählen Sie, wo das Asset gespeichert werden soll. |
| 66 | + |
| 67 | + |
| 68 | + |
| 69 | +<Callout type="info"> |
| 70 | +Das Backen erfolgt in dieser Version nur für Rotationen und reproduziert die Pose des Clips exakt, unabhängig von der Ruhepose des Avatars. |
| 71 | +</Callout> |
| 72 | + |
| 73 | +- Weisen Sie bei der Sequence-Bewegung das gebackene Asset dem **Baked Clip** zu und setzen Sie **Sequence Root** auf denselben Stamm, gegen den der Clip gebacken wurde. Aktivieren Sie **Loop** für einen sich wiederholenden Leerlauf oder deaktivieren Sie es für einen einmaligen Durchlauf. |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | +## Umschalten zur Laufzeit |
| 78 | + |
| 79 | +Eine Bewegungsgruppe folgt dem eigenen `enabled`-Zustand der Komponente. Alles, was die Komponente ein- oder ausschaltet — einschließlich einer [HVR.Vixxy](/docs/avatar/animation-rigging)-Aktivierung — schaltet ihre Bewegungen ein und aus, ohne Abfrage pro Frame. Gruppieren Sie die Bewegungen, die zusammen umgeschaltet werden sollen, auf einer Komponente. |
| 80 | + |
| 81 | +## Testen Ihrer Einrichtung |
| 82 | + |
| 83 | +Authored Motion startet erst, sobald der Avatar kalibriert ist, was bei einem einfachen **Play** **nicht** geschieht. Verwenden Sie die Schaltfläche **Test in Editor** der `Basis Avatar`-Komponente — sie lädt den Avatar über den echten lokalen Spielerpfad und kalibriert ihn, sodass Ihre Bewegungen laufen. |
| 84 | + |
| 85 | +<Callout type="warn"> |
| 86 | +Wenn sich im einfachen Play-Modus nichts bewegt, ist das zu erwarten — die Komponente wurde nie registriert. Validieren Sie immer mit **Test in Editor**. |
| 87 | +</Callout> |
0 commit comments