Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
:bookmark_tabs: A collection of code snippets and examples showing syntax and capabilities of VEX language inside SideFX Houdini
| Date | Stars |
|---|---|
| 2026-07-24 | 754 |
| 2026-07-25 | 754 |
| 2026-07-28 | 754 |
| 2026-07-30 | 754 |
| 2026-08-06 | 754 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# VEX tutorial
*A collection of code snippets and examples showing syntax and capabilities of VEX language inside SideFX Houdini*
<p align="right"><small>by Juraj Tomori</small></p>
# How to use it
You can clone, or [directly download](https://github.com/jtomori/vex_tutorial/archive/master.zip) this repository.
It contains `examples.hipnc` and `vex/include/myLib.h` files which are full of various examples with explanations in comments.
It is the best to check all the nodes with open *Geometry Spreadsheet* and *Console Output* windows to see values of attributes and output text. Alternatively you can use this page for quick looking at the topics covered and most of the code that I include here as well. I am not including here all of the code since sometimes it might not make a lot of sense outside of Houdini. Where necessary I include related functions from *myLib.h* or attach screenshots.
# Topics
* [Reading parameter values](#reading-parameter-values)
* [Reading attributes](#reading-attributes)
* [Exporting attributes](#exporting-attributes)
* [Reading arrays](#reading-arrays)
* [Arrays](#arrays)
* [Arrays and strings example](#arrays-and-strings-example)
* [Reading and writing Matrices](#reading-and-writing-matrices)
* [Checking for attributes](#checking-for-attributes)
* [Automatic attribute creation](#automatic-attribute-creation)
* [Getting transformation from OBJs](#getting-transformation-from-objs)
* [Intrinsics](#intrinsics)
* [VDB intrinsics](#vdb-intrinsics)
* [Volumes](#volumes)
* [VOPs / Using Snippets](#vops--using-snippets)
* [VOPs / Using Inline Code](#vops--using-inline-code)
* [DOPs / Volumes workflow](#dops--volumes-workflow)
* [DOPs / Gas Field Wrangle](#dops--gas-field-wrangle)
* [DOPs / Gas Field Wrangle - accessing DOPs and SOPs data](#dops--gas-field-wrangle---accessing-dops-and-sops-data)
* [DOPs / Geometry workflow](#dops--geometry-workflow)
* [DOPs / Geometry Wrangle](#dops--geometry-wrangle)
* [DOPs / Geometry Wrangle - accessing fields](#dops--geometry-wrangle---accessing-fields)
* [Conditions](#conditions)
* [Loops](#loops)
* [Stopping For-Each SOP from VEX](#stopping-for-each-sop-from-vex)
* [Printing and formatting](#printing-and-formatting)
* [Printing attributes](#printing-attributes)
* [Including external VEX files](#including-external-vex-files)
* [Include math.h](#include-mathh)
* [Using macros](#using-macros)
* [Functions](#functions)
* [Functions overloading](#functions-overloading)
* [Variables casting](#variables-casting)
* [Vectors swizzling](#vectors-swizzling)
* [Functions casting](#functions-casting)
* [Structs](#structs)
* [Structs in Attribute Wrangle](#structs-in-attribute-wrangle)
* [Groups](#groups)
* [Attribute typeinfo](#attribute-typeinfo)
* [Attributes to create](#attributes-to-create)
* [Enforce prototypes](#enforce-prototypes)
* [Attribute default values](#attribute-default-values)
# Tutorial
## Reading parameter values
~~~ C linenumbers
/*
multi-line comments can be typed
using this syntax
*/
// in vex you can evaluate values from parameters on this node
// by calling ch*() function, with * representing a signature, check the docs
// for the full list, some of them: chv() - vector, chu() - vector2, chs() - string
// chramp() - ramp, chp() - vector4, chi() - int, chf() - float, ch4() - matrix, ch3() - matrix3 ...
// you can also use optioinal argument for time which will enable you to evaluate
// the channel at different frame
//
// once you type ch*() in your code, you can press a button on the right, to
// generate a UI parameter for it automatically, you can do the same by hand as well
float y = chf("y_position");
vector col = chv("color");
matrix3 xform = ch3("xform");
// you can also reference parameters from external nodes
// if there is an expression (Python/hscript) in the parameter,
// it will be evaluated
float up = chf("../params_1/move_up");
// apply variables to attributes
[email protected] += y*5;
v@Cd = col;
v@P *= xform;
[email protected] += up;
v@myVec = 1.456;
v@myVeExcerpt of 51,494 characters
Read on GitHub9
2
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:968289686bad5969, topic:tutorial, name:tutorial, readme:tutorial