Real Plexus Animation Loop - Blender Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in today's tutorial we're going to be creating a real plexus effect most of the tutorials on YouTube are actually fake plexus tutorials which means they resemble plexus but isn't actual Lexus animations first off I'll try to differentiate the differences between a fake plexus and real plexus and then we'll go through a bit of the theory that we're going to be using while creating the animation after which we'll actually step by step create the animation in Geometry notes I'll do my best to explain every single step and why we're doing what we're doing so this video will be a bit longer than usual however the techniques that will be used in this video are very powerful and can be used in many other animations and will be really helpful to you as well so with that let's begin the difference between a fake plexus versus a real plexus essentially in a fake plexus there are points and there are lines touching the points as you can see in this particular animation and even though they're moving around the connections never actually change that means they remain connected to the same points at any point of time in the animation even in this particular animation even though they are changing over time there not actually changing based on the distance between the different points and that is what makes it a real plexus animation which is the points have to change their connections based on the actual distance between two points if two points come within a certain distance of each other they should be connected via a line and if the points grow further apart the line should disappear and with that knowledge you can differentiate between real plexus animations and thick plexus animations and in today's video we'll be learning how to create the real version with that let's actually begin the working of the tutorial so in our default scene we're going to be using geometry nodes so we'll bring our cursor to the junction of these two windows click and drag up to create a new window and then change it from the 3D viewport to the geometry node editor then we'll press plus to create a new geometry node tree and select the group input and press X to delete it now we'll press shift a and search for a cube and plug the mesh into the group output and will increase the size to about 10 units on all of the axes next up I want to actually convert this into a volume software shift inserts for a mesh to volume node and plug that in right after the cube and I'm going to decrease the volume amount all the way to 2 so that it's faster to render and also covers up the space fairly well which aligns with our requirements right we want to distribute some points within the volume so I'll press shift a and search for a distribute points in volume node and plug that in after the meshed volume now these points are what's going to act as the basis between which all of the lines will be drawn so you can always increase and decrease the density from here and you can always change the size of the cube from this Cube box over here so for testing purposes because I'm also recording I'll keep the size actually down at five and I'll keep the density at one itself next up for the plexus animation because it has to be dynamic motion we need all these points to actually move so to move the points we'll press shift insert for a set position node plug that in after the distribute points and volume and we'll actually change the offset using a noise texture so I'll press shift and search for a noise texture and I'll directly plug this into the offset however everything gets shifted by 0.5 so I'll press shift insert for a vector math node change it from add to subtract and just subtract 0.5 on all of the axis is after which I'll also scale up the Noise by searching for another Vector math node and changing it to multiply or scale because it has to be scaled by the same number on all of the axes so now to actually Loop the noise texture we're gonna change this from 3D to 40 and we'll use the same method that we've used in multiple videos before so I'll press shift d on the noise texture bring it down here then press shift a and search for a mix color node plug that in in between the noise section the subtract connect the color from the second noise texture into the second slot and then decrease the factor all the way to zero I'll increase the timeline by a little bit go back to frame 0 and then hover over the first W and tap I hover over the factor and tap I and for the second W I'll change it to something like minus 0.5 and then press I then I'll go to frame 150 which will be our last frame and then change this W to the positive of this so 0.5 and then press I change the factor all the way to 1 press I and then change this W to 0 and then press I then shift select all three of the nodes come down to the time 9 plus T linear I'll also change the end to 150 so that we can actually watch the animation Loop now I'm not going to require the timeline so I'll bring it back down for now and if I actually press play and watch the animation this is how the points are moving now they're moving really really low or really really small so what I'm going to do is increase the scale to something really high maybe go with 10 and then play the animation and now you can see how the points are moving all around the place which is really nice it'll help out with the plexus animation of course based on your animation you can always play around with the w values and the scale value to get different variations now we can start off with the next part of the animation which is actually creating the connections before we get to that I'll go through a little bit of the theory behind the connections so for the theory I'll just come out to the side and we'll take a look at the possible connections that there are if we have some number of points each point has to be connected to every other point or at least test it with every other point and then the connections have to be determined so we have to find out how many connections have to be tested at least essentially that means each point has their own index point number zero one two three four and five and each index has to be checked with every other index which means we need to check 4.012345 we have to check the indices of point zero one two three four five so if we actually form a grid or essentially a table this particular cell will be a comparison between 0 0 this particular cell will be a comparison between zero and one this particular cell will be zero two and so on this particular cell will be one zero one one one two one three and so on two zero two one two two three zero three one and so on four zero or one and five zero five one and so on so that means the total number of comparisons that have to be made is always going to be equal to the number of cells in this box or this table so clearly the number of cells in this particular table is always going to be the total number of rows into the total number of columns which is going to be the same number into the same number which means if we have a total of six rows we will always have six columns which means the total number of cells is always going to be 6 into 6 which is going to be 6 squared that means if we have n rows we will always get N squared number of connections now this is one way of visualizing it but based on which area of math you come from so suppose you come from a sets background you know that if you have a set with n different entries the total number of pairs of points that you can make will always be N squared and so on and so forth but so essentially the main takeaway is that you will require N squared number of comparisons so how do we actually go about those comparisons essentially from coding backgrounds you would have used a nested for Loop or a nested Loop in general but of course we cannot do that in blender so we just have to go through N squared different combinations which means we have to check for zero zero zero one zero two and so on and so forth and we have to figure out how we can possibly do that now we've used certain nodes multiple times before in Geometry nodes which is the index node which we've used in various videos before you should definitely check those out but I've always stated that if we want the position for every index we use the index node which means the index node is going to iterate through every single index for every single point so we require some type of geometry that has that many points present in it so that we can iterate through every single one of the connections and for that we can create that many connections first after which we can delete the connections that we don't require so first we have to create N squared number of connections so let's start off by doing that bring our geometry nodes window back and figure out how we can find out the number of points that are currently present because we know we if there are endpoints we require N squared connections so let's start doing that the first thing is to find the number of points we can use a domain size node which we've used in previous videos as well so again if you're watching every single video you're at a huge Advantage the domain size is going to give us the point count of any single mesh but we don't have a mesh we have a bunch of points so that's why we have to change this from mesh to point cloud and we automatically get the point count now as we said we require N squared connections and this is giving us n so to make the right number of connections we have to square this and we can do that with a math node so we can search for a math node and change that math node from add to power and we can raise the exponent by 2 to make it N squared the base has to be the total number of points now this output is the right number of connections for every single point to be connected with every other point so we actually required that many points so we'll press shift a and search for a point node and plug this value into the count so now we have N squared number of points just present in this node but not yet present in the actual geometry because it's not connected to the group output so to connect them we'll press shift a and search for a joint geometry node plug that in right before the group output and then take this points and plug that into the joint geometry now we have N squared number of points present right at the center over there if you see if you remove this particular connection that point in the center disappears which means all N squared points are present right there in the center let's add that back now because I'm also recording and the screen is becoming a bit laggy I'll just reduce the density down to 0.2 for now now let's take a look at what we we need to do for every single one of these connections we actually need to assume that the connection is between index 0 and index one so yes let's actually look back at the table if you look at the table we can actually label this particular cell as cell number one and then we can assume this table is cell number two which means it has an index of two so this connection between 0 and 1 will have an index of two this connection between 0 and 2 will have an index of three and tactically indices start from zero so it's going to be 0 1 2 this connection between 0 and 3 will have an index of four so like that we can have a unique index for every single one of these cells and for each index we need to compare the position of point of index 0 and point of index 0 as well or for let's say this particular connection we need to find the position of the point that has an index 2 and the position of the point that has an index of three and compare the distance between them or essentially make the connection between these two later on we'll talk about the distance and deleting anything that's greater than a certain value but the first thing that we have to do is actually create the connection between these two points so irrespective of the index number we need the actual index of the points that were created in our Point cloud and not the connection points that we have created so we have to figure out a way of doing that if we actually take a look at the indices we can see that if we went index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17. you see the first six indices are all zero then the next six indices are all one I'm talking about just the first index that we're doing the comparisons with then the next six are all twos and if you look at the second ones they go zero one two three four five zero one two three four five zero one two three four five so we have to actually create this pattern of having six zeros or essentially n zeros and then n ones n twos n3s and then comparing them with zero one two three four till n and then making it wrap back to zero and then going one two three four five and so on and so forth so the way we can do that is by actually looping through all of the different indices all N squared indices and actually doing some math to bring them back down to these zeros or the ones so let's take a look at how we're going to do that in our geometry node tree remember this domain size is giving us the value n in this case we have 137 points now if we take an index value that is eventually connected into this particular branch of the node tree we will get N squared indices So eventually down the line we have to make sure that the right side of the index value node is connected into this particular branch and yes that is exactly what we're going to do because we're going to eventually delete all the points or all the connections that are greater than a certain distance so we're going to be connecting into this particular Branch so if we just search for an index node it's going to Loop till N squared this is going to give us n now if we take a math node and we set it to divide and we divide the index by the point count we are going to get a value of 0 point something for all the indices that are lesser than the point count next we're going to get a value of 1 which means it's going to be 0 for the first n entries after the first n entries this end index is going to become greater than the point count and we're going to get a value of 1. for the second set of n indices then we're going to get a value of 2 for the third set of any indices so if that makes sense we're actually getting the same pattern of zero zero zero zero n number of times then one one n number of times if we use this but it is zero point something and one point something we don't want that point something so we search for another math node and we change it from add to floor and this way it just removes all of the decimal places and we get only the initial value so this output is going to be zero zero zero zero zero n number of times then one one one one one n number of times and so on and so forth the next thing that we actually have to do is get numbers going 0 1 2 3 4 5 etc etc or and then wrapping back to zero one two three four five now we can do that using the modulo function remember the modulo function gives the remainder after division so we search for a math node and change this from add to modulo which is present under the rounding and essentially this gives the remainder so when we have this particular Point count and we have the index divided by by the point count we're going to get the numbers remaining so essentially 7 modulo 3 is going to be one because three twos are six and seven divided by three is essentially going to be 2.33333 with a remainder of one modulo just gives out the remainder which is exactly what we want when the index is 0 0 divided by domain size is going to be zero now when the index is one one divided by n is obviously going to be 0 point something or it's going to be 0 with a remainder of one so that remainder of 1 is exactly what we need when it's two it's gonna have a remainder of two and then when we get to n the value is going to be 1 with a remainder of zero so it wraps back to zero and then when it is n plus one when we have an index of n plus one we're gonna get a value of one point something which is essentially one with a remainder of one so that's exactly what we want we get one again so it goes zero one two three four till n and then it goes back to zero one two three four till n so that's what the modulo function is giving now that we have these we can actually use those to find the position of these points that we've created over here so instead of continuously dragging from the set position in multiple different branches what we can do is with the node Wrangler switched on press shift right click and drag to create a new node over here and now we can just plug from this particular node whatever we want and if we need to add in anything before this we can just add in a single node later on so what do we actually need to add let's think about that we want the position of whatever value is there in this index and we want to compare it with the position of the value in this index so we have to actually find those positions to do that we can search for a sample index node and for this geometry we have to plug in this particular geometry because we want the original points now what do we want to sample we want to sample the position now the position is a vector values we have to change from float to Vector for the value we press shift insert for a position node and we plug the position into the value now for the index we're going to first use these indices and the other index has to be from this value so we have to just duplicate these nodes so press shift d and then plug this point back into the geometry and for the index use this particular point so now we have the index of 0 0 0 and then one one one one one one one two two two two two two two two two over here and we have an index of zero one two zero one two and zero zero one two three till n zero one two three till end and so on over here now we can simply compare these two so to compare them we can press shift a and search for a vector math node and change this from add to distance and that way we get the distance between the two different points now we can press shift a and search for a compare node and we can compare if this distance is greater than some particular threshold and in that case we're going to delete that particular connection so let's for now just keep it at a dummy value of one we'll change this later on next before we actually move on with this I want to play around with the original connection points that we created remember these points are the connections how do we actually create a connection on these points we need to instance a bunch of cylinders now you could instance the cylinders first place them in their positions and then delete them however if you choose to go in that order of sequences it might be slightly easier to understand but because we're creating every single cylinder connection there is to make it takes a huge amount of processing power on your computer or your laptop and so the chances of blender crashing is very very high and also it just slows down your rendering by a lot so it's always smarter to delete the unnecessary connections first before actually instancing the cylinders however remember the right side of this particular setup has to be connected to this geometry with N squared number of points if we delete geometry first and then we plug this in we no longer will be having N squared number of points so we won't be able to find or keep track of the positions at which the connections have to go remember we only have the points we don't have the real connections between the two points yet to create the connections we're gonna eventually have to take a cylinder and set their position accordingly but for that we need the position and to get those positions we have to iterate through these indices which have to iterate N squared number of times and not the deleted number and because of that we can simply capture the attributes right now before we delete any of the geometries so to capture the attributes we press shift a and search for a capture attribute node log that in right over here and we want to capture the positions of the connections so we change this from flow to vector and for each connection remember we have a starting point and an ending point this too or the output from this and this is essentially going to be one connection that contains of we can call this the starting point and this has the ending point so let's think about that we have to take for each connection where it begins and store that right here and we also need to take for each connection where it ends and store that in another cap attribute node so we'll take this press shift d plug that in here and take this value which is where it ends and plug that in here now we should go about why exactly we're doing this and that is because for index number n or we should know exactly what is getting captured over here what's getting captured is or index n or let's say for index one we're capturing a start position and an end position which means the first connection which is between point zero and point zero itself we're finding the start position of the connection and the end position of the connection then for index number one which is the second connection technically it has to go between point zero and point one so it's storing the position of zero and it's storing the position of one at index 1 itself so for the first index it's storing two position values then for the second index it's going to store two position values for the third index it's also going to store two position values that is essentially what we're creating with these two capture attribute nodes if we try to use these positions after we've deleted the geometry there would no longer be n number of pairs of positions that we can get we can get only the deleted number of positions but we don't want the deleted number of positions because we need all of the different connections so that's why we have to capture the attribute nodes right here itself again for clarity for every single index we are capturing the start position and the end position using these two nodes now we can actually delete the geometry if it is greater than this threshold which means we can delete the connections before we actually create create the connections itself so that it's easier on our laptops remember you could technically do this later on but of course we want to make this in the most efficient manner possible so let's press shift a and search for a delete geometry node plug that in after the capture attribute and we're just going to plug this greater than result into the selection however again if you look at the table that we've created over here you'll realize that there are multiple connections that we also should be deleting irrespective of anything firstly all the connections between the same points so 0 0 does obviously not require a connection because it's the same point similarly one one two two three three four four and five five they do not require connections the next thing is if we have a connection between one and two if you go to the second connection test you also have a connection between two and one which is the same connection which means this line over here as well as this line going back like that it's the same line so we do not require two cylinders present so we can delete that as well so the easiest way to delete that is by just removing all of the connections where the first index is greater than the second index or you could do the first index is smaller than the second index as long as you're doing any one of them you will reduce the actual number of connections by half by removing all of these duplicate connections so let's see how we can do that in our Note 3 we have this greater than value but we'll also press shift a and search for a less than or another compare node and this time we'll change it to either greater than equal to or less than or equal to a both are fine so in this case I'll just use less than or equal to remember we're using or equal to because if the indices are the same we don't want that connection so we're going to delete it and now this is the index values so the index values are actually coming all the way from this particular node and this particular node remember this is giving index zero zero zero zero zero this is giving index 0 1 2 3 0 1 2 3 0 1 2 3. so this one goes into the first socket of the less than node this one can go into the second socket of the less than or equal to node and now we need this and this to get deleted so to check if either one of the conditions are true the point should should get deleted or the connection should get deleted so to check if either one of them are true we search for an or which is a Boolean Mac operation so we search for a Boolean math node change this from and to or and then plug this in here and this in here and now we can plug this into the actual selection now if we actually think about it we created all of the possible Connections in this particular node and then we've deleted all of the connections that we don't want now we actually have to take these connections and make the connections between the points so to do that we'll press shift a and search for an instance on points node and plug that right after the delete geometry and actually instance a curved line let's search for a curve line node and plug this curve into the instance now we have the correct number of Curves present right at the center but we want each of these connections to actually go to the respective connections that we found out over here so that means we want them to move to the indices that they were actually compared with for them to have actually been created for that we need these positions but remember because we've deleted the geometry we can no longer use these positions directly because the index values have changed and that's why we use the values that we have captured over here we press shift a and search for a set position node plug that in after the instance on points and take these just move them to the sites that we have even more space to work with and let's actually find out how we're going to set the position we want to set the position of all of the bases of the curves or the connections to all of the base comparisons that were made and we want to take the tops or the tips of each curve and connect them to the value that they work compared to so that means we actually need two set position nodes one for all of the bases and one for all of the tips now we can press shift d and duplicate that to create another set position node and we can connect the positions to the appropriate capture attribute nodes over here so again it actually doesn't matter whether you use this first one into the first set position or the second one into the second set position and whether the base goes to this one or the tip goes to this one because as long as it is the same for every single point we which is exactly what it's going to be because we don't have control over individual points each index is going to follow the same pattern for the entire node tree so as long as we're doing that if we connect the base to the test point and the tip to the tested point or we do it the other way around the connection will look the same because it's either taking the point and or it's taking the line and connecting it like this or it's taking the curve and connecting it in this direction which essentially leads to the exact same thing so it does not matter so it's fine so let's just go ahead and plug the captured attribute from this node into the position of this set position and let's take this captured attribute and plug that into this position now we don't see any motion because again there's two problems that are occurring the first thing is that once we convert these lines into instances by putting them as an instance into the instance on points we don't have control over the base and the tip anymore so that's why the entire instance is directly moving to this particular set position similarly when we use this set position the entire instance is now shifting into this particular set position and it's doing that for every one of the points the first thing that we need to do is be able to control the base and the tip separately to do that we have to realize the instances we search for a realized instances node and plug that in now we need to actually set the position for the bases over here and for the tips over here to do that we know that there's a tip selection node which we've used in various other tutorials which is called the curve tip node and we can plug that into the selection and for the actual base we want the selection that is not the tip or that again we can just use a Boolean map and change this type from and to not and it'll invert the selection we take this tip selection and we say whatever is not the tip which means the base and we plug that into the selection so that way we get the points exactly how they should be if there is a point with a distance lesser than the number given a connection is made now we can go all the way back to our greater than node and actually play around with this number and if we keep increasing it the number of lines formed also start increasing if we decrease it the number of points start decreasing so we can actually increase this to a huge number and almost all the points will be created which creates this really dense network-like look which also looks amazing and you can use it in your renders but for plexus style animations we don't want a connection between every single point we just want a few points so we keep it fairly low of course you can go this high but I'll go with maybe a value of three for now next up if you actually switch off overlays by pressing this button they just disappear we don't want that so we actually have to instance some mesh onto these curves or we have to convert the curve into a real mesh so I'll press shift and search for a curve to mesh node plug that in after this set position and for the profile curve press shift a and search for a curved Circle and I'll just reduce the resolution down to five because they're going to be really thin and we don't need a great resolution and I'll decrease the radius to 0.001 because I want these lines to remain really really thin now we plug that into the profile curve and now if we switch off overlays we can actually see the lines which is amazing now if you actually play the animation you can actually see how dynamically when the points shift around connections are removed and connections are made so for example if we take a look at these two points this point over here and this point over here there's no connection between them because they're too far away as they move together a connection is made and now that connection remains until they move apart too far again so essentially you can keep seeing that connections are being made and connections are being destroyed as well which is a true plexus animation and you've just created this yourself however there are a few things left to do the first thing being right now these points are also just points and not meshes which means if you actually render this you won't see anything over here if you're in EV if you're in Cycles you will be able to see a nice point but not in EV so for Ev we press shift and search for an instance on points node remember this line over here was the original point so we can plug this into this particular line and we can instance an icosphere to search for an icosphere and then just reduce the radius down to 0.01 increase the subdivisions to maybe two and plug that into the instance okay the radius is a bit too small so let's change that to one and now we have spheres of course play around with the radius to the size that you want I think I'll go with 0.05 and now we also have to set the materials so this particular line is all of the lines that we've created so I'll press shift and search for a set material node plug that in over here go to the material properties here the default material is present we'll change the name of the default material two lines and we will select lines from this particular set material then we'll press shift d plug that in here and add in a new material slot by pressing this press new and then change this material to dots and we'll change this set material to the dots then I want all of these icospheres to be shaded smooth so I'll press shift a and search for a set shade smooth node plug that in and you are done with the geometry note 3. congratulations the next thing that we have to do is the actual materials so we'll shift over to the material Properties or the Shader editor and we have dots selected so let's play with the dots material I just want that to be plain black and the easiest way to create a plain black material is just remove anything to the group input to actually see the changes will switch over to viewport sharing of rendered and now you can see that is dots are actual dots now you could be really fancy with the lighting and actually give this light a color let's say this type of a color increase the power to maybe 10 000 make it really bright go and set all of our defaults which is switch on ambient occlusion Bloom screen space Reflections and then go to our output properties change the frame rate to 30 frames per second change the end frame to 150 that we already did output folder is going to be wherever you want it to be file format is going to be ffmpeg video and coding has to have a container of impact for and an output quality of perceptually lossless then we can take the slide press shift d to duplicate it down somewhere and change this one's color to maybe a reddish color and that way you get like this dual tone plexus animation and there's actually a lot of different things that you could do you could make these connections metallic and so on and so forth however I want to keep this extremely minimalistic so I'm going to go to my background world and change this all the way to White then I'm going to go back to my material properties choose lines and for the lines I'm just going to press X to delete the principal psdf let's shift it and search for an emission node and I'm gonna actually keep the emission at a very dark color but keep this all the way to maybe a bluish color plug that into the surface and that seems all right however I feel like these lines are a bit too thin so I'll go back to my geometry node editor go to my curved mesh node and just increase the radius to maybe 0.005 that's maybe a bit too fat but it's all right because I'll be using some depth of field so for my final render I can always increase my density of the points let's go back to my distribute points and volume increase the density to maybe one and remember when you're doing these please save the file I haven't saved it but please save the file so that in case you accidentally go too high your laptop does not instantly crash because I've increased the density this much I think I can go to my greater than node and reduce this value down maybe go to 1.5 and yeah that seems like a better distribution next up I actually want this background white to be a real white so I'll go to my render properties go down to color management and change this view transform from filmic to standard and now it's an actual white next I'll place my camera so I'll just go to an arbitrary very lock zoom in quite a bit and then press Ctrl alt 0 to snap camera to view then I'll select my camera from the outliner go to my camera properties change the focal length down to maybe 18 and that way even if you zoom in so let's actually zoom in a little bit more by changing my Axis from Global to local and then pressing gz remember my camera is selected so if I press gz it'll move inward like that and even though you're completely inside the cube due to the fisheye effect the edges get fewer lines and the center gets a lot denser so that's something that I actually like then I'll go to my viewport display and increase password all the way to one and this is what the render actually looks like at the moment of course you can't play this back in real time with this much geometry but I can see the connection is changing and that's good enough the last thing that I want to do is add in some depth of field so I'll go to my camera properties check the depth of field box expand it and increase the f-stop down to maybe 0.8 or go even lower and just play around with the focus distance and things like that till you get something that you are happy with so with that if you get any point that's coming way too close to the camera like this just play around with with your camera position so in my case I'll press n to open the side panel go to view click lock camera to view which is this button over here and then you can just move around the way you generally move around your 3D viewport so just find something that suits your look of course to zoom in and out apart from changing from local and moving on the z-axis you can just control click your middle Mouse button and drag to move around find the position that you're happy with and once you're happy with it press render animation with that you should be able to create all of these different types of beautiful sci-fi plexus style animations you could have dark backgrounds with emissive plexus animations or you could have light backgrounds with dock which is what we did and remember this effect is only the base two a lot more in the coming weeks we will actually be taking this base and doing a little bit more and adding on to it to create really cool results which I'm sure you'll appreciate so if you want to watch those be sure to subscribe and thank you so much for watching till the end of this video The Watch time really helps out and until the next video comes out which is going to be tomorrow because I release videos every single day keep creating and stay creative this video was heavily inspired by antagma's video which I will be linking right now as well as in my description because credit where credit is due it is the only video on YouTube that I found which actually explains how to create a real plexus using blender and I think it is a wonderful tutorial that you should check out too however I personally think that considering that it's a slightly more complex tutorial there are many ways in which each step can be explained and so having variations of different teachers explaining this animation will genuinely help YouTube quite a bit so that's why I'll be creating this tutorial today and I really hope you learned something useful from it
Info
Channel: Deayan Studios
Views: 4,158
Rating: undefined out of 5
Keywords: blender, blender timelapse, blender animation, satisfying, satisfying video, satisfying animation, render, blender tutorial, blender beginner tutorial, blender 3d, abstract, Circles, graphic design, sci fi, neon, simple, loop, eevee, plexus, plexus animation, real plexus
Id: YYgRdPR65o8
Channel Id: undefined
Length: 32min 42sec (1962 seconds)
Published: Sat Jul 15 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.