Releases: probiner/DASH
Geometry Array Operations
DASH::package v6.1.0 is a comprehensive release focusing on geometry VOPs. Continues the effort to support array operations (avoiding loops), comfy quick menus, and exploring alternative implementations.
As usual, check the example scenes, available at the bottom of nodes help documentation.
Three operators got renamed, not removed:
Build Attribute Values Array → Get Attribute Allot Array
Array Values Occurrence → Array Occurrence
Vectors Direction Case → Directions Case
ADDED
VOPs
- Add Line Segment. Create one or more line segments.
- Add Platonic. Create one or more Tetrahedra or Hexahedra.
- Add Point. Add a point or multiple by position or by cloning existing ones.
- Add Polygon. Create a polygon with a specific point order.
- Add Transform Primitive. Add primitives that require a single point to be attached and can be posed by a 3x3 matrix.
- Axis-Aligned Bounding Box. Source multiple aspects of a geometry's bounding box.
- Closest Location. Proximity to geometry query.
- Get Geometry Attribute Allot Array. Build an array from multiple elements' attribute values.
- Iterability Force. HDA building utility to return either a stable single or array output from input data.
- Ray Location. Ray cast intersection with geometry query.
- Remove Element. Remove points, primitives or vertices from a geometry.
- Sample Attribute by Intrinsic UV. Sample a geometry attribute by primitive and its intrinsic uvs.
- Sample Attribute by UV Map. Sample a geometry attribute by UV location.
- Set Geometry Attribute. Set the attribute value of one or more elements or attributes.
- Set Geometry Group. Set Group membership for an element or elements.
ADJUSTED
VOPs
- Lines/Planes Intersections 2D and 3D. Add the output “bounded” and an image in the help about it.
- Exponential. Folder Parameters removed; Labels above the generic parameters added instead, to avoid triggering errors about missing parameters.
- Angle Formats. Invert toggle for 360 Unit.
- Discrete. Invert toggle for Unit.
- Array Filter IDs/Values/VEX. “mask” output renamed to “bitmask”
- Vertex/Edge Formats. Default change to “Pair to Single”.
SOPs
- Edges to Lines. When Display Flag is ON, the polylines or line segments are colored in a way that is easy to grasp the start and end point of the line.
Not Backwards Compatible
VOPs
- Array Resize. Fixed “Side” parameter had inverse logic being applied when sizing arrays down.
- Angle Formats. Fixed wrong calculations when converting circle unit to other formats.
- Build Values Array. Renamed to “Get Attribute Allot Array”.
- Connected Elements. Single Elements ids only now. Use “Vertex Edge Format” to convert if needed.
- Expand Group. Single Elements ids only now. Use Vertex Edge Format to convert if needed. Count output now acts like nprims() or npoints(), etc would. Group menu improved to reset when class changes.
- In Group Array. Single Elements ids only now. Use “Vertex Edge Format” to convert if needed. Renamed outputs to match the Filter VOPs; “kept”/”removed”. “bitmask” output added. Group menu improved to reset when class changes.
- Vectors Directions Case. Renamed to shorter “Directions Case”.
- Array Values Occurrence. Renamed to shorter “Array Occurrences”.
- Transform 1D. Fixed wrong parameter references.
Linear Algebra Reloaded
After a hiatus, DASH::package returns. Version 5.1 is an extensive rollout of fixes and new nodes that demonstrate composed applications of Dot and Cross Product operations: Linear Algebra, geometric relationships, rotation matrices, etc.
Beyond the fact that many of these operators support matrices some of these nodes seek to provided a small building block to common request: "How do I find the angle between vectors?", "How do I keep an up vectors stable on a roller-coaster?", "How to I make create a gradient?", "How do I intersect this line with that line?", etc.
ADDED
VOP Nodes
- Align 2D. Returns the rotation angle difference between two 2D vectors or two 2x2 matrices' orientations.
- Align 3D. Returns the rotation axis and angle difference between two 3D vectors, two quaternions, or two 3x3 matrices' orientations.
- Angle Arc Sectors. Sectors and Arc Path selector for angles (assuming a positive axis).
- Lines/Planes Intersections 2D. Returns the intersection position between a combination of 2D lines and/or 2D planes.
- Lines/Planes Intersections 3D. Returns the intersection position between a combination of 3D lines and/or 3D planes.
- Look At Rotation (aim+pole). Define a orthonormal 3x3 matrix based on two directions, matching one of them.
- Up Transport. Single-step solve of a Parallel Transport Frame operation.
- Up Transport Chain. Parallel Transport Frame operation done in sequence.
- Vector Project. Return multiple aspects about decomposing a vector according to another vector.
- Vector Spherical LERP (slerp). Blend two vectors direction and length.
- Vectors Direction Case. Multiple assessments concerning two vectors' directions.
ADJUSTED
VOP Nodes
-
Transform 1D. Array fill update. Parameters and operands layout changed.
-
Wipe Range. Fixed snippet errors. Functions re-written with void. Old array support for parameters remade.
NOT BACKWARD COMPATIBLE
VOP Nodes
-
Additive.
resultinput port removed and iterative merge used instead. Corrected wrong references in help. -
Aggregate
xformparameter renamedslerpand now supports it forvector2andvector3as well. -
Bend. Local and Forward axis switches removed from inputs and made into hscript toggle. Space out output with calculated space. Quaternion and matrix3 output rotation renamed. Bend direction changed.
-
Build Constant Array. Removed Dictionary signature, since Remove Array ID VOP doesn’t support it.
-
Build IDs Array. Fixed OnInputChanged to input 0. Fixed Multiple errors with signatures.
-
Build Shuffle Array. Fixed OnInputChanged to input 0. Fixed Multiple errors with signatures.
-
Cross Product. Inputs renamed “From” and “To”
-
Direction/Length. Inputs renamed. Fixed Multiple errors with signatures. Replacement Direction and Length inputs. Icon updated.
-
Dot Product. Fixed Error with signatures
-
Exponential
resultinput port removed and iterative merge used instead. Fixed missing log VEX signatures, wrong input/output signatures and wrong parameter for result. Added Square root. Callback script changes folders name to the operand name matching the chosen operation. -
Hyperbolic. Fixed missing signature implementations.
-
LERP. Fixed Multiple errors with signatures.
-
Limit Range. Functions re-written with void. Old array support for parameters remade. Invert renamed.
-
Multiplicative.
resultinput port removed and iterative merge used instead. Fixed incorrect Divide code.
SOP Nodes
- Visualize Vector. Major overhaul to provide the option to draw the vectors with the native Houdini visualizers for performance demanding situations. The default drawing method will still be generated geometry, given the clear visuals.
Extra
- VEXpressions.txt. Added a preset to create edge groups Sweep SOP outoputs' rows and columns. Run on Primitive Wrangle.
- DASH_all_nodes.hip. Fixed bad descriptions and signatures reset on nodes.
Extra notes
-
Click to Expand.
-
Many VOPs have now aliases with dedicated operation presets or that are named like the native operators, but with array support.
-
All nodes can now be quickly found by typing “DASH”, since
— DASHwas added to their labels as a suffix. -
DASH nodes are now found under the tab submenu
DASH — -
Shelf renamed to
DASH — Utils. Tools moved to "Utilities" HDA.
-
Cheers
prb
FOR ARRAYS BY ARRAYS
Back to features, the focus returns to Arrays. Filtering them, sorting them, inferring values from them, and using VEX Expressions to query them. Each of these making their handling more and more comfortable on a high-level.
ADDED
VOP Nodes
- Array Aggregate. Operations that reduce an array to a single value.
- Array Quicksort. Array sorting methods, including a custom quicksort controlled by a VEX expression.
- Array Filter IDs. Split array into two arrays, based on matching ids.
- Array Filter Values. Split array into two arrays, based on matching values.
- Array Filter VEX. Split array into two arrays, based on custom matching by a VEX expression.
- Array Values Occurrence. Assess duplicate values in an array, query them with a VEX expression or simply remove them.
- Hash. Converts several data types to a random integer.
ADJUSTED
VOP Nodes
-
Build Shuffle Array. Seed randomized on creation. Button randomizes seed.
-
Build Random Array. Seed randomized on creation. Button randomizes seed.
-
Exponential. Added signatures to support Base array and single Value cases.
Extra
- VEXpressions.txt. Added presets for VOPs Array Filter VEX, Array Quicksort and Array Values Occurrence.
Extra notes
-
Click to Expand.
-
Fixed Help for Didactic Assets that had bad characters due to grammar checking tool.
-
Dot and Cross Product Didactic Assets now have a demo scene at the bottom of their help page, not for the asset itsel but further educational demonstrations about both products.
-
Dot and Cross VOP HDAs got "Product" added to their label/description.
-
Finally... With Array Aggregate one has access to min(), max(), avg(), product(), etc. 😅
-
Array Aggregate Demo Setup was inspired and simplified from David Burpee's setup for localized normalization . https://github.com/davidburpeedesign/HoudiniLibrary/tree/main/LocalAttributeNormalization
-
Vector Visualize SOP Vector Type will default to "Vector" now when when it's set to Auto and the typeinfo is none, instead of defaulting to Position.
-
Cheers
prb
Educational HDAs for Lecturers and Students
A break from features to provide Educational content that can visually and interactively demonstrate concepts of linear algebra, like vector, matrix, dot and cross product and inferring a matrix from two directions.
Looking forward to hear people's feedback on the effectiveness and usefulness.
If you're a lecturer looking for ideas on how to present with some of these check this video:
ADDED
SOP Nodes
-
Cross Product Didactic. Interactive demonstration of Cross Product and Double Cross Product.
-
Dihedral Align Didactic. Interactive demonstration of the Dihedral(VEX) / Align(VOP) operation.
-
LookAt Didactic. Interactive demonstration of the Look At operation.
-
Matrix Components. "Interactive demonstration of a 3x3 and 4x4 Transform Matrix, its values and how that drives transformations.
-
Vector Components. "Interactive demonstration of a 3x3 and 4x4 Transform Matrix, its values and how that drives transformations.
VOP Nodes
ADJUSTED
VOP Nodes
- Direction/Length. Added Toggle to invert the inferred position.
Shelf Scripts
NOT BACKWARD COMPATIBLE
SOP Nodes
- Dot Product Didactic. Minor changes to comply with newly added Didactic assets
Extra notes
-
Click to Expand.
- Basic Math nodes now have an example scene.
- I really miss min(), max(), avg(), product() functions when conjuring examples for the Math nodes. Will have to take care of that in the next update.
Cheers
prb
ARRAY C = ARRAY A + ARRAY B. Simple!
With the basic Array Building done, it's time to have basic math operators that use said Arrays smoothly. Unfortunately, this also means creating many operators that overlap with native ones, so, in many cases, what was created instead was a composite of several operations into one. E.g. Discrete VOP.
Yet, from now on, many simple setups can take advantage of Array auto-looping operators and be expressed much faster. Feels good!
I'm still missing ways to infer values from arrays, e.g., avg() or min(). So I'll have to tackle that in the future.
ADDED
VOP Nodes
Array support is implied. Instead of a brief description for each, the corresponding VEX/VOP functionality will be enumerated. Plus extra functionality.
-
Additive. Add and Subtract operators.
-
Multiplicative. Multiply and Divide operators.
-
Discrete. Floor, Ceil, Round, Truncate, Modulo. Plus Oscillation and custom rounding.
-
Lerp. Linear Interpolate, with float or multidimensional value.
-
InvLerp. Inverse Lerp or Linear Step. Fitting a value between two values.
-
Sign Value. Sign. Plus defining what should be the output for each case.
-
Angle Formats. Radians. Degrees. Plus Circle Unit and Cosine of the Angle.
-
Trigonometric. Sine. Cosine. Tangent. Arc Sine. Arc Cosine. Arc Tangent. Plus 15 other trigonometry function.
-
Exponential. Power. Root. Logarithm.
-
Direction/Length. Length. Normalize. Distance.
-
Dot. Dot. Plus optional normalization.
-
Cross. Cross. Plus optional normalization.
Shelf Script
-
Helpwiki Starter. Select a node and press this to generate Houdini wiki markdown content based on the node's inputs, outputs, parameters, icon, etc.
Due to Summer activities scheduling, it was not possible to include at the time of this release, the usual example HDAs that demonstrate the nodes practical application and features. I'll have to address this in a future release. That said, all nodes are documented (? button).
Extra notes
Cheers
prb
Dashing access to Attributes and Groups. More array support. v3.0.0
This release focus on geometry attributes and group. An effort was made to also provide quick and easy menus that speed up the process of sourcing the desired attributes or groups. Some also continue the effort of providing hand array generation or handling.
ADDED
VOP Nodes
-
Build Attribute Array. Given an array of elements' ids, source the attribute value for each element into an array.
-
Expand Group. Returns an array of geometry elements' ids that are reached by a group syntax
-
Import Attribute. Import geometry attributes with ease.
-
In Group Array. Split the input geo elements' ids into two arrays based on their membership to a group.
NOT BACKWARD COMPATIBLE
SOP Nodes
- Visualize Matrix : Changed Scale base parameter to be based on primitives' bounds, not on edge lengths, to better support packed prims, since they have no edges. Visualize Vector doesn't require said adjustment for now.
Extra notes
-
Click to Expand.
Formatincluded in Expanded Group and In Group Array to avoid having to use so much Vertex/Edge Formats HDA. But still use it for finer control.
Video: https://youtube.com/shorts/6d6k79sbvsE
Cheers
prb
Before Auto Looping, one needs to Array. v2.0.0
Before providing more operators that support arrays signatures, there should be more ways of building arrays. This release provides some builders for abstract arrays, while the next release will provide ones based on geometry attributes/groups.
ADDED
VOP Nodes
-
Build Constant Array. Builds an array of a given size filled with a unique value.
-
Array Resize. Conditionally resize an array with desired a fill value.
-
Build Indices Array. Build array of indices with transform and limit options.
-
Build Shuffle Array. Build array of shuffled sequential indices.
-
Build Uniform Array. Outputs an array of uniformly distributed values.
-
Build Random Array. Build an array of different unsorted random values.
-
Ramp. Shape float data with either a float or vector ramp.
ADJUSTED
SOP Nodes
- Dot Product Didactic. "Helper Geo" disk now has a proper cosine gradient, linear instead of radial.
NOT BACK COMPATIBLE
VOP Nodes
- Limit Range. Renamed ports/parameters "begin"/"end" to "first"/"last" respectively.
- Wipe Range. Renamed ports/parameters "begin"/"end" to "first"/"last" respectively. Removed
rampedoutput since it's unit (0 to 1) and can be just ramped by the new Ramp VOP. - Connected Elements. Removed "Topological Order" port, it's just a parameter option . VEX compilation sped up.
Extra notes
-
Click to Expand.
-
Roundingmethods introduced for some integer signatures (converted from floats), where the core decider is a limit value that determines if the float will be rounded to the previous or the next integer. There are additional mirror and limit options. Same method will be seen in a Discrete VOP. -
Arrays Auto Resize can now use the first element as fill value. It won't provide the option to resize up the array at the start through, just the end.
-
SLERP multidimensional method for Build Random Array and Build Uniform Array will indeed use slerp() for
matrix,matrix2andvector4as quaternion.matrix2is promoted tomatrix3and interpolated similarly, while bothvector2andvectorare interpolated by their direction and length. -
Ramp uses a bunch of hacks to work properly. It's not animatable like the native but doesn't require going to the SOP level to edit it. I do wish its graph was visible in the node network too, not just in the parameters. A bit like blender:
-
Build Constant Array can feel redundant with Array Resize but its simplicity with the added sequential indices arrays makes it worthwhile.
-
Cheers
prb
A Dashing First Release! v1.0.0
First release is humble and a revamp of assets I've first published on Orbolt and also representative of the type of nodes and principles that will be strived for in further releases.
ADDED
Scene files
- DASH_all_nodes.hip. Scene with all DASH nodes instantiated.
SOP Nodes
-
Edges to Lines. Create polylines or line segments from edges with extra info.
-
Visualize Matrix. Quickly visualize matrix attributes and packed matrices in the viewport.
-
Visualize Vector. Quickly visualize vector attributes in the viewport according to their metadata.
-
Dot Product Didactic. Interactive demonstration of Dot Product.
VOP Nodes
-
Connected Elements. Returns an array of geometry elements connected to the input element.
-
Vertex/Edge Formats. Convert vertex or edge ids between single id and pair of ids formats.
-
Bend. Bend deformer with many range and posing.
-
Transform 1D. Create a 2×2 transform matrix and transform a float with it.
-
Limit Range. Limit, shape and repeat a range of values.
-
Wipe Range. Make a transition over a range.
-
Iterability Cast. Control if an HDA output is single or array driven by an input.
Settings
- DASH_SingleMonitorBuild desktop. A Houdini UI layout with a vertical network view and a Geometry Spreadsheet by default.
- Random color VEXpression. Color elements with a random Hue, rainbow effect. (Unlike Color SOP Random method).
- DASH - - - Utils Shelf Tab with 2 scripts.
Cheers
prb