Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Roy Nieterau
@BigRoy
It seems you can query it with addAttr :') with usedAsProxy? :)
Marcus Ottosson
@mottosso
So you could have hand_ctrl.ik and a proxy master.hand_ik to centralise all IK attributes under the master control, without preventing a user from selecting the hand and changing it there
Roy Nieterau
@BigRoy
Ah - so basically they both point to the same thing. That's neat. Didn't know that actually existed and worked. :') stupid me.
Toke Jepsen
@tokejepsen
Wow, thanks @BigRoy. That is mighty confusing to query something with addAttr
Works though
Marcus Ottosson
@mottosso
But it's really vicious at times; a proxy can exist without an original attribute, in which case it won't tell you about it. master.hand_ik would look functional, but refuse to change. No message, no nothing.
Roy Nieterau
@BigRoy
Yup, I believe that's also the only way to query for an attribute's default values ;)
Toke Jepsen
@tokejepsen

But it's really vicious at times; a proxy can exist without an original attribute, in which case it won't tell you about it. master.hand_ik would look functional, but refuse to change. No message, no nothing.

yeah, this happens when you break the connection. Happen when repairing the rig controls after failed validation.

Roy Nieterau
@BigRoy

yeah, this happens when you break the connection. Happen when repairing the rig controls after failed validation.

Ah, so it is a connection but it understands it's a special connection? Interesting.

Marcus Ottosson
@mottosso
Special indeed. But there are other types of these connections too, like those from pairBlend to a channel; it's connected, but still editable.
Roy Nieterau
@BigRoy
Does anyone else often have that the Pyblish Splash screen doesn't appear in front of Maya?
It kind of hangs around in the back and need to alt-tab to it to actually show it. On Windows of course.
David Lai
@davidlatwe
Not happening here as far as I know :O
Roy Nieterau
@BigRoy
I think this was discussed a short time ago, but my task for Today and tomorrow is to implement command-line publishing and trigger it through deadline. And I thought there was a brief discussion some time ago about how one could use the CLI or Pyblish API to only publish specific instances that were decided upon up front.
Toke Jepsen
@tokejepsen
Prepopulate the context with instances?
Roy Nieterau
@BigRoy
What I'm looking to do now is:
  1. Preset the artist with a little UI of the instances in the scene using pyblish.util.collect()
  2. Let them tick on/off which instances they want to submit for publish in the background.
  3. Submit the process to Deadline so a mayapy or python script triggers the publish inside that scene. (maybe even prior to submission trigger one pyblish.util.validate to have a high probability of the Deadline task succeeding)
  4. The deadline process should then know which instances it should enable/disable. <-- this line is my question mostly about
  5. Then publish those instances, something like pyblish.util.publish(context_with_specific_instances)?
Toke Jepsen
@tokejepsen
Serialize the publish data member of the instances, then a collector looks for a sidecar file with the deadline job and enables the instances from there.
Roy Nieterau
@BigRoy

Serialize the publish data member of the instances, then a collector looks for a sidecar file with the deadline job and enables the instances from there.

I was just thinking of submitting along a PUBLISH_INSTANCES environment variable that contains the names of the instances to publishes.

Then I'll add a "runtime collector" in the Deadline task that basically runs CollectorOrder + 0.499 and sets the publish/active state for each instance based on whether it's name is inside this list of names.

David Lai
@davidlatwe
What I had was sending those instances that need to be published by putting thier subset names into env var to Deadline
Roy Nieterau
@BigRoy
^ Exactly that. Hehe.
Will just give that a go. I think the logic is sound.
David Lai
@davidlatwe
:tada:
Roy Nieterau
@BigRoy
Nice. Smooth as butter :heart:
Roy Nieterau
@BigRoy
Here's a preview of the implementation I got to yesterday - unfortunately I had to spent the afternoon on some other things ;)
Roy Nieterau
@BigRoy
submit_publish_to_deadline_farm_preview.gif
David Lai
@davidlatwe
Looks pretty neat
So the Refresh btn is to execute the collect process ?
Roy Nieterau
@BigRoy
Yes! And on Submit it will also trigger validate before it pushes to deadline. Here are some internal notes I wrote out:
David Lai
@davidlatwe
and submit will start the Validation and E, I parts ?
Roy Nieterau
@BigRoy
Publish your maya scene on the renderfarm (Deadline), so cache your animations+cameras, playblast your scenes on the renderfarm in the background instead of waiting on it on your own computer!
  • Will list all instances that you have in the scene (like Pyblish on "collect")
  • Will preselect only those instances that are active by default (instance "active"/"publish" state)
  • The entries you select are the only ones that will be published, e.g. say you want to only publish the camera.
  • Before submitting the "Validation" process is triggered to ensure it passes validation, if it doesn't - then run Pyblish as usual to validate and debug any errors.
  • Your scene work file will be incremented so you don't accidentally continue working in the same scene that Deadline is trying to open, it will version up your scene.
Note: Submit will not trigger Extraction+Integration! It will submit a job to Deadline that will trigger a full publish, including collection/validation/extraction/integration.
However, it will only activate the instances that are submitted with the pyblish job.
Here's a snippet of what the farm is running as a script: https://gist.github.com/BigRoy/1235a2107c036ef9f37a3290bfe21b15
David Lai
@davidlatwe

This mechanism looks much simpler then I had :D

So if one wants to publish lookDev via render farm, it's doable right ?
Sounds like this doesn't limited to only camera, animation, playblast .

Roy Nieterau
@BigRoy
The logic on deadline side, the gist snippet, should work for any host (it only relies on Pyblish api) as long as it runs inside the host (or in a way the pyblish plug-ins themselves can run their logic without failing. ;)
Next up for me is testing playblasts, because those might behave very different in a batch process (I know for a fact they do) which just means I need to change my "create playblast" plug-in to ensure it also works in the standalone/batch mode of Maya. If so, then it should run just as fine on the farm.
Marcus Ottosson
@mottosso
Oo, playblasting in batch is a deep rabbit hole
If the machine has a graphics card, mayapy should work as you'd expect. But typically your blades wouldn't have that (?), in which case you have to resort to the lovely Software Renderer, of some form of OpenGL MESA driver.
And even if your blades does have a GPU (for e.g. Redshift) they would still need to run a window manager, like actual Windows or X on Linux
Which they typically wouldn't need to, if they're just rendering. And probably shouldn't, as it's a waste of RAM and GPU %
And of course, Software Render does work without a GPU, but the output would differ, and you can't get any of the VP 2 features like occlusion. Though you can get AA and anything else the renderer is capable off. It'll just look different, which probably isn't what you'd expect.
Curious to hear whether you have any luck with it though; would be a good addition to capture.py
Roy Nieterau
@BigRoy
To understand this correctly, mayapy can playblast whereas MayaBatch can not whatsoever - it will never work there, only in mayapy on a machine with GPU + Window manager.
Marcus Ottosson
@mottosso
I'm not sure how MayaBatch.exe works specifically, but the fundamental issue is playblasting is a GPU activity; without a GPU (and window manager), it cannot run.
Roy Nieterau
@BigRoy
Ah ok - in that case I have some dedicated machines that should be able to process it :) it's just a matter of figuring out whether it'll work through MayaBatch.
Marcus Ottosson
@mottosso
I'm not 100% sure about the window manager part; I had issues on machines with a GPU, but without an X server, like Gnome, whereas it did work on one with Gnome
Yes, that's probably the way to go. Dedicated machines running something with support for at least OpenGL 3
Roy Nieterau
@BigRoy
Ok, so I am able to output a beautiful rotating cube in a playblast through MayaBatch -prompt. In that sense the executable is capable of outputting sensible video content.
The result is magnificent of course - hehe.
Roy Nieterau
@BigRoy
It seems however, that after a playblast as Maya shuts down that the mayabatch process crashes.
Or at least doesn't exit in a way that Deadline 'lets it shut down'