Skip to content

Simshot is a Houdini SideFX digital asset for accelerated development and customization of scenes with emulation of shots from different types of weapons, accompanied by various effects when hit.

License

Notifications You must be signed in to change notification settings

SpongeFX/simshot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hbuild Logo Simshot 1.0

license version

Simshot is a Houdini SideFX digital asset for accelerated development and customization of scenes with emulation of shots from different types of weapons, accompanied by various effects when hit.

simshot.mp4

Simshot moves points along specified trajectories, determining collisions with polygonal geometric objects, where it creates points at the intersections of polygons and a polygonal model of the trajectory of movement inside the polygonal object. Asset calculates the rebound effect with a configurable bounce angle threshold. The points and polygons created as a result of calculations have special attributes for applying accompanying effects.

πŸ’Ύ Installation

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

β˜‘οΈ Features

  • Tested in Houdini versions: 19.5, 20.0
  • SOP/DOP packed and unpacked geometry support.
  • Interactions with simulation and/or animation in real time.
  • Rebound Effect: Customizable bounce when hitting polygons at sharp angles.
  • Explosion mode for placement at the locations of the sources of explosion in collisions.
  • Flexible velocity settings for use in simulations.
  • Defines polygons that occur inside other polygon objects in RBD simulations with basic collision parameter values, which can significantly reduce simulation time in scenes where other effects do not require high collisions.
  • The emitter of points can move during simulation.

πŸƒ Quick guide how to use the Simshot

1. Go to the Source tab, select the source and the type of incoming geometry in Geometry Source.
2. Specify the path to the geometry or connect to input3 depending on the Geometry Source selection.
3. If you selected DOP as your geometry source, set the objects to import in the Objects section.

Requirements for incoming geometry:

  • Incoming geometry must have a string point attribute with a unique value for each object.
  • If you are using fragmented geometry, there should be a group attribute specifying whether each primitive is inside or outside.
  • Optional: Vector point attribute named "velocity(v)" is necessary if Output Point Offset is enabled.
  • For unpacked geometry to work correctly, each primitive in the incoming geometry must have a primitive attribute called "xform" containing a matrix of transformations.

4. Go to the Setup tab, and set name of the attribute with a unique value pieceattrib for each object, if it is different from the default name. If you are using fragmented geometry with closely spaced primitives, enable Fragmented Geometry. Read the description of the parameters and configure it as you want.

5. Add emitter and target points. To conveniently add points for calculating the trajectory of movement, it is recommended to use HDA aim.

  1. If you are using HDA aim and have disabled "direction correction", and then go next step.
  2. If "direction correction" is enabled, go to the ”Targets” tab and enable the "Start Position Attribute" toggle (recommend linking these parameters), and then go next step.

Alternative method without using HDA aim: If you are not using HDA aim, you can set the start and target points with the necessary attributes in the β€œEmitters” and β€œTargets” tabs. However, please note that this method has limited functionality.

Emitters tab:

  1. Enable the "Enable Adding Points" option.
  2. Add a points and set the starting point positions.

Targets tab:

  1. Turn on the "Enable Adding Points" option.
  2. Change the next parameters if you want:
Start Frame

Default start frame.

Frames Between Active

The number of inactive frames between the creation frames of target points.

Speed

The parameter value used as the point movement speed.

Frames Between Active

Default emitter number. This can be useful if you want to use multiple emitters. The emitter number is the number of the point imported into input1 or/and created in the *Emitters tab.

  1. Add a points and set the target point positions.

6. Set the settings in the Explode tab:

  1. Add a moving point to a special group temporarily during the collision.
  2. Optionally, remove this point from the simulation later.
  3. This can be useful as a reference position for the source of the explosion.
  4. Review the settings in the Explode tab if you are interested in this functionality.

7. Set the settings for bounces from primitives when intersecting:

In the Ricocheted tab, you have the option to disable or enable the bounce effect when colliding with sharp angles on primitives. You can also adjust the bounce angle threshold and other parameters.


8. Once you have created and positioned the emitters and target points, activate the timeline to run the asset simulation. If you are using HDA aim, you can create target points during the simulation while the timeline is active.

9. Cache the result you like and apply the effects you need using the points, primitives and their attributes produced by the asset. To view the points and primitives generated by an asset, add a Merge node, set its display flag, and connect it to the asset's output1 and output2.

Table of attributes and groups generated by the asset

Attributes
i@chk

Is a state attribute. Its value is "1" when the moving point is inside some geometric object in the current frame, "0" - outside the objects, "8" if "Explode Mode" is enabled and intersection of primitives is defined.

f@cur_frame

Is the creation frame. It has a value of 0 for moving points.

v@dir

Is the trajectory for moving points (f@speed > 0.0001). It is assigned to points created as an asset and belonging to the "enter" group as a velocity multiplier for applying effects. See description the parameter Spole_mult to understand how it works in practice.

f@dlim

Is the distance that a point can come inside an object before stopping. See description the parameter Use Target Points Attribute to understand how it works in practice.

i@hact

The attribute has a value of "1" in the frame of intersection and "0" when no intersections are defined. It is used as an emitter to apply velocity patterns.

i@id

All moving points (f@speed > 0.0001) have a unique attribute value id equal to the point number. All created points receive the id of the point that initiated their creation.

i@inter

For moving points this attribute has the value of the last intersected primitive number. For points made in asset, this attribute has the value of the primitive number from which the transformation matrix and @N are imported.

v@N

The normal of the primitive with which the intersection was defined for points made in asset, used to adjust the velocity vector when applying effects.

s@name

For moving points, it has the value of the unique identifier of the last intersected object.

i@ncid and i@nid

Intersection identifiers attached to the object. All points created on a certain intersected object have a unique attribute added, which has the same value for all points associated with this object. This is used to create a unique attribute value for building a primitive curve that repeats the trajectory inside the object. It is also used to link effects to specific objects. The value of @ncid for a moving point represents the number of intersected objects.

s@name_trail

The identifier for linking points and primitives to a specific object.

v@odir

Created during bounces in the bounce @Frame. It has the value of the trajectory along which the point moved before bouncing. Used for applying effects.

f@speed

The point movement speed.

v@spos

Position for applying the transformation matrix.

s[]@stack

Identifiers of the last intersected objects. Only for moving points.

Groups
entry

The group of points created at the position of the first intersection with an object.

exit

The group of points created at the position of the last intersection with an object.

moved

The transformation matrix is applied to the points in this group. Points are added to this group after a temporal delay in the parameter Transform Matrix Delay.

moving

The group for moving points.

ob_in

Identical to the entry group, but the points remain in the group until the end of the simulation.

ob_out

identical to the exit group, but the points remain in the group until the end of the simulation.

ric_pt

Points created at the position of a bounce are added to this group.


If you import geometry from a DOP simulation, you can send the velocity(v) back to the source of the imported simulation for reverse interaction. This feature is not recursive, but it allows you to interact with the simulation in real time if your computer is powerful enough.


πŸ”€ Description of Inputs and Outputs:

πŸ“₯ Inputs:

Input1 - This input can be used to connect emitter points to the asset. It can consist of one or more points with either a changing or static position. The path to the β€œEmitter points” can also be set in the β€œSource” tab.

Input2 - This input can be used to connect target points to the asset. It can consist of one or more points with the necessary attributes for the asset to function correctly. The path to the β€œTarget points” can also be set in the β€œSource” tab.

πŸ“€ Outputs:

outpout1 - This output consists of moving points and points created by the asset when collisions and bounces are detected.

outpout2 - This output consists of points and polygons that follow the trajectory of movement within polygonal geometric objects. The parameters for this output can be configured in the Trails tab.

outpout3 - This output contains points with the velocity(v) attribute, which can be used for interaction with other simulations. The parameters for this output can be configured in the Velocity tab.

outpout4 - This output consists of unpacked incoming geometry (if packed geometry was submitted) without the points that were created by the asset. The primitive attributes @N and @xform are added.
Important feature: If "Fragmented Geometry" is enabled, all objects(and pieces) will be scaled down by the value of the "Pieces Scaling" parameter. This may affect the final image if you plan to use this data in the render.

outpout5 - This output is used to visualize emitter and target points while creating and configuring positions in the β€œEmitters” and β€œTargets” tabs.


πŸ“‚ Tabs and Parameters

πŸ“ Source

The incoming target points must have the following point attributes: i@emit, which represents the emitter point number, and f@speed, indicating the speed of the point along its trajectory. If the "Start Position Attribute" is enabled in the Targets tab, an additional point attribute v@startpos needs to be added. The point movement will begin once the value of the attribute f@speed exceeds 0.

To select the source and type of incoming geometry go to the "Geometry Source", and set the path to the geometry.

Transfer Attributes

If you choose DOP as the geometry source, you can use the "Transfer Attributes" parameter to transfer specified attributes to the unpacked geometry, which will be available in output4.


πŸ“ Setup

In the β€œSetup tab”, you can find settings that affect the search and detection of collisions during the simulation.

Pieces attributes

The name of the point attribute containing the unique identifier.

Object Size

This parameter controls the distance at which intersections are searched for in cases involving moving objects during collisions. It is used to determine whether the moving point is still inside or outside the object by performing an additional check. It is recommended to set this parameter to the maximum thickness of the largest object that might be affected by the simulation.

Threshold

The threshold parameter is used to shift the position in the direction of the intersection search. This helps to avoid falsely detecting intersections with the geometry of the search source.

Transform Matrix Delay The transform matrix delay parameter determines the delay in applying the transformation matrix to points created by the asset when intersections are detected. Increasing this parameter can be useful when creating effects, such as a laser beam passing through a primitive for more than one frame. The value is specified in frames.
Group Removal Delay

Delay in removing points created by an asset from the entry and exit groups creates a delay in the removal of points. The value is given in frames. Points are added to these groups in the creation frame, which allows for the application of effects at the moment of collision.

Fragmented Geometry

Enabling this parameter allows for efficient processing of fragmented geometry when using RBD solvers with low collision settings. It redefines the order of intersected primitives in the case where one geometric object has penetrated another. Ricochet only works on polygons in the outside group.

Pieces Scaling

The reduction coefficient of objects increases the accuracy of detecting collisions with closely spaced primitives that have the same position.

On-Hit attribute

Enabling adds a point attribute called i@hact to moving points. This attribute has a value of 1 when an intersection has occurred, and 0 when there are no intersections. It helps in applying velocity(v) only at the moment of collision and movement inside the geometric object. This attribute can also be used as a collision indicator. Disabling this attribute makes the application of velocity(v) constant, which can cause the use of force on objects that did not intersect but had sufficient distance. Sometimes this effect can look interesting, like a shockwave from a projectile flying near an object, but it is often an undesirable effect.

Enable Output Point Offset This parameter activates the search for an alternative trajectory in situations where the first intersection found should create an exit point on an object with which there were no previous intersections. The search is performed taking into account the object's velocity(v), and involves searching for curved surfaces, calculating the trajectory, and creating additional points.

Search distance(%)

The minimum distance to search for intersections.

Output Point Position Offset The offset of the position of the output point in the direction of movement of the collision object.
Stop Points

Enables the stop of a moving point inside the object if the distance specified in the β€œDistance to stop” parameter has been passed inside the object. By default, the toggle is turned off and if the "Enable Explode Mode" is not activated, then the point moves along the trajectory nonstop. The distances of all passed objects are summed up for each moving point individually.

Use Target Points Attribute

Enables checking target points for the presence of a point float attribute called f@dlim. If the attribute is present in the incoming points, its value will be used to calculate the stopping distance. This allows for manual control of the distance that a point inside the object must travel for each point individually. The dynamically changing values of f@dlim can be seen during simulation in the Geometry Spreadsheets when intersections occur. The covered distance is summed up and subtracted from the value of the attribute f@dlim.

Distance To Stop

If incoming target points do not have f@dlim and "Use Target Points Attribute" is disabled, then the value of f@dlim will be set for each point, as specified in this parameter.

Random

Adds random values limited by the min max parameters to the value of attribute f@dlim.

Min

Minimum deviation value of randomization.

Max

Maximum deviation value of randomization.


πŸ“ Explode

In this tab, you can configure the behavior of points in a collision, making it convenient to attach a PyroBurstSource or something similar. Refer to the example.

explode_0.mp4

Enable Explode Mode

When a moving point detects a collision with a primitive, the point is added to the group for a certain number of frames and then removed from the simulation.

Group

The name of the group to which the points will be added when the intersection is defined.

Distance to explosion

The distance that the point will move from the intersection position in the direction of the trajectory before being added to the group.

Explode Delay

Delay in adding to the group. Value is in frames.

Explode Duration

The duration of the point's presence in the group. After the specified value expires, the point is removed from the simulation. Value is in frames.


πŸ“ Ricochete

In this tab, you can enable or disable the bouncing effect, adjust the threshold of the angles at which a bounce should occur from surfaces, and adjust the bounce trajectory.

Enable Ricochet

This toggle will activate the checking of the angle of bounce from the polygon, followed by changing the trajectory when the bounce conditions are met, and creating points added to the "ric_pt" group at the bounce locations from polygons.

Rebound Angle Threshold

The angle between the polygon normal and the trajectory of the point. If the obtained value is greater than the parameter value, then a new trajectory and a new position are calculated, where the point will be moved and the trajectory attribute will be changed. The parameter value is in the range from 90 to 180 degrees.

Rebound Angle Min

Minimum deviation from the bounce trajectory. When performing a bounce and calculating a new trajectory, a random function is used with remapped output values determined by this parameter.

Rebound Angle Max

Maximum deviation from the bounce trajectory. When performing a bounce and calculating a new trajectory, a random function is used with remapped output values determined by this parameter.

Group Removal Delay

Delay in deleting points created during the bounce from the "ric_pt" group. Value is in frames.

Enable attributes Without Bounce

Enable the attribute to exclude bouncing. All intersected primitives will be checked and if a match is found with the attribute name and value, the bounce calculation will not be performed. This can be useful if there are objects in the intersecting geometry that should not cause a ricochet effect, such as a sheet of paper or cloth.

Attribute Name

The name of the attribute to exclude bouncing.

Attribute Value

The value of the attribute to exclude bouncing.

If the source of geometry for intersections is fragmented geometry and the "Fragmented Geometry" toggle is disabled, then the bounce calculation will also be performed for polygons in the inside group.

Fragmented Geometry enabled.

Fragmented Geometry disabled.


πŸ“ Trails

In this tab, you can configure primitive curves that follow the trajectory of movement inside the object. The points for the subsequent connection of their polygons are created in the POP DOP Network inside the asset and the settings in the Source, Birth, Attributes tabs are the POP Source settings inside popnet. The emitter for creating points are the entry and exit points, as well as a moving point while it is inside the object. Each curve related to a specific object has an attribute with a unique value that allows it to be identified separately or as a group by the id of the point that created the line. The attribute value is of type "0_1", where "0" is the id of the point that determined the intersection, and "1" is the id of a specific line belonging to one object.

Attribute Name

The name of the attribute with the curve ID.

Transform Matrix Delay

Delay in applying the transformation matrix to points. Increasing the parameter can be useful if you want to create, for example, the effect of a laser beam that passes through the primitive for more than 1 frame. The value is in frames.


In the Smooth tab, curve smoothing settings identical to the ”Smoothβ€œ SOP node are available.


πŸ“ Velocity

In this tab, you can create and configure a vector point attribute of velocity(v) for use in various scenarios. For example, you can transfer velocity to the rbd simulation in order to influence it during the simulation. It works like this: at the moment of collision or constantly (depending on the state of the On-Hit toggle), a line is created from points with the velocity(v) attribute, and then this data is imported into the simulation. The velocity(v) here is the normalized vector of the direction "v@dir" of motion multiplied by the speed attribute "f@speed". To see the template, turn on the β€œVelocity Template Visualization” toggle, create and connect Null to output3, and turn on the null display flag. Enable displaying point trails in the viewport to visualize the velocity(v). Customize the template according to your preferences and turn off the β€œVelocity Template Visualization” toggle.

liquid_1.mp4

Velocity Template Visualization

Enable the template display to adjust the direction of the velocity vectors.

Template Position

The position of the template velocity visualization. By default, the template appears at the zero position, but you can move it to any convenient location for customization.

Template v Multiplier

Vector multiplier for convenient visualization, depending on the scale (the values of this parameter only affect the visualization of the template). If you need to increase the strength in the simulation, use the β€œVelocity Multiplier” parameter.

Velocity Multiplayer

The multiplier of the velocity(v).

Number Of Points

Number of points in a line.

Segment Length

Distance between points.

Rotation Angle

Rotation angle. The axis of rotation is the direction of movement.

Tilt Angle

The angle of deviation from the direction of movement.

Velocity In The Direction Of Rebound Change the direction of the velocity(v) during the rebound. By default, the velocity(v) in the rebound frame is directed in the direction of movement before the rebound. When the rebound is turned on in the frame, the velocity(v) will be directed towards the rebound. If you are using RBD simulation and you need more fragments to be carried away towards the rebound, enable this toggle.

Enable/Disable

Rebound Velocity Multiplier

The multiplier of the rebound velocity(v). Replaces the β€œVelocity Multiplayer” value in the bounce frame.


πŸ”Ž Example

The example file contains simshot and aim assets, as well as a few simple examples of interacting with simulations and applying effects. This example file does not include some parts of the scene that you can see in this article, such as the spark effect, DOP FLIP, and the chain of simultaneous interaction between RBD DOP/SOP, FLIP DOP, and the asset when the FLIP simulation takes into account collisions with packed geometry and affects to this geometry during the simulation. This has some configuration features, but the general principle is the same as in the example presented. It is also procedural and works in real-time, but slower because, as a rule, the FLIP simulation uses high-resolution VDB to calculate collisions with fragmented packed geometry.

Download the example file simshot_example.hiplc and the folder "geo" with the bullet geometry file inside. Download and install HDA simshot and HDA aim. Open the example file, go to the Geometry object "SIM_shooting", select the HDA aim in the Network View, select the camera "aim" in the viewport, activate the timeline, and click the left mouse button (LMB) in the viewport window. You will see how the point on which the bullet geometry is copied will start moving along the trajectory from the camera position "aim" towards the position where the LMB click was made. When the trajectory intersects with the geometry, the force will affect the fragmented pieces.

example.mp4

πŸ“ /obj/Boolean/

Go to the "Boolean" geometric object. Here you can add holes in the places where the intersections of the geometry were found, or disable it. The selection takes place in the switch1 node. In the example file, the switch1 switch is already connected to the corresponding parameter of the geometry source in HDA simshot. If you select SOP and use unpacked geometry, then the corresponding input is selected in switch1, where unpacking geometry is excluded. Changes to the geometry are made by the SOP node Boolean, to increase the calculation speed, only those objects with which the intersection was determined are selected.

If this is a packed geometry simulation, you can use the velocity(v) attribute in the simulation and leave holes at the same time. At the same time, if the values of the velocity(v) attribute are high and in the next frame the geometric object with which the intersection was recorded overtakes the moving point, then a short line of 0.001 length is created on the object, having a starting point at the position found in the last frame, added to the enter group, and an end point in the position - @N + 0.001, not added to the exit group.

Geometry construction for Boolean is performed in SOP node polywire based on data from output2 of HDA simshot, noise is added to pointvop1.

You can also extend the proxy geometry of the lines so that they overlap the object for Boolean to work correctly.

Changing the length in the β€œValue” parameter in the Primitive Wrangle "increase_the_length". You can disable hole creation by toggle switch2.

You can also disable unpacking for geometry not participating in the for-each loop.


πŸ“ /obj/SIM_explode/

The geometric object "SIM_explode" contains the emitter settings for the explosion. When Explosion mode is enabled in HDA Simshot, imported cars will be added to a special group in case of collision. Point positions are used for pyroburstsource. The points added to the group are assigned the attribute f@cur_frame to calculate the initial frame of the pyroburstsource and pyrosolver simulation. For correct calculation, it is recommended to connect the β€œExplode Delay” parameter in "start_frame_attrib" with the parameter of the same name in HDA simshot, as shown in the example. The Object Merge node "OUT_V_EXPLODE" import the velocity for interacting with the simulation. The interaction takes place through a velocity transfer inside the DOP Network "dopnet_rbd" using the Geometry VOP DOP "velocity_explode", which has 2 parameters: "Force multiplier" – a force multiplier that increases the impact, and "Minimum Distance" – the minimum distance from the points generated by pyroburstsource to the points of the simulation object to which the velocity(v) will be transferred.
If you want to visualise smoke, activate the display flag on the "RNDR_explode" node.

πŸ“ /obj/SIM_smoke/

smoke_0.mp4

Here, you can adjust the emission of smoke at collision sites or apply emitter settings for other effects. In the Network Box "Emitters settings", there are settings for the shape, the number of emitter points, and the vector attribute velocity(v). Select "Display point trails" in the viewport to see the velocity(v) vector. Set the display flag on the Attribute Wrangle node "height_ctrl_ENTRY" to see the geometry on which the emitter points will be applied. Set the height of the sphere slice (parameter "Height") and the angle of inclination of the velocity(v) vector (parameter "Normal Angle"), if needed. In the scatter node, set the desired number of emitter points and add noise in the Attribute VOP "noise_vel", if needed.

The Attribute Wrangle "group_filter" controls the duration of the emitters. The duration of emitter activity is set in the β€œGroup Removal Delay” parameter, which in this example is associated with the β€œGroup Removal Delay” parameter in HDA simshot, performing an identical function.

In Attribute Wrangle "filter_for_nearby_sources", points located in close positions are removed. This parameter is relevant for fragmented geometry when there is a collision with a fragmented object, whose pieces are tightly adjacent to each other. In this case, the emitter will only be created on the first and last intersected primitive. The emitter will also be created on intersected primitives if the distance between the intersected primitives is greater than the β€œThreshold” parameter. For example, when a fragmented object is being destroyed. This is necessary to avoid unnecessary calculations and emitters for effects inside the fragmented geometry in case it is not destroyed. Disable this in switch1 if it is not required.

If you need smoke collisions, go to β€œdopnet1”, turn off bypass Volume Source Dop object β€œcollision_vol_src", connect it via the Merge node and configure voxel size vdb in β€œ/obj/SRC_DOP_collision_geo/collisionsource". This will increase the simulation time. You can also use billowsmoke from the toolshelf, sometimes it works faster.

If you want to enable smoke emission in intersections and visualise smoke, activate the display flag on the "RNDR_smoke" node.

In Attribute Wrangle "spole_in_dir", a vector attribute v@dir is added to the velocity(v) attribute assigned to the points in the enter and ric_pt group as a vector along the slope of the surface relative to the trajectory of the point. This changes the direction of the velocity(v), making it look more natural. For example, when sparks and fragments bounce off in the direction of the rebound trajectory or along the wall. You can control this effect in the "Spole_mult" parameter.


πŸ“ /obj/SRC_SOP_collision_geo/

The source of the not simulated geometry contains 2 examples: a simple one, and an example with an attribute that excludes bounce, created in Attribute Wrangle β€œadd_atrib_rest_bounce". Select your option using switch1.


πŸ“/obj/SRC_DOP_collision_geo/

The source of the DOP geometry for working with the asset contains 3 examples:

FRAGMENTΠ•D WALL - simple fragmented geometry.
RE-FRAGMENTED PIECES - localized fragmented geometry for more detail.
SAMPLE BUILDING - a simple building made of fragmented geometry for an explosion test.
Select your option using switch1.

πŸ“” NetBox β€œDOP SIM”

This NetBox contains the DOP Network "dopnet_rbd", the simulation result of which is imported into HDA simshot to determine intersections. Go into "dopnet_rbd", inside you can see a standard set of nodes for working with packed geometry, such as rigidbody solver, gravity, constraint network, and others. There are also nodes with custom settings for interacting with the simulation. Points with the velocity(v) attribute are imported from HDA simshot to the Geometry VOP Dop "velocity", where the minimum distance from the imported points to the packed simulation object (the position of the center point) is determined. If the distance is valid, velocity(v) is transformed into v@force attribute, which is applied to the packed simulation object in the rigidbody solver. Settings allow you to flexibly adjust the effect of force on objects.

This NetBox contains the DOP Network "dopnet_rbd", the simulation result of which is imported into HDA simshot to determine intersections. Go into β€œdopnet_rbd”, inside you can see a standard set of nodes for working with packed geometry, such as rigidbody solver, gravity, constraint network and others. There are also nodes with custom settings for interacting with the simulation. Points with the attribute velocity(v) are imported from HDA simshot to the Geometry VOP Dop β€œvelocity”, where the minimum distance from the imported points to the packed simulation object (the position of the center point) is determined. If the distance is valid, velocity(v) is transformed into v@force attribute, which is applied to the packed simulation object in rigidbody solver. Settings allow you to flexibly adjust the effect of force on objects.

πŸ’‘ VOP DOP β€œvelocity” parameters:

Power multiplier.

Force multiply
Minimum Value In Source Range

The minimum distance to the packed geometric object.

Maximum Value In Source Range

The maximum distance to the packed geometric object.

Minimum Value In Destination Range

Remapping of the minimum distance value.

Maximum Value In Destination Range

Remapping of the maximum distance value.

πŸ’‘ Sopsolver:

Also in dopnet_rbd there is a sop solver in which constraints are removed during collisions. Go inside β€œsopsolver”. The Primitive Wrangle β€œaccel” calculates acceleration (force divided by mass v@force / f@mass), and if the value exceeds the Threshold parameter value, the constraint is removed. Here you can add and configure segment clustering.


You can visualize the value of the force by coloring the packed geometry to which the force is transferred. Connect the unpack node to β€œOUT” and add Cd in the transfer attributes parameter.

πŸ”Έ For a stable simulation, make sure that the "Collision Sourse" node is located after the DOP Network and before the output.


πŸ“ /obj/SRC_shell/

The settings of the geometry are copied to moving points. In Attribute Wrangle "N_from_dir_and_add_vel" node, you can adjust the velocity for motion blur. Disable the color in the "color" node if you need to. By default, the geometry is a light source, you can disable this in β€œgeolight_shell”.


πŸ“ /obj/SRC_scorch/

Here, a geometry is created that repeats the inner surface of the holes produced in Boolean("SCORCH - Type-B") or polywire, repeating the trajectories inside the object imported from output2 HDA simshot ("SCORCH - Type C"). This geometry can be used to perform some effects, such as installing glow emitters (as shown in the example). To disable the glow effect on the geometry, turn off "geolight_scorch". Adjust the color and scale of the geometry in the nodes "scale_and_color(SCORCH - Type B)" and "color_and_width(SCORCH - Type C)", and adjust the noise in "add_width_noise" if needed. To turn on scorch, enable the light in the geometry light node "geolight_scorch".

scorch.mp4

πŸ’¬ Feedback

This version does not reduce the speed after collisions and bounces, and also does not allow you to determine the density and type of materials under various processing scenarios, and much more. I have a lot of ideas on how to develop the asset and this direction, but maybe someone will have interesting suggestions or suggestions, it would be very interesting to know about it, and If you have any feedback or run into issues, please feel free to open an issue on this GitHub project.

About

Simshot is a Houdini SideFX digital asset for accelerated development and customization of scenes with emulation of shots from different types of weapons, accompanied by various effects when hit.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published