NoSleepCreative Wiki
  • Welcome to NoSleepCreative
  • After Effects
    • Getting Started with Expressions
    • Expressions & Snippets
      • JSX Cheatsheet
      • Expression Troubleshooting
      • Utilities
      • Shape & Mask
      • Type & Text
    • Cookbook
      • Algorithmic
      • Random properties
      • Harmonic Motion
      • Staggering
      • Tessellation & Tiling
      • Type animators
      • Speed lines
      • Radial Array
      • Orb & Trails
      • Shading & Texturing
      • Responsive
      • Automation
      • Setup & Rigs
    • Getting started with Scripting
    • Scripting
      • Utilities
      • Master Properties
    • ScriptUI
  • Studio Ops
    • Tooling
    • Toolkitting
    • Knowledge Base
    • Naming Convention
    • DAM
  • Cinema 4D
    • Formulas
    • Python Cheat Sheet
      • For Artists
      • Maya Environment
      • Maya snippets
      • VSFX 705
    • Cookbook
  • Info
    • About
    • Portfolio
    • Course
    • YouTube
    • Gumroad
    • GitHub
  • Dev
    • archive
      • Webscraping
      • Google Sheets Formulas
      • SQL
      • Terminal
      • C++
      • Unreal Engine
      • Concert Visualization
      • Dome-projection
      • UI UX
      • Professional Etiquettes
      • Woes
      • How to get better
        • Portfolio / Showreel
        • Design with cooking
      • Media theories
        • Post Cinematic Affect
        • Marxism, Reproduction and Aura
        • Heuristics & Authorship
        • 02 Semiotics
        • 3 Process?
        • 05
        • 06 Technology & Mediation
        • Formalism
        • Simulation
        • The Gaze & Media Critique
        • Import
        • 10-12
      • Recommended books
        • 🔴Things I learned
      • Mac Superuser
        • Applescript
      • InDesign
      • Illustrator
      • Blender
      • Premiere Pro
      • Mathematics
        • Probability
        • Linear Algebra
      • Shader Dev
      • Getting Started with After Effects
        • Best Practices
        • Pimping up AE
        • Environment
      • Houdini
        • Cheatsheet
        • Cookbook
        • Techniques
        • Dynamic
        • Rendering & Lighting
        • Animation
        • Particles
        • Others
          • Modeling
          • Fluids - Pyro & Smoke
          • Rendering
      • REGEX
    • Sandbox
      • Nexrender
        • Terminology
        • Project Files Preparation
Powered by GitBook
On this page
  • Readings
  • Transferring attributes
  • Copy stamping & Looping
  • Point generation
  • Orient objects or profiles to a curve
  • Using polyframe
  • Instancing = packed geo & copypoints
  • Lights
  • Random geometries
  • Random geometry with copytoPoints
  • Texturing
  • Random color ovveride
  • Multi-image texturing
  • Using copy stamp and expressions
  • Texture override
  • Method: based on frame number
  • Based on UV
  • Based on luminance value
  • Texturing & UV
  • Best practice for assigning materials
  • Recursive subdivision
  • Tutorials:
  • Unsorted VEX notes
  • Torus wrangle node example
  • Simulating bubble popping with scatter

Was this helpful?

  1. Dev
  2. archive
  3. Houdini

Techniques

Proceduralism

PreviousCookbookNextDynamic

Last updated 4 years ago

Was this helpful?

Readings

Transferring attributes

  • Using attribtransfer eg. P, Cd

  • Using Pointwrangle Get attributes from second input in wrangle node []

If you want to get an attribute (lets say color) from a specific point number (lets say 123456) from input 2, you can use

@Cd = point(1, 'Cd', 123456);

If you have the same number of points on both inputs and you want to get an attribute from the corresponding point on input 2 you can use this shortcut

@Cd = v@opinput1_Cd;

Where the number 1 describes the input port.

Ah, you want the number of points on input 1?

@number_of_points_on_input_1 = npoints(1)

Copy stamping & Looping

  • , Deborah Fowler

There are three ways of manipulating and copying points

  1. Copy Stamp with Expressions - good for quick prototyping

  2. Copy to Points with a SOP eg. circle

  3. Copy to Points with pointwrangle and VEX

Point generation

  1. Using VEX

  2. Using line to create points > point to change the position eg. Creating circle of points

Orient objects or profiles to a curve

Using polyframe

Instancing = packed geo & copypoints

Tutorials

Lights

  • Instance - similar to copytopoints to grid

    • Select Instance object

    • Place points or geo inside network

    • Point Instancing: Fast-point for geometry, full point instancing for lights

Random geometries

  • Pros: faster processing and work with render engines

  • Reveal instance in viewport via Display Opetion > Geometry > Instancing

  1. create mmultiple objects: demo1, demo2, demo3

  2. attribcreate -

    1. string , name: "instance", String: /obj/demo1

    2. /obj/demo`round(fit01(rand(@ptnum),1,2))`

Random geometry with copytoPoints

  • Attach an attribute called "variant" to each geometry

  1. geometry eg. object_merge > pointWrangle - i@variant =1;

Generating a random integer value for each point

  • grid> attribrandomize - scale > point wrangle

int(rint@variant = fit01(rand(@ptnum),0,2));
  • Retrieve the random variable values by listing "variant" in the Piece Attrbute from copytopoints

  • transform using target point orientation

  • Setting the object to faceup: pointwrangle: @N = {1,0,0};

Unpacking

  • Arnold renderer does not accept packed geo

  • add unpack

Texturing

Random color ovveride

// rand bw color
rand(@ptnum), rand(@ptnum), rand(@ptnum)
// rand RGB
rand(@ptnum) , rand(@ptnum+25), rand(@ptnum+10)

Multi-image texturing

Using copy stamp and expressions

Prerequisite: You must use an image sequence; eg. all files are named: image_04.jpg

  1. Assign a material SOP and input a principle shader to target object

  2. Activate Overrides use Local overrides and merge Overrides

    1. Parameter: basecolor_texture

    2. Use any of these expressions:

// using frame number
$HIP/textures/image_$F2.png

// random image from concatenating strings
$HIP/textures/image_`padzero(2,ceil(fit01(rand(@ptnum),0,7)))`.png
$HIP/tex/`image_floor(fit01(rand(@primnum),0,90))`.png

// Use all of your sequence frames: 
$HIP/tex/`image_@primnum%90`.jpg
  • 90 is an arbituary value ; you can use your total image sequence frames

  • the backticks ` allows use to add an expression into the string

  • This technique is similar to copyStamp; we are referencing primnumber and adding an different image for each.

Texture override

CopyPacked geo

  • grid with uvproject1

  • expression in material node (point attrib)

CopyUnpacked

  • stamp input

  • material

Method: based on frame number

  1. copy stamp

  2. material

    1. parameter: basecolor_texture

    2. type: string value

  3. String value:

Based on UV

Pros: good for seamless tiling eg. brick tesselattion

  1. grid > uvproject > group > material

Based on luminance value

Texturing & UV

Best practice for assigning materials

  • polygon sop > uvproject

    • uvquickshade

Recursive subdivision

Space partitioning algorithm

Tutorials:

Unsorted VEX notes

Torus wrangle node example

// bbox equivalent 
@Cd.r = relbbox(0,@P).x;
@Cd.g = relbbox(0,@P).y;
@Cd.b = relbbox(0,@P).z;
  • Using facet to make unique points;

Simulating bubble popping with scatter

if(@P.x>ch('threshold') + .5 * (noise(@P * 5)* 2 - 1)){
    removepoints(@ptnum)
}
  • Sphere > Scatter > delete by threshold for pos.x

  • particlefluid surace

, Deborah Fowler

, Deborah Fowler

Texturing prim faces with the same image using groups:

, Entagma

, Roman Pillai

https://www.deborahrfowler.com/HoudiniResources/HoudiniOverview.html
src
Looping
https://vimeo.com/207724703
Texture Override
Light Instancing
https://forums.odforce.net/topic/29212-texture-on-copy-based-on-luminance-value/
https://www.deborahrfowler.com/HoudiniResources/Overview-UVs.html
Loops & VEX: Artistic Quadtrees
Spiral Pattern Generation Tutorial - Houdini + Cinema4D