← Zurück zu Software & Tools
VEX (Vector Expression Language) ist Houdinis eingebaute, C-ähnliche Hochleistungssprache, die direkt in Wrangle-Nodes und im VOPS-System ausgeführt wird und es Artists und Technical Directors erlaubt, prozedurale Geometrieoperationen, Shader und Simulations-Logik ohne externe Skripte zu implementieren.

Rubrik: Software & Tools · Unterrubrik: Houdini · Niveau: Profi Synonyme / Auch bekannt als: VEX Language, CVEX, Wrangle Code, VEX/CVEX


Was ist VEX Scripting?

VEX (Vector Expression Language) ist keine allgemeine Skriptsprache wie Python, sondern eine speziell für parallel ausführbare Geometrie- und Shading-Operationen optimierte Sprache. Ihr wichtigstes Merkmal: VEX-Code wird auf jedem Punkt, Primitive oder Vertex parallel ausgeführt, was ihn bei großen Geometrien um Größenordnungen schneller macht als Python-basierte Iterationen. VEX ist die Sprache hinter dem Attribute Wrangle SOP, dem Volume Wrangle, dem Geometry Wrangle im DOP Level und dem VOP (VEX Operator) System.


Erklärung

Syntax und Datentypen

VEX orientiert sich stark an C/C++. Grundlegende Datentypen:

``vex int i = 5; float f = 3.14; vector v = {1.0, 0.0, 0.0}; // 3-Komponenten-Vektor vector2 uv = {0.5, 0.5}; // 2-Komponenten (UV) vector4 quat = {0, 0, 0, 1}; // Quaternion / Color mit Alpha matrix3 m3; // 3x3-Matrix matrix m4; // 4x4-Matrix string s = "hello"; ``

Besonderheit: Vordefinierte globale Attribute sind direkt über @-Präfix zugänglich:

  • @P – Position des aktuellen Punktes (vector)
  • @N – Normale (vector)
  • @Cd – Vertex/Point Color (vector)
  • @pscale – Scale für Copy-to-Points (float)
  • @ptnum – Punkt-Index (int, read-only)
  • @numpt – Gesamtzahl der Punkte (int, read-only)
  • @Time, @Frame – Aktuelle Zeit in Sekunden / Frame-Nummer

Der Attribute Wrangle SOP

Der Attribute Wrangle ist der meistgenutzte VEX-Node in Houdini. Er führt VEX-Code aus, iteriert dabei über Points, Vertices, Primitives oder Details (wählbar über Run Over). Beispiel – Noise-basierte Displacement:

``vex // Displacement entlang Normalen mit Perlin Noise float freq = 2.5; float amp = 0.3; float n = noise(@P * freq + @Time * 0.2); @P += @N * n * amp; ``

Dieses einfache Snippet verschiebt jeden Punkt entlang seiner Normale mit einem animierten Rauschwert – in Echtzeit, parallel auf der CPU.

Funktionsbibliothek

VEX bietet eine umfangreiche Built-in-Bibliothek:

Mathe: sin(), cos(), pow(), sqrt(), abs(), clamp(), fit(), fit01(), lerp(), smoothstep()

Noise-Funktionen: noise(), onoise() (Perlin), vnoise(), curlnoise(), wnoise() (Worley/Voronoi), fbm() (Fractional Brownian Motion)

Geometrie-Zugriff: point(), prim(), vertex() lesen Attributwerte anderer Punkte/Primitives; nearpoint() findet den nächsten Punkt; neighbours() gibt Nachbar-Indizes zurück.

Attribut-Manipulation: setpointattrib(), setprimattrib(), addpoint(), removepoint(), addprim() erlauben das Erstellen und Löschen von Geometrie direkt aus VEX.

Transformationen: quaternion(), qmultiply(), dihedral(), maketransform() für komplexe Rotationsberechnungen.

VOP Networks (Visual VEX)

Das VOP (VEX Operator) System ist der visuelle Pendant zu handgeschriebenem VEX. Im Material Network oder VOP SOP werden VEX-Operationen als verbundene Nodes dargestellt – ideal für Shader-Entwicklung oder Artists, die keinen Code schreiben möchten. Houdini kompiliert VOPs intern zu VEX.

CVEX und Custom Shaders

CVEX (Context VEX) bezeichnet VEX-Code, der in Shader-Kontexten (Surface, Displacement, Light, Fog, Image) läuft. Für Karma- und Mantra-Shading werden CVEX-basierte principled shader und Custom Material-Definitionen via materialX oder SHOP Networks eingesetzt.

Performance-Tipps

VEX ist bereits hochoptimiert, aber einige Patterns sind langsamer:

  • String-Operationen sind teuer – Attribute als int-IDs statt strings speichern wo möglich
  • nearpoints() mit großem Radius kostet Zeit; mit maxpoints limitieren
  • Conditional-Branches (if/else) auf Basis von Attributwerten sind schnell; dynamische Dispatch-Systeme eher vermeiden

Beispiele

  1. Randomize-Scale für Copy-to-Points: @pscale = fit01(rand(@ptnum), 0.5, 1.5); – weist jedem Punkt einen deterministisch zufälligen Scale-Wert zu.
  2. Curl Noise für Partikel-Trails: In einem Gas Advect DOP via Volume Wrangle: v@vel += curlnoise(@P * freq + {0,@Time,0}) * strength;
  3. Attribut-Transfer via VEX: float h = point(1, "height", nearpoint(1, @P)); @Cd = set(h, h*0.5, 0); – liest Höhenwerte aus einem zweiten Input und mappt sie als Farbe.
  4. Prozedurale Animation ohne Keyframes: @P.y += sin(@ptnum * 0.3 + @Time * 2.0) * 0.5; – erzeugt Wellenanimation auf einem Grid.
  5. Custom Destruction Constraints: VEX berechnet Constraint-Stärke basierend auf Abstand zum Einschlagspunkt: float strength = fit(dist, 0, radius, 0, maxstrength);

In der Praxis

Wrangle-Snippets als Toolbox anlegen: Häufig verwendete VEX-Snippets in Houdinis Asset Library als Digital Assets (HDAs) oder als Python-Shelf-Tool-Presets speichern und teamweit teilen.

Fehlersuche: Das Geometry Spreadsheet zeigt Attributwerte nach VEX-Ausführung. printf("@P = %g\n", @P); gibt Debug-Infos in die Houdini Console.

Kombination mit Python: Python (via hou Modul) für Node-Management und Pipeline-Integration; VEX für die eigentliche Geometrie-Verarbeitung. Niemals Python für Punkt-Iteration nutzen – immer VEX.

Wichtige Shortcuts: Im Wrangle-Code-Editor: Ctrl+Enter kompiliert; F1 öffnet VEX-Dokumentation für das Wort unter dem Cursor.


Vergleich & Abgrenzung

SoftwareÄquivalentUnterschied
BlenderGeometry Nodes / Shader NodesVisuell, kein nativer Code-First-Ansatz; weniger mächtig
Cinema 4DXpresso / FieldsKein code-first VEX-Equivalent; deutlich limitierter
MayaMEL, Python via APIMEL ist veraltet; Python-API nicht parallelisiert
Substance DesignerGLSL FunctionsNur für Texturing; nicht für Geometrie
TouchDesignerGLSL / PythonGLSL für GPU-Shading; kein nativer Geometrie-Kontext

Häufige Fragen (FAQ)

Muss ich VEX lernen, um Houdini professionell zu nutzen? Für einfache Setups reichen Node-basierte Workflows. Für Profi-VFX-Arbeit ist VEX jedoch unverzichtbar. Die meisten TD-Stellen setzen VEX-Kenntnisse voraus. Der Einstieg über Attribute Wrangle mit einfachen Ausdrücken ist niedrigschwellig.

Was ist der Unterschied zwischen VEX und Python in Houdini? VEX wird direkt auf Geometrie-Ebene, massiv parallel auf der CPU ausgeführt und ist 10–1000x schneller als Python für Point-Iteration. Python dient der Automatisierung auf Node-/Scene-Ebene (hou-Modul), nicht für Geometrieverarbeitung.


Verwandte Einträge


Weiterführend

  • SideFX VEX Language Reference: (2025)
  • Entagma – VEX für Artists Tutorial-Serie: (2023–2024)
  • Paul Esteves "VEX for Houdini Artists" – CGCircuit Kurs (2024)
← Zurück zu Software & Tools
Infotag · 13. Mai · 15:00 Uhr · Vor Ort

Sei am Mittwoch dabei.
Bring Eltern oder Freunde mit.

Ein halber Nachmittag, der dir drei Jahre Klarheit bringen kann. Kostenlos, unverbindlich, ehrlich.

  • Rundgang durch Studios, Schnitträume und Tonstudio
  • Echte Absolventenfilme sehen
  • 1:1-Beratung zu Bewerbung & BAföG
  • Studierende direkt fragen
  • Kaffee, kein Sales-Pitch
  • Auch online möglich

Platz beim Infotag reservieren

Dauert 30 Sekunden. Bestätigung per E-Mail.
100 % kostenlos · keine Verpflichtung · jederzeit absagbar
VEX Scripting (Houdini) – C-ähnliche Sprache für prozedurale Effekte — Wiki | Lazi Akademie | Lazi Akademie Esslingen