Brush

From Valve Developer Community
Jump to: navigation, search
English Português-Brasileiro Русский

Ein Brush in Hammer ist eine konvexe dreidimensionale Form, die ausschließlich von geraden Flächen begrenzt wird (Polyeder).

Die Bezeichnung 'Brush' stammt aus dem Englischen und heißt auf Deutsch 'Pinsel'. Die Verwendung des Begriffes 'Brush' lässt sich wohl auf Grafikprogramme zurückführen, wo unterschiedliche Pinsel eingesetzt werden, um verschiedene Effekte zu erzeugen, und hat sich im gesamten Bereich der computergestützten Grafik etabliert. Der deutsche Begriff für einen Brush in Hammer ist grafisches Primitiv, da Brushes im Regelfall vergleichsweise primitive Formen abbilden. Angesichts der Verbreitung des Begriffes 'Brush' auch im deutschen Sprachraum sollte die eher unbekannte Bezeichnung 'Primitiv' aber nicht verwendet werden (ganz zu schweigen von der Bezeichnung 'Pinsel'). Im Folgenden wird daher weiterhin von einem Brush gesprochen.

Brushes können in Hammer zu zwei Zwecken eingesetzt werden:

  • Formung der Welt (Welten-Brush)
    Ein Welten-Brush bildet das sogenannte 'Rückgrat der Welt' (world backbone) und beeinflusst die Sicht innerhalb der geschaffenen Welt, da Brushes grundsätzlich Festkörper sind, durch die nicht hindurch gesehen werden kann.
  • Erzeugung von Entitäten (Brush-Entität).
    Brush-Entitäten beeinflussen die Sicht nicht, was nicht dahingehend missverstanden werden darf, dass man durch Brush-Entitäten hindurchsehen kann. Mehr Informationen hierzu enthält der Artikel über die Sicht in Hammer Welten.

Im Vergleich zu einem Modell sind Brushes:

  • jedesmal einzigartig,
  • wenig detailliert und günstig,
  • im Rahmen einer vorberechneten Lightmap beleuchtet und
  • fest (also nicht verformbar).

Brushes in der Kompilierung

Während der Komplilierung einer in Hammer erstellten Welt wird das Programm VBSP ausgeführt. Dieses Programm erzeugt sogenannte Visleafs und je Visleaf wiederum eine Gruppe zweidimensionaler Polygone aus diejenigen Flächen der Brushes, die das Visleaf berühren . Die daraus resultierenden 'Brush-Modelle' werden in der BSP-Datei gespeichert und können von Entitäten beansprucht werden (also beispielsweise von der Welt oder von Brush-Entitäten). Die ursprünglichen Brushes werden ebenfalls in der BSP-Datei aufbewahrt, wobei der Sinn hiervon unklar ist.

Die Erzeugung von Polygonen aus Brushes verläuft nach den folgenden Regeln:

  1. Jeder einzelne Brush wird darauf hin untersucht, welche seiner Flächen ein Visleaf berührt. Aus diesen Flächen werden Polygone berechnet, wie in der folgenden Grafik zu erkennen ist:Brushes and their compiled equivalents
  2. Für den Fall, dass nur ein Teil einer Brushfläche ein Visleaf berührt, während der Rest das Visleaf nicht berührt, wird die Fläche aufgeteilt und der 'verdeckte' Teil, also der Teil, der das Visleaf nicht berührt, entfernt.

Zu diesen einfachen Regeln gibt es zwei Ausnahmen:

  • Obwohl func_details in Hammer getrennte Brush-Entitäten sind, werden sie während der Kompilation in eine Einheit verschmolzen. Daher ist es nicht erforderlich, diejenigen Flächen eines func_detail mit einer Nodraw-Textur zu versehen, die vollständig an die Fläche eines anderen func_detail angrenzt. Dort, wo ein func_detail an die Welt angrenzt, sind demgegenüber auf jeden Fall Nodraw-Texturen zu verwenden.
  • Flächen mit lichtdurchlässigem Material werden niemals teilweise entfernt. Deswegen solltest du lichtdurchlässige Materialien niemals auf internen oder versteckten Flächen anwenden, es sei denn, dies ist unbedingt erforderlich.

Grenzen

In der Kompilierung erzwingt VBSP folgende Höchstwerte:

  • 8192 Brushes;
  • 128 Flächen pro Brush;
  • 65536 Flächen insgsamt.

Auch unsichtbare Brushes wie Trigger und selbst Hint-Brushes werden von der Zählung erfasst. Nur mit Nodraw-Textur versehene Flächen fallen aus der Zählung heraus, da diese Flächen während der Kompilierung entfernt werden. Nichstdestotrotz bleiben deren Kollosionsdaten, ihre Grenzen und ihre Position in der Welt bestehen.

Siehe auch