Commit df78cb8
committed
IECoreMaya : Updated SceneShape drawing to respect ancestral visibilty.
There have been visibility discrepancies when a layout is collasped
or expanded. When collasped, the drawing code is able to read
visibility overrides and hide the appropriate sub-hierarchies.
However, when the same layout is expanded the visibility was tested
at each expanded location, and it failed to consider overrides
which occured further up in the hierarchy.
This commit solves this discrepancy by using LiveScene to determine
if the sceneShape is should actually be invisible due to an
override further up the hierarchy. SceneShape registers a custom
readAttribute function with LiveScene, so LiveScene is able to
correctly read the visibility overrides during its traversal.
In regards to performance, when a SceneShape is fully expanded, and
there is a deep hierarchy of visible transforms, this commit will
slightly impact the frame rate since LiveScene will be performing extra
work to ensure there are no visiblity overrides. Some of this overhead
may be reduced through the use of an extra visiblity tracking cache,
but there is also a price to pay for the extra message callbacks
necessary to keep the cache synchronized. On a fully visible robot with
~2870 locations, the frame rate dropped ~1.2 fps.
However, in practice at IE, this will not affect the performance of our
animation rigs since all SceneShapes will be expanded to maya geometry.
In this scenario, MDagPath::isVisible() will return False since
the SceneShape will be set to an intermediate object, and the LiveScene
code path will not be executed.1 parent 07b40ee commit df78cb8
File tree
4 files changed
+45
-3
lines changed- include/IECoreMaya
- src/IECoreMaya
4 files changed
+45
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
| 141 | + | |
| 142 | + | |
141 | 143 | | |
142 | 144 | | |
143 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
| |||
97 | 98 | | |
98 | 99 | | |
99 | 100 | | |
| 101 | + | |
100 | 102 | | |
101 | 103 | | |
102 | 104 | | |
| |||
539 | 541 | | |
540 | 542 | | |
541 | 543 | | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
542 | 576 | | |
543 | 577 | | |
544 | 578 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1923 | 1923 | | |
1924 | 1924 | | |
1925 | 1925 | | |
1926 | | - | |
1927 | 1926 | | |
| 1927 | + | |
1928 | 1928 | | |
1929 | 1929 | | |
1930 | 1930 | | |
1931 | 1931 | | |
1932 | 1932 | | |
1933 | 1933 | | |
1934 | | - | |
1935 | | - | |
| 1934 | + | |
1936 | 1935 | | |
1937 | 1936 | | |
1938 | 1937 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
105 | 112 | | |
106 | 113 | | |
107 | 114 | | |
| |||
0 commit comments