Releases: probiner/DASH
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 BACK 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 BACK 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.
Format
included 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
ramped
output 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.
-
Rounding
methods 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
,matrix2
andvector4
as quaternion.matrix2
is promoted tomatrix3
and interpolated similarly, while bothvector2
andvector
are 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