I have a geometry which I was trying to import into Solaris with the typical SOP Import. This geometry is generated with a procedural animated boolean and, because of that, some frames result in empty geometry. The problem is when translating into USD, frames with no points doesn't show empty at all. I attached a very simple and quick to watch instance of the problem. I may have been missing something as I just started testing Solaris more in depth, but cannot understand why this happens but would like to understand it, although I suppose it's related to P being interpolated to the next frame with information... Any input about this and what I'm missing is welcomed!
SOPs: main geo boolean results in empty geo this empty frame translate as this when converting to usd:
Yes it is partially related to interpolation, but it's also because USD doesn't support prims appearing/disappearing from frame to frame. This is because prims appearing/disappearing over time would break composition.
The USD ROP and Cache LOPs support a feature called "Track Primitive Existence to Set Visibility". When enabled, Houdini will keep track of prims that appear/disappear from frame-to-frame. This means on frames when there is no geometry, the prim is still authored but is set to be invisible.
I'm not 100% sure why this parameter isn't available on the USD Export SOP, but even if you unlock the HDA and enable it, the USD Import SOP doesn't seem to like importing back into SOPs for some reason. However, within LOPs proper, Track Visibility does behave as expected.
goldleaf However, within LOPs proper, Track Visibility does behave as expected.
while it works in LOPs on cache1 node in LOPs, it doesn't seem to be an ideal solution since the geometry is still present/interpolated on the mesh even if hidden so LOP Import SOP importing back the cache1 lop will see that geo (it would require unpacking and using s@usdvisibility to further delete such geo) and also if there is some stronger opinion about the visibility later such interpolated or held geo can show up again
would it be more proper to author empty geo time sample for that prim for such cases? I believe Alembic works this way during stitching
goldleaf Yes it is partially related to interpolation, but it's also because USD doesn't support prims appearing/disappearing from frame to frame. This is because prims appearing/disappearing over time would break composition.
The USD ROP and Cache LOPs support a feature called "Track Primitive Existence to Set Visibility". When enabled, Houdini will keep track of prims that appear/disappear from frame-to-frame. This means on frames when there is no geometry, the prim is still authored but is set to be invisible.
I'm not 100% sure why this parameter isn't available on the USD Export SOP, but even if you unlock the HDA and enable it, the USD Import SOP doesn't seem to like importing back into SOPs for some reason. However, within LOPs proper, Track Visibility does behave as expected.
Thanks! I'm starting to fit the USD pieces step by step. Yesterday I was testing things on LOPs and found out I had missed another piece of the puzzle unit now: the visibility property is the key to hide/show geometry and is animated based on presence or not of geometry, not just a common visibility flag. It makes sense, given the composition reasons you mention, but at the same time, as a newcomer, is a little bit unintuitive and cumbersome on first look, as the case exposed by Tamte supports.
goldleaf However, within LOPs proper, Track Visibility does behave as expected.
while it works in LOPs on cache1 node in LOPs, it doesn't seem to be an ideal solution since the geometry is still present/interpolated on the mesh even if hidden so LOP Import SOP importing back the cache1 lop will see that geo (it would require unpacking and using s@usdvisibility to further delete such geo) and also if there is some stronger opinion about the visibility later such interpolated or held geo can show up again
would it be more proper to author empty geo time sample for that prim for such cases? I believe Alembic works this way during stitching
That's a great question. At the moment, I can't think of a reason why empty attributes/primvars would be any better/worse than visibility. They may very well be one, but I just can't think of it right now TDs at Pixar have used visibility for these cases, so in that sense it's more "proven". I can also imagine that it's less work to simply author visibility, without necessarily tracking all of the primvars/attributes that might be added. But otherwise, I'm not sure I have a satisfactory reason; perhaps someone else will be able to chime in with a better response.