PDA

View Full Version : PFlow freezing Max!! Please help!


shirak23
01-12-2008, 08:12 PM
Hey there,
I'm rendering out a shot using Pflow. I've got a timeline of 54 frames. The Pflow goes to three events with find targets. Everything's fine except on 4 non-consecutive frames in the shot. When it reaches one of these frames, Max freezes and becomes unresponsive. It seems like it freezes on updating the instances of the events on these particular frames. I'm using VRay and, like I said every one of these 54 frames renders quickly and with no problem except for these 4: 17, 20, 28, 36.

I need to get this shot done this weekend, so if ANYONE can help, I sure could use it! Here's screen caps of what it looks like when it freezes, and the Pflow tree. Thanks!

OlegB
01-12-2008, 08:23 PM
A possible suggestion that may "unfreeze" your PFlow for rendering:

1. Delete all cache operators
4. Then render.

Most likely the Cache operator cannot hold the necessary cache data in memory due to the size of the meshes involved - therefore you better not to use one.

Thanks,
Oleg B.

shirak23
01-13-2008, 04:06 AM
Hey Oleg,
Thanks for the advice, but I put the cache operators after I started having the problem, hoping it would fix it. So, unfortunately, it's not that. By the way I work with Fred Ruff, not sure if you remember him. Any other suggestions? It's really weird because the frames in front of and behind the problem frames are fine. Could the issue be that the problem frames are when the particles go into the next event? Erg.

grury
01-13-2008, 10:57 AM
Does it freeze in the viewport when u scroll the timeline?
Have u tried to to use an alternative renderer? It could be a VRay issue, as your setup is pretty staright forward, shouldnt be giving such problems.

OlegB
01-13-2008, 11:40 AM
What's the face/vertex count for the mesh that is used in the Shape Instance operator? If it's high, you need to adjust Render operator (to "Multiple Meshes" option - see the docs).

Best regards to Fred R.

Thanks,
Oleg B.

shirak23
01-14-2008, 06:20 AM
Well, the mesh object is only a plane with 9 faces and 16 verts, so it's small. I tried setting the render operator to both "multiple meshes" and "mesh per particle", but with the same results. In the Vray dialog box it gets up to showing you how many particles are in each event and it just freezes up. I've let it go for an hour or so at the longest to see if it would work itself out, but it didn't.

Erg...

OlegB
01-14-2008, 01:44 PM
BTW, does it freeze with the scanline renderer?

Thanks,
Oleg B.

shirak23
01-15-2008, 06:02 AM
Well, the materials and the lighting setup are are for VRay with GI, but I'll try it, just to check.

thev
01-15-2008, 06:51 AM
For whatever reason, the freeze occurs inside the code of particle flow, which makes this somewhat hard to debug... looking for a way to avoid this on the V-Ray side though... reordering the evaluation order of particle flow events or something.

Best regards,
Vlado

OlegB
01-15-2008, 10:35 AM
Vlado,

All the operators in this particle flow (except Cache but it is not needed as we found out) are in the SDK, with the particle channels as well - so it's possible to make a Hybrid build for debugging. Is it one of the operators? Or Particle Flow engine?

Thanks,
Oleg B.

thev
01-15-2008, 10:47 AM
In a specific scene that I have here, it appears to happen because of a particular Force space warp operator - when turned off, everything is fine.

Otherwise, I am just now compiling the pflow operators to see if it gets stuck in one of them, or in the engine itself.

Best regards,
Vlado

thev
01-15-2008, 01:10 PM
Hello Oleg,

I can email you more details, but, as far as I could debug, the issue is that the Particle Flow engine falls into an infinite loop in its update() method in certain specific cases when it is called for a time other than the time of the currently rendered frame (e.g. for motion blur). From what I could see, it calls the IsSync() method of each particle container, and subdivides a time interval until it gets to a point where IsSync() returns true for all containers (or something like this, I'm not sure I'm reading the code correctly). However, there is also a condition that skips the time division in certain cases. When this happens for a particle container for which IsSync() returns false, you get an infinite loop.

Obviously, this only happens if V-Ray has motion blur ON, or a velocity channel is required from it.

Best regards,
Vlado

OlegB
01-15-2008, 02:20 PM
Yes, the update call sequence is a touchy subject. The update calls has to be done in a sequentual order across all particle groups, without steps back.

>when it is called for a time other than the time of the currently rendered frame (e.g. for motion blur).<

That's I don't understand. To evaluate motion blur for a particle group, you don't need to do the update at a different time - you just need to extract particle speed (via a specific interface) in the same manner as scanline renderer does. Otherwise you have a problem with matching a potentially different particle count from a different update time.

Thanks,
Oleg B.

thev
01-15-2008, 02:51 PM
Yes, the update call sequence is a touchy subject. The update calls has to be done in a sequentual order across all particle groups, without steps back.Hm, ok; I will see what I can do about this.


>when it is called for a time other than the time of the currently rendered frame (e.g. for motion blur).<

That's I don't understand. To evaluate motion blur for a particle group, you don't need to do the update at a different time - you just need to extract particle speed (via a specific interface) in the same manner as scanline renderer does. Otherwise you have a problem with matching a potentially different particle count from a different update time.This is for cases equivalent to the 3ds Max "Object motion blur" where you can have several snapshots of an object for a single frame; it is not required that they have the same topology.

Still, falling into an infinite cycle is not what one would expect :-)

Best regards,
Vlado

OlegB
01-15-2008, 02:59 PM
Still, falling into an infinite cycle is not what one would expect

Totally agree with this one :)

Thanks,
Oleg B.

shirak23
01-16-2008, 12:56 AM
It seems I've stepped into something, eh?! Oleg, I tried rendering the frame in the default scanline renderer and it worked just fine, but I didn't have motion blur turned on, so I'll have to go back and try it again. Problem is, of course, that I'm using Vray and GI for all my renders...

It goes without saying that everything you and Vlado are talking about is completely over my head...

For the time being, I'm just going to use hold frames in AE to cover up the missing frames.

Thanks for all your help and I'm going to keep watching this thread for a solution (if there is one)!

CGTalk Moderation
01-16-2008, 12:56 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.