Forum: Poser - OFFICIAL


Subject: SetMorphTargetDelta

colorcurvature opened this issue on May 03, 2010 · 7 posts


colorcurvature posted Mon, 03 May 2010 at 9:26 AM

The biggest of all mysteries:

SetMorphTargetDelta function in Posers API.

How to call it properly to have a morph target that contains absolutely nothing?

for i in range(len(actor_verts)):
    param.SetMorphTargetDelta(i, 0.0, 0.0, 0.0) 
This does not work. After it ran, the morph target contains what it was initialized with, e.g. the influence of JCMs.

for i in range(len(actor_verts)):
    param.SetMorphTargetDelta(i, 0.000001, 0.0000001, 0.0000001)    seems to overwrite the initial values

for i in range(len(actor_verts)):
    param.SetMorphTargetDelta(i, 1.0, 1.0, 1.0) 
    param.SetMorphTargetDelta(i, 0.0, 0.0, 0.0) 
for i in range(len(actor_verts)):
    param.SetMorphTargetDelta( )

seems to work

for i in range(len(actor_verts)):
    param.SetMorphTargetDelta(i, 1.0, 1.0, 1.0) 
    param.SetMorphTargetDelta(i, 0.0, 0.0, 0.0) 
    param.SetMorphTargetDelta( )

works only for 90% of the vertices

this some looks like either a parameter format error or bad access to memory...

Is there anyone who might know what this function is really doing or how to make it handle 0.0 value properly? I do not know how to debug Posers black heart ;-)

SmithMicro support didnt know either :(


PhilC posted Mon, 03 May 2010 at 9:53 AM

I needed this when I wrote a script that would remove all vertices associated with a designated material from a morph. However I couldn't get it to zero either. What I ended up doing was gleaning the required delta information from the original morph then using it to build a new morph.


colorcurvature posted Mon, 03 May 2010 at 10:06 AM

Most irritating is, if you setMorphTargetDelta() and then just read the value back with MorphTargetDelta(i), it tells you it would contain 0.0.  If i ask it again after the script ran, it would tell me the truth and reveal it is not empty.


PhilC posted Mon, 03 May 2010 at 10:18 AM

If you would like to email me I'll send you the script.

pcooke@philc.net


Winterclaw posted Mon, 03 May 2010 at 11:26 AM

Question... does it have to be 0.0?  Maybe the program is expecting just a 0.

WARK!

Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.

 

(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)


colorcurvature posted Mon, 03 May 2010 at 11:51 AM

0.0 is what i want :-).
In a desperate attempt I am now first writing 1.0 then 0.0 to everything, then afterwards set the values I computed, and in a final step I walk over everything and check if the values are what I think they are... and if they are not => exception
so rather abort than do something wrong.
but still  i am not really satisfied.

wish poser was open source :)


Winterclaw posted Mon, 03 May 2010 at 5:18 PM

I was just thinking that 0.0 might be too precise for whatever program was going to accept them and that it was expecting some non-zero number since you put in the point.  Since 0 = 0.0 I'd try just plain 0 at least once to see what happens.

WARK!

Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.

 

(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)