Hello Bernard,
When you read the point position array of a piece of geometry, XSI will
evaluate the graph of operators and if the syflex ops are dirty (they should
be if you ask for a different frame), the cache will be generated. We used
that on Happy Feet to compute syflex caches on the render farm, it's a very
time-saving thing to do!
In a perfect world, you should be able to call the Geometry(frameNumber),
but we had some problems on the farm with this method, using a SetValue of
the current frame makes it work everywhere.
Here's a snippet:
syOps = XSIFactory.CreateActiveXObject('XSI.Collection')
syOps.Items = '*.*.polymsh.syCloth'
syObjs = [op.Parent.Parent for op in syOps]
playCtl = Application.Dictionary.GetObject('PlayControl')
for frame in range( playCtl.In.Value, playCtl.Out.Value):
Application.SetValue('PlayControl.Current', frame)
for syObj in syObjs:
Application.LogMessage('Frame: %d: Updating %s'%(frame,syObj))
points =
syObj.ActivePrimitive.Geometry.Points.PositionArray
Cheers,
Aloys
On 11/22/06, Bernard Lebel <3dbernard(at)gmail.com> wrote:
> Marc-André: yes, I cleared the cache files :-)
>
> Stefano: Yes, I'm using the command, not the PPG method.
>
> Aloys: I'm not sure to understand. You mean that simply reading the
> positionarray of the syflexed mesh(es) will launch the simulation?
>
>
>
> Thanks
> Bernard
>
>
>
>
> On 11/21/06, Stefano Jannuzzo <stefanojannuzzo(at)tiscali.it> wrote:
> > Be sure to use Application.Refresh, since a plain Refresh will just
update
> > the ppg.
> > Not sure about syflex, but this surely works with our operators.
> >
> > function LQ_Manager_Play_OnClicked()
> > {
> > var i;
> > var inF = GetValue("PlayControl.In ");
> > var outF = GetValue("PlayControl.Out");
> > SetValue("PlayControl.Current", inF, null);
> > Application.Refresh();
> > for (i=inF; i<outF; i++)
> > {
> > NextFrame();
> > Application.Refresh();
> > }
> > }
> >
> >
> > ----- Original Message -----
> > From: "Bernard Lebel" < 3dbernard(at)gmail.com>
> > To: <XSI(at)Softimage.COM>
> > Sent: Monday, November 20, 2006 10:29 PM
> > Subject: Re: [script] Waiting for playback completion
> >
> >
> > > No luck either, even with Refresh after NextFrame it doesn't write the
> > > Syflex file.
> > >
> > >
> > > Bernard
> > >
> > >
> > >
> > > On 11/20/06, Luc-Eric Rousseau < lucer(at)softimage.com> wrote:
> > >>
> > >>
> > >> I've never had luck with this, but it looks like with a Refresh()
after
> > >> your
> > >> NextFrame() that you script does work.
> > >>
> > >> -----Original Message-----
> > >> From: owner-xsi(at)Softimage.COM [mailto:owner-xsi(at)Softimage.COM ]On
Behalf
> > >> Of
> > >> guillaume laforge
> > >> Posted At: Monday, November 20, 2006 3:46 PM
> > >> Posted To: xsi
> > >> Conversation: [script] Waiting for playback completion
> > >> Subject: Re: [script] Waiting for playback completion
> > >>
> > >> You can use use your own "custom PlayForwardsFromStart" command with
your
> > >> script in the "else" part of the function :
> > >>
> > >> function MyPlayForwardsFromStart()
> > >> {
> > >> var FirstFrame = GetValue("PlayControl.In");
> > >> var LastFrame = GetValue("PlayControl.Out ");
> > >>
> > >> var oTotalLength = LastFrame-FirstFrame;
> > >>
> > >> SetValue("PlayControl.Current ", FirstFrame);
> > >> for(var i=0; i<oTotalLength;i++)
> > >> {
> > >> if(i!= LastFrame-2)
> > >> {
> > >> NextFrame();
> > >> LogMessage("Waiting for the end of the Playback...")
> > >> }
> > >> else
> > >> {
> > >> LogMessage("Run your script now !");
> > >> }
> > >> }
> > >> }
> > >>
> > >> Should work...
> > >>
> > >> Cheers
> > >>
> > > ---
> > > Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in
body:
> > > unsubscribe xsi
> > >
> > >
> > > --
> > > No virus found in this incoming message.
> > > Checked by AVG Free Edition.
> > > Version: 7.5.430 / Virus Database: 268.14.11/543 - Release Date:
> > > 20/11/2006 21.20
> > >
> > >
> >
> > ---
> > Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in
body:
> > unsubscribe xsi
> >
>
> ---
> Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
> unsubscribe xsi
>
--
Aloys Baillet - XSI Technical Director
Character Dpt - Animal Logic
--