Two identical APEX Graphs have different behavior

   1317   10   1
User Avatar
Member
213 posts
Joined: 6月 2023
Offline
It seems like I've encountered some crazy bug here.

I've tried to created two identical APEX graphs. One with python and one manually. However, they behave differently.





I can't figure out what the difference between them is, except the node color and order. However, one works and one doesn't.

(File is attached)

It seems pretty crazy (in a negative way, ofc) that something like this can happen in APEX.
Edited by kodra - 2023年12月27日 12:05:56

Attachments:
simple_ik.hiplc (179.4 KB)
Screenshot 2023-12-28 010445.png (81.9 KB)
Screenshot 2023-12-28 010457.png (85.3 KB)

User Avatar
Member
8606 posts
Joined: 7月 2007
Offline
It's definitely a byproduct of it being in alpha/beta state with lack of proper debugging outputs or error checking

the issue here seems to stem from one simple difference and that is that "fail" case has parms dictionary defining "blend" value type as "int", while the rig::TwoBoneIk callback expects "float"
so it seems that this simple mismatch silently makes the node to fail rater than report an error or warning

(turn on Typed Dictionaries in Spreadsheet to see the types)


here is the file with fix applied
but please submit BUG as I'd also expect APEX to complain when incompatible parms are authored as that can easily happen when new version of the callback updates the parms names or types and therefore the parms on all existing graphs may no longer be compatible
Edited by tamte - 2023年12月27日 18:41:48

Attachments:
simpleIK_parms_difference.gif (7.7 KB)
simple_ik_fix.hipnc (194.3 KB)

Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
213 posts
Joined: 6月 2023
Offline
Wow thank you very much. I'd never think of checking that.

The worst part is that even if I explicitly set the value to a fraction with the UI, it's still an int:



I know APEX is alpha, but not like "0.576 is literally 1" alpha... it seems like the type is somehow decided when you call graph.setNodeParmand can't be changed in Apex network editor UI.
Edited by kodra - 2023年12月27日 20:29:32

Attachments:
Screenshot 2023-12-28 091947.png (122.9 KB)

User Avatar
Member
8606 posts
Joined: 7月 2007
Offline
kodra
it seems like the type is somehow decided when you call graph.setNodeParm
while I haven't used it I'd assume it works the same way as attributes and guesses the type from the value
so if you set it to 1 it's gonna be int, for float you have to use 1.0, but that's just my guess

kodra
and can't be changed in Apex network editor UI.
that's another issue, I'd expect Editor to correct such parms
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
213 posts
Joined: 6月 2023
Offline
I reported both.

At this point I think the lack of error feedback is a huge issue. Even you made an 100% invalid graph (for example one with a cyclic dependency), it sometimes still just fails silently.

tamte
while I haven't used it I'd assume it works the same way as attributes and guesses the type from the value
so if you set it to 1 it's gonna be int, for float you have to use 1.0, but that's just my guess


Yes it does. I don't think this is too unreasonable to assume a type, but the fact once it's set it can't be changed with Apex Edit Graph is definitely unreasonable.
Edited by kodra - 2023年12月27日 21:42:38
User Avatar
スタッフ
21 posts
Joined: 10月 2023
Offline
kodra
I reported both.

At this point I think the lack of error feedback is a huge issue. Even you made an 100% invalid graph (for example one with a cyclic dependency), it sometimes still just fails silently.

tamte
while I haven't used it I'd assume it works the same way as attributes and guesses the type from the value
so if you set it to 1 it's gonna be int, for float you have to use 1.0, but that's just my guess


Yes it does. I don't think this is too unreasonable to assume a type, but the fact once it's set it can't be changed with Apex Edit Graph is definitely unreasonable.

You can set the error handling on the apex edit graph node to "report as warnings", this will handle most errors and give you a discription of the error when you middle click on the node, it doesn't give you an error if you
have the incorrect data type though, which it should definitely do.

you can however change it in the graph by adding a float value node and plugging it into the blend.

Attachments:
Screenshot 2023-12-30 090001.jpg (258.5 KB)

User Avatar
Member
8606 posts
Joined: 7月 2007
Offline
william_harley
You can set the error handling on the apex edit graph node to "report as warnings", this will handle most errors and give you a description of the error when you middle click on the node...
seems to be on APEX Invoke SOP
wouldn't it be better if the errors were on by default ( especially if they are reported just as warnings) like for any other SOP node?
It seems a bit odd choice to ignore Errors by defaul, since the alternative is silent fail
Edited by tamte - 2023年12月30日 03:28:50
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
213 posts
Joined: 6月 2023
Offline
william_harley
You can set the error handling on the apex edit graph node to "report as warnings", this will handle most errors and give you a discription of the error when you middle click on the node, it doesn't give you an error if you
have the incorrect data type though, which it should definitely do.

you can however change it in the graph by adding a float value node and plugging it into the blend.

...?

1. Apex Edit Graph doesn't have "report as warnings" option

2. Apex Invoke Graph does.

3. ... however Apex Invoke Graph doesn't seem to be the recommended rigging/animating workflow. Apex Scene Invoke does [www.sidefx.com]. I honestly don't know how to set up the Input Bindings and its input ports so it behaves exact the same as Apex Scene Invoke.

4. However middle click in Apex network editor causes Python error. (another bug I've reported quite a while ago)
Edited by kodra - 2023年12月30日 05:34:45
User Avatar
スタッフ
21 posts
Joined: 10月 2023
Offline
tamte
wouldn't it be better if the errors were on by default

I think the reason for it being off by default is for performance reasons, once you start stacking them up in the rig you will start to see the difference.

kodra
1. Apex Edit Graph doesn't have "report as warnings" option

sorry you are right, Im getting ahead of myself. hopefully this will be added in the new year.

kodra
2. Apex Invoke Graph does.

you can add the invokegraph node, set the output and then you should be able to see the errors.
just make sure you have the latest build.

Attachments:
error.jpg (370.8 KB)

User Avatar
Member
213 posts
Joined: 6月 2023
Offline
Oh I see... you meant to MMB the invoke sop, not the nodes in APEX network editor.
User Avatar
Member
7753 posts
Joined: 7月 2005
Offline
Figure I'll post an update on this here as well:

In Houdini 20.0.584, you'll be able to manually correct this by using an APEX Edit Graph SOP and manually changing the blend value in the APEX Network View to something else and then back to 1 again.

The error reporting (eg. if you used an APEX Invoke Graph SOP), will be available soon in the upcoming general APEX update after the next 20.0 production update.
  • Quick Links