Jump to content

Houdini 13 Wishlist


LaidlawFX

Recommended Posts

For me, Houdini needs more support for creating custom HUD based manipulators and controls in combination with better visual feedback.

If Houdini is to break into the game industry as a cutting edge software package it needs these elements as the current control system with the parameter pane is too programmer oriented.

(This is also feedback I received from Guerrilla games level designers and developers).

While it is possible to do some of these things in a round about way using python and H-script it is still limited.

The following is a little hard to explain in text but i'll try:

When I want to for example create a new room in my level generator (see the link in my signature), I need to go to the parameter menu, and increment a number to let a for-loop generate another room. To control this room I need a multi-parm folder structure as I might need controls for 5 rooms, or 50.

If I want to change the position, rotation or scale of this room i need to do it through the multi-parm menu, find the right tab in the list that corresponds to the room I want to manipulate, and then adjust the respective sliders.

This isn't very intuitive.

As an alternative for the for loop and increment number, I could use an add node to move the room around with the add node's move handle. I could even use some python scripts to automate some of these elements but I'd still need to link these to a multi-parm folder.

Any custom handle created with the type properties menu of a digital asset doesn't work with multi-parms. I also can't make persistent handles for multi-parm parameters.

so i'm suck here.

Then, say I want to remove this room, but I already created a series of other rooms after these. When I remove the room point or decrease room count, all the controls shift back along by one.

This is especially messy if random seeds are involved that link to a rooms number or ID.

In either case, it could mess everything up even further.

So this it what I'd like to see:

I would like to see the handle tool (or some other form of manipulator) to be configurable so it supports the addition, manipulation and deletion of objects from multi-parm instanced controls.

Parameters inside these multi-parm folder lists and the multi-parm folders themselves need to be configurable in the editor (parameter editor / type properties) so I can assign them custom handles or manipulators.

I would also need the ability to manipulate/read out the selected tabs and activate the add/remove buttons from the multi-parm remotely.

This would be required to manipulate each entry in the multi-parm list from the scene view handle tool.

So when I add a new parameter to my multi-parm list in say the type properties, I can tell it to create a custom move handle when prompted or link the parameter to a onscreen slider.

In a similar way I would like to link the multi-parm folder to a drop down menu on the handle tool. So I can select elements in my scene, or right click to add/remove them.

Imagine that instead of having to use only the parameter menu to add a new room, I could simply:

Right click in my viewport using the handle tool and be able to select, CREATE > ROOM.

This would then increment the number of rooms, so it creates a new room and add a new entry to the multi-parm list, so I have the corresponding controls for this room.

It would also immediately set the translation of the room to the position where I clicked.

So now I have a room, with only 1 action.

I can then select this room by using the handle tool again.

When I hover over the room, it highlights to indicate it is selectable. When I click it, it selects the room and creates a halo effect around it to indicate this in the scene view.

This will automatically call up the right tab of controls in the multi-parm. In a similiar way, if I click or hover over the tab in the multi-parm. the Room in the scene view highlights.

Now I have the room selected, I can use a series of on-screen sliders/handles to quickly manipulate all the enabled parameters of the multi-parm.

Such as call up a scale handle to scale the room, or a rotate handle etc.

change the amount of height levels the room has, enable mirroring, etc.

These handles appear and vanish only when called for so you don't have 10 persistent handles on the screen for different rooms or settings you are not manipulating.

If i were to remove this room by right clicking it and specifying DELETE ROOM it reduces the room count correctly and removes the correct entry in the multi-parm list so the controls still line up.

To conclude:

The more an artist can do in the viewport with context sensitive controls, the better it will be as a tool in the games industry.

Game designers or level designers don't like it when a tool is not intuitive or offers so many sliders it boggles the mind.

One quote i got from Guerrilla was this:

If you run an ice cream shop and you have 3000 flavors and you display all of them. People will become confused and leave your store without buying anything.

If you only display a limited amount of flavors and only show the other flavors related to the one they picked when people are looking into them, it becomes much easier to manage for them.

So the better and more intuitive I as a Houdini artist can make the control system, the better it will be received.

Edited by hyperforce
  • Like 1
Link to comment
Share on other sites

@hyperforce, what you are describing sounds like you can do perfectly at object level

simply create HDA of your dream handle with all the settings for the room, it can be essentially a null or some fancy room handle shape, it may contain one point with all information from its parameters as an attributes if you want more flexibility

then your game level asset can just import all handles by one object merge /path/to/handle/objects/room_handle_*/OUT_point

each point has full information about room and proper transforms if you want and it's consistent with handle objects in your scene

delete handle and puff, ccorresponding room disappear, create new handle matching the name pattern and room appears

on top of that, you will see all nulls in the scene, select any of them and you have all parameters of the room since it is room handle hda, you will have transform handle for it as well etc, very flexible

not saying that handles doesn't need improving, but I'd rather avoid multiparm/foreach combo if you want to be flexible and user friendly

Link to comment
Share on other sites

@hyperforce, what you are describing sounds like you can do perfectly at object level

simply create HDA of your dream handle with all the settings for the room, it can be essentially a null or some fancy room handle shape, it may contain one point with all information from its parameters as an attributes if you want more flexibility

then your game level asset can just import all handles by one object merge /path/to/handle/objects/room_handle_*/OUT_point

each point has full information about room and proper transforms if you want and it's consistent with handle objects in your scene

delete handle and puff, ccorresponding room disappear, create new handle matching the name pattern and room appears

on top of that, you will see all nulls in the scene, select any of them and you have all parameters of the room since it is room handle hda, you will have transform handle for it as well etc, very flexible

not saying that handles doesn't need improving, but I'd rather avoid multiparm/foreach combo if you want to be flexible and user friendly

I agree with you that it would be simpler for a purely manual approach.

But how would this system hold up when you also want the generator to create rooms for you that you can then manually adjust?

The generator HDA would have to talk back to the handle HDA's it just created and vice-versa... I'm not sure how viable or temper proof that is.

And those rooms are just the simplest example.

In any case,handles aren't the only thing that needs to be updated. Its not possible to talk to the add/remove/tabs of a multi-parm for example, and its also currently impossible to retrieve the tab # that is currently selected like radio buttons. I've even asked people from side-fx directly if this was possible and even they didn't have an answer.

Edited by hyperforce
Link to comment
Share on other sites

fully agreed with post #162

..

The more an artist can do in the viewport with context sensitive controls, the better it will be as a tool in the games industry.

..

, but its side_effects wdnt impact only game-asset-makers ..

--

. anyway , just wanted to add something really small ( or vague ) in appearance :

in my perception , there is a considerable amount of users who jump forth-and-back between two roles ; homo-artist and homo-scientist .

this transitional ( time-consuming ) state can ( and should be minimized ) in houdini .

in short :

- Houdini shd be able to read ( telepathically* ) and understand ' a procedure ' once i tell him to do so .

- .. shd be able to re-apply ' the procedure ' as 'a layer' inside the same entity ( asset / vop / object / etcetera )

- .. shd be able to remove it without breaking things .

now , can i do this and similar processes myself with python ?

Yes ! within 2 weeks maybe ..

wd i share it with other houdini users ?

probably No !

finally , is this the way houdini shd keep going ? thinking that : " if it is doable , we have already delivered it . "

wishfully No !

foreach_SOP is an great ( existing ) example , but it is simply a loop . a spiral .

it can be pushed pretty far , IMHO .

multiparm_Blocks are a good start to , but hard to manage actually ..

--

eeh ok . it is a cloudy Sunday here today , so here are few extra points :

- the SOP state and its citizens need more attention .

( a well deserved one . )

- more viewport interactivity please !

( as poster of post #162 said and more )

- OGL shd be spectacular and robust . if i wd had to choose one , i wd choose the 2nd .

( that kept me from upgrading to H12 . sorry ! )

- UI needs to tighten its nuts harder than they already are .

( or maybe swap it with some other already 'taken-care' available UI . less headaches for everyone )

- push PBRs performance into comparable levels with best performers .

( dont be afraid about 'cheating' . 3D , movies , games .. are founded on cheating . keep the classic mantra alive and updated for reasons it was brought in life )

- pack a notecase / notebook / diary / clipboard manager / similar-whateva which can act like a semi-thrash-bin of many things like : expressions , snippets , comments , notes , links , etcetera .

( actually im trying to replicate this feature with other tools , but it isnt very convenient and if this wd be inside hou , it cd be expanded magically inside houdini . eg,: once i copy an expression , i cd paste it inside any parameter with options related to opened scene file and its contents . it is really hard ( for me at least ) to remember how i solved one situation 3 months ago .. )

- make peace with some SOP family members . =)

( re-evaluate NURBs importance , meet some newborn nephews and nieces ( algorithms ) of old UV son , etcetera )

- lets Bake things easy too .. =)

enough here !

im sure things i mentioned are mentioned by others 160 posts ago or on H12-wishlist-topic , but anyway .. just some wishes .

.cheers

* once i select a set of nodes and ask him to ' understand me ' .

Link to comment
Share on other sites

I agree with you that it would be simpler for a purely manual approach.

But how would this system hold up when you also want the generator to create rooms for you that you can then manually adjust?

The generator HDA would have to talk back to the handle HDA's it just created and vice-versa... I'm not sure how viable or temper proof that is.

And those rooms are just the simplest example.

I am not talking about manual approach

those handle objects can be easily managed from inside of your assets and still remain easily changeable by the user

(remember that they are referenced inside where they are transformed to points? you can grab the mask from that and then you have the path to them all to manipulate any of them through python)

In any case,handles aren't the only thing that needs to be updated. Its not possible to talk to the add/remove/tabs of a multi-parm for example, and its also currently impossible to retrieve the tab # that is currently selected like radio buttons. I've even asked people from side-fx directly if this was possible and even they didn't have an answer.

it is possible, actually the same way as with radio buttons, but you are right that it weren't

I'am not trying to prove that more functionality to handles is not necessary, just that I personally see more flexibility if you outsource different functions like handles you are talking about outside of your hda, then you can have thousands of them with full viewport control without cluttering your main asset ui and still easily manageable manually as well as automatically from your asset or any other way. And this possibility is there already, so in meantime you don't have to wait :)

Link to comment
Share on other sites

I dont think it has been mentioned in this thread but somehow i would love the blendshape node to be faster. Even with the trick of using an edit sop to only store the deltas, its too slow for realtime feedback.

Edited by phrenzy84
Link to comment
Share on other sites

Btw this happened when I turned on "Show Guide Geometry" which forces the convex hull creation I think.

Forces to create and VIEW that geometry. Internally it might be fast -- the lag may be getting it to the vp, though I haven't tested anything. You should be able to check it with the new performance monitor. The bullet library does have a convex hull generator in it's code, though I'm not sure what Sesi is using.

  • Like 1
Link to comment
Share on other sites

Forces to create and VIEW that geometry. Internally it might be fast -- the lag may be getting it to the vp, though I haven't tested anything. You should be able to check it with the new performance monitor. The bullet library does have a convex hull generator in it's code, though I'm not sure what Sesi is using.

I think viewing shouldn't take much time, because it was less than 100k points for the hull itself, didn't check. I will try the performance monitor but since you are more experienced in this stuff, please give it a try if you can :)

Link to comment
Share on other sites

- pack a notecase / notebook / diary / clipboard manager / similar-whateva which can act like a semi-thrash-bin of many things like : expressions , snippets , comments , notes , links , etcetera .

( actually im trying to replicate this feature with other tools , but it isnt very convenient and if this wd be inside hou , it cd be expanded magically inside houdini . eg,: once i copy an expression , i cd paste it inside any parameter with options related to opened scene file and its contents . it is really hard ( for me at least ) to remember how i solved one situation 3 months ago .. )

.. with this one i meant ;

to have the ability to write and store locally ( maybe similar & / parallel to my local help system ) .

maybe accessible through a dedicated tab inside the HelpBrowser pane .. and transferable too .

a tree like structure . like Gallery , but more deep .

.cheers

Link to comment
Share on other sites

Ok I did some tests for the same 100k object. I assumed the hull would be about 20k points, and it's dead on shy of 5 points :)

Basically a teapot -> convert (u=5, v=5) -> fuse. Using Tetrahedralize took 16 seconds. Turning on guide geometry for the RBD object took 19 seconds.

When I use the performance monitor, I get this:

FehMBSQ.png

Not sure what "inter-object" is but displaying the convex hull shouldn't take almost 100% of the time, should it?

Link to comment
Share on other sites

  • 2 weeks later...

boundingbox tool?

like clicking on some parameter --> click the tool --> click the object --> and maybe get some popup box with for example D_YSIZE , D_YMIN

seems pretty awsome....

now you need to type parts of it. also: after selecting the object from the list en hit enter, you still need to type ", should be nice to include that as well when hiting enter

Link to comment
Share on other sites

boundingbox tool?

like clicking on some parameter --> click the tool --> click the object --> and maybe get some popup box with for example D_YSIZE , D_YMIN

seems pretty awsome....

now you need to type parts of it. also: after selecting the object from the list en hit enter, you still need to type ", should be nice to include that as well when hiting enter

Like the bounding box/box sop? or more like the hscript centroid(), bbox()... possibly you could just do a preset with the ones you use regularly, my transform sop has a whole series of presets for this.

Link to comment
Share on other sites

It's easy to create Digital Asset from this and you'll get one operator :)

Several nodes inside DA are too slowly if compare it to binary OP. I think it is obvious...

I just want one more checkbox for Delete SOP and Group SOP.

Edited by almatea
Link to comment
Share on other sites

Ok I did some tests for the same 100k object. I assumed the hull would be about 20k points, and it's dead on shy of 5 points :)

Basically a teapot -> convert (u=5, v=5) -> fuse. Using Tetrahedralize took 16 seconds. Turning on guide geometry for the RBD object took 19 seconds.

When I use the performance monitor, I get this:

Not sure what "inter-object" is but displaying the convex hull shouldn't take almost 100% of the time, should it?

Tetrahedralize algorithm is very sensitive on a conditions of a input points. For example, your teapot before fusing has 123K points, which takes on my laptop 30 second to process by Tetrahedralize SOP, but if you scatter the same amount of point on that teapot's surface and then process it, it will take only 6 seconds (plus less than a second for ScatterSOP). Funny enough dense box mesh with 100K points takes 1.5 minute, while scattered with points, 10 seconds! (and after taking care points are not degenerated this might be even quicker).

Also, in case of really heavy geometry, it might be useful to split an object into peaces and compute hulls separately (and collect them after that). Some algorithm are very efficient for average number of inputs, and slows down when thrown upon bigger points set.

ps afaik bullet solver uses the same code.

Edited by SYmek
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...