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.


  • Content count

  • Joined

  • Last visited

  • Days Won


Community Reputation

401 Excellent

About mestela

  • Rank
    Houdini Master

Personal Information

  • Name matt
  1. Can you link to the the original C4D post? Curious to see what their method is.
  2. "OpenColorIO (OCIO) is a complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. OCIO provides a straightforward and consistent user experience across all supporting applications while allowing for sophisticated back-end configuration options suitable for high-end production usage. OCIO is compatible with the Academy Color Encoding Specification (ACES) and is LUT-format agnostic, supporting many popular formats." http://opencolorio.org/ http://www.sidefx.com/docs/houdini/render/linear#using-opencolorio-for-display
  3. modeling

    Yep, you can work this way in Houdini if you want, but you tend to miss a lot of the realtime power Houdini provides. If you've been doing this for a while, a better analogy is Nuke; setup some read nodes, runs through some compy nodes, a write node at the bottom receives your magical sexy frames. Change the read node at the top, get a quickly update write node at the bottom. Generally speaking, yes, this can all be done in a node workflow. You might be able to do it without code, but a little bit here and there will save a lot of time in the long run. Think of this sort of houdini coding more like maya expressions rather than scripting, except much faster and more powerful. If I get time I'll try and knock up an example tomorrow, but here's a stream-of-consciousness babble of taking what you've described and converting it into a houdini speak. When I start talking about points and point attributes, the closest maya analogy is maya particle attributes, to eventually drive a particle instancer. A sop is a surface operator, ie, a node. Import alembic of leaves, treat each leaf as a single entity (called a packed primitive in houdini) move all leaves to the origin (transform sop), align along z (another transform sop), set bottom of leaf to ground (yet another transform sop), set aside for now create a line (line sop) twist it into a spiral (vex or vop network, or the bend sop) to get that fibonacci style layout of the curve points ensure the curve points have a N attribute to determine direction, and a scale attribute for scale. Ideally drive both of these with sliders or a ramp widget so they can be adjusted 'live', I'd do this in vex code (a wrangle sop), or with vop nodes ( a point vop network) setup a node based for loop, set to iterate over each point on the curve. inside: select a single leaf randomly, use a copyToPoints sop to copy that leaf onto a point. The N and scale attributes will determine the rotation and scale of the leaf create a grid to determine the final cabbage placements in the scene (grid sop) scatter sop to distrubute points over that plane. in its default mode it will try and 'relax' the points so they don't intersect again, add N and scale attribute to drive each cabbage rotation and scale copyToPoints to copy a cabbage to each location If you need more variation, you could swap the node network around a little, so you first copy the curves to the cabbage locations, then copy the leaves to all the curve points, so each point gets a random leaf That's the vague idea anyway. Houdini has always had node based loops (a foreach sop), but was a little unwieldy. H15 introduced new for loops that are unwieldy in a different way, but they work, and scale much better when you do lots of looping. An if statement at the sop level can be done with a switch sop, or with a split sop depending on what you're trying to do. You can also do lower-level if/loops in vex and vops, which is more akin to doing processing at the points/verts/polys level. Hope that helps, but reading it back I know a hip file would explain it even better. Unfortunately its 12:45am here, so it'll have to wait... -matt
  4. Nope, nothing out of the box. That's a very cool effect tho, nice chewy challenge to replicate in Houdini!
  5. Just to keep this sort of up to date, the new(ish) bend sop in H16 makes this effect easier: https://www.sidefx.com/forum/topic/49396/
  6. Amazing stuff, thanks for sharing!
  7. Had a play, I think this method is cleaner than that other setup. Sticking with the same idea (driving a poly extrude with @zscale, and wanting to both animate and stagger that attribute), this setup has 2 methods: 1. Drive zscale with a wrangle, keyframe all the points/prims identically, and use chops to stagger those keyframes for each point 2. Make the animation wave in chops, and use 2 math chops to create as many blank channels as you require, then copy the animation to each channel, then stagger as before. chops_repeat_anim.hipnc
  8. Excuse the size of the gif, retina displays and gif capture don't mix. Anyway: -keyboard chop, name first channel 'listen', second 'tap', leave the keys as 1 and 2 if you want -connect that to a beat chop -hit scroll lock, see the frame indicator turn orange (I had to use a virtual keyboard, no scrolllock on my mini laptop keyboard) -hold down 1 to enable listen, tap 2 to set the beat
  9. Your gif is pleasing. It is a pleasing gif.
  10. This might help. Basically what you described, but it's an explicit point-per-voxel rather than a scatter. http://www.tokeru.com/cgwiki/index.php?title=HoudiniVolumes#Volume_deform
  11. Most (all?) sims can take some procedural input to help direct or initialise the motion. If you can drive that input using chops, then you can do what you're after. Here's a little example of that, chops driving a ripple solver, and in turn driving a pop sim. http://www.tokeru.com/cgwiki/index.php?title=HoudiniChops#Dynamics_driven_by_dops
  12. The technique is a little hacky, but it works. First I setup a simple trapezoid trigger waveform; short attack, sustain for a bit, short release. This gets cycled 20 times, so its a looping square wave (or blunt triangle wave, take your pick) This is fed to a count chop, set to detect as soon as the incoming waveform gets above 0, ie, it counts right at the start of each loop. So now we have a trigger channel, and a count channel. Finally we have a geo chop, which is reading each packed prim and its height attribute. They're not animated at all, so they're all flatlining at 0. One channel is generated for each incoming bit of geo, so there's 18 flat channels. The geo chop, trigger, counter channels are all fed into a channel wrangle, with this code: float trigger = chinput(1, 0, I); float counter = chinput(2, 0, I); if (C == counter) { V = trigger; } chinput takes a wrangle input, a channel number, a time, and returns the value at that time. Here I get the value of the trigger channel and the counter channel at the current interval. Each channel is numbered, stored as attribute C. For the trigger and counter there's only one channel, with an id of 0, but from the geo chop there are 18 channels (again one for each prim), numbered 0 to 17. In the if block, I compare the counter to the channel id. If they match, I set the value (V) of the current channel to the trigger channel. Chops are weird, but fun. -matt
  13. Good challenge! Tried to think of a way using just chops nodes, couldn't, took the lazy way out with some freshly discovered channel wrangle tricks. Chops_sequential_ODFORCE_me.hipnc
  14. These are brilliant Rich. Every damn one.