← Zurück zu Software & Tools
VEX (Vector Expression Language) ist Houdinis eingebaute, C-ähnliche Shader- und Scripting-Sprache, die für hochperformante, multithreaded Attributmanipulation, prozedurale Geometrie-Operationen und Shader-Berechnungen konzipiert wurde.

Rubrik: Animation & VFX · Unterrubrik: Houdini · Niveau: Profi

Synonyme / Auch bekannt als: Houdini VEX, Vector Expression Language, VEX Shader Language


Was ist VEX?

VEX steht für Vector Expression Language und ist Houdinis Eigenentwicklung für performante, parallelisierte Berechnungen auf Geometriedaten. Die Sprache wurde in den frühen 2000er Jahren von SideFX speziell für Houdini entwickelt und ist seitdem der primäre Weg, um komplexe Attributmanipulationen, prozedurale Operationen und Shader zu implementieren.

VEX ist der Schlüssel zu Houdinis Mächtigkeit: Alles, was über einfaches Node-Verbinden hinausgeht, wird in VEX geschrieben. Der Wechsel vom visuellen Node-System zu VEX markiert in der Regel den Übergang vom Einsteiger zum fortgeschrittenen Houdini-Nutzer.


Erklärung

VEX vs. Python in Houdini

Houdini unterstützt zwei Skriptsprachen: VEX und Python. Sie haben grundlegend verschiedene Einsatzgebiete:

MerkmalVEXPython
AusführungsgeschwindigkeitSehr schnell (C-ähnlich)Langsamer (Interpreter)
MultithreadingAutomatischNur mit Tricks (GIL-Limitation)
EinsatzgebietGeometrie, Shader, Attribut-pro-ElementUI, Pipeline, High-Level-Logik
SyntaxC-ähnlichPython 3
KontextWrangle Nodes, VOPsPython SOP, shelf tools, HDAs

Faustregel: Was auf Tausenden von Punkten gleichzeitig berechnet werden soll, gehört in VEX. Was die Pipeline steuert, kommt in Python.

VEX-Syntax: Grundlagen

VEX-Code in einem Attrib Wrangle-Node wird pro Element ausgeführt (pro Punkt, Primitive, Vertex oder Detail). Die wichtigsten Konzepte:

Attribut-Zugriff: ```vex // Aktuellen Punkt lesen vector pos = @P; // Position des aktuellen Punktes float id = @ptnum; // Punkt-Nummer (automatisches Attribut) vector col = @Cd; // Farbe (Cd = Color diffuse)

// Attribut schreiben @Cd = {1, 0, 0}; // Alle Punkte rot färben @P.y += sin(@ptnum); // Y-Position sinusförmig verschieben ```

Attribut auf anderen Punkten lesen: ```vex // Attribut eines anderen Punktes per Index lesen vector other_pos = point(0, "P", 5); // Position von Punkt 5

// Nächsten Punkt finden int nearest = nearpoint(0, @P); vector nearest_pos = point(0, "P", nearest); ```

Kontrollstrukturen: ```vex // Bedingte Ausführung if (@ptnum % 2 == 0) { @Cd = {1, 0, 0}; // Gerade Punkte rot } else { @Cd = {0, 0, 1}; // Ungerade Punkte blau }

// Schleifen for (int i = 0; i < 10; i++) { @P.y += sin(i * 0.5); } ```

Noise-Funktionen in VEX

VEX enthält eine umfangreiche Noise-Bibliothek, die für prozedurale Effekte unerlässlich ist:

```vex // Perlin Noise float n = noise(@P * 2.0);

// Turbulenzen (mehrere Noise-Oktaven) float t = turbulence(@P, 5, 0.5, 2.0);

// Voronoi float f1, f2; vector pos2; xyzdist(Voronoi, @P, f1, pos2);

// Curl Noise für Partikelströmung vector curlvel = curlnoise(@P + @Time); @v += curlvel * 0.1; ```

Wichtige VEX-Funktionen

FunktionBeschreibung
length(v)Länge eines Vektors
normalize(v)Vektor auf Länge 1 normalisieren
cross(a, b)Kreuzprodukt zweier Vektoren
dot(a, b)Skalarprodukt
lerp(a, b, t)Lineare Interpolation
fit(val, srcmin, srcmax, dstmin, dstmax)Wert remappen
rand(seed)Zufallszahl [0, 1]
chramp("ramp", t)Ramp-Parameter auslesen

VEX-Kontexte

VEX läuft in verschiedenen Ausführungskontexten:

  • Point Wrangle: Code läuft für jeden Punkt
  • Primitive Wrangle: Code läuft für jede Primitive (Polygon)
  • Vertex Wrangle: Code läuft für jede Vertex
  • Detail Wrangle: Code läuft einmal pro Geometrie-Container
  • Volume Wrangle: Code läuft für jedes Voxel

Beispiele

Punkte auf einer Kugel verteilen: ``vex // Im Detail Wrangle: N Punkte gleichmäßig auf einer Kugel int n = 1000; for (int i = 0; i < n; i++) { float u = rand(i * 1.3); float v = rand(i * 2.7); float theta = acos(2 * u - 1); float phi = 2 * M_PI * v; vector p = set(sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta)); addpoint(0, p); } ``

Geschwindigkeitsfeld für Partikel: ``vex // Im Point Wrangle auf Partikel vector curl = curlnoise(@P * 0.5 + {0, @Time * 0.3, 0}); @v += curl * 0.2; @v *= 0.98; // Dämpfung ``


In der Praxis

VEX ist in modernen Houdini-Workflows kaum umgehbar. Laut Community-Umfragen (SideFX User Survey 2023) nutzen über 75% der professionellen Houdini-Artists täglich VEX. Besonders der attribwrangle-Node ist für viele der meistgenutzte Node überhaupt.

Lernpfad: Attrib WrangleAttribute VOP verstehen → Point WrangleVolume Wrangle → eigene SOP-Netzwerke mit VEX → VEX-HDAs


Vergleich & Abgrenzung

AspektVEXOSLGLSL/HLSL
PlattformHoudini (SideFX)RenderMan, BlenderGPU-Shader
EinsatzGeometrie + ShaderOffline-ShaderEchtzeit
PerformanceSehr hochHochSehr hoch (GPU)
PortabilitätNur HoudiniRenderMan-ÖkosystemBreit

Häufige Fragen (FAQ)

Muss ich C++ können, um VEX zu lernen? Nein, aber Grundkenntnisse in einer strukturierten Programmiersprache (C, Java, Python) erleichtern den Einstieg erheblich. VEX ist syntaktisch C sehr ähnlich, aber wesentlich einfacher zu nutzen.

Ist VEX GPU-beschleunigt? Nein, VEX läuft auf der CPU, nutzt aber intensives Multithreading. GPU-Beschleunigung ist Karma XPU vorbehalten.

Kann VEX auf andere Nodes zugreifen? Ja, über Funktionen wie point(), prim(), import() kann auf Geometrie in anderen Inputs oder über opinputpath() auf andere Nodes zugegriffen werden.


Verwandte Einträge


Weiterführend

  • SideFX (2024). VEX Language Reference – Houdini Documentation.
  • Kieren, C. (2022). The VEX Language: A Guide for Houdini Artists. cgwiki.com (Community-Ressource).
  • Kim, J. (2020). VEX for Houdini Artists. SideFX-zertifizierter Online-Kurs.
  • Pal, H. (2021). Houdini HIVE Presents: Writing Efficient VEX. SIGGRAPH 2021 Talk.
  • SideFX Tutorials (2023). Intro to VEX.
← 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