Pages

Saturday, March 8, 2014

Houdini Engine test with Unity

Here is a work in progress tool in order to test the Houdini Engine with Unity.

This tool helps the user to create different and procedural kind of "labyrinth-type" level designs in Unity by using Houdini Digital asset ( .otl ).

Features:
  • Create 3 type of labyrinth models with Straight modules ( full instancied models), Vegetal, or "random direction vegetal".
  • Extra path inputs as houdini curves directly in Unity.
  • Project Vegetal and "Random direction vegetal" model on custom terrain mesh.
  • Create a player starting point randomly in the labyrinth.
  • Override every models used as instance to built a new labyrinth model ( Labyrinth modules or trees models for Vegetal type ).
  • Density, radius, etc. Options for vegetal labyrinth.

Video example:



Thursday, February 20, 2014

GJ round decimal

Just finished a small utility node, GJ round decimal which allows the user to round a float value, you can keep from 0 decimal ( convert to int ), to 4 decimals.







Saturday, February 15, 2014

WallGen (Voronoï) updated

I have just updated the wallgen tool, with 3 new feature: Density noise, holes parameters and erode top options. More info here.



It has been also tested in Maya with the Houdini Engine ( more info here ), with houdini installed ( apprentice version works fine ) you can now use the asset ( .otl ) inside maya directly :


Saturday, February 8, 2014

Houdini OTL: Layered Texture

Here is a new little asset, still work in progress, Layered Texture.
Allows the user to create a texture map made of multiple layers inside a material.




Parameters:

- 1 Main layer called "base map", UVs built switch with transforms for main layer

- Layers:

Layer 0 on top of main layer ( generated by default )

Add / remove / clear layers button to add layers.

Enable / Disable layer checkbox
Mode: Multiply, Substract, Mix and Add
UVs transformation for each layers

Layers are comped on top of each other: L2 on L1 (...) on L0 on MAIN.


Python source code available here

Wednesday, November 27, 2013

Python SOP node: Connectivity merge groups

Here is a custom python SOP node which merges groups together if they are not connected to each other.



Download Connectivity Merge Groups

Parameters:

Pattern: Groups used as input
Ouput Groups: Create new groups with merges groups
Keep Old: Keep old groups

If interested the python source code is availaibe here: Python Source Code

Saturday, November 16, 2013

WallGen - Voronoï - Houdini otl

Here is a new tool, derived from the fist WallGen otl. This one use Voronoï noise pattern in order to create 3D rough wall.




It takes as input either a closed geo, opened geo, or curve ( must be one primitive poly or nurbs curve ).


Options:

Input:

Edit mode: Hides the wall to have very fast feedback when you change input options ( for instance size of the mesh generated from the curve input ).

Input: Switch to different kind of inputs => closed geo, opened geo, or curve.

Inset (Opened geo only): Applies inset to the input polygons

Width(Curve only): The width value of the mesh generated by the curve.

Heigth(Curve only): The heigth value of the mesh generated by the curve.

UV scale (Curve only): The scale of the uvs applied to the mesh.


Wall Controls:

Density: Density of the noise pattern

Density Attribute: Point attribute used to drive the density

Density Noise: Create a density attribute according a noise pattern (new)

Density Noise Size: Size of the noise pattern (new)

Density Noise Density: Density of the noise pattern (new)

Bias: Bias of the density attribute higher value will increase the density where the density attribute value is the higher.

Bevel: Applies bevel on the pieces generated ( relative ).

Smooth: Applies mesh smooth on pieces generated.

Erode top: Erode top of the wall according to an angle value ( N.y ) (new)

Erode angle: Angle value of erode process (new)

UV Scale: Scale the UVs applied on each pieces.

Keep Input Geo: Keep the input geo underneath the wall pieces.

Peak Geo: Peak value applied to the input geo.

Scale Geo: Uniform scale applied to the input geo ( pivot at centroid ).

Holes: Create holes on the geometry (new)

 Export:

Export Groups: Put every pieces generated into a different primitive group.

Path: Output path ( must end with ".obj" )

Export: Export the mesh.


If need more help: contact@guillaume-j.com

Friday, July 19, 2013

GJ Attribute <--> Bitmap ( Houdini )

Here are 2 little utilities, "Attribute to bitmap" and "Bitmap to attribute"



Attribute to bitmap:

Simple node which allows the user to bake attribute values to a bitmap (tga, exr, rat...).



Bitmap to attribute:

Simple SOP node which allows to read data from a bitmap to point attribute.

- use only luminance toggle
- Multiplier ( intensity )
- Output Attribute Name
- Change the class of the output attribute ( by default it's point ).



Thursday, July 18, 2013

GJ Attribute Math ( Houdini )

Here is a new utility .otl: AttributeMath


Format: Houdini .otl (Digital asset)

Feature:

SOP node which allow the user to do math operation between 2 attributes.

Where A is an attribute and B is either an attribute or a constant, you can do:

- A - B
- A + B
- A * B
- A / B
- A % B (modulo)
- Remap A values according to a ramp
- Fit Range A values

Output values are stored in either attribute A or in a new attribute.



Examples:

Add:

Multiply by a constant:

 Remap values by a ramp:





Thursday, July 11, 2013

GJ Attribut Visu ( Houdini )

Here is a new simple utility otl, AttributVisu.



Simple SOP node which allows the user to visualize attributs ( point, vertex, primitives and details ) in 3D view via a ramp color.
Support any type of regular / custom attributs.




Sunday, July 7, 2013

GJ Isolate Selection ( Houdini )

Here is another utiliy: Isolate selection for Houdini


This python script allows the user to isolate an object ( by hiding all others ). Then to display back the objects when you exit the isolate mode.
The script keeps in memory which nodes were displayed or hidden before the isolate process. ( it uses a hou.session python module ).

Python Script for Houdini

How to use:

- Copy the .py file in "C:\Program Files\Side Effects Software\Houdini XX.X.xxx\python26\lib" or whatever python folder used by Houdini
- Create a new tool in a shelf: Right-clic -> new tool
- In tab "Script" write these two lines:

import IsolateSelection
reload(IsolateSelection)

Select an object to isolate that object by a clic on the tool just created, clic again on that tool to display back all other nodes.

Wednesday, July 3, 2013

GJ Slope ( Houdini )

I'm starting a new collection of utilities otls for houdini, here is the first one, called GJ_Slope.



It's a simple node which create a custom attribut driven by the slope of a surface.

Feature:

- Custom attribut name
- Ramp multiplicator
- Display value to Color ( Cd )
- Mult / Add by constant
- Invert value




Also available on sideFX orbolt.com asset shop. 

Monday, November 26, 2012

PyTakes for Houdini

Hi everybody,



As I don't really like the hscript command hou.hscript in order to drive takes creation in houdini, I decided to create my own python module for that.
So here is the really first version of the module, you can drive takes creation, remove, setup, etc. by python.

In the help .pdf you can find fonctions already implemented :



How to use:

Just copy the PyTakes.py file in "houdini_Install_Dir/houdini/python2.6libs" then in houdini juste import the module as normal python module with "import PyTakes".

Exemple to create a new take called "occlusion" and assign few parameters on this take:

#Import the PyTakes module
import PyTakes as pt

 #Create a new take and change the current take to that new take
pt.createTake("occlusion", change=True)

#Include parameters "shading_quality" and "occlusion_shader" of object "groundGeo" to the current take.
pt.includeParm("obj/groundGeo", ["shading_quality","occlusion_shader"] )

#Include display flag to the current take and set it to "True"
pt.includeDisplayFlag("obj/groundGeo", autoSet=True, value=True)

The script allows list as input for object and parameters:

#Include parameters "shading_quality" and "occlusion_shader" of objects geo1 and geo2 
#If an object or a parameters is not found, it will be skipped ( a warning promps if verbose=True )
pt.includeParm("[obj/geo1",obj/geo2"], ["shading_quality","occlusion_shader"] )