Community
Bifrost Forum
Welcome to the Bifrost Forum. This is the place for artists using Bifrost to ask and answer questions, browse popular topics, and share knowledge about creating effects procedurally using Bifrost. You can also visit the Bifrost Community on AREA to download an array of ready-to-use graphs, read Bifrost news and updates, and find the latest tutorials.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Visualize data in detail

18 REPLIES 18
SOLVED
Reply
Message 1 of 19
araps
1624 Views, 18 Replies

Visualize data in detail

How i can visualize the data coming from nodes but in detail ? like the screenshot right side ( which is part of a tutorial ) as watchpoints show just the size-min/max

 

Also how this dump_object node works? i cant see any text file, and it works only for objects or with modification nodes as well? as get_point_position/Length etc.

 

Thanks

18 REPLIES 18
Message 2 of 19

You can use the dump_object node to examine the contents of a Bifrost Object. In the example shown below, Bifrost will dump the contents of the sphere mesh to /tmp/dump.txt. If you need to examine the contents of an array, you can always add it to an empty Object created with the value node.

 

dump.png

Message 3 of 19

Hello and Thanks for the reply

 

How i can see this txt file ? because i cant see it somewhere 😛 it is been stored to a path on my pc ? 

 

as for the array, i create a value node make it array and connect its output to input object of the dump_object?

 

Thanks

Message 4 of 19
pranaymeher
in reply to: araps

Hi Araps, 

     The file is saved on the path you specify in the filename and directory path you enter in the 'dump object' node. I hope the image attached to this post helps.

 

Regards,

Pranay

Message 5 of 19
araps
in reply to: pranaymeher

Hi  pranaymeher

 

Thanks for the answer. I have found now the txt 🙂

 

is any way to see specific attributes only? as an example you get_point_position then you modify them etc, can i do something similar to visualize the modified values?. I get an error when connect a value node with dump_object

 

Best Regards

Message 6 of 19
pranaymeher
in reply to: araps

Nope, I haven't yet found a way to isolate a specific property such as point position to be dumped. Hopefully someone from Autodesk could help us out.

Message 7 of 19

You could always remove all but the property that you are interested in before piping the Object to dump_object. This can be accomplished by using erase_property. For your convenience I've built a compound called keep_property that does the inverse of erase_property. See the attached screenshot and zip file.

 

Screenshot_20190826_093102.png

Message 8 of 19

Thank you 🙂

Message 9 of 19

Hello @morten.bojsen-hansen 

Is there a way to use this keep_property with an array, in order to dump the array-information with dump_object ?

Message 10 of 19

@moiamy, I am not sure I understand what you are trying to do. Do you want to dump an array of Objects?

Message 11 of 19

@morten.bojsen-hansen 

Here is a screenshot

I need to check data inside the disjoint_point_position output array (the watchpoint gives only the size)

But I can't figure how to plug it inside the dump_object with this keep_property compound

 

bff keep property.jpg

Message 12 of 19

I see, I don't think you need keep_property for this. I'll assume disjoint_point_position is an array<array<float3>>. Then you can use an iterate node to "flatten" the array<array<float3>> to a number of array<float3> and add them to a different Object (in my case, I just added it to a mesh sphere) and use dump_object on that.

Screenshot_2021-05-03_08-51-30.png

Message 13 of 19

thanks @morten.bojsen-hansen 

I used your trick but I guess something is missing from my side 

 

bff flatten.jpg

Message 14 of 19

Actually, on second consideration adding the data to a mesh sphere was a bad idea. Please try copy pasting the code below into a new Bifrost graph instead.

<sub_root>
    <nodes>
        <node>
            <vnnNode name="dump_object" type="BifrostGraph,Diagnostic::IO,dump_object" flag="0">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-224.5 -153</value>
    </metadata>
</metadatas>
    <ports>
        <port name="object" type="Amino::Object" flag="0" is_input="yes"/>
        <port name="filename" type="string" flag="0" is_input="yes">
            <metadatas>
                <metadata name="UIWidget" value="FileBrowserWidget"/>
                <metadata name="UIWidgetProp" value="browserMode=save;filter=&quot;Object   (*.txt);;All (*.*)&quot;"/>
            </metadatas>
        </port>
        <port name="folder" type="string" flag="0" is_input="yes"/>
        <port name="sample_size" type="uint" flag="0" is_input="yes"/>
        <port name="out_object" type="Amino::Object" flag="0" is_input="no"/>
        <port name="log_file_path" type="string" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <compound>
            <vnnCompound name="for_each" type="AminoVnn_ForEachCompound" flag="2048">
    <metadatas>
    <metadata name="icon">
        <value>&lt;NATIVE&gt;../icons/LoopForEach.svg</value>
    </metadata>
    <metadata name="ViewportRect">
        <value>-544 -818 1089 1637</value>
    </metadata>
</metadatas>
    <node_metadatas>
        <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-789.36 -121.63</value>
    </metadata>
</metadatas>
    </node_metadatas>
    <ports>
        <port name="max_iterations" type="long" flag="0" is_input="yes" default_external_values="10">
            <metadatas>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="true"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="current_index" type="long" flag="0" is_input="yes">
            <metadatas>
                <metadata name="iterationCounter" value="true"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output" type="array&lt;Math::float3&gt;" flag="0" is_input="yes" is_fan_in="yes">
            <metadatas>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
            <ports>
                <port name="output" type="Math::float3" flag="0" is_input="yes"/>
                <port name="output1" type="Math::float3" flag="0" is_input="yes"/>
                <port name="output2" type="Math::float3" flag="0" is_input="yes"/>
            </ports>
        </port>
        <port name="disjoint_point_position" type="array&lt;array&lt;Math::float3&gt;&gt;" flag="4096" is_input="no">
            <metadatas>
                <metadata name="iterationTarget" value="true"/>
            </metadatas>
        </port>
    </ports>
    <child_graph>
        <sub_root>
    <nodes>
        <node>
            <vnnNode name="input" type="" flag="8">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-449.5 -60.5</value>
    </metadata>
</metadatas>
    <ports>
        <port name="max_iterations" type="long" flag="0" is_input="yes" default_external_values="10">
            <metadatas>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="true"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="current_index" type="long" flag="0" is_input="yes">
            <metadatas>
                <metadata name="iterationCounter" value="true"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output" type="array&lt;Math::float3&gt;" flag="0" is_input="yes" is_fan_in="yes">
            <metadatas>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
            <ports>
                <port name="output" type="Math::float3" flag="0" is_input="yes"/>
                <port name="output1" type="Math::float3" flag="0" is_input="yes"/>
                <port name="output2" type="Math::float3" flag="0" is_input="yes"/>
            </ports>
        </port>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="output" type="" flag="16">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>225.5 -60.5</value>
    </metadata>
</metadatas>
    <ports>
        <port name="disjoint_point_position" type="array&lt;array&lt;Math::float3&gt;&gt;" flag="4096" is_input="no">
            <metadatas>
                <metadata name="iterationTarget" value="true"/>
            </metadatas>
        </port>
    </ports>
</vnnNode>
        </node>
    </nodes>
    <connections>
        <connection inner_input_port="output" inner_output_port="disjoint_point_position"/>
    </connections>
</sub_root>
    </child_graph>
</vnnCompound>
        </compound>
        <node>
            <vnnNode name="output" type="" flag="16">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>13.834 -300.347</value>
    </metadata>
</metadatas>
    <ports>
        <port name="output2" type="Amino::Object" flag="0" is_input="no">
            <metadatas>
                <metadata name="feedbackPort" value=""/>
            </metadatas>
        </port>
    </ports>
</vnnNode>
        </node>
        <compound>
            <vnnCompound name="iterate" type="AminoVnn_IterateCompound" flag="2048">
    <metadatas>
    <metadata name="icon">
        <value>&lt;NATIVE&gt;../icons/LoopIterate.svg</value>
    </metadata>
    <metadata name="ViewportRect">
        <value>-570 -616 1473 1415</value>
    </metadata>
    <metadata name="_recentNode_">
        <value>BifrostGraph,Core::Object,set_property</value>
        <value>BifrostGraph,Core::Object,get_property</value>
        <value>BifrostGraph,Core::String,string_join</value>
        <value>BifrostGraph,Geometry::Properties,set_geo_property</value>
        <value>BifrostGraph,Core::String,number_to_string</value>
    </metadata>
</metadatas>
    <node_metadatas>
        <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-496.709 -295.043</value>
    </metadata>
</metadatas>
    </node_metadatas>
    <ports>
        <port name="max_iterations" type="long" flag="0" is_input="yes" default_external_values="100">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="true"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="current_index" type="long" flag="0" is_input="yes">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="true"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output" type="Amino::Object" flag="4096" is_input="yes">
            <metadatas>
                <metadata name="statePort" value="output2"/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output1" type="array&lt;array&lt;Math::float3&gt;&gt;" flag="4096" is_input="yes">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="true"/>
            </metadatas>
        </port>
        <port name="output2" type="Amino::Object" flag="4096" is_input="no">
            <metadatas>
                <metadata name="statePort" value="output"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
    </ports>
    <child_graph>
        <sub_root>
    <nodes>
        <node>
            <vnnNode name="number_to_string" type="BifrostGraph,Core::String,number_to_string" flag="0">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-248.5 64</value>
    </metadata>
</metadatas>
    <ports>
        <port name="number" type="long" flag="4096" is_input="yes"/>
        <port name="string" type="string" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="string_join" type="BifrostGraph,Core::String,string_join" flag="0">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-64 251</value>
    </metadata>
</metadatas>
    <ports>
        <port name="strings" type="array&lt;string&gt;" flag="2" is_input="yes" is_fan_in="yes">
            <ports>
                <port name="output" type="string" flag="0" is_input="yes"/>
                <port name="string" type="string" flag="0" is_input="yes"/>
            </ports>
        </port>
        <port name="separator" type="string" flag="0" is_input="yes" default_values=""/>
        <port name="joined" type="string" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="value" type="BifrostGraph,Core::Constants,string" flag="4">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-458 242</value>
    </metadata>
    <metadata name="valuenode_defaultvalue">
        <value>position</value>
    </metadata>
</metadatas>
    <ports>
        <port name="value" type="string" flag="0" is_input="yes" default_values="position"/>
        <port name="output" type="string" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="input" type="" flag="8">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-525.5 -87.5</value>
    </metadata>
</metadatas>
    <ports>
        <port name="max_iterations" type="long" flag="0" is_input="yes" default_external_values="100">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="true"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="current_index" type="long" flag="0" is_input="yes">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="true"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output" type="Amino::Object" flag="4096" is_input="yes">
            <metadatas>
                <metadata name="statePort" value="output2"/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
        <port name="output1" type="array&lt;array&lt;Math::float3&gt;&gt;" flag="4096" is_input="yes">
            <metadatas>
                <metadata name="statePort" value=""/>
                <metadata name="iterationCounter" value="false"/>
                <metadata name="iterationLimit" value="false"/>
                <metadata name="iterationTarget" value="true"/>
            </metadatas>
        </port>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="output" type="" flag="16">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>409.5 -46.5</value>
    </metadata>
</metadatas>
    <ports>
        <port name="output2" type="Amino::Object" flag="4096" is_input="no">
            <metadatas>
                <metadata name="statePort" value="output"/>
                <metadata name="iterationTarget" value="false"/>
            </metadatas>
        </port>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="set_property" type="BifrostGraph,Core::Object,set_property" flag="0">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-0.5 -271</value>
    </metadata>
</metadatas>
    <ports>
        <port name="object" type="Amino::Object" flag="0" is_input="yes"/>
        <port name="key" type="string" flag="0" is_input="yes"/>
        <port name="value" type="array&lt;Math::float3&gt;" flag="4096" is_input="yes"/>
        <port name="out_object" type="Amino::Object" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
    </nodes>
    <connections>
        <connection output_port="number_to_string.string" input_port="string_join.strings.string"/>
        <connection output_port="string_join.joined" input_port="set_property.key"/>
        <connection output_port="value.output" input_port="string_join.strings.output"/>
        <connection output_port="set_property.out_object" inner_output_port="output2"/>
        <connection inner_input_port="current_index" input_port="number_to_string.number"/>
        <connection inner_input_port="output" input_port="set_property.object"/>
        <connection inner_input_port="output1" input_port="set_property.value"/>
    </connections>
</sub_root>
    </child_graph>
</vnnCompound>
        </compound>
        <node>
            <vnnNode name="value1" type="BifrostGraph,Core::Constants::Math,float3" flag="4">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-1113 -142</value>
    </metadata>
    <metadata name="valuenode_defaultvalue">
        <value>1</value>
        <value>0</value>
        <value>0</value>
    </metadata>
</metadatas>
    <ports>
        <port name="value" type="Math::float3" flag="0" is_input="yes" default_values="1;0;0"/>
        <port name="output" type="Math::float3" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="value2" type="BifrostGraph,Core::Constants::Math,float3" flag="4">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-1115 31</value>
    </metadata>
    <metadata name="valuenode_defaultvalue">
        <value>0</value>
        <value>1</value>
        <value>0</value>
    </metadata>
</metadatas>
    <ports>
        <port name="value" type="Math::float3" flag="0" is_input="yes" default_values="0;1;0"/>
        <port name="output" type="Math::float3" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="value3" type="BifrostGraph,Core::Constants::Math,float3" flag="4">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-1111.61 207.634</value>
    </metadata>
    <metadata name="valuenode_defaultvalue">
        <value>0</value>
        <value>0</value>
        <value>1</value>
    </metadata>
</metadatas>
    <ports>
        <port name="value" type="Math::float3" flag="0" is_input="yes" default_values="0;0;1"/>
        <port name="output" type="Math::float3" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
        <node>
            <vnnNode name="value" type="BifrostGraph,Core::Constants::Amino,Object" flag="4">
    <metadatas>
    <metadata name="DisplayMode">
        <value>2</value>
    </metadata>
    <metadata name="LayoutPos">
        <value>-940.5 -462</value>
    </metadata>
</metadatas>
    <ports>
        <port name="value" type="Amino::Object" flag="0" is_input="yes"/>
        <port name="output" type="Amino::Object" flag="0" is_input="no"/>
    </ports>
</vnnNode>
        </node>
    </nodes>
    <connections>
        <connection output_port="for_each.disjoint_point_position" input_port="iterate.output1"/>
        <connection output_port="iterate.output2" input_port="dump_object.object"/>
        <connection output_port="value1.output" input_port="for_each.output.output"/>
        <connection output_port="value2.output" input_port="for_each.output.output1"/>
        <connection output_port="value3.output" input_port="for_each.output.output2"/>
        <connection output_port="value.output" input_port="iterate.output"/>
    </connections>
</sub_root>

 Screenshot_2021-05-03_09-53-22.png

Message 15 of 19
moiamy
in reply to: araps

@morten.bojsen-hansen 

How do you copy paste code into a Bifrost graph ? First time I heard it is possible 🙂

Message 16 of 19

Just highlight the code in your browser, right click and choose copy (or hit ctrl+c or cmd+c on your keyboard). Then switch focus to Bifrost graph and hit ctrl+v or cmd+v.

Message 17 of 19
moiamy
in reply to: araps

@morten.bojsen-hansen 

The copy/ paste is really cool feature, guys !

Here is my result :

 

bff copypastejpg.jpg

 

Message 18 of 19

I am not sure what's going on in your graph. Can you try copy+pasting my code into a new graph. If that works, you can try reconnecting things to the output in your graph.

Message 19 of 19
moiamy
in reply to: araps

Yes @morten.bojsen-hansen it works inside another BF (screenshot below)

 

For my previous test, perhaps the fact I tried to include your copy/paste inside a compound throw an exception ? Let me investigate and come back to you

 

bff dumb cube2jpg.jpg

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums