Entagma // Houdini Day at FMX 2017

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
we're really thrilled that so many people are here we just expect like I think five to ten guys so thanks for showing up and just just to give us a good general idea of the audience lift your hands who's never used to Dini hand up okay okay who's just started out using you Dini that is cool and who's been using Houdini for longer time say two years okay cool I think we brought something for everyone so um before we get started just to give you a general idea of what's happening here we talk that we're going to talk a bit about who we are what we do we talk about our approach when learning new Dini when dialing diving into problems when problem solving and we will give you a practical example we have in production which is solving growth and salting infections but before we start all this a short disclaimer you might have seen this diagram this is a diagram of where planes that made it back to base in World War two have been hit by artillery shells so where would you put armor on that plane well the obvious idea would be to put it where most shells I did right wrong the thing is the planes that didn't make it back to base have been hit here here and here so what I'm saying here is although we are standing here and although stuff's worked for us that we're presenting here it might not necessarily work for you so make up your mind just take away stuff that seemed that it will work for you and just don't let yourself before that all of this might work for you so what is this untag massing we are talking about here and we have a slight identity crisis looming here because on the one hand you could say we're just two dudes doing tutorials in our spare time however when we were confirmed to talk here we went through SM X's speaker database and we were like okay let's let's talk the other guys let's see what they put up on BIOS and summaries of the talks and I mean as an SM X has a huge database of huge we noticed something when going through the other speakers BIOS they were words like kick-ass world-class cutting-edge prices like pushing the boundaries and we're like okay so um it dawned on us we need a cutting edge kick-ass and true that pushes the boundaries thank you very so what we did here is we pulled traces from a thematic speaker database and just this really manual work I was just too stupid to do it automated so I just went there manually copied out phrases that seemed to fit and just threw them in some arrays here and then just wrote an artificial unintelligence so just a random generator that puts descriptions and bios and summaries out and here's what we came up with for example employing computer scientists in tag ma Casey Neistat arc nemesis is now available on creative technology companies to deliver visual experiences in onboard computer systems for two national space probes and I was like that's not bad especially the space part and everything except for this sentence here comes out of the SMX bigger databases in there so we it is not another try and this what we came up with as a visual storyteller and tag ma the news and channel is the content production division of the 16 camera Google jump rig working on all six bond actors and yeah you're like I'm not too sure that personally won't work on all six bond directors I'm not sure they're in normal lives so we tried to run this another time it turns out the script it's sexist for over 26 years and tag ma like tinder only for Houdini it's following its worldwide comedy hits equal opportunity for women and you're like it this we should we should stop this and focus on the talk actually so here's the dilemma we're facing constantly it's like how do you come up with work that has an impact work that's actually that evokes some reaction out there and when you take for example this piece our approach is this we try to pair visual intricate structures visually intricate structures with simple setups with simple lighting simple scenes simple example camera angles and the issue when working on your standard through the app it's a generalist it's like your Swiss Army knife there's a bit there for everyone but when you're trying to come up with intricate structures like this you get a problem so you might find yourself hopping back and forth into tools like 3d coat or ZBrush to come up with stuff like that then you sculpt it re-imported have to make sure your shaders still wear it go back sculpting etc etc it's a pain especially when you try to animate this I mean how would you animate this in this case I ended up just cutting out floating bits and pieces and just move them around so they keep floating but had I to animate this whole structure no clue hell at least not in my standard 3d because at the generalist tooling is good at that on the other end the approach would be to take that generalist tool and try to hack it try to wrap your mind around it try to abuse it so it spits out what you actually want from it in this case I had to use standard particles and the hair system actually to mesh this because otherwise I couldn't wouldn't it would have been able to mesh this so you're constantly trying to how you recombine stuff in your standard app because it's just not it's meant for a generalist it's meant for it as a generalist tool and it's not there to put out that intricate work or take this example this is I just love bubbles you might have seen that form until I mark this is just a setup that intersects some bubble clusters are physically clausal physically correct actually and it's nothing more than just a bit of vector math and some volumes yet in your standard app you end up with something that looks like this and you're like okay this I mean this is just cosine sine and then a few billions and it already looks like that so my point here is in order to push your standard app you have to get into the nitty-gritty details and it gets tedious at a time which is exemplified in I would monetize the circle packing here yeah I was always very intrigued by circle stacking these are very old layouts I did the standard tools to the particle system and tartrate to make the stuff not interpenetrate which is just hard there are many algorithms out there to doing for doing these sort of things but all of these are either not very good or not very fast or hard to implement it's really a very special problem because what I want to achieve is visual complexity I want to have a lot of elements and I want to put variant in my pictures because variants everybody knows is from 101 design variants contrast is what gives you a pictures interest in life how do you bring variance into your pictures you can do the manual approach like an artist of classical painter and I do this often in 3d code where you can just place all these little balls by hand and your brain can decide where to put the little balls and it will look very interesting and there's a lot of variants but it's slow because you have to do it all by hand and what if I don't want to have one doughnut packed with spheres but 100 differently Texas spheres then I end up just placing little dots forever and ever so of course you can hack your standard 3d application that is not made for stuff like this and you cannot come up with something like this it is a dart serving algorithm that yeah Tom bass brute-force approach on packing spheres on a circle but you see although it starts to do something along these lines it's not very pretty and it gets slow like hell because it does not find more spots to put theorem and it's just not very optimized so this was a situation I was in and the only way I found out of this situation limited or out was to start learning computer science but today I'm fortunately now that I discovered Houdini I can do something like this and this is exactly what I always wanted to do because it packs nicely on this torus and I have control of all the shape and size and color and it even animates on so I'm very happy that I now have an environment where I can do stuff like this without reinventing computer science from the ground up so yeah I think the point of this is when you're not having the right tools it escalates quickly as exemplified by this bit this is actually when we two met in 2014 at a conference in Berlin called c4 DAPT - catchy name but really this was one of the most brilliant conferences I've been to and thanks a lot Pingo I'm not sure if easier thanks pingu for organizing this and when you look at the audience there yours truly with a bad haircut and on the other side of the stage was this guy and watch what happens in his talk he starts gently like I'm a designer's do I want to do where you're the interesting stuff but watch what happens and I cut to it when we were like 10 15 minutes into the talk because I can remember when I started programming in cinema 4d with versions 5 it was very hard for me to grasp programming because I'm an artist I studied graphic design so basically the XOR is only the power of a half adder and you have a another end gate and then you have one half adder and the unit of another kind of full adder so it gets more and more complicated it's very essential that you understand that it works like this it's not magic ok so what is needed that for us to deliver the work that we'd love to do without having to take care of memory addresses in assembler a fusion of Tekken art that we actually found in Houdini take for example um this project that mano did that's another thing that always yeah every After Effects user wants to do this in 3d because you have plexus who's using After Effects nobody okay you can use and you want to do this in 3d because the options are just greater bigger and you want to do it um here's another example of exactly the same thing featuring a nice vintage analog oh by the way the thing is I'm an artist and I want to do this effect and I want to put my time into designing the effect and getting it right and making it nice but I found myself really twisting away into the land of computer science as you saw in this talk from 2014 where I'm discussing memory addresses and pointers and C++ structures and I mean I'm very interested in this sort of thing but if you are approaching an effect like this and you have to create the tools to do it first you are just putting your time into the tool this is my very first brute-force approach and you see it's quite a bit of programming already in Python the problem is this is programming but it is slow it won't get you anywhere because all the points are compared with all other points and it just grows quadratic so it's not nice so to a rescue there is a technique called divide and conquer and it's from programming if you a big problem you can just split it in part and tackle each individual individual part as a problem and in this case the solution to this problem is called a KD tree that means you have all these points and you want to connect them so you have to find the nearest neighbors to the point what you do is just you have the space here it's in 2d but you can do exactly the same in 3d you split it in half and generate a node in your tree and then you split it again in the other direction and have you have two more nodes now your partitioned already the space into cards and I can go on with this and that means I can quickly find the nearest neighbor because I now can discard a lot of the original points because I know if I want to find the neighbor 2d it's probably not in the box close to C so I thought well great I have a slow program make it faster let's implement this and now it looks like this because you have to implement this kp3 state research and a it's not a lot of fun P it involves higher level programmatic concept like object-oriented programming and recursion and stuff so I understood that it's not a good idea to hack your standard software instead use something else that is made for stuff like that and this is how it looks in Houdini it's four lines of code basically so the beauty of Houdini is this it's that side effects gave me the near point expression and this near point expression is a four hundred lines of code you saw earlier and it's done by people who really have a clue about programming so it's a faster and it's more stable than what I came up with so my takeaway point here is Metheny is not a 3d program it's not a 3d app meant for people tuning sweetie but it's a 3d operating system or 3d development environment so I compare it into visual studio if you're into C++ which you are probably are not but maybe you know processing its Java paste and it's used for doing procedural 2d animation or we animate as well that it's pretty much the same it's an IDE it's a programming language in this case it's a written programming language and it's a standard library providing you with all the granular tools that are necessary to build your stuff and then you can very quickly with a lot of very little code come up with very complex stuff and in the Deenie it's probably pretty much the same but in 3d and you have different means of putting your code in you can use loads you can use bot mode you can use mechs and this makes stuff easy while preserving all the powers that you that you get if you program on your own here's another example I'm I wanted to do these Voronoi remapping things because I like the structure so much and so ok I sat down again wrote a plug-in to do this effect and in Hadean ein countered well there is his chequebook well you hold it in Houdini as well I actually I actually first prototypes in cinema 4d my tool then brought it to zucchini where you perfectly can do exactly the same with Python Oh Lex and I wrote all of it and then a friend of mine gave me the hint why don't you just take this check box every where's this series for you the takeaway point here is Houdini does not only provide you with tools like I showed us high-level tooth like hair grooming or character tools or roarin or factoring but you have all the low-level granular little bits and pieces of the large vast field of computer science that you can use to do really to build up your effect the things you have in mind and that is one thing that is so excellent about hoodie so if you're new to adeney what happens then well when you're new to reading the questions you ask yourself is where you find a genie and usually you find it in your test menu it's very close to the tutu excellent software like tap Todd's founder Fox or Chrome or whatever it's here so you double click it and almost immediately are confronted with this and the standard expression or the standard impression that you get by this tool is this you're like what what young god earth um so seriously though how do you limp to that just for the photos please so zero though how do you learn this stuff and there are two competing schools so there's the only true way of learning moodini because they can only be one true truth and that is understand everything on a fundamental level well I'm not a scholar of that school so here is the only true way to learn Houdini because they can all really want to truth ignorance on a fundamental level and ignorance doesn't feed into stupidity here ignorance is more along those lines with mono mentioned with divide and conquer it's a concept that you do not only encounter in computer science but also in physics math chemistry so when you have a problem you break it down into smaller parts so breaking down learning Houdini into smaller parts the beauty of Houdini is if you look at it as an operating system with individual tools attached to it which the context are you can just occupy yourself with learning one two laughter the next tool and these are the main contacts that you see here and my recommendation is to start with subs for that surface operators they hide mostly under the geo node amongst other nodes and they give you the possibility and the power to create geometry be it volumes or be it meshes and the beauty of starting with only this thing is that you have limited subsets so you have to only occupy with that stuff and also you can always export geometry from Houdini which gives you the power arm to use another tool for doing stuff that you haven't learned yet or that you find too scary yet for example you could export your geometry into another tool and shading lighting rendering it there or you could import geometry from anything like 3d code to fusion to whatever and sups teaches you um two things it teaches you the language that side effects uses in Houdini and it teaches you this in a very accessible way because you always see what you're doing is you're working on geometry on the other hand it teaches you a certain way of thinking a certain way of problem solving that the guys who wrote and developed with Dean II think you should adapt to so these are two things you can take away from this but the single most brilliant idea behind Houdini is for me to explain absolutely so Lord is telling me it is a soft first but hahaha even if you if you just focus on stops and you open this all I mean it's only halfway through the menu yeah well I wasn't telling the hold it's so overwhelming it reminded me to the very first time of something like this and I was just like no but no problem because it's not about the individual notes it's about the principle and something like this is so much easier to understand it's a piston cycle that is the essence of an engine that is what you have to understand to use it and then if you if you manage to understand this you can build up on your knowledge and you can look at one part at a time and this makes sense so the brilliant thing about shops is the interface soft is just operators but the big invention is the interface they are operating on a standard data interface so every node takes the same structure of data can do something to it and then gives the same structure of data away and that means its ups in reality just boils down to this you have an input you have an very great operator if you use one of side effect operators if you write it on your own and then you have an output and I can extend this chain and I can put stuff down there to make it complex but it is always the same principle this is an object in the real world well the rendering is not read that for a very elastic but it continues that's my point here what computers do to represent this is say sample the positions because computers work in a discrete way we cannot store the complexity and continuous data that is present in the real world so we just take samples and these sample store the position of the object and now we connect crease dots with each other and this is the connectivity information now I know this dot has a relationship with other dot and this is how geometry is represented inside a foodini and in every other program the beauty of Houdini though is that it does not stop here you can put other data onto these points onto these edges called primitives or onto the faces so for example I can put color information on here and in in the moment where I put color information here I can use the connectivity structure to my advantage because now I can interpolate the colors because what I have here is a geometry right but in I'm using it as a three-dimensional repente image basically and my pixels are my points and the connectivity tells me which pixel come next comes next but this structure is so open and so versatile that it does not stop here if I start to put numbers on my edges for example I can use these numbers to model all soft body because I can just say these numbers I love the edge lengths or a position anymore but it's the case a constant for the springs in my soft body particle spring system for example this is still very geometric because it's a soft body model in geometry but Houdini is completely open so nothing tells me that I cannot use exactly the same data structure to model well of slides for example an airline these are the airports that I want to serve and I have the connection three timer slides and I can I can use a blur node on flight connections intervening because flight connection is just a standard data interface and this concept is what makes the top context in dratini so powerful it is there in other diseases it's just that in other TV sees all this data is always tied to you these vertex colors geometric stuff so you can do big-breasted of women with both on beast but you cannot do something like this and this is why ideally is open it gives you a data structure so you don't have to invent KD trees or quoi trees or I don't know but it gives you the possibility to augment the static structure with whatever you have in mind I'm you can do the dog I want to do a bit more okay this is one of the setups that we encounter pretty often in our daily work sites it's a basic setup when you want to grow something you want to have ice growing you want to have stalactites or stalagmites which are the one that go downwards I tied Stella kites you want to have Daleks I just saw a little exit seriously so basically you want to try over here what you end up with what you want to end up with this is something like this so kind of organic growth but organic rose that's artistically tweakable so you can just influence how the stuff grows which structure emerges while it's growing and which still forms the shape that you input into the solver so ever needed organic growth this is just the common setup in production and here's how we did it a big yes the problem is just how do I approach something like this keeping in mind that I have a very versatile data structure points and attribute to Matheny the thing is the first thing is I have to be discreet I have to help after a sample so I fill my shade that I want to grow with points and then I planned an infected feed a virus in the middle with one point having an attribute telling it to be a virus and now I search for every point if the virus is nearby and for some point this turns out to be false because this virus is nearby but it's not inside of the of the site circle of the particle here for other particles it turns out to be true here we see I have an infected particle in the search radius so the infected Perrigo will put a little bit of its infection on the searching particle that's why it got this pink color here but it's only slightly pink because I have two neighbors one of them being infected one of them being healthy so I formed the mean value and put it on the new particle and if I do this again in the next frame now I reach a value where this particle reaches a certain threshold that I said then once it reaches this threshold it switches group I indicate this by the orange outline now I have a second particle in the infection group and now if I go to the first article it which did not find infected neighbor now it has an infected neighbor and off it goes now the infection propagates through all my points and as I can scare them points volumetrically in Houdini I can do this in the volume and that is basically the principle that is underlying this effect that you see here so let's build it I usually start in 3d code because I want I have no modelling departments like and Yeti or as well so I am my own modeling department modeling and 3d coat and then exporting the stuff to Dini the fun thing is that 3d code is already volumetric energy means stuff is usually too big so I scale it down and I have the models from 3d code here in Houdini to work on now I want to scatter point inside of this model the problem is later on I want to cut my growth surface with this model because I want these outlining boundary surfaces so I will first pick this and make it a little bit bigger before I scatter point into it to add more gross volume to be able to later on cut out the original shape because I want only the gross surfaces to be new and everything on the surface should be the old stuff then I turn it into a volume just gorgeous in the Dini I just put down one note and boom I have volume and then the most natural thing would be to scatter points in there so I have a scatter node I appended an ice skater point they look regular but in reality if I turn off the relaxed iterations they are just very erratic random points and in this particular case this is not what I'm after because crystals are very regular they have a very regular orthogonal or tetrahedral structure to them so I need to something else and in Houdini there is fortunately a second note scattering points in two volumes called the point from volume note it's used for fluid simulations and if I go down with the point separation you see it generates a very very even structure of point that is exactly what I need because I want to stuff to grow in orthogonal angles instead of just randomly throughout the volume so now I have the C point I have to group them because I want to go over all the C points and up the infection I want every seat point to look if it's infected so I put G's in a group then I can later on tell the code to just run over these points and not over the infected points and I have to set some attributes on them because I want to somehow separate between I know I want to have em know the infection status of every point and I want to know I want some artistic control so that's why I'm introducing another attribute that's the versatility of Houdini I can put on whatever I need how much I need and the second attribute is the speed the gross speed but you see here I'm always using wrangles for this it's so much easier than using other means of setting attributes the infection is zero as an initial value and the gross speed is zero as an initial value but then I use a lot to vary this gross speed so this is the artistic control now I can map which parts of the volume will grow very fast and which parts will grow slowly and this leads to these crystallized crystal structures emerging while growing so the solver itself would grow very clean but by using a ball you know is here I can make it grow in cellular structures the ball in all ways is basically scattering points in the Cartesian 3 space and then looking up the distance to these points and you see it's giving me four distances the Methodist currently 2 points that means it's only 2 distances and the very first distance that comes out of this node it's just a distance to the point which is circular the second distance that comes out of wall annoyed is the distance to the second nearest sample it finds which looks like this and if I did track both of them I get nice cellular structures this works in fading - it's the standard approach on these cell noises and stuff and then I pipe it through a ramp and the fit is to be able to manipulate the value range I want to actually tell Houdini how fast the stuff should grow and I have this ramp here the interface on the growth speed node where I can use now to map the values and just dial in exactly how fast this stuff should grow and this can be a lot come more complex too you can put another noise in there or even textures or scan data I don't know it's up to you now we have the C points prepared with my growth speed value for M the food points now I need to see point and I want to generate seed points only where this gross value is high because I don't want to generate infected seeds that end up in areas where the growth is very slow and it takes forever for stuff to start so I use one of the new group expression modes that are a godsend and just put down growth speed is higher than three and I get a group where all the points are grouped the way as a growth speed is higher than three and then I here you see that lots of stuff away I end up with the areas with a cellular structure basically and now I want to select some random point from the cellular structure to serve as my infection points so I use a sword sub which just sorts the IDS of these points and then I use another group expression and tell who they need to just select the very first point in my array they'll give me the very first five points that are in my long list of points and until I end up with these five points that's a nice way of getting random points from a bunch of point with a sore top I quickly put a sphere on the points now that's for you to see these are my seeds they are hard to see otherwise because they're so tiny so the next step is to put again initial attributes on these seed points because in this case I want the in section to be one on the food point we had zero in this case we need one for the propagation to work and then I merge everything together now I have a big bunch of points some of them are food point the majority and some of them are infection points time for you solver but before I dive into the solver and explain to you how this works let me explain the other two notes I have this color by group here which just states that the stuff that is coming out of the solver should get its color by the group so if the group is infected make it red if it is wrong in fact that make it white to be able to separate between the two parts and then I has a blast that blasts away everything is white so that I end up with just the infected point after the silver the sub silver is actually not substrate stops but it stops with a sub paradigm so if your learning stops now really it's just easy because inside of the sub solver you're using exactly the same ideas as insults so if you want us to simulation and if you are speaking to solve then by any means you so stop solver wherever possible because that's is a huge system it's meant for collapsing bridges and millions of rigid bodies interacting with swimming element over here you have just the basic idea gets that you get data from the previous frame that is this purple node over there so I have this white note that gives me the initial data and then I have the purple node and the purple node gives me the data from the previous frame and then what I need because I want to accumulate these in section values I want to look up their section values and accumulate them on the points to be able to do this propagation growth and that's why at this switch noti'm with which note is just switching between the input and the output and this is where all the solver code I wrote and of course it's a little bit of writing stuff it's more complicated than it has to be because it's a lot of stuff that I just do to make it a little bit more interesting visually in principle I have this near point expression that I outlined earlier which is just looking up the neighbors and then I sample with this line infection is point in fact I sample the insect attribute I just say hey neighbors how infected are you and then I have a little loop that runs oh no that's so good now it will start from the beginning that's not like this happens any chance to look through this video I actually have no clue yeah give us a second here yeah while you entertain know that for profit like this why not because yeah you only if you're not in this learning theory model okay how am I supposed to do that seriously I have no clue so the rest has to be imagination now see really does anyone of you know PowerPoint wait a second I can trim it here let's just hack it let's attack it like to be mean super where have you been right there yeah out of the soldier no like there okay let's try the skill glad that I have a second language to fall back to if I'm excited sorry for that so after all this all the magic happens I have the second Wrangell that just decides if the value exceeds the threshold then please switch group leave the food group go to the fed infection group and now more and more points are entering the infection group and every friend because the value is accumulated it exceeds the threshold and it goes to the other group and I end up with this growth and I can completely design it I can tell the structure of the growth speed attribute I can say where the seeds should start I can match the speed it should grow with but it's just point it's not very pretty so we have to mesh it and it's exactly the same problem as this fluid meshing because flip fluids are just grid of points too so I use the VD from particles nodes now which puts the sphere on every particle and then represents all these fears together as one side distance filled volume by the way the resolution of the volume has to be smaller than the radius of the spheres to be able to represent the spheres because if one box was the same size as a sphere it's not possible to see this and this looks like already but a little bit blocky so I make use of a old fluid meshing trick that basically everybody is using I make sure volume bigger so I reshaped the volume with a light note make it bigger and then I smooth it in this bigger state because smoothing those with a little bit loss of volume all the time so that's why i dilate it first and then i shrink it down so now I have a smooth surface that is pretty much in the same location as it used to be but it's loose instead of blobby it really the look that you're after and what I can do now if I had the original model and it's all about keeping as much from the original model as possible because this comes from modeling there are weeks of work is in this original model so I I don't want to use this as my final result it's just blobby so I generate another STF from the original model so I have two volumes represented two volume representations and then just combine the two with say a boolean operation in this case it's not the boolean operation which gives me this now I have the original model wherever the gross reached the surface and I have the growth surfaces on the inside and now I could map them with this title mapping or whatever I converted to polygons and in principle we are done now it grows on my shader put in my trailer on and better is the thing is it's not as sharp as original model it's still not preserving all the details because of the step to converting everything into volumes and then converting back so the last thing I do usually when in production so this is a little thing that I would not put into an tagamet tutorial because it's just this extra production step is to reprojection alt so what if I just take this result and then decide whatever is near the surface of the original model gets projected with a rate trace operation to the original model and that is what I do here I just sampled the volume value inside of the crystal and decide the point of my surface how deep inside of the crystal are they I show it to you by just turning on color here wait a second I jump out and you see now I have an attribute on the surface that tells me blue is very close to the original crystal and orange is all the stuff that is newly created and what I do now is I use inside of the of the what I use the intersect pop that is basically the same as a race op or in in props to do ray tracing operation and just project to blue coins onto the original model and that gives me the fine intricate detail back and in my model is not very detailed because I quickly threw it together but if you have a very detailed model with little bumps and tiny stuff it is really vital to do to have all this detail and you can you can pick up other attributes like you these two by this operation for example so yeah I am show you the difference with this which note I can switch between the two states with and without reproject and you see it's quite a difference in this case of course is my battery members but imagine having really surface details there it's quite a difference so that is a beauty of doing something like this in the TV building this setup takes a half an hour of course after reasoning about the theory a little bit but this is something that is just out of reach or used to be out of reach for me before and I'm just glad that I can throw together something like this with minimal coding in very short amount of time I'm talking about stuff that we had never thought we'd be actually doing is this because when you think about what you're doing here is taking a volume and then converting this volume into points working on points and then converting it back to a volume so why not try working in a volume all together so here's the theory behind it imagine volume is just like giant rubik's cubes and each of those tiny cubes is just a box so it's basically like a 2d image only in 3d like Photoshop for 3d in a way and we're looking here at own jet also building photos row like like an image processing thing for 3d and we're just looking at the 2d plane you just for simplicity so the basic algorithm is really the same you just have your two attributes which are two volumes here one just stores the infection state which this one infected voxel here the other ones those that restore the growth factors so how fast should the infection spread on a given bog on a given box so the first thing you do is for each voxel and let's say this is our currently active voxel we look around it's direct neighborhood if anything is infected and we find this now after we found this we look up at this place what's the growth factor and then we weigh it by the distance that's the same thing of its father way it should contribute less and add it to our current voxel value so we're just adding stuff that's in the direct vicinity of a given box so how do you weigh this thing and calculating differ calculating distances in volumes is not that straightforward as in points so there is this concept called a Manhattan distance and if you think about a city map of Manhattan you have this rectangular grid of blocks and it cannot just go straight from one foot to the next you have to go through walls there so you what you do is take right angle turns and this is the Manhattan distance so you're just you're just counting the number of steps it takes you to get from one box or to the next so this would be a distance of one it's just one step and this would be a distance of two one two and if you think about in three dimensions and the direct neighborhood of a box with the maximum distance you can have is three because you add to this this and this one step to the next or to the last plane of the of the volume that's directly behind or in front of it the thing about working in volumes though is this execution times volumes are huge arms it just not this to the image plan they are just really just a cube and they are just like image after image after image if you think about it and Houdini gladly arm gives you vex and vex camera is a nose case automatically multi-threaded in the volume case it multi-threading that means when you're running it onto a hefty machine with like 32 cores you have 32 threads working simultaneously on the on the volume which already gives you a speed-up however arm as we'd like to work an intricate structure have this tiny detail you need quite high resolution volumes so you're still a bit laggy and lagging us is not what you want when you're trying to get something and artistically because you want to have instant feedback and you want to be able to quickly iterate so let's look at execution times a bit and in comes OpenCL and here's the thing about OpenGL this is new in Houdini 16 and suddenly when you dive into OpenGL you see why developing render engines that run on the GPU for example takes time this thing here is having fun in OpenGL without losing it and this is the hard part it is just figuring out the stuff what you're supposed to do how to get in data how to get out data the thing is you have to just put on data on your graphics card then you execute it on your graphics house process which has like a thousand cores and compress thirty two of your plane processor and you have to get the data back you run into problems because some of the stuffs for some volumes is for some boxes that's already solved and thus all the runs again on it and it screws up and it's it's just a mess so um there is this one guy on Vimeo going by the alias of Animatrix I think he's a TD somewhere in Canada and he put out this brilliant video where he arm it goes over a smooth stop implemented in OpenGL so thank you to you thanks for your for for all this Janos it's been a huge help in understanding this so let's look at what I did here you see this part is the volume part of the setup this is the thing that mom has been talking about and up here I'll just convert into volumes and here I have my two solver change this is OpenCL this is thanks and in the solver you see I just drop down this OpenGL node and in here goes your code and it's quite a bit compared to vexed and that is mainly due to all of the management stuff you have to get data in take out you have to take care of solver is not interacting or interfering and I set it to four iterations that is the same thing as running the solver four times each step and the clever thing is data doesn't need to be swapped so it's not bogging it down here on the backside where I drove into the solver I did the same thing just by running the solver four times and as you can see here the Dex code is a bit more compact that's due to the fact that you don't have to manage all the data and all the concurrent programming stuff so let's execute both in parallel I'm going to go to into a split screen and you see on top this is X this is open CL and let's hit play at the same time and this is this is a medium risk volume I'd call it and it's executed on single GTX 780 versus an i7 6 or 8 core I think and you see the structure evolving pretty much the thing that the same thing that we have here up here is that the second solver step you have your first 30 frames rendered here you see I did a big performance highlighting there and after this thing gets bigger and bigger the convert BDD sub is what's breaking it down so if your would catch that solver into a file it would even wants to faster so already approaching frame 50 here and we're on the second frame up here with sex so this is the thing when work in an open CL it can be difficult to implement for some things that you can massively parallel eyes it's absolutely worth doing it because you had like here of 50 40 to 50 times speed increase so if you're into programming have a look at open CL it's really powerful try not to get too mad at it so this brings us to our conclusion what she does you should you make out of office and we have four conclusions for you the one being obvious has divided conquer this is something you can apply not only 2d need not only to software but to your life in general try to break down problems and solve them one by one the next thing is understand concepts over certain setups because the concepts give you the power to recombine it off to thoroughly understand stuff and once you understood the concept you're not bound to any software you can implement and try to take it everywhere this is this is geared to routine it's an IDE it's a development environment for 3d it gets you mad when you think about it being your standard 3d DCCA it is it is it is an environment that lets you play it's like an operating system for 3d and it's hugely liberating when you're just listing all the bounds of course it's a bit confusing you have to make your way around it but it's hugely gratifying and usually liberating so thank you for sticking with us I'd like to thank side-effects for inviting us I'd like to thank if there's any regulars on an attack ma here I'd like to thank you it's amazing what we get back from the community we were really thrilled it's it's great it's awesome that all you've shown up here it's just yeah it's amazing so thank you if you got any questions I think there's a mic feel free thank you we do have a few minutes for questions guys any any questions whoops no nothing whoops one over there yes yes you're the audio yeah okay actually two questions thanks for the talk the first one is how much is memory a problem with OpenCL when you're handling big volumes of course at a certain point it's a problem as its as much as you can fit on your GPU it is I found decently efficient I think I ran this on a six gigabyte card and it was room list for increasing this what you can do is is if it crashes you can still run it on your CPU I haven't run tests on how it compares to vex but the setup that I did for and tagged me which might not be what you're aiming for in production they were easily executable on my graphics card a single one that connects to my second question how much do you use Houdini in actual production increasingly that's the thing about Houdini arm it depends on which state in the production you are when we're doing concept when we're doing a creative work we're doing pitching most of the time or we are not using it because um we have some clients that require us within a day or two days to come up with like 30 style frames and really different styles and so you just want to slam them together it's not like intricate production here and just this particle needs to go there it's just like make the broth thing render it out and ship it to the client and see what it says when you're in production however the image changes a bit because when the client comes in and says like well I don't like this how this particle behaves this particle looks a bit - I don't know it climbs and you're like and in any other software like wow and in Houdini hoc I find the clients I'm the particle ID deleted so it depends on which stage you are that is the biggest problem with using premium production the shop like ours which is advertising and commercial shop is tradition people are not used to use the beanie so it's hard to find freelancers for me and it's hard to convert my employees to the idea of using a beanie because it's associated to still with visual effects very complicated steep learning curve stuff like that and of course other other programs are faster in certain aspects of the pipeline but it would be very very very welcome to use more houdini throughout the pipeline of services slow process people have to yeah learn to love it that's what we're here to make it but still we had this one situation where we're really struggling to finish a piece in another tool and deadline was just creeping and creeping in creeping in and we had six weeks of producers thinking after five weeks like this is one week until deadline so we actually set down to over senior artists and and just force them to use Houdini with us yes and we had to produce the thing in one week and on Monday we said here you're doing a Dini with us on Tuesday they were up and running on Friday we at the thing delivered so on this once you give the people a chance to learn or suffer with you in a room just shout questions I mean at least if you have the prerequisite it's good to be fluent in another 3d F so you grasp the concept the general concept that underlies it but they had no problems getting out of ammonia that's not a question how much science behind like nature of codes natural growth process and algorithms and formulas are needed to create interesting growth process and how much ya know edge do you have about that and what is needed for it now it's up to you it is up to you and such papers you can get your hands on I think this is already quite okay for motion graphic stuff for something like this and then I think normally it's just a mixture of reading what have other people found and then your own ideas and just mixing everything together because it's the foundation of growth I don't know if you have seen space colonization for example which is the idea that you just remove the food entirely if it turned into infection with the radius and then connect two dots and then you get these intricate coral-like structures that's just an extension to this idea basically and you can go on and on and on and defusing limited aggregation is again something that goes along these lines so what if you have a lot of particles that are attracted by the particles that are just growing and then I can put them on them they're maybe a little bit smaller and then of meshed in but they're little poppy seeds that are on top that the profitability is really a limitless without more knowledge or without making the stuff more complicated so Stella trout this that and this that and it gets more complicated I think to answer this in a more general way I think what's needed are two things on one end the interest in the stuff so the willingness to research that stuff on the other end the willingness to try and read through some papers which mmm to me sometimes seem to be written in an arcane language to make it actually more complicated for people to understand than it actually is but again divide and conquer just look at the actors that divide and conquer that I told you and you were you're mad at me right when I told you just look at the pictures of the paper and it's going to be fine but cereal that's my approach it just goes to the pictures first and see if I can figure it out and then okay formula no really it is like this I want to implement the paper for the parallel transport algorithm and it's all fancy integrals and formulas and gene nitrite and I would like I don't get anything about it and well I just learned on when I went on and then they put this four lines of protocol in there and I copied it and it ran and grade thank you for a favor that's the point most of these intricate mathematical problems are just I can nightmare to write down because mathematics is about being precise and being about just evaluating it anywhere in space which computers are not about is just screech at this point at this point and in between them to interpolate so when you're when you're seeing code or something like that in a paper this is your goldmine pictures code and abstract at the beginning yeah like whenever a sledge Greek symbol pops up ignore ignore it you will thanks for the tip that's only for the international recognition I think I'm not sure okay any other questions one more nope that's cool thank you guys thanks [Music] [Applause] you
Info
Channel: Houdini
Views: 35,037
Rating: undefined out of 5
Keywords:
Id: DtFXdJ8Gjwg
Channel Id: undefined
Length: 60min 54sec (3654 seconds)
Published: Fri May 12 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.