Found 146 posts.
Search results Show results as topic list.
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
Just to draw this to a close: yep, the pygame.midi module (once you manage to get the damn thing installed) lets you send and receive MIDI data. Finally got a decent jog wheel and (gasp) a practical timecode display, yay. PM me for the code - I'm not putting it anywhere public (yet) as it's ugly
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
Yay… getting somewhere…
This is Houdini talking to a MIDI-based DAW using the pygame Python module. Which mostly doesn't work apart from pymidi, which is all you need. Getting the pygame module to work on the Mac has been… entertaining. But it's possible.
Gotta do some actual work for a bit but once I get some time I'll get the whole thing going… it's quite fun hitting play on the DAW and seeing Houdini play, and then watching as the motorised slider moves up and down in sync with a Houdini parameter
This is Houdini talking to a MIDI-based DAW using the pygame Python module. Which mostly doesn't work apart from pymidi, which is all you need. Getting the pygame module to work on the Mac has been… entertaining. But it's possible.
Gotta do some actual work for a bit but once I get some time I'll get the whole thing going… it's quite fun hitting play on the DAW and seeing Houdini play, and then watching as the motorised slider moves up and down in sync with a Houdini parameter
Edited by howiem - 2019年3月13日 05:27:17
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
jordibares
Nice idea the Palette gear thing… I wonder cost wise how is relative to professional audio equipment.
$199 for the starter kit: 2 push-buttons, a knob/encoder, and a non-motorised slider.
Or £106 for my DAW control surface (a Behringer X-Touch One), which has 34 buttons (with sexy lights), two knobs/encoders, and a motorised slider. A programmable LCD display, 12 x 7-seg displays. And it's a solidly built thing.
Whichever path you choose you still have to integrate it with Houdini; button presses are simple to do, but funkier stuff is… well, watch this space
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
goldfarb
they support MIDI and keyboard inputs…plus the sliders are cool.
They're nice looking, but expensive, and they'd give me the same problem: how to interface them with Houdini
Keyboard taps are grand but I'm after something better. And if I solve the problem for my control surface, it should work with the Palette stuff or anything else that sends/receives MIDI, whether it's a keyboard with a pitch-bend (live control of your character's mouth, anyone?) or a timecode display (because 100 times a day I have to divide by 25 then 60 in my head gahhh).
Plus my controller thingy has a sexy display on it, and Palette Gear stuff doesn't, and I'm just a sucker for blinkenlights. It's my weakness
and my slider's motorised muhahaha take that palette gear
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
jordibares
Meaning, Midi In does not allow to listen to devices, just open midi file
Ha - hadn't noticed that. But I'm trying to avoid CHOPS if possible anyway; don't want to have scene files clogged up with workstation-specific Houdini control stuff.
I think Python's gonna be the way; when I have a moment I'll install one of the MIDI py-packages and see whether I can get ‘em talking. I’ve had luck using Serial ports from within Houdini already so I'm guessing it should be doable…
¯\_(ツ)_/¯
jordibares
If you are trying to hack it using Python MIDI i would love to hear about it.
I'll keep you in the loop. This is the thing I've got on the desk:
I've got basic transport controls working already just using a translator, but it'd be nice to get the timecode display working too, save me constantly having to mentally translate between H's frame numbers and HH:MMS:FF
(and as an aside, it's bloody frustrating that there's no standard protocol for these control surfaces. You can get audio ones like this pretty cheaply, or video jog/shuttle wheels. But audio-oriented ones don't work with video apps nor vice versa, despite being pretty much the same hardware. Bah.)
Edited by howiem - 2019年3月12日 10:08:39
Technical Discussion » Using a MIDI (DAW) control surface to control Houdini (playback / setting keyframes and parameters)?
- howiem
- 146 posts
- Offline
CHOPS looks like the most appropriate way to tie MIDI input into a particular scene, but I've got a sexy control surface (buttons / slider / job wheel) that I'd love to use to control Houdini more globally.
At the moment I'm using a Mac utility that converts MIDI input into keystrokes, which works OK, but it'd be much more powerful if I could access the raw MIDI input from within Houdini and do my own finagling with Python: not everything lends itself to keystroke input.
Has anyone done this kind of thing before? Are there any other physical control surfaces that work with Houdini that I could investigate?
I'm guessing I'd have to install my own Python MIDI module, though most of these require you to poll the MIDI input rather than giving you a way to set up a callback.
Any suggestions / pointers appreciated.
At the moment I'm using a Mac utility that converts MIDI input into keystrokes, which works OK, but it'd be much more powerful if I could access the raw MIDI input from within Houdini and do my own finagling with Python: not everything lends itself to keystroke input.
Has anyone done this kind of thing before? Are there any other physical control surfaces that work with Houdini that I could investigate?
I'm guessing I'd have to install my own Python MIDI module, though most of these require you to poll the MIDI input rather than giving you a way to set up a callback.
Any suggestions / pointers appreciated.
Technical Discussion » $RFSTART and $RFEND no longer work in H17?
- howiem
- 146 posts
- Offline
Technical Discussion » Is it possible to add more VEX Presets to Wrangle nodes?
- howiem
- 146 posts
- Offline
… and the super thing about saving stuff as node presets is that it also saves any spare parameters your preset node may need.
eg. find yourself constantly needing to add a bit of human wobble to your camera? Houdini gives you approximately 792 different ways to do this, but my favourite has been:
Create a null, put some expressions to create some noise on its rotations, and add some parameters to feed/control that noise. You don't want to have to tit about with the expressions every time you want to control the wobble when you can make a baby UI on the Null itself:
The expressions I've stuck on are like this:
Change that 837 to a different number on each axis. Save it as a preset called “Camera wobble” or “Rotation noise” etc. That's the hard part over.
Now anytime you know you're gonna want a camera with a bit of humanising wobble, link your camera to a null, and animate that null with the main camera moves, instead of the camera object itself. Then you can stick another null in between:
and call up your wobble preset:
Now you have some nice friendly wobble controls, just by adding a null and picking a preset. Yummy.
eg. find yourself constantly needing to add a bit of human wobble to your camera? Houdini gives you approximately 792 different ways to do this, but my favourite has been:
Create a null, put some expressions to create some noise on its rotations, and add some parameters to feed/control that noise. You don't want to have to tit about with the expressions every time you want to control the wobble when you can make a baby UI on the Null itself:
The expressions I've stuck on are like this:
turb($T/ch("freqx")+837,0,0,2)*ch("noise_scalex")*ch("noise_scale_global")
Change that 837 to a different number on each axis. Save it as a preset called “Camera wobble” or “Rotation noise” etc. That's the hard part over.
Now anytime you know you're gonna want a camera with a bit of humanising wobble, link your camera to a null, and animate that null with the main camera moves, instead of the camera object itself. Then you can stick another null in between:
and call up your wobble preset:
Now you have some nice friendly wobble controls, just by adding a null and picking a preset. Yummy.
Edited by howiem - 2019年1月7日 04:41:28
Technical Discussion » How to add handles to multiparm stuff (like the Add SOP does)?
- howiem
- 146 posts
- Offline
Thanks tamte - I was hoping there was a sneaky simple way, but manually setting them up will do for now
Houdini Indie and Apprentice » Proper process for making a copy of a factory HDA / OP before customising and hacking it?
- howiem
- 146 posts
- Offline
I managed to unlock and alter the POP Source DOP to birth particles based on a source point attribute. Super.
But saving the node has (predictably) meant that the old unaltered POP Source node has gone, so even using the shelf tools sets things up using my new node, not the factory one.
Not a problem - it's easy enough to grab a copy of the factory node and stuff it back into my Houdini folder, and for now I've just added a switch into my franken-POP-Source node so it defaults to the original behaviour.
But what's the correct process to make a new HDA based on a factory one? Renaming HDAs seems to be difficult after creation, so I'm not sure how I'm intended to… well, “Save As…” my altered node.
But saving the node has (predictably) meant that the old unaltered POP Source node has gone, so even using the shelf tools sets things up using my new node, not the factory one.
Not a problem - it's easy enough to grab a copy of the factory node and stuff it back into my Houdini folder, and for now I've just added a switch into my franken-POP-Source node so it defaults to the original behaviour.
But what's the correct process to make a new HDA based on a factory one? Renaming HDAs seems to be difficult after creation, so I'm not sure how I'm intended to… well, “Save As…” my altered node.
Technical Discussion » How to add handles to multiparm stuff (like the Add SOP does)?
- howiem
- 146 posts
- Offline
I'm trying to make something similar to the Add SOP but with more attributes on each point. The Add SOP lets you place an arbitrary number of points in locations you'd like, but only has one extra attribute (“W”) you can set for each point: I need three or four other attribs I'd like the user to be able to set for each point.
A multiparm block will let me do it - but I can't figure out how to add handles to the points in the same way the Add SOP does.
Ideally I'd like each point/instance to display not just a translate handle, but a rotation handle too - though I'd settle for just translate
Any clues on how I'd go about this? Normally I'd have a nose around a factory OP that already does what I want, but the Add SOP give no clues about how the handles are created or bound.
A multiparm block will let me do it - but I can't figure out how to add handles to the points in the same way the Add SOP does.
Ideally I'd like each point/instance to display not just a translate handle, but a rotation handle too - though I'd settle for just translate
Any clues on how I'd go about this? Normally I'd have a nose around a factory OP that already does what I want, but the Add SOP give no clues about how the handles are created or bound.
Technical Discussion » Newbie Q - Bounding Mesh
- howiem
- 146 posts
- Offline
Not quite sure what you're after: you can use a Bound SOP to make a box just big enough to contain the parts, or the Boolean SOP to merge multiple parts together into one union (as long as they do actually overlap); there's also a Convex Hull SOP (if I remember right) that'll give you a closer fitting hull, like the kind you'd want to use for RBD sims, which find concave surfaces difficult to deal with.
What are you trying to achieve?
What are you trying to achieve?
Technical Discussion » $RFSTART and $RFEND no longer work in H17?
- howiem
- 146 posts
- Offline
I've just submitted it - thanks for checking man - I owe you one. My sanity was in question
Technical Discussion » $RFSTART and $RFEND no longer work in H17?
- howiem
- 146 posts
- Offline
Nope - just dragging the ends of the bar.
Just tried starting a new session, empty file, dragged the play bar range in a bit and typed in the textport:
Have to try trashing prefs etc. Boo. Thanks for checking for me
Just tried starting a new session, empty file, dragged the play bar range in a bit and typed in the textport:
Have to try trashing prefs etc. Boo. Thanks for checking for me
Technical Discussion » Icons scaling on HiDPI
- howiem
- 146 posts
- Offline
Didn't know you could scale the UI from houdini.env. Huh.
But the scaling seems to work properly if you do it from the Preferences dialog. Try removing the line from houdini.env, and setting your UI scale in the Prefs, then restarting Houdini.
But the scaling seems to work properly if you do it from the Preferences dialog. Try removing the line from houdini.env, and setting your UI scale in the Prefs, then restarting Houdini.
Technical Discussion » where is Cluster tab in Vorooni Fracture sop ?
- howiem
- 146 posts
- Offline
Yup - a little frustrating that the old Voronoi Frac SOP has been replaced like this. I don't do much RBD stuff but use the Voronoi Frac SOP for lots of other stuff so it makes me a little nervous having to start dropping nodes with “RBD” in their name in
You can use a textport to add the old one in manually, though. Make sure you're in the right network first:
/ -> cd /obj/geo1
and then add the node with the -e flag (this makes opadd use the name as given, rather than using any later versions):
/obj/geo1 -> opadd -e voronoifracture
You can use a textport to add the old one in manually, though. Make sure you're in the right network first:
/ -> cd /obj/geo1
and then add the node with the -e flag (this makes opadd use the name as given, rather than using any later versions):
/obj/geo1 -> opadd -e voronoifracture
Technical Discussion » instance sequence stutter
- howiem
- 146 posts
- Offline
Not sure exactly what's going in but flooring the value would be at least tidier and more predictable. Otherwise you're implicitly converting a float to an int - better to be explicit for clarity:
int frame_num = floor(f@age * 24.0);
int frame_num = floor(f@age * 24.0);
Technical Discussion » Keyframing Pyro timeScale to speed up runup
- howiem
- 146 posts
- Offline
Pyro ain't my area of expertise, but if you already have a sim you like and just want to retime it, I'd cache it out and then use the Retime SOP to change its speed. It works really well for slowing stuff down.
Mucking with the timescale sounds like trouble
Mucking with the timescale sounds like trouble
Technical Discussion » $RFSTART and $RFEND no longer work in H17?
- howiem
- 146 posts
- Offline
I could be going mad. So can someone confirm this behaviour before I report it as a bug, please?
$RFSTART and $RFEND refer to the start and end of the preview region of one's timeline, not the whole thing, so you could just render out, say, the middle of your scene. But they've stopped working for me: $RFSTART now equals $FSTART, and $RFEND equals $FEND. Which makes them useless:
Should be rendering from 184 to 227, not 1 to 250.
Just me?
(17.0.416 / Mac)
$RFSTART and $RFEND refer to the start and end of the preview region of one's timeline, not the whole thing, so you could just render out, say, the middle of your scene. But they've stopped working for me: $RFSTART now equals $FSTART, and $RFEND equals $FEND. Which makes them useless:
Should be rendering from 184 to 227, not 1 to 250.
Just me?
(17.0.416 / Mac)
Edited by howiem - 2018年12月6日 01:19:34
Technical Discussion » dop pop attributes used by the solver to compute movement?
- howiem
- 146 posts
- Offline
Easiest way to find out what attributes are used is to set up a DOP net and look in the Geometry spreadsheet. You're certainly missing things like @mass and the various spin/orientation attribs.
Unfortunately (as far as I know) you can't dive into the multi solver at the heart of the POP solver to see how it does what it does, but it's probably going to be a collection of simple physics equations. Stuff like accel = force/mass, v += accel/timestep etc.
If you don't use the force attrib, you can manipulate velocity directly (much like the way things like POP Advect etc give you the choice of whether to advect by applying a force or by setting velocity).
And you could probably work out what the airresist / targetv stuff is doing by setting some attribs manually, then stepping to the next frame and seeing what's happened (though that's a little hackery)
Unfortunately (as far as I know) you can't dive into the multi solver at the heart of the POP solver to see how it does what it does, but it's probably going to be a collection of simple physics equations. Stuff like accel = force/mass, v += accel/timestep etc.
If you don't use the force attrib, you can manipulate velocity directly (much like the way things like POP Advect etc give you the choice of whether to advect by applying a force or by setting velocity).
And you could probably work out what the airresist / targetv stuff is doing by setting some attribs manually, then stepping to the next frame and seeing what's happened (though that's a little hackery)
-
- Quick Links