PopNetwork Timeinc Logic

From the developers #

In the context of Houdini’s POP networks, particularly within /popnet/popsolver/integrate_forces/, you might notice that the timestep is adjusted by adding age before integration.

Why Adjust the Timestep? The integration logic follows:

clamptime = clamp(timestep + age, 0, timestep)

Breaking it down: #

If timestep + age < 0, the value is clamped to 0.

If timestep + age < timestep, it takes the value of timestep + age.

Otherwise, it uses timestep. This value is then used for position updates:

@P += @v * clamptime

Handling Negative Birth

For particles with a positive age (the normal case), clamptime is simply timestep, meaning the usual integration process occurs without modification.

However, some particle sources use “negative birth.” This means that instead of particles spawning exactly at the start of a frame with age = 0, they are effectively born earlier within the same frame, starting with a negative age.

Without timestep adjustment, these particles would take a full step forward, causing them to clump unnaturally at their spawn location. By clamping their movement based on their time of birth, the network ensures they only advance by the time they have actually existed within the frame.