Hi,
I read in another thread that aiUserData doesn't support some forms of Bifrost channel data, but I was a little fuzzy on the details. Can you clarify if the following setup is supported or not?
I have a Bifrost Aero simulation that I wish to render as an aiStandardVolume. I need to remap the channel data to art direct the look of the fluid. The built-in channel fields in aiStandardVolume, such as "Density Channel" and "Color Channel" are working as expected, but I need to remap those channels. For example, I might want Scatter Color to be a gradient driven by the "smoke" channel of the simulation. Unlike the Bifrost shape node itself, the aiStandardVolume does not feature any remapping controls such as input/output ranges, value function graph, or color gradient.
I have had success with remapping LIQUID color channels, but for some reason, the Aero color channels aren't being recognized. All I get is the "Default Value" output from the aiUserData node; I don't get any actual channel data.
Here is my workflow:
1. Check to see which channels exist on the selected Bifrost shape node with MEL commands "getAttr aero1.availableParticleChannels;" and "getAttr aero1.availableVoxelChannels;"
2. Export the desired channels from the Bifrost shape node: in Attribute Editor > Render > Channels, type in the names of the channels separated by spaces. In this case, all I need is "smoke". Note that "vorticity" is already entered in the field, but Aero does not have vorticity. So I delete "vorticity" and enter "smoke" in the field.
3. Create aiUserDataFloat node, enter "smoke" as the Attribute string, connect to a shading network. In this case, connect to a remapValue node and use the Color Out to drive Scatter Color on the aiStandardVolume. No result.
I tested this setup by substituting a Maya volumeNoise as the source of the remapValue, and it works fine. So it seems like the thing that is not working here is the Bifrost channel data is somehow not being seen by aiStandardVolume. But I have done all of the things.
None of this is documented anywhere, and there is no way anyone could possibly figure this out without help from someone more experienced. We must once again rely on the oral tradition. So I have two complaints; first, that this channel data workflow is not documented, and second, that it doesn't seem to work at all for Aero.
Please help. Please don't tell me that there is no support for Bifrost Aero channel data, that just can't be possible.
Thank you,
Aaron
Solved! Go to Solution.
Solved by aaronfross. Go to Solution.
Also, and significantly, if I switch the Bifrost shape node "Render As" property to "Points" instead of "Volume", then the data channel works as expected.
So, no response to my concerns. Volume rendering doesn't support Aero data channels, right? It would be really great to get some response to this.
user data shaders won't be able to read channels from a volume
for channels in a vdb, you'd have to use the volume_sample shaders
Thank you Stephen. Am I correct in determining that Bifrost data channels can be assigned by typing the name directly into the Standard Volume shader node? If this is correct, then why can't the User Data nodes do the same? Is this just a missing feature? If so, it's a necessary feature that needs to be added in an update. Rendering to Points is a workaround for my current project, but that's not going to work in all situations. The User Data nodes need to support Bifrost volume data channels.
Before I try to do something that can't be done, can you tell me this... do the volume_sample shaders work with Bifrost, or only with VDB files?
The documentation, once again, goes into great detail about all of the features and options of the node, but does not mention anything about compatibility or workflow.
It's like asking someone what time it is, and they tell you where they bought the watch.
Bifrost aero and foam are exported with a Volume Standard shader, so the volume sample shaders will work too.
User data is per-object, per-point, or per-face data, so it's for geometry. For a volume node, you could have per-object user data, but there's no user data context (eg per-vertex context) for volumes.
Thank you Stephen, I hope the help docs get updated with some of this key information. Your explanation about user data being only per-vertex was very helpful. I am able to art direct the fluid as a volume using the volume_sample shaders, so I get the result I need.
Best regards