Welcome to od|forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Leaderboard


Popular Content

Showing most liked content since 06/19/2017 in all areas

  1. 26 likes
    Coarse Sub-Steps If you have an expanding gas field front that from frame 1 to 2 or frame 2 to 3 travels one or two Houdini units and substeps are set to 1, you will get combed straight velocity vectors which means mushroom caps. No matter how much turbulence or confinement you set on your Pyro Solver DOP, there simply isn't enough time to evolve these fields and have an effect on the result. More substeps means smaller velocities to deal with between substeps making things more manageable too. In an attempt to keep substeps at 1, you can manufacture noise and pump that in to vel but in the end two things will happen: The Non-Divergent step will take your noise and negate most of it, or you end up pumping in so much noise because it isn't working with smaller values you tried earlier, that it swamps the entire effect and it looks like a fractal hash and not that nice evolving fireball. Oh and if you really pump in tons of noise in to vel, it too can create many smaller velocity fronts pushing ahead and you end up with smaller mushroom caps! Doh... This is in essence what the Gas Disturbance DOP does. The Pyro Solver has a Gas Disturbance DOP in it's logic and those parameters are promoted up to the top asset interface but we're concerned about substeps right now and allowing enough time for turbulence and confinement to create the nice swirls on the leading edge of the explosion. So it's coming down to sub steps to try and allow for a lot more character around the leading pressure front for fast evolving explosion type simulations. Two ways to go about this: Brute force increase the global substeps for the entire DOP network, or use the Pyro Solver Substeps in the Advanced tab. Brute Force Global Substeps For explosions, the huge almost instantaneous velocities happen at the first 5-10 frames. It would be nice to keyframe animate the Sub Steps parameter, but you can't (DOPs is that way). If you set the global sub-steps to get enough detail in the first few frames you have to carry those sub-steps through the rest of the sim when things are moving a lot slower and those substeps are no longer required. Not that great. No wonder everyone tries to inject their own pumps to affect vel to avoid global substepping. Pyro Solver Substeps The Pyro Solver exposes minimum and maximum substepping logic to control when and how the Pyro Solver will substep. This sounds interesting and could be just what we need. But what is CFL Condition? No it isn't the Canadian Football League even though we know that 3 downs rule and 4 downs are for those that can't deal 3. It's named after a couple guys who in the '20's, that's 1920's, who were trying to figure out the frequency of data samples they required in order to map and predict fluid simulations and pressures/resistance to flow with fast moving collision objects (that be ships). The help note on the actual Gas SubStep DOP explains it quite well: timestep will be reduced if the velocity field will move only 1 voxel in a timestep. A CFL of 2 will allow it to move 2 voxels in a timestep. Or something like that. You can find it on wikipedia. You can set your minimum substeps to 1 and your maximum substeps to a high enough value such that if the CFL Condition is exceeded, more substeps will occur when the simulation has large velocities and less when the velocity is smaller. Hopefully this gives enough time to let the turbulence and other methods to stir up the vel field kick in. Keyframe Timescale There is a third option to controlling sub steps but that is to keyframe animate the Timescale. Yes more than valid to do this to slow down the sim at the start and then speed up when the huge velocities subside. As a matter of fact, the shelf tools set Timescale to 0.65 as an attempt to get a good looking explosion or fireball without having to resort to substeps. But this is not an automatic method. This requires intervention if you want to animate the timescale. This means you have to run the sim and evaluate. Then you keyframe the timescale and you end up with an entirely different simulation. Then you move your keys, run again. Then you increase the resolution of the simulation and everything changes again. In many ways, it's worth to at least give the min and max substeps a go and see if you can dial in the CFL Condition to get a happy balance. As you increase the resolution of the simulation, the CFL condition measured in voxels will allow substeps to run up a bit faster to the max without too much of a change in the final result.
  2. 19 likes
    Turkish Houdini artist Alican Görgeç is producing amazing knitting work - using SideFX Houdini! If you'd like to find out more about his technique, you can read our new Gridmarkets artist profile: http://www.gridmarkets.com/alican-gorgec.html
  3. 10 likes
    I wanted to see if I could play a video in Houdini using some python. With this as the result. Don't think it's the first time this is done but it is still nice to see. The result
  4. 10 likes
    Gifstorm! First I've used a visualizer sop to show @v coming out of the trail sop: That makes sense so far. To make the next step easier to understand, I've shrunk the face that sits along +Z, and coloured the +Y face green, +X red, +Z blue. So, that done, here's that cube copied onto the points, with the v arrows overlaid too: The copied shapes are following the velocity arrows, but they're a bit poppy and unstable. So why are they following, and why are they unstable? The copy sop looks for various attributes to control the copied shapes, @v is one of them. If found, it will align the +Z of the shape down the @v vector. Unfortunately what it does if it has only @v is a little undefined; the shapes can spin on the @v axis when they get near certain critical angles, which is what causes the popping and spinning. To help the copy sop know where it should aim the +Y axis, you can add another attribute, @up. I've added a point wrangle before the trail, with the code @up = {0,1,0}; ie, along the worldspace Y axis: you can see all the green faces now try and stay facing up as much as they can (note the view axis in the lower left corner), but there's still some popping when the velocity scales to 0, then heads in the other direction. Not much you can do about that really, apart from try some other values for @up, see if they hide the problem a little better. What if we set @up to always point away from the origin? Because the circle is modelled at the origin, we can be lazy and set @up from @P (ie, draw a line from {0,0,0} to @P for each point, that's a vector that points away from the origin): Yep, all the green faces point away from the center, but there's still popping when @v scales down to 0 when the points change direction. Oh well. Maybe we can venture into silly territory? How about we measure the speed of v, and use it to blend to the @up direction when @v gets close to 0? Better! Still a bit poppy, but an improvement. Here's the scene with that last setup: vel_align_example.hipnc To answer the other key words in your topic title, I mentioned earlier that the copy sop looks for attributes, obviously @v and @up as we've used here, but if it finds others, they'll take priority. Eg, @N overrides @v. @N is still just a single vector like @v, so it too doesn't totally describe how to orient the shapes. You could bypass the trail and the wrangle so that there's no @v or @up, set @N to {0,1,0}, and all the shapes will point their blue face towards the top. Without any other guidance, it will point the red side of the shapes down +X. If you give it @N and @up, then it knows where point the green side, and you get a well defined orientation. While using 2 attributes to define rotation is perfectly valid, there are other options. The one that trumps all others is @orient. It's a single attribute, which is nice, and its party trick is that it defines orientation without ambiguity, using a 4 value vector. The downside is quaternions aren't easy to understand, but you don't really need to understand the maths behind it per-se, just understand what it represents. The simplest way is to think of it as @N and @up, but glommed into a single attribute. Another way is to think of it as a 3x3 matrix (which can be used to store rotation and scale), but isolated to just the rotation bits, so it only needs 4 values rather than 9 values. In houdini, you rarely, if ever, pluck quaternion values out of thin air. You normally generate what you need via other means, then at the last minute convert to quaternion. Lots of different ways to do this, coming up with ever funkier smug ways to generate them in 1 or 2 lines of vex is something I'm still learning from funkier smug-ier co-workers. Eg, we could take our fiddled @v, and convert it to a quaternion: @orient = dihedral({0,0,1} ,@v); What that's doing is taking the +Z axis of our shape-to-be-copied, and working out the quaternion to make it align to @v. You could then insert an attrib delete before the copy, remove @N, @v, @up, and now just with the single @orient, all the shapes rotate as you'd expect. vel_align_example_orient.hipnc
  5. 10 likes
    I just gotta share this for inspiration - I could watch this for hours...
  6. 9 likes
    Hey Guys, Manuel and I have launched www.entagma.com It is a (growing) collection of things that we'd like to have known when we started diving into advanced CG. Currently we host some Cinema 4D resources as well as introductory tutorials to Houdini. If you have any suggestions or feedback about content or form - please don't hesitate to let us know. Tahnks & Cheers, Mo
  7. 8 likes
    Here is collection of breakdowns for a project I was working on during last half of a year Vimeo album: https://vimeo.com/album/4471569 Or individual videos:
  8. 8 likes
    Hello everybody, I want to share with you small tool I created recently using VEX. I wanted to create wall made of non-uniform stones (with different widths and also heights). Solutions I found here are really great but I thought I might push it a bit further. I figured out algorithm that can produce such pattern. It can be customized to fit desired look. Besides it runs pretty fast compared to voronoi approach Attached test renders were done using Techie's amazing rock generator that can be found here: http://www.orbolt.com/asset/Techie::rock_generator::1.0 Have a nice day Peter pt_stone_pattern.hdalc
  9. 7 likes
    I finally got around to cleaning up the hip file and have attached it. If you end up using this, please let me know how it's going and share a pointer to your work. The major challenge with writing this in VEX was that VEX does not offer any of the canonical data structures one would use to efficiently implement this. For me, the simulation ends up running out of memory around a 1000 frames. As I am novice to Houdini, I would also appreciate any feedback and comments you might have if you end up taking a look. Enjoy? :-) MorphogensisInVex.hiplc
  10. 6 likes
    Wanted to share a fun technique for emitting curves with stringy behavior using pop grains. It's fast and stable so you can simulate many strands interacting together. Using the explicit constraints feature of popGrains, primitives that constrain the points are made on the fly during each timestep in a sop solver. Hope this is fun and/or useful to some of you Link to render and hip file: Vimeo Link -Nema emittingStrands.hipnc
  11. 6 likes
    What the... I almost fell out of my chair laughing at this one (not my video).
  12. 6 likes
    This is really cool... Looking to the very first part, I did a simple setup yesterday, trying to replicate it, but can't say I got very far before running into issues. The problem with the POP setup is it really wants to create the coral patterns - even using a polyframe to calculate outwards normals and using them to guide velocity outwards, you get to a point where is starts to fold into itself" and create those traditional differential curve type patterns... So perhaps something ti rethink - or perhaps someone here has an idea..? Oh, and just generally, there's SOOO much friggin cool stuff in this video, I can barely watch without freaking out, wanting to try to replicate all of them, hehe...
  13. 6 likes
    Why use a line when you can use a circle!? coral.growth.pops.hipnc
  14. 5 likes
    Hi, This would technically be my first fan art in Houdini. Usually I make all of my fan arts in Daz and use Houdini to do some additional modelling since you can't model in Daz. This time I went the other way around primarily because I wanted to try the new Hair tool in Houdini 16. Which, by the way, are fantastic. The character and clothing were posed in Daz and exported as obj to Houdini. Hair and the rest of the scene is Houdini. Skin and hair shader is custom because octane doesn't have a skin or a hair shader. For my next one I'll try the new auto rigging tools on Houdini.
  15. 4 likes
    Alexey Vanzhula Could you please create your own topic for Flux in forum. I think will be more interesting your topic like was made BulletSop. All information and video will be in one place and it will be more useful. This topic for Random links of interest. Thank you for understanding!
  16. 4 likes
    I dont' think he wants to emit light, he want to control the "glow". I did a quick shader just to control the core of the line, see if there's something that might help you in there. additive mode - shader Menoz.hiplc.hipnc
  17. 3 likes
    Hey what's up community? In order to keep this thread alive, although I'm hardly ever posting, here's my latest and greatest Python project! Would be awesome to get some feedback on this, cheers!
  18. 3 likes
    1. Add new PythonModule to Scripts tab in Type Properties window. 2. Define your dump function. def dump(): # Retrieve values. geo = hou.pwd().geometry() data = geo.stringAttribValue('my_attrib') # Write on disk. path = '$HIP/attribute_dump.txt' path = hou.expandString(path) # Expand Houdini variables. with open(path, 'w') as f: f.write(data) 3. Add new Button parameter and choose Python in the callback language. Then enter the callback like this: kwargs['node'].hdaModule().dump() Here is a bit more complex examples with vector arrays: attribute_dump.hipnc attribute_dump_numpy.hipnc (surprisingly for me, slower)
  19. 3 likes
    Interesting problem. You can use a SOP solver with a multisolver node to process the mesh point attributes, you just don't want to affect the P attribute directly. Attached is a solution to your intersect problem using a VDB in a sop solver to dynamically set the targetP attribute. It changes the look of your sim a little, so it still needs tweaking. For more info on "solid object" point attributes, see here: http://www.sidefx.com/docs/houdini/nodes/dop/solidconfigureobject Note that this works well enough that you can almost get by with a single substep. Also it almost completely takes place of the internal collision calculated by the finite element solver, try turning off self collision in the attached example to see what I mean. flask.v1.Odforce.FF.VDB.hiplc
  20. 3 likes
    Here's a very quick example file - and a low res quick render example. There's a neat way to customise the colours and quite a bit of control over the shape, and I'm sure with a bit of time and thought it could be improved greatly! Hope this is helpful! Matt. cloud_burst_setup_basic_H16.hip
  21. 3 likes
    The volume being advected needs to be an SDF. You had it set to fog, and then you were converting it to a regular Houdini volume. Needs to be a VDB, to work with the VDB advect node. AdvectVolumebyVolume1.hipnc
  22. 3 likes
    This is brilliant! Thank you guys so much for this superfast additive render trick! I was able to render my point-advected splines in seconds instead of hours... Cheers, Tom
  23. 3 likes
    Had a quick go, found I could only get reliable collisions by using a volume collider. (click to play) paper_crumple_v01.hipnc
  24. 2 likes
    hey all, I might start this thread and ppl can keep adding presets to it. Requirements: H16 I've done Spherify and Morph using the new Point SOP as can be seen here: and here: Now next step was to create presets so I've done that to my file in: C:\Program Files\Side Effects Software\Houdini 16.0.633\houdini\VEXpressions.txt File is attached...but you don't have to use it...you can edit it manually if you prefer...so navigate to your file (do a backup first), and add near the bottom: # # Attribute Expression # attribexpression/snippet Pass Through self attribexpression/snippet Constant Value value attribexpression/snippet Multiply by Constant Value self * value attribexpression/snippet Add Constant Value self + value attribexpression/snippet Random rand(@elemnum) attribexpression/snippet Random Scale of Value value * float(rand(@elemnum)) attribexpression/snippet Random Offset of Value value + rand(@elemnum) attribexpression/snippet Second Input's Position @opinput1_P attribexpression/snippet Flatten Vector set(self.x, 0, self.z) attribexpression/snippet Uniform Parameter on Polyline vertexprimindex(0, @vtxnum) / (primvertexcount(0, @primnum) - 1.0) attribexpression/snippet Subtract Center of First Input self - getbbox_center(0) attribexpression/snippet Spherify P lerp(self,(normalize(self - getbbox_center(0)) * ch("radius")) + getbbox_center(0),ch("Amt")) attribexpression/snippet Spherify N @P - getbbox_center(0) attribexpression/snippet Morph to 2nd Input lerp(self, point(1,"P",@ptnum),ch("Amt")) You can see the ones I added in bold called Spherify P, Spherify N and Morph to 2nd Input...so next time you use your Point SOP you'll have these presets. (the Spherify P and N logically go together in one Point SOP) VEXpressions.txt
  25. 2 likes
    Playing with Konstantin's setup with an extrude sop and a for loop
  26. 2 likes
    Pazuzu's file, slightly modified, would let you drive the surface tension field values based on a point viscosity attribute or whatever. Makes for some interesting shaping by the end! See attached modded file... --Dave pp_st_ds.hip
  27. 2 likes
    "Glowing Lights" A test with Redshifts displacement in Houdini Core: Cheers, Tom
  28. 2 likes
    This microsolver helps you to define a field mask using standard DOPs relationships (using the merge DOP for example). You can define for example a source object mask to emit fuel or density using just relationships, so if you have many objects and connect those besides the smoke solver with a merge using source relationship mode, the gasbuildrelationshipmask will create a field representing the objects as a fog or SDF representation. Attached is an example file (one hip is better that a thousand words ) Cheers Alejandro gasbuildrelationshipmask.hip
  29. 2 likes
    Volume is a single primitive. You can rotate it using primitive wrangle and intrinsic transform attribute: rotate_volume.hipnc. Some other and older experiments: intrinsic_transforms.hipnc.
  30. 2 likes
    It's just a start, but you could turn colorful points into quads and let them randomly overwrite each other. opus_pattern2.hipnc
  31. 2 likes
    You can control the pressure jump per particle with a scalar field as a factor for the surface-pressure field. Attached is a very raw example of it. I hope that helps! Cheers Alejandro pp_st.hip
  32. 2 likes
    I made these long ago but unfortunately they are not CVEX. http://orbolt.com/asset/animatrix::inlineVexGenerator::1.00 http://orbolt.com/asset/animatrix::inlineVexFilter::1.00 I would also like to see OpenCL COP, multi-threaded cooking/generating thumbnails in the COP network like Nuke. Any new feature added should IMO be mirrored in every other context where it makes sense. It's a lot of work, that's why unifying all contexts would help with that.
  33. 2 likes
    A fairly good and concise history
  34. 2 likes
    Little update. Made 300 unique trees on grid with scatter. What is unique - generations, seed and height. Next try to make more flexibility with randomness or almost all elements and pack it in asset with all parameters.
  35. 2 likes
    Here is my attempt at the Cube Wave. https://dribbble.com/shots/2931067-Cube-Wave So, I was starting out with a few months of spare-time Houdini practice and next to no VEX knowledge at all. I have some very basic coding knowledge and I did a couple of years of math and physics about 15 years ago in college. For those looking to learn this stuff, here is what I did. I downloaded the examples that others have posted in this threads and started making intricate notes on what the code was doing. It was handy to know that you can place the cursor inside of a function and press 'F1' to bring up the help on what that function is doing specifically. Though, sometimes I was still a bit confused (damn you, bilinear interpolation). As often happens with coding, there seems to be that breakthrough moment where you start to actually know what is going on. As for this project, the hardest part was trying to get the influence more concentrated around the middle and more sparse towards the outside, giving it a more spherical look as it rises. I managed to solve this with a power function and a lot of time fiddling with the values. I'm still having a lot of trouble with the colours and rendering and ended up giving up and just colour correcting in After Effects. I'm coming from a Cinema4D background and to output solid colours there is easy (Luminance). But really not very straight forward in Houdini (emission colours still seem to come out really dull). Any advice would be greatly appreciated. I'm also having trouble with houdini crashing with these files when I reopen them. When I hit the playback button it crashes when it reaches frame 14 - 17. I even rebuilt it in another file and the same thing happened. Works fine until it is closed/reopened. So if anyone knows where I've gone wrong, I'd like to hear it. I've also done a couple more of these and will will drop them in soon. Edit: Whoa, that GIF is huge. I'll make them smaller in the future. CubeWave_01.hipnc
  36. 2 likes
    Just a quick tip : 1) Create a particle sim that matches the movement / trails that you like - you may need to use a trail SOP to add enough points per frame, or use a pointreplicate. 2) Pipe the particles (with relevant @pscale * @nage type of attributes) into a cloud SOP using "Point cloud model". NB : For more visual control, you can copy a sphere to the particles first, get a visual look that roughly resembles the shape you want and then use the "polygon model" 3) Fiddle with the settings to get a nice shape and then pipe into a cloudnoise SOP to add detail. 4) Add a cloud shader and pay attention to the "scattering phase" settings to get back scattering etc, and tweak away! When I get home later I will post a sample file. Matt.
  37. 2 likes
    Hi Charles, one straightforward way would be to hook up one geo to the first input slot of your attribwrangle/pointwrangle, the other geo to the second one. Then perform a closest point search on the geo coming in through the second input only. After that you'd have to "copy" the found points into the first geo and use them to create the polylines: float searchradius = 0.15; int maxpoints = 5; int points[]; points = pcfind(1, "P", @P, 2*searchradius, maxpoints); foreach(int ptj; points) { int prim = addprim(geoself(), "polyline"); vector newpos = point(1, "P", ptj); int newpt = addpoint(geoself(), newpos); addvertex(geoself(), prim, @ptnum); addvertex(geoself(), prim, newpt); } Hope that helps, Cheers, Moritz
  38. 2 likes
    Here some starting points you might use. misc_procgen.hipnc
  39. 1 like
    *master steps in* Joking aside, seems like an adaptive remesh for me. It works nicer with curvature for smooth meshes. hypernose.hipnc
  40. 1 like
    Hi ant! Glad to see you around here again! I usually create a bounding group of the points I want to make static and inactive. I then create an active attribute on those group points. @active = 0; Active.hiplc
  41. 1 like
    Sop solver in DOP often have some trouble updating. A little trick to make it work is pointing your Sop solver to a SOP Network and this one should be able to update without error. If you wanna get rid of the warning just turn off and on the node, it'll refresh. Cheers
  42. 1 like
    Hi, I don't know how to make it mathematically. Here you can find different Opus Pattern: https://www.mandarinstone.com/advice-and-support/stone-layouts/ As you can see most pattern are based on a 7x7 grid layout. There are mostly 4 different tile types with a aspect ratio relationship. (A=3x2 units, B=2x2 units, C=2x1 units, D=1x1 units). So you can use the points of 7x7 grid and assign scaling attributes to the points according to the type of opus pattern and copy a 1x1 tile to the points with the scaling attributes. Hope that helps... OpusPatternTool.hiplc
  43. 1 like
    http://www.johnpattersononline.com/
  44. 1 like
    Its because your dop IO in your pyro_import is still pointing towards /obj/Dust_Simulation/pyro1 instead of /obj/Dust_Simulation/pyro This is why having multiple pyro setups in one dopnet can be bad idea. Things can start getting confusing pretty quick.
  45. 1 like
    I'm assuming you mean the Core i7-7700K because there is no 1700K. The Ryzen 1700X will render faster and provide better bang for the buck in every regard. The only reason I'd go with Intel for a low budget workstation is if more than 64GB of memory is needed (Intel socket 2011-3 platform has eight instead of four memory slots).
  46. 1 like
    I also wrote a blog post describing my approach, feel free to check it here.
  47. 1 like
    I think the method is to define constant: #define data {1, 2, 3, 4, 5} Check $HH/vex/include/ for houdini libs.
  48. 1 like
    P.P.S.: There are other examples out there, using several high res trails which are then combined for rendering in order to get the detail. One sim might not be enough.
  49. 1 like
    First of all, your resolution is obviously too low, much to low. And I guess you miss a point. This is an explosion. Debris is flying around, but the main pressure is coming from the center of the explosion. The trails are only a part of it. If you watch closely you'll realize that the video you posted consists of two elements, trails (kind of low res) and a center cloud which expands rapidly. P.S.: Since the image is a still, don't forget that it is heavily photoshoped.
  50. 1 like
    Thanks heaps Moritz !!! I tried something similar, but couldn't find the proper syntax. Thanks again Charles