GtkRadiant logo

Quake 3 Radiant – Rotierendes Zahnrad mit func_rotating

Last Updated on 31. January 2023 by Victor Karp

Dieses Tutorial ist zweigeteilt. Im ersten Teil werde ich an einem ganz einfachen Beispiel erklären, wie man Objekte erstellt, die sich drehen. Im zweiten Teil zeige ich euch, wie man mit ein bisschen mehr Aufwand in Sachen Brushwork und Entityeinstellungen rotierende Zahnräder baut.

Teil 1 – Eine simple func_rotating

Ihr könnt beliebige Brush- oder Patchkonstruktionen in Rotation versetzen. Es spielt dabei keine Rolle, wie viele Brushes ihr zusammenhängend bewegen wollt. Für dieses Tutorial habe ich ein einfaches Objekt gebaut. In der Mitte dieses Objektes ist ein würfelförmiger Brush, der komplett mit der Textur common/origin belegt ist. Dass der Brush würfelförmig ist, ist nicht wichtig. Wichtig ist nur, wo sein Mittelpunkt liegt, da er die Position der Achse bestimmt, um die sich das Objekt dreht.

Jetzt müssen wir alle Brushes oder Patches, die zu unserem Objekt gehören, sowie den Brush mit der common/origin Textur selektieren. Dann klickt ihr in einem 2D Viewport mit der rechten Maustaste und wählt aus dem Menü func/func_rotating.

Mit einem Druck auf [N] öffnet ihr das Entitymenü der soeben erstellten func. Dort können wir ein paar Dinge einstellen. Wenn eure func aus mehreren Brushes besteht, reicht es, einen Brush der func selektiert zu haben. Die Einstellungen, die ihr in dem Menü macht, werden dann trotzdem immer auf die ganze func angewendet.

Key: speed
Gibt die Drehgeschwindigkeit an. Je höher der Wert, desto schneller dreht sich das Entity. Um die Drehrichtung zu ändern, muss man negative Werte angeben.

Key: noise
Damit lässt sich ein Soundeffekt vom Entity ausgeben. Der Pfad zum Soundeffekt muss in der Form sound/[Unterverzeichnis]/[Soundeffekt] angegeben werden, also z.B. sound/world/drone6. Wo ihr die vom Spiel mitgelieferten Soundeffekte finden könnt, lest ihr in Tutorial 30.

Die Drehachse ändern

Standardmäßig rotiert das Entity um die Z-Achse. Es dreht sich also wie ein Karussell. Die Drehachse kann aber auch geändert werden. Dazu macht ihr im Entitymenü der func ein Häkchen in einen der beiden Kästen mit dem Schriftzug x_axis oder y_axis.

Teil 2 – Ein Zahnrad bauen

Zuerst erstellen wir einen Brush, der 128x128x16 Units hat, also eine liegende Platte. Davon clippen wir jede Ecke zwei Mal auf folgende Art ab:

Nachdem ihr das vier mal gemacht habt, ist aus eurer Platte ein Achteck geworden. In dieses Achteck stecken wir vier Zähne. Diese Zähne macht ihr aber nicht 16 Units hoch (so wie das Rad), sondern 12, sodass sie auf mittlerer Höhe im Rad stecken können und kein Z-Fighting erzeugen.

Jetzt markiert ihr alle vier Zähne, kopiert sie mit [SPACE] und wählt oben aus dem Menü des Radiants Modify – Arbitrary rotation… Dort gebt ihr im Feld Z einen Wert von 45 an, also eine Achteldrehung, und bestätigt mit OK. Jetzt haben wir acht richtig sitzende Zähne.

Als nächstes setzt ihr den bereits bekannten common/origin Brush in die Mitte des Zahnrades und macht es zu einer func_rotating.

Selektiert nun das komplette Zahnrad mit allen acht Zähnen, kopiert es mit [Strg]+[C], fügt die Kopie mit [Strg]+[V] ein (sie wird über das Original gelegt) und schiebt sie ein wenig vom Original weg. Lasst das zweite Zahnrad selektiert und geht wieder ins Rotationsmenü, diesmal gebt ihr allerdings 22.5 bei Z ein, das macht eine Sechzehnteldrehung.

Bei dieser Art des Kopierens ist das neue Zahnrad ein eigenes Entity. Hättet ihr es mit der [Leertaste] kopiert, könnte es sich nicht unabhängig vom ersten Zahnrad bewegen – beide wären eine func_rotating.

Gebt einem der beiden Räder einen positiven speed Wert und dem anderen den gleichen Wert, aber negativ.

Ihr könnt die Zahnräder auch in einem 90° Winkel über Eck stellen. Dabei müsst ihr nur daran denken, die Drehachsen im Entity zu ändern. Das habe ich auf dem nächsten Bild mal gemacht. Wenn ihr keine Lust habt, immer alle Brushes einer func zum Verschieben einzeln zu selektieren, könnt ihr auch nur einen Brush selektieren und mit [Strg]+[Alt]+[E] das ganze Entity auswählen lassen. Ich habe zusätzlich noch Stäbe durch die Zahnräder gesteckt.

Das Problem mit den Schatten

Man sieht auf dem Bild nicht, dass sich die Schatten der Zahnräder nicht bewegen. Sie bleiben so auf dem Boden, wie sie vom Compiler berechnet wurden. Das sieht im Spiel komisch aus, weshalb wir die Schatten der Zahnräder lieber gleich ganz deaktivieren sollten. In einer Map voller Details fällt sowas auch gar nicht auf.

Selektiert die Zahnräder und öffnet deren Entitymenü mit [N]. Dort gebt ihr den neuen Key _cs und als Value 0 (Null) an. Die Zahnräder werden jetzt keine Schatten mehr werfen – die Stangen allerdings schon.

Da das in meiner Beispielmap sehr auffällig ist und seltsam aussieht, möchte ich auch deren Schatten deaktivieren. Dazu müssen wir die Stangen aber erst einmal zu einer func_group machen. Diese func dient nur zum Gruppieren von Brushes oder Patches innerhalb des Editors, falls man größere Konstruktionen schneller mit [Strg]+[Alt]+[E] markieren möchte. Ansonsten hat sie keine weitere Funktion – bietet aber die gleichen allgemeinen Entitykeys wie alle anderen Entities. Deshalb könnt ihr jetzt auch den Stangen den Key _cs und dazu den Wert 0 geben. Später sieht das dann so aus:

Dass die Konstruktion überhaupt keine Schatten mehr hat, ist in richtigen Maps weitaus unauffälliger als Schatten, die sich gar nicht bewegen.

Besuche die Quake 3 Mapping Tutorial Hauptseite für weitere Tutorials.

Scroll to top