PDA

View Full Version : Events are being ignored (??)


MacCool
01-07-2009, 12:43 AM
Hello!

This is driving me crazy.

I've created a scene with Saturn and its rings. The camera will fly through the ring and then the little pieces of debris will be visible for a brief amount of time. I've created a tube around the planet which is the rings and another two (only a section of the tube) which are the emitter for some particles.
What I'm trying to do is that from a distance only the larger pieces are visible (Emitter1) and up close there is the the second emitter for the really small pieces.

The problem I'm having here is that my Flow is completely ignoring any Event except one. I am not using a Cache and I've also checked the PFlow Source System parameters (upper limit). And then this, I copied the working event, left everything as it is, linked it to the Global event, turned of the original local event and rendered.
But the render doesn't show the particles! If it's an exact copy and they both are linked to the same PFlow Source and only one of them is turned on, why on earth is one rendering and the other one doesn't...?

Please help, what am I doing wrong here?
Thanks in advance!

Piflik
01-07-2009, 01:31 AM
Can you post a screenshot of your Flow?

MacCool
01-07-2009, 09:56 PM
Here goes:
http://img26.picoodle.com/img/img26/3/1/7/t_pflow1eventm_566f41d.png (http://www.picoodle.com/view.php?img=/3/1/7/f_pflow1eventm_566f41d.png&srv=img26)

I'll try to use an older version of my scene and recreate the fplow, respectively the changes I have made. If that doesn't work I will try to merge the scene into a completely new file (where creating a new pflow and rendering works).

Bobo
01-07-2009, 10:11 PM
If events are misbehaving like that, the FIRST thing to check is that the active layer is not hidden! PFlow creates a Helper node for each event and operator. They are not visible in most regular select by name tools, but if a portion of the PFlow elements have been created while a hidden layer is set to active, they will end up there and might not work. You would have to use the PFlow Box #1 / Creative Extension for 2009 Utility Operator to synchronize them back to the layer the PF Source is on.

Of course, it could be something else, but from your description it sounded like the familiar layer issue...

MacCool
01-07-2009, 11:10 PM
Thanks for the reply! But no, the Layer is not hidden. The PFlow is in the default layer, which is visible. It shouldn't matter that the emitter object (for the Position Object Op) is hidden, right? Because the first event (Event 02 in the flow above) renders fine.

Ok, suppose I did somehow manage to screw up visibility with the layers. If I then move the PFlow to a visible Layer and then duplicate the working event, the duplicate should work alright and also render, right?

And now that I think of it: All those Events show up fine in the viewport when activated. It's just that they don't render...

Hold on... Wicked stuff... I just now checked the Properties of the Event (Event 12) from the Particle View. The "Rendering Control" was set to "By Layer" but I just now noticed that the *greyed out* Checkbox was *not checked*. I switched it to "By Object" where the Checkbox becomes available and *checked*.
Deactivated Event 02 and activated Event 12, rendered, and ... woot! That did it!! Crazy! It works!
You are a genius! Thanks!

But... this is ridiculous! Why in the name of Sanity is it not using the layer properties of the copied event? I just tried it again, copying the Event 02. The "Renderable" checkbox is greyed out but OFF...! :surprised

Any other way than using Box#1 to get them back working synchronously? Some manual magic?

JohnnyRandom
01-07-2009, 11:15 PM
Any other way than using Box#1 to get them back working synchronously? Some manual magic?

Jeff Lim wrote this maxscript snippet you can use this to select all of the nodes and move them

if you don't have box1, here's a little code i use frequently..

Code:
(
pf_sources = for i in $* where (i.classid)[1] == 1345457306 collect i
pf_events = for i in $* where (i.classid)[2] == 515064576 collect i
pf_actions = for i in $* where (i.classid)[2] == 515064320 collect i

deselect $*
selectmore pf_sources
selectmore pf_events
selectmore pf_actions
)



If you run the script, it will gather and select general pflow related stuff (sources, operator actions and events).
Once you have them selected, you can then assign them to a layer.

MacCool
01-07-2009, 11:31 PM
Thanks there!
But, uh, sorry, I have zero idea about maxscript... What do I need to do with it? Putting it into the MaxScript Listener gives an error. And I have no idea how to run this in the MaxScript Editor. Do I have to amend any parameters there? Or can I just copy, paste, run and all events are good to go again?

Edit:
As pasting the whole script into the listener didn't work for me I just pasted every single line, each followed by ENTER.
That did it, yay! Thanks heaps!

MacCool
01-07-2009, 11:36 PM
Stupid me!

I had the non-renderable Layer marked as active all the time (checkmark next to it in the Layer editor). copying anything of course places it into the wrong layer.
But ok, there is nowhere to see in which layer the event is placed, right? except the event's properties, of course.

I found this:
http://area.autodesk.com/index.php/forums/viewthread/957/#11084
but it doesn't work (or I'm doing something wrong)

JohnnyRandom
01-08-2009, 01:53 AM
What do I need to do with it?

You can either paste it into a new script via maxscript menu>new script then evaluate the script in the editor with ctrl+E

Or

Paste it to the listener window,select ALL of the code, and hit the NUM pad Enter key or Shift+normal Enter to run. There is a difference, normal Enter key executes the last line and inserts a new line.

After the code has been, run right-click in the layer manager and click Create New Layer(add selection).:)

And yes, as far as I know, the only way to tell which layer they reside on is through the object properties.

MacCool
01-08-2009, 03:37 PM
Ok, great, thanks for the info! Good to know!

*Mental note: Learn MaxScript.*

And yes, as far as I know, the only way to tell which layer they reside on is through the object properties.
Meh, not very user friendly. Not logical either, being able to put the events into a different layer than the pflow but having no feedback in the layer manager.

Anyway, thanks everyone for the help!

Bobo
01-08-2009, 04:30 PM
Ok, great, thanks for the info! Good to know!

*Mental note: Learn MaxScript.*


Meh, not very user friendly. Not logical either, being able to put the events into a different layer than the pflow but having no feedback in the layer manager.

Anyway, thanks everyone for the help!

PFlow was in development around Max 4 - Max 5.
Max 5 added the layer manager just before PFlow shipped to customers as Extension.
In short, when it was designed, there were no Layers in Max.
Once the problem became obvious, Oleg wrote the Utility Operator to clean it up, but he wasn't working for Autodesk anymore. Last year, Autodesk brought him back and also licensed Box #1, making the Utility part of Max 2009 and future versions.

It is better to have a workaround than no workaround at all...

MacCool
01-10-2009, 11:06 AM
Ah, ok, I understand.
Still, there was a long time between Max 5 and Max 2009, no?

making the Utility part of Max 2009 and future versions.
Cool!
Using 2009 here, but I cannot find anything in the Utilities tab... also tried the Reference but probably using the wrong search terms. Where can I find that utulity?

3DMadness
01-10-2009, 01:38 PM
This utility came in the max 2009 creativity extension, available for who is in subscription.

MacCool
01-10-2009, 02:05 PM
oh, pity. well, at least I was able to fix it with that script.

CGTalk Moderation
01-10-2009, 02:05 PM
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.