Are SubAnims equal? No way!


#1

what is SubAnim?
this is from the Help:
As an alternative to using named property accesses, you can access in an object any animatable property that is visible as a track in Track View by indexing the 3ds Max object value as though it were an array.

This simplifies such tasks as iterating over all the animatable properties in an object and accessing sub-controllers that don’t have unique names, such as within list controllers.

So, there are two things those make a SubAnim - the owner of the property (client) and index of the property (subnum). This is like a ‘coordinate’, and it’s absolutely unique, and can’t be ‘not exclusive’.

now, please, follow the steps and my logic:

--1:
m = Standard()
c = Checker()

--2:
m.diffusemap = c
m.specularmap = c

--3:
cc = getclassinstances checker astrackviewpick:on target:m
#(cc[1].anim, cc[1].client, cc[1].subnum)
#(cc[2].anim, cc[2].client, cc[2].subnum)

--4:
m[1][4]
m[1][6]

--5:
m[1][4].parent == m[1][6].parent
m[1][4].index == m[1][6].index -- (!)

--6:
m[1][4] == m[1][6] -- (!!!)

this is absolutely wrong in my opinion!

what do you think?


#2

SubAnim is a cell… First “where” and then “what”. We can change the contents of a cell and that doesn’t change the cell itself, nor does it change the location, but if we change the cell’s location, it completely changes the essence of the object.


#3

isn’t it really doing

m[1][4].value == m[1][6].value 

?, which in the background is the reference target checker.


#4

According to SDK it’s:

m[1][4].object == m[1][6].object