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: 

Node Network Generative Art

8 REPLIES 8
Reply
Message 1 of 9
labbejason
1060 Views, 8 Replies

Node Network Generative Art

labbejason
Advocate
Advocate

Hey all,

 

I've wanted to try this out for a while but wasn't sure how to go about it until learning that feedback ports can be used on the top inputs/outputs. I'm not using particles or anything built-in so I probably didn't go about this the smartest way, but at least it works! I'm attaching the scene for anyone who is interested to look through the graph (sorry for the mess). If you have any ways to optimize it then feel free to give some pointers!

 

The top inputs include sliders to tweak the point count, the minimal distance the lines will show up at, and the start frame it will reset it on.

 

bifrost_node_network.gif

 

 

Node Network Generative Art

Hey all,

 

I've wanted to try this out for a while but wasn't sure how to go about it until learning that feedback ports can be used on the top inputs/outputs. I'm not using particles or anything built-in so I probably didn't go about this the smartest way, but at least it works! I'm attaching the scene for anyone who is interested to look through the graph (sorry for the mess). If you have any ways to optimize it then feel free to give some pointers!

 

The top inputs include sliders to tweak the point count, the minimal distance the lines will show up at, and the start frame it will reset it on.

 

bifrost_node_network.gif

 

 

Labels (3)
8 REPLIES 8
Message 2 of 9

Christoph_Schaedl
Mentor
Mentor

This is really cool. I have to study the graph. Thanks for sharing your experiments. 

 

Could you explain what feedback ports are doing? 

----------------------------------------------------------------
https://linktr.ee/cg_oglu

This is really cool. I have to study the graph. Thanks for sharing your experiments. 

 

Could you explain what feedback ports are doing? 

----------------------------------------------------------------
https://linktr.ee/cg_oglu
Message 3 of 9

labbejason
Advocate
Advocate

Thank you! The feedback ports make it behave like a sim, so that when the graph evaluates the positions and velocities accumulate from last calculations instead of resetting. Then when the frame is back to the start frame it will reset the values.

Thank you! The feedback ports make it behave like a sim, so that when the graph evaluates the positions and velocities accumulate from last calculations instead of resetting. Then when the frame is back to the start frame it will reset the values.

Message 4 of 9
mjcg91
in reply to: labbejason

mjcg91
Collaborator
Collaborator

Hi Jason, very cool stuff!

So I've had a quick look at your graph. I don't fully understand what's happening inside, but I immediately spotted something: you are inputting / outputting arrays ports to Maya's top level, and these array are updated each frames. Translating Bifrost data other than amino objects to Maya costs SO MUCH performance, you should never do it unless you really need to access these data from Maya. Here is a look at the profiler. As you can see, 95% of the computation time is translation to maya, the ~5% at the beginning is your graph...

jason_profiler.jpg


I made a compound which sort of does the similar thing. I planned to add to the next version of my library but I'll post it here first in case you want to study the inside (create_plexus). This graph generates points inside a sphere, add turbulence to it, and finally create a plexus from the points using geometry queries.

 

plexus_compressed.gif

create_plexus_graph.jpg

Keep up the good stuff!

Maxime Jeanmougin - Technical Artist
https://maximejeanmougin.com

Join the Bifrost Addicts community on Discord:
https://discord.gg/bifrost-addicts

Hi Jason, very cool stuff!

So I've had a quick look at your graph. I don't fully understand what's happening inside, but I immediately spotted something: you are inputting / outputting arrays ports to Maya's top level, and these array are updated each frames. Translating Bifrost data other than amino objects to Maya costs SO MUCH performance, you should never do it unless you really need to access these data from Maya. Here is a look at the profiler. As you can see, 95% of the computation time is translation to maya, the ~5% at the beginning is your graph...

jason_profiler.jpg


I made a compound which sort of does the similar thing. I planned to add to the next version of my library but I'll post it here first in case you want to study the inside (create_plexus). This graph generates points inside a sphere, add turbulence to it, and finally create a plexus from the points using geometry queries.

 

plexus_compressed.gif

create_plexus_graph.jpg

Keep up the good stuff!

Maxime Jeanmougin - Technical Artist
https://maximejeanmougin.com

Join the Bifrost Addicts community on Discord:
https://discord.gg/bifrost-addicts
Message 5 of 9
sklauss
in reply to: mjcg91

sklauss
Enthusiast
Enthusiast

Very cool, reminds me of the MASH trails option connect to nearest, I think. Have to check out the graph

Very cool, reminds me of the MASH trails option connect to nearest, I think. Have to check out the graph

Message 6 of 9
labbejason
in reply to: mjcg91

labbejason
Advocate
Advocate

Wow yours has insane speed!

 

Thanks for the tip to avoid passing values to the top ports. In this case I'm not sure how to avoid getting around that as those 2 ports define the particle's position and velocity, so I'm using feedbacks to make the values stick for its next evaluation.

 

I did a pass to optimize my graph and realized I did tons of silly things that's slowing it down.

 

Before I was using a loop to check distances for each point to see if a strand needed to be drawn there. I knew this was a massive funnel point since it was creating tons of duplicate strands, but I didn't think about using `get points in radius` before so I switched it to that.

 

I'm also drawing points in mine, so I switched it to Bifrost instances and that helped boost the speed by 10fps.

 

Before I was also creating a separate strand for each segment and this was killing performance. I optimized this a bit but it can still be pushed way more. Making single strand improves it to be super fast like yours but I need to study your graph to understand how to use a single strand without having one continuous line throughout the points.

 

I'll post my updated scene here. Hope it's also a little easier to read now too 🙂

I dropped the animated opacity & thickness for now, so it's looking a bit more plain!

 

bifrost_node_network_2.gif

Wow yours has insane speed!

 

Thanks for the tip to avoid passing values to the top ports. In this case I'm not sure how to avoid getting around that as those 2 ports define the particle's position and velocity, so I'm using feedbacks to make the values stick for its next evaluation.

 

I did a pass to optimize my graph and realized I did tons of silly things that's slowing it down.

 

Before I was using a loop to check distances for each point to see if a strand needed to be drawn there. I knew this was a massive funnel point since it was creating tons of duplicate strands, but I didn't think about using `get points in radius` before so I switched it to that.

 

I'm also drawing points in mine, so I switched it to Bifrost instances and that helped boost the speed by 10fps.

 

Before I was also creating a separate strand for each segment and this was killing performance. I optimized this a bit but it can still be pushed way more. Making single strand improves it to be super fast like yours but I need to study your graph to understand how to use a single strand without having one continuous line throughout the points.

 

I'll post my updated scene here. Hope it's also a little easier to read now too 🙂

I dropped the animated opacity & thickness for now, so it's looking a bit more plain!

 

bifrost_node_network_2.gif

Message 7 of 9
labbejason
in reply to: labbejason

labbejason
Advocate
Advocate

Ok I managed to get it working at a decent speed! So as a lesson for anyone reading this, don't be an idiot like me and make a bunch of strands! You can do it all in a one single strand and prevent slowdowns.

 

bifrost_node_network_3.gif

Ok I managed to get it working at a decent speed! So as a lesson for anyone reading this, don't be an idiot like me and make a bunch of strands! You can do it all in a one single strand and prevent slowdowns.

 

bifrost_node_network_3.gif

Message 8 of 9
labbejason
in reply to: labbejason

labbejason
Advocate
Advocate

Messing around with how the points are spawning.

bifrost_node_network_4.gif

Messing around with how the points are spawning.

bifrost_node_network_4.gif

Message 9 of 9
labbejason
in reply to: labbejason

labbejason
Advocate
Advocate

Another quick test with text.

 

bifrost_node_network_5.gif

 

bifrost_node_network_6.gif

 

Also attached the scene file.

Another quick test with text.

 

bifrost_node_network_5.gif

 

bifrost_node_network_6.gif

 

Also attached the scene file.

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

Post to forums  

Autodesk Design & Make Report