[Sidefx-houdini-list] H16 Constraint behavior

Tim Bolland Tim_Bolland at hotmail.co.uk
Mon Nov 13 14:06:27 EST 2017

Sorry for the delay guys, it's been crazy at work over the last week. I asked about this and as it stands when you use the new constraints network inside of objects you can't export the data back onto the SRT. This is because as it's currently set up it will cause a dependency cycle. Annoying I know but I requested they take a look at this, constraints are a new thing and they acknowledge that work still needs to be done.

The way around it is to use an expression to extract the local transform between the parent and child. There are a huge amount of expressions and my guess is this is why constraints haven't been developed before. When you look at the sort of expressions you can use and build on the SRT you can kind of see why a tech savvy dev would build rigs using them and neglect artist friendly workflows and tools. I'm not saying it's right though.

I asked a question about sending data from a direction constraint to a null in another hierarchy. This would allow me to use the local transforms

"The way CHOP constraint networks are currently built is that they fetch the local transform of the owner object, so when you export back to the top-level, a dependency cycle is created. This is why the CHOP constraint networks are done via a special Constraints parameter that references the CHOP network instead. This way, what actually happens is that when the object cooks, it completely ignores its local transform parameters and uses the world transform specified by the given CHOP network output."

I figured something like this was happening, but surely there should be a way to read-only place the values back into the local SRT? So many rigging workflows rely on taking local values from constrained objects in rigs. I don't fully undertsand the complexity of what's going on but it sounds like I am unable to mix SRT channel references and constraints.

"As I understand it, those local transform parms can be used in various cases as input into the constraints. The way to currently read the local transforms is via expressions like optransform() in VEX or hou.ObjNode.localTransform() in HOM. In both cases though we would need to do additional work to extract the euler rotation angles from their matrix results."

In the HIP file I'm posting two ways you can get data out of the constraint network. You can use an output null after the direction constraint and then point to this in the Constraints field. Or if your trying to extract the local values between two objects (like I was) you can use the vrorigin() expression.

"-vrorigin("../direction_parent", "../direction_const")[0]
- vrorigin("../direction_parent", "../direction_const")[1]
- vrorigin("../direction_parent", "../direction_const")[2]
If direction_const doesn't have a parent, then you can just use the empty string which would result in getting its world transform (which would be the same as its local transform). In the attached file, I added dummy parent nodes just for testing purposes."

I'm sorry if this sounds a little fragmented, I was asking about a few things and it would be a lot to post. The main point I took away is you can't simply relative reference link to the SRT of the constrained object, you need to jump through a hoop or two. Annoying I know but hopefully this will get looked at. If anyone else knows differently I'd love to find out!



From: Sidefx-houdini-list <sidefx-houdini-list-bounces at sidefx.com> on behalf of Olivier Jeannel <facialdeluxe at gmail.com>
Sent: 02 November 2017 12:44
To: Official Softimage Users Mailing List. https://groups.google.com/forum/#!forum/xsi_list; sidefx-houdini-list at sidefx.com
Subject: Re: [Sidefx-houdini-list] H16 Constraint behavior

Hey tim, I received your mail.
If by any chance you find a way to send the rx ry rz from the Chop LookAt
to the SRT of the Object, I'd be interested.
Frankly, I navigate into the doc and various threads , but I'm unable to
solve this. And I don't get why it is so convoluted.

2017-11-02 13:03 GMT+01:00 Tim Bolland <Tim_Bolland at hotmail.co.uk>:

> Your not alone, I'm currently doing some rigging and using constraints
> such as look-at and I'm stumbling across a whole bunch of update/override
> issues.  CHOPs seem to be very sensitive to what flags you use, for example
> the look-at doesn't set the export flag, which is why I think you don't get
> updated values in the SRT. I also noticed different behaviour when I had
> the render flag of something switched on, which makes no sense to me.
> I'm having a look to see if I can isolate the issues but things seem to
> change so much, and sometimes things do work.
> ------------------------------
> *From:* softimage-bounces at listproc.autodesk.com <
> softimage-bounces at listproc.autodesk.com> on behalf of Olivier Jeannel <
> facialdeluxe at gmail.com>
> *Sent:* 02 November 2017 07:29
> *To:* sidefx-houdini-list at sidefx.com; softimage at listproc.autodesk.com
> *Subject:* Re: H16 Constraint behavior
> The worst beeing if I middle clic on the object constrained, I can read
> some r(x,y,z) values that are the correct local rotation, I just don't know
> how to copy them back to the rx ry rz at object level :/
> 2017-11-02 7:57 GMT+01:00 Olivier Jeannel <facialdeluxe at gmail.com>:
> Hi there,
> I'm "discovering" the constraint behaviour in Houdini (never used it
> before whatever version).
> So, I'm using that new "LookAt" in the Constraint shelf and it builds that
> Chop constraint.
> Where I'm confused, is that while the geometry is aligned at SOP level (ie
> : faces prims are aligned), but in fact the Axis at Object level is not.
> I think this join this previous discussion (about parenting)
> http://softimage.69864.x6.nabble.com/Houdini-hierarchical-
> organization-td7448.html#a7452
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__softimage.69864.x6.nabble.com_Houdini-2Dhierarchical-2Dorganization-2Dtd7448.html-23a7452&d=DwMFaQ&c=76Q6Tcqc-t2x0ciWn7KFdCiqt6IQ7a_IF9uzNzd_2pA&r=GmX_32eCLYPFLJ529RohsPjjNVwo9P0jVMsrMw7PFsA&m=jlhsxz482ZyhCmTLTzZ2scMyMLAxsqwMzhjGKGu240U&s=VduWt4Wco939KxbK-TcnNGGO9XSXr_bdwOCNCGaJXyE&e=>
> This is confusing because you can no more transform object in local space
> (viewport manipulation).
> Or, for example, Constraint Lookup a Spot Light, and all the gizmo get off.
> But maybe I missed something obvious.
> ------
> Softimage Mailing List.
> To unsubscribe, send a mail to softimage-request at listproc.autodesk.com
> with "unsubscribe" in the subject, and reply to confirm.
Sidefx-houdini-list mailing list
Sidefx-houdini-list at sidefx.com
Sidefx-houdini-list Info Page<https://lists.sidefx.com/mailman/listinfo/sidefx-houdini-list>
Sidefx-houdini-list -- Houdini 3D animation tools mailing list About Sidefx-houdini-list

More information about the Sidefx-houdini-list mailing list