Skip to content

Mask From Points 1.0 is a Houdini SideFX digital asset for point masking, based on infection simulation(transferring mask attribute between neighboring points), allowing the creation and control of mask activators on animated objects.

License

Notifications You must be signed in to change notification settings

SpongeFX/mask_from_points

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Hbuild Logo Mask From Points 1.0

license version

Mask From Points 1.0 is a Houdini SideFX digital asset for point masking, based on infection simulation(transferring mask attribute between neighboring points), allowing the creation and control of mask activators on animated objects.

YouTube

The asset enables creating curves on polygonal objects by mouse click in the viewport and using these curves as attribute spreading activators between points. The created curves are attached to polygons and inherit all their transformations (if the polygonal object on which the curve is created moves, the curve will move along with it). Asset settings also allow controlling the speed and shape of mask spreading, smoothing the curves' shape, managing scatter to create masked points, applying parent transformations to these points, assigning the @orient attribute to points, and changing the rotation angle.

💾 Installation

Download the HDA file and install it to your houdini20/otls/ folder. For detailed instructions, please refer to the Houdini documentation

☑️ Features

  • Tested in Houdini versions: 19.5, 20.0
  • Control and flexible adjustment of mask attribute propagation parameters.
  • Creation of various activators for mask attribute propagation within a single HDA.
  • Individual settings for created activators.
  • Works with animated polygonal objects.
  • Generates quaternion @orient to control and randomize rotation angle for each point.

🏃 Quick guide how to use the Mask From Points 1.0

1. Connect polygonal objects to input1.

2. Select the asset in the Network View, activate "Show Handle," and use mouse clicks in the viewport to create curves* on the surface of objects.
*To move to creating the next curve, change the value of the Group parameter.

3. Set the value of the "Carve" parameter(individually for each curve) to a value more than 0.

4. Adjust parameters affecting the speed and shape of mask spreading if need.

5. Visualize to output2 and activate the timeline.

Recommendations:

  • If the connected primitives in input1 have an "xform" attribute with the primitive transformation matrix, turn off the "GetXFORM" toggle in the "IncomingGeometry" tab. This will cancel unnecessary computations and improve the asset's performance.

🔀 Description of Inputs and Outputs:

📥 Inputs:

Input1 - This input is used to connect polygonal geometry for creating points on it to add mask, and curves to activate masking.

Input2 - This input is used to connect points or geometric objects as sources to activate masking. More details can be found in the description of the “Source” tab.

📤 Outputs:

outpout1 - This output returns the geometry connected to input1 and curves created by the asset. The "source" tab provides the option to split the output result.

outpout2 - This output returns masking points and the simulation result of mask spreading. The "source" tab provides the option to split the output result.


📂 Tabs and Parameters

📁 Default Parameters

This tab contains the settings for simulating and creating curves.

Group Name

The name of the point group where primitives are created. To finish creating the current primitive and move to the next one, change the value of this parameter.

Reset

Remove all created curves.

Carve #

The mask attribute value based on the curve length. Increasing parameter values from 0 to 1 increases the mask attribute value for points on the curve. This parameter is unique for each curve.


📁 Resample and Smooth Curves

In this tab, you'll find settings for adding mask activators points to created curves or geometry connected to input2, as well as settings for smoothing the curves created by the asset. The settings are identical to the SOP nodes "Resample" and "Smooth".


📁 Scatter

This tab contains settings for adding points to geometry connected to input1. The settings are identical to the SOP node Scatter and differ only by the presence of one additional parameter, which adds volume and allows creating points inside objects rather than on their surface.

Volume From Geomerty

Creates a volume from closed polygonal objects and uses the volume for scatter. Enabling this toggle opens the parameters for volume resolution settings identical to the "IsoOffset" SOP node.


📁 Masking

This tab contains parameters affecting the speed and shape of mask spreading.

Colorize

Color visualization of the mask. Interpolation between red and green based on the mask attribute.

Mask Multiplier

Multiplier of the mask value. When the mask attribute value on a point during simulation is greater than 0, then each subsequent frame increases the mask attribute by the value set in the parameter. Allows controlling the speed and time of mask propagation.

Mask Threshold

The minimum attribute value for mask propagation when searching for points. If the value is 1, then only those points that have a mask attribute value >= 1 will initiate an increase in the attribute if such points are within the search radius. This affects the speed and shape of mask propagation.

Diffuse Search

Adds randomness to the radius for point search. Increases diffusion at the boundary of mask propagation. The minimum random value when searching for points. Values are set from 0 to 1, where 1 is the maximum value, which is the value of the "Radius" parameter.

Radius

The radius for point search by default. The value of this parameter determines the search radius for points to determine the presence of the mask attribute on them. This parameter differs for points to which the mask attribute was passed from neighboring points ("Search Settings Between Points") and points that received the attribute from activation points ("Activation Points Search Settings").

Max Points

The maximum number of required points. This parameter differs for points to which the mask attribute was passed from neighboring points ("Search Settings Between Points") and points that received the attribute from activation points ("Activation Points Search Settings")

Uneved Border

The minimum random value when searching for points. Values are set from 0 to 1, where 1 is the maximum value, which is the value of the "Radius" parameter. The minimum random value when searching for points. Values are set from 0 to 1, where 1 is the maximum value, which is the value of the "Radius" parameter. This parameter differs for points to which the mask attribute was passed from neighboring points ("Search Settings Between Points") and points that received the attribute from activation points ("Activation Points Search Settings")


📁 Attributes

In this tab, you can set the attribute name for masking, control rotation angle using the quaternion @orient, and also create a duplicate of the mask attribute and modify parameter values for specific usage scenarios (such as activating growth of instanced geometry, etc.).

Attribute Name

The name of the masking attribute.

Duplicate Attribute

Creates a duplicate of the masking attribute.

Attribute Name

The name of the duplicate masking attribute.

Base Value

The value from which the masking attribute will start increasing. Use this if you need the default masking attribute to be below 0.

Value Multiplayer

Multiplier for the values of the duplicate masking attribute. Use this if you need to increase the attribute value with greater or lesser intensity relative to the original masking attribute values.

Copy Normal To Points

Copying @N attribute from primitives to points.

Randomize Rotation

Randomizes rotation angle values. Use this if you want to randomize the rotation angle for all points.

Min Random

Min randomization angle

Max Random

Max randomization angle.


📁 Source

Here you can enable the application of points or geometry from input2 as masking activators. This tab also includes settings for splitting output results.

Import Source

Use this if you already have points or primitives to initialize the masking and there is no need to create curves on the surface of objects.

Source Type

Type of imported geometry source. If set to "primitives," resample and smooth also apply to them if they are enabled. The masking attribute for all points (imported or created on the surface of primitives) has a value of 1.0.

Output1 Geometry

Output 1 options. "Only input1 geo" - only the geometry connected to input1 of the asset is output in output1. "Only curves" - only curves created on the surface of the geometry asset. "Both" - both the geometry connected to input1 and the curves created on the surface of the geometry using the asset are output.

Output2 Geometry

Output 2 options. "Only masked Points" - only points with a mask attribute greater than 0 are output to output 1. "Only non-masked points" - with a mask attribute equal to 0. "Both" - all points.


📁 Incomming Geomerty

This tab contains settings necessary to obtain the transformation matrix from incoming polygons. Use this if your geometry does not contain a primitive attribute @xform with a transformation matrix4.

Get XFORM

Enabling activates the calculation of the transformation matrix4 using a faster but less efficient method. This works well with objects that do not deform (do not change their sizes) over time. For proper operation, specify the attribute name containing the object identifier in the "Attribute name" parameter.

Get XFORM for each primitive

Enabling activates the calculation of the transformation matrix4 for each primitive. This method works with deforming objects. It is a more efficient method but may take more time. For proper operation, specify the attribute name containing the object identifier in the "Attribute name" parameter.

Pieces Name

Сreating an attribute containing object identifier.


💬 Feedback

If you have any feedback or run into issues, please feel free to open an issue on this GitHub project.

About

Mask From Points 1.0 is a Houdini SideFX digital asset for point masking, based on infection simulation(transferring mask attribute between neighboring points), allowing the creation and control of mask activators on animated objects.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published