Two identical APEX Graphs have different behavior
1361 10 1- kodra
- Member
- 213 posts
- Joined: June 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.
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 - Dec. 27, 2023 12:05:56
- tamte
- Member
- 8621 posts
- Joined: July 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
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 - Dec. 27, 2023 18:41:48
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- kodra
- Member
- 213 posts
- Joined: June 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
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.setNodeParm
and can't be changed in Apex network editor UI.
Edited by kodra - Dec. 27, 2023 20:29:32
- tamte
- Member
- 8621 posts
- Joined: July 2007
- Offline
kodrawhile I haven't used it I'd assume it works the same way as attributes and guesses the type from the value
it seems like the type is somehow decided when you call graph.setNodeParm
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
kodrathat's another issue, I'd expect Editor to correct such parms
and can't be changed in Apex network editor UI.
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- kodra
- Member
- 213 posts
- Joined: June 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.
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.
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 - Dec. 27, 2023 21:42:38
- william_harley
- Staff
- 21 posts
- Joined: Oct. 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.
- tamte
- Member
- 8621 posts
- Joined: July 2007
- Offline
william_harleyseems to be on APEX Invoke SOP
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...
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 - Dec. 30, 2023 03:28:50
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- kodra
- Member
- 213 posts
- Joined: June 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 - Dec. 30, 2023 05:34:45
- william_harley
- Staff
- 21 posts
- Joined: Oct. 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.
- kodra
- Member
- 213 posts
- Joined: June 2023
- Offline
- edward
- Member
- 7756 posts
- Joined: July 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.
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