14.06.2020, 20:52 fxtd

def redshiftNodes(node):
    for key in hou.nodeTypeCategories()['Vop'].nodeTypes().keys():
        if 'redshift' in key and 'redshift_vopnet' not in key:
            print key
            node.createNode(key)

14.06.2020, 20:43 fxtd

Get a list of all available nodes by category:

hou.nodeTypeCategories()['Vop'].nodeTypes()

14.06.2020, 20:38 fxtd

When converting a position to polar coordinates for presentation in the form of a map, you need to swap the Y and Z coordinates in the original position. Z axis should be multiplied by -1 for comfortable viewing.


14.06.2020, 20:34 fxtd

HScript to get menu parameter items from another node:

opmenu -l ../color1 colortype

where ../color1 is the path to the node, colortype is the ordered menu name of this node.


14.06.2020, 20:02 fxtd

With small scales of bullet simulations, you need to use minimal pieces of the order of centimeters. You can not use millimeters. Scaling in 20 times from 2-4 mm to 4-8 cm solved many problems.
In this case, it is necessary to increase the time scale by sqrt(n) times, where n is the increase in scale. For n = 20: time scale = 5. The comparison with the test simulation of the real scale coincided in behavior.
Substeps also need to be increased: substeps = time scale = 5. In the case of bullet sim, you can increase the number of substeps on the solver by a multiple of this value:
old = 10, new = old * time scale = 50 or more.
Example: time scale = 4, number of substeps = 10, new value = 60. This gives the same result as increasing substeps of the DOP network, but several percent faster.
An increase in constraint iterations will not produce a change in the result, since the need to increase the substeps is caused by the high speed of the objects.


14.06.2020, 18:36 fxtd

The trail node calculates the incorrect velocity if you cache frames before $FSTART, and if the “Evaluate Within Frame Range” checkbox is checked. It must always be turned off, as is done by default.


14.06.2020, 18:31 fxtd

Do not store attributes in points for VDB primitives. They can mix or change. For example, this can happen after the VDB Combine node with a simple multiplication by a constant value for the density field.


14.06.2020, 18:25 fxtd

Deformation things are sometimes more profitable to write in alembic than in bgeo.sc. Transformations are in no way more profitable to write in alembic.
If there is repeating geometry (several repeating packed primitives with the same path), writing them to alembic with separation by the path attribute will fail, and writing in bgeo.sc will be much more optimal.
And in the case of deformation, and in the case of transformation when writing to an alembic, you need to do a hierarchy separation by the path attribute, regardless of what we write: geometry or alembic primitives. Double packing will not happen.
This is not necessary in the case of deformations – memory savings will be about a percent. But it is better to make a breakdown in both cases for a single approach.


14.06.2020, 14:07 fxtd

The SDF with positive values inside and negative outside is used for collisions. But the SDF is negative inside by default. So you need to invert it.

Always use the fill interior parameter for custom collision sdf.


14.06.2020, 13:49 fxtd

Geometry Filter Width (vm_geofilterwidth) sets a minimum rendering width, in raster space, for curves and points. Any point, or curve segment, smaller than this value, at the projected point, will instead have its opacity scaled down as a ratio of the minimum width and the actual width. This helps rendering very small points and thin curves, such as hair and fur, without having to adversely increase the pixel samples to compensate. This value should be kept at around 0.5 to 1.0. Larger values may significantly increase render time, since the geometry is wider and more transparent samples may be taken. A value of 0 disables the option.