Jump to content

Recommended Posts

Hello all,


I have a built a rig that allows for the dynamic simulation of trees. I was able to define an instance point which is offset from the trees branches. This enables the copying of a packed leaf primitive onto the point. The next step is to update the rotation of the packed primitive. It seems like the copy to points has defaulted to using the z-axis (vector pointing in the {0,0,1} direction).

The tree includes a central wire which captures the deformation as it moves through space. I have been able to construct a normal by using the following logic:

  • Using a leaf point
  • find the closest point of the wire
  • compare point positions (@P{leaf point} - @P{wire point})
  • normalizing the compared vector   and setting an @N attribute



However, when using this @N (normal) on the copy to point the leaf geometry picks up this @N (built above in vex) and discards the desired z-axis vector of {0,0,1}. Here is a diagram demonstrating the results.

Figure 1 -  This is the result of the vex code written above (visualized left), notice when using the vex code normal the leaf is unable to correctly orient itself to the point (visualized right).


The custom vex code normal is required to guide the orientation and the tree deforms. This is shown in the following .gif animation.

Figure 2  - A .gif animation demonstrating the updating normal as the tree deforms


I have also tried adding an @up vector to see if that resolves the issue, however, that route is also producing me undesirable results.




I have though about using some form of quaternion or rotational matrix, however, I am currently studying these linear algebra concepts and I need time and guidance before fully understanding how to apply the knowledge in Houdini. Could someone please offer guidance in this regard. I am working on supplementary .hip file which should be posted shortly.

Warm regards,




Edited by voxelfox

Share this post

Link to post
Share on other sites

Dive inside Labs Tree ..Bunch of Codes For those Stuff that You need I think


Share this post

Link to post
Share on other sites

You should build matrix fort static leaf  and rotate this matrix by matrix from the nearest point on branch.

Share this post

Link to post
Share on other sites

Hello @tamagochy

Would you mind explaining this in more detail? What are the steps one should take to build the matrices and rotate the leaf instance in accordance with the deforming geometry?



Not a problem. I've figured it out! I'll post an update with my results for anyone who's interested or needs this as a reference for their own setups.

Edited by voxelfox
  • Like 1

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now