Procedural Pipe - on Curve?? [just like the unreal demo shown]

   4609   9   2
User Avatar
Member
5 posts
Joined: Dec. 2018
Offline
Hi there, before I go ahead and buy houdini, I was wondering if it had the same function for Maya as it apparently does for UE4.

The function I'm talking about is the ability to create a houdini asset,(ie. procedural pipe, staircase, bridge, wall, etc), and be able to extend it by dragging the curve or asset out farther, or add more point into the curve. This would be incredibly powerful for creating procedural building and sets on the production I'm on.

Thanks for the help!

https://youtu.be/gZ8BKE-QIp8?t=1146 [youtu.be]

Time stamp is included.

Attachments:
curves_01.PNG (905.9 KB)
curves_02.PNG (619.1 KB)

User Avatar
Member
5 posts
Joined: Dec. 2018
Offline
*BUMP*
User Avatar
Member
146 posts
Joined: Oct. 2017
Offline
There's a couple of challenges to getting that workflow going in Maya.

You need to be able to modify a parm or input to the asset in order to affect the cooks - which would be OK in the example if the the curve driving the pipe were a Maya curve. If you wanted to manipulate geo that originates in the asset - well, we haven't exposed handles as inputs yet. The simplest way to do that would probably be to create locators that drive the handles directly through the plugin api. Would having handles available work for the kinds of assets you were planning on using? We might need to look at some other things, like hotkeys for button presses to go with the workflow. And it's still only as good as Maya's transform tools.

While it's currently possible to use a Maya locator as a transform input, there's overhead on the part of the asset to interpret and apply the input. You could also bake out the original curve from the assets, connect is as an input and edit it with Maya's curve editing tools.

The other issue is how to store the edits once they are done. Even if you had an editable asset, we don't store the asset definition with the scene - we don't save out any assets at all. So modifications have to be stored in the Maya scene, either as input curves, or as baked output geometry. (or the asset would need to cache out the modified curve and determine how to interact with the cache.
Edited by juliap - Dec. 12, 2018 12:01:37
User Avatar
Member
5 posts
Joined: Dec. 2018
Offline
Thank you SO MUCH for replying Juliap
I am totally new to houdini, and am looking to see if I could get this to work so, sorry if I'm a bit layman on this.

I'm totally new to building these assets so some of the lingo I may not be processing properly.

I'm going to use a wood fence as an example.

You need to be able to modify a parm or input to the asset in order to affect the cooks - which would be OK in the example if the the curve driving the pipe were a Maya curve.

To my understanding, you're saying I could change the parameters of the asset if I were driving them with a Maya curve. As in I could potentially control a fence length by dragging the curve CV's (control vertex's) farther apart? Could we put a formula/parameter that it would also increase the amount of fence panels when doing so?

If you wanted to manipulate geo that originates in the asset - well, we haven't exposed handles as inputs yet. The simplest way to do that would probably be to create locators that drive the handles directly through the plugin api. Would having handles available work for the kinds of assets you were planning on using?

I think manipulating the geo within the asset wouldn't be such a big deal, because I could make that a variation in the asset back in houdini. As long as we could bake the geo out and I could manually modify it within Maya afterwards, that works for me. Handles seem like a fantastic idea for iterating on (if I'm understanding what they are).

Thank you for the help thus far!
User Avatar
Member
146 posts
Joined: Oct. 2017
Offline
PolyShifter
To my understanding, you're saying I could change the parameters of the asset if I were driving them with a Maya curve. As in I could potentially control a fence length by dragging the curve CV's (control vertex's) farther apart? Could we put a formula/parameter that it would also increase the amount of fence panels when doing so?

You could use most of Maya's curve tools as long as you have the upstream curve shape to apply them to, so you can move CV's or add points (just noticed that a closed curve isn't imported correctly - I will enter a bug) You could also have your asset determine the number of panels by the length of the curve, or the placement by the distance along the curve. If you look at the he_curve_instancer hda that's on the HoudiniTools shelf, one of the modes that it has is distance based placement. (If you don't see the HoudiniTools shelf, you may need to do UpdateHoudiniToolsShelf.)
Edited by juliap - Dec. 18, 2018 14:06:28
User Avatar
Member
5 posts
Joined: Dec. 2018
Offline
That is fantastic news! Thank you so much for the help
User Avatar
Member
453 posts
Joined: Feb. 2013
Offline
@juliap have you seen RFE ID=76877?

{
Summary: Splines/curves in Unreal 4 and other programs contain not just CV information but also rotation and scale information. This would be a great fit for Houdini.

Description:
Houdini offers many options to add information onto a user-created curve. One could use multiparm blocks or ramps to give the user additional control. But it would allow for faster and more intuitive interaction if points on the curve could receive information from standard gizmos (like rotation and scale). Compare this process with Unreal 4 splines: https://youtu.be/7YUxM0NDWRY?t=40 [youtu.be] As you can see, the interaction is very fast and intuitive. Rotate a point and it changes the orientation of your curve.
Now imagine you could also scale a point on the curve. Then you could create a path tool that creates a path that roates and scales directly with the user input. Furthermore these scale and rotation attributes could be mapped to completely arbitrary functionality. For example they could control randomization or color.
Additional gizmos could be mapped to arbitrary attributes. For example, each point on a curve could have several drag sliders that change values like speed or turbulence intensity.
This would also synergize with Houdini Engine for UE4 (https://www.sidefx.com/forum/topic/45507/?page=1#post-202962) and other Houdini Engine implementations.

I think you could get a lot of user-friendlyness for relatively little effort with this. And after all, the most important thing for any end-user is a comfortable interaction with the software. Even for highly technical professionals, a better UI means faster iteration and therefore better visual results.
}

User Avatar
Member
5 posts
Joined: Dec. 2018
Offline
I don't think this applies to Maya. Because when you rotate a CV on a Maya curve, it will not rotate any mesh extruded upon it or anything.
User Avatar
Member
146 posts
Joined: Oct. 2017
Offline
Were you thinking of a full-fledged plugin curve attribute editing tool in Maya? Or just something that works with an asset - i.e. you visualize the results on the asset output, and the tool just needs to give you feedback for the point that you are currently editing values for while. Did that subtle allusion to creating a path editor imply a more intuitive curve editor as well?

Or using existing Maya tools to specify values along a curve (e.g. a maya volume curve, or splineIK or whatever), and providing a way to sample and import that data as point attributes

Also when you say points on a curve can we assuming a degree1 curve so that we're just dealing with point attributes directly
User Avatar
Member
453 posts
Joined: Feb. 2013
Offline
I was thinking that we first need to have this in Houdini and then we could apply the tech developed for that in Maya.

Probiner Probiner (Facebook account) has recently posted this:
WIP: Bezier Deform Offsets per control.
https://streamable.com/l7rb3?fbclid=IwAR0WlqugKymNefycp_n9K7ZM_cncgMDUOTPLdY1DtuaAaxwo_oTibFkjhgA [streamable.com]

This is Houdini and it is basically what I would expect as a solution for my RFE. Though I would also hope for additional sliders for arbitrary attributes that could be generated when needed.

I think something similar can be then achieved in Maya with (callback) scripts and custom attributes. You would then maybe have a shelf tool to create a special NURBS curve that has some scripts associated with it.
I have have seen in the Maya script editor, that even though the vertices do not have scale and rotation values, the calls are executed when you use the gizmos. (But I don't know whether you can get those calls.) The additional information could then be stored in custom attributes.
Obviously there would be a bit of overhead, but I think the overall workflow possibilities would make it worth it.
Maybe it makes sense to use custom NURBS shapes for controlling the knots of the curve (instead of locators, because those don't properly show scale).

In my experience it is desirable to have input curves as independent objects. The other important thing is that they are easy to use.
To clarify why it's useful to have input curves as separate objects: They could be (re-)used by multiple different scripts, models and HDAs. They can also be moved across scenes. They would not loose information from updates etc.
Edited by DASD - Jan. 7, 2019 16:17:35
  • Quick Links