Announcements

Announcement: We’re aware of an issue affecting starting a new topic from category pages and creating new blog posts. New topics can still be started directly from the relevant board. Learn more here.

get geo property node appears to output incorrect voxel positions

get geo property node appears to output incorrect voxel positions

calibrix
Advocate Advocate
1,024 Views
3 Replies
Message 1 of 4

get geo property node appears to output incorrect voxel positions

calibrix
Advocate
Advocate

I'm working with volumes in BiFrost. This is my first time working with a volume structure that is a tile tree. I'm used to volume structures that have uniform voxel sizes. So please excuse my naivety on this. I'm trying to style the voxel_fog_density. However, I've hit a road block. I'm trying to multiply a noise value into the density to create a more cloudy effect. However, get I try to get the voxel position for my noise look up I'm getting positions that don't appear to correspond to the voxel centers. When I multiply these array values with the voxel density I obviously get don't get the results I would want. Is this a bug with the get_geo_property node? Alternatively, I've trying to sample voxel locations use the generate_sample_locations and use those points for noise lookup, but that doesn't appear to correspond to the array of voxels either. Any help would be appreciated.

0 Likes
1,025 Views
3 Replies
Replies (3)
Message 2 of 4

michael_nielsen
Autodesk
Autodesk

Hi,

Thanks for pointing out the issue with the voxel_position. Try to insert the update_voxel_position node before extracting the voxel_position property. On this node you can also choose the location of the voxel positions. Note that by default all of our adaptive volumes use samples at the voxel corners (not the centers) as this makes it much easier to ensure that interpolation across resolution jumps works correctly.

Cheers,

Michael



Michael Nielsen

Principal Engineer
0 Likes
Message 3 of 4

marcus.nordenstam
Alumni
Alumni

Hi there

 

Welcome to the multi-resolution world of Bifröst 🙂

 

I suspect what's throwing you isn't a bug, it's just an incorrect assumption that the volume_scope is in fact drawing voxels: it doesn't!  The volume scope is drawing *tiles*.  Each tile is like a sub-grid of voxels.  Most tile contain 5x5x5 voxels.  

 

So by adding points at each voxel center, as you are doing, you should expect to see multiple points per box in the viewport, as the boxes do not correspond to individual voxels, but to tiles.  

 

The reason we don't draw individual voxels in the volume_scope is that, well, it would be too many to be useful to the human eye.  Most volumes would just turn solid with all the wires representing the tiny voxels.

 

Back in the Naiad days, we had a scope similar to the volume_scope (called the "Iso_Scope" for those of you who remember 🙂  ) The Iso_Scope had a "voxel shadow" mode where the user picked one of the three orthogonal planes and we would project the bounds of the volume to that plane, and make a grid to draw actual voxels along that plane.   That is probably the best way to visualize small voxels in the viewport, and keeping them orthogonal to an axis-aligned plane so that you can use the orthographic views to look at points etc vs their voxels.  If there is interest, we could look into updating the voxel scope to do that.

 

Anyway, I hope this helps

 

Marcus

 

Message 4 of 4

stamatk
Alumni
Alumni

Hi @calibrix 

 

Thank for your feedback, this information is very useful as we work to expand and improve on our volume tools and workflows.

 

I have attached a scene for you showing a working example of noise applied to a volume fog using update_voxel_positions and get voxel_positions.  I do agree that this workflow should be improved and will look into that.



Konstantinos Stamatelos

Bifrost FX Product Owner and Designer

0 Likes