yeah, scary that.

will send in a bug report.

cheers,
frank

On Mar 14, 2011, at 12:38 PM, Ivan Busquets wrote:

> It's very weird indeed. I believe what's happening is that valueAt() is 
> already returning all the values in the matrix as a list, even if you don't 
> give it an index number.
> 
> See the difference between doing:
> 
> node['world_matrix'].value()
> and
> node['world_matrix'].valueAt(7) # This one returns a list with all the matrix 
> values, but reversed :S
> 
> You could do something like:
> 
> for i in range(0,16):
> m[i] =node['world_matrix'].valueAt(7)[i]
> 
> And then transpose the matrix (because of the list coming out in reverse 
> order):
> m.transpose()
> 
> Or just reverse the list as a previous step:
> 
> matrix_list = node['world_matrix'].valueAt(7)
> matrix_list.reverse()
> 
> for i in range(0,16):
> 
>     m[i] = matrix_list[i]
> 
> 
> Still, the fact that value() and valueAt() provide different outputs is very 
> confusing, and should definitely be reported, I think.
> 
> 
> 
> 
> 
> On Sun, Mar 13, 2011 at 3:13 PM, Frank Rueter <[email protected]> wrote:
> has anyone tried the valueAt() method to get a matrix at a given frame?
> 
> It seems to return a different array than using value() and making sure the 
> current frame in the root is the one you're after.
> 
> in my scenario (camera with "frame" expression in translate.x):
> 
> for i in range(0,16):
>     m[i] = node['world_matrix'].value(  i%4, i/4)
> print '\n%s'%m
> 
> returns this on frame 7:
> {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7, 0, 0, 1}
> 
> 
> while this:
> 
> for i in range(0,16):
>     m[i] = node['world_matrix'].valueAt( 7,  i%4, i/4)
> print '\n%s'%m
> 
> 
> returns:
> {1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7, 1, 0, 0, 7}
> 
> 
> 
> I guess I will have to manually step through frames for this?!
> 
> Cheers,
> frank
> 
> 
> 
> On Mar 9, 2011, at 2:53 PM, Frank Rueter wrote:
> 
>> thanks for the confirmation. I'm looping through the fields manually for now 
>> which seems to work
>> 
>> On Mar 9, 2011, at 2:16 PM, Ivan Busquets wrote:
>> 
>>> Yeah, I've found this to be flaky too, or at least not consistent with 
>>> other knobs.
>>> 
>>> As pixelcowboy was saying, the value() method of that matrix knob expects 2 
>>> indices (1 for the row, one for the column).
>>> But you're right, Frank, I think this should return a list with all values 
>>> when no index is given, just like what you get from valueAt().
>>> 
>>> Also, toScript() doesn't seem to work correctly on them either (returns all 
>>> 0s)
>>> 
>>> As for setting the values, I've always resorted to iterating through them. 
>>> :(
>>> 
>>> Bug report?
>>> 
>>> 
>>> 
>>> On Tue, Mar 8, 2011 at 4:59 PM, [email protected] 
>>> <[email protected]> wrote:
>>> cam['world_matrix'].array()
>>> Works fine on the color matrix node, but doesn't seem to be doing the
>>> right thing on the camera matrix knobs...
>>> 
>>> 
>>> On Tue, Mar 8, 2011 at 4:54 PM, [email protected]
>>> <[email protected]> wrote:
>>> > I think you need to give it an index:
>>> > print cam['world_matrix'].value(0,0)
>>> >
>>> > On Tue, Mar 8, 2011 at 4:45 PM, Frank Rueter <[email protected]> 
>>> > wrote:
>>> >> matrix knobs seem o behave in mysterious ways:
>>> >>
>>> >> this will give me a single float value:
>>> >> cam = nuke.toNode('Camera4')
>>> >> print cam['world_matrix'].value()
>>> >>
>>> >>
>>> >> while this will give me all 16 values:
>>> >> print cam['world_matrix'].valueAt(300)
>>> >>
>>> >> Also, this only assigns the first four values, not the whole thing:
>>> >>
>>> >> cam = nuke.toNode('Camera4')
>>> >> newCam = nuke.toNode('Camera1')
>>> >> newCam['useMatrix'].setValue( True )
>>> >> newCam['matrix'].setValue( cam['world_matrix'].valueAt(300) )
>>> >>
>>> >>
>>> >> Do I really have to manually iterate over the values to assign them or 
>>> >> has someone found a nicer way of doing this?
>>> >>
>>> >> Cheers,
>>> >> frank_______________________________________________
>>> >> Nuke-python mailing list
>>> >> [email protected]
>>> >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> >>
>>> >
>>> _______________________________________________
>>> Nuke-python mailing list
>>> [email protected]
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>>> 
>>> _______________________________________________
>>> Nuke-python mailing list
>>> [email protected]
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>> 
>> _______________________________________________
>> Nuke-python mailing list
>> [email protected]
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
> 
> 
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
> 
> 
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

_______________________________________________
Nuke-python mailing list
[email protected]
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to