by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Sep 20 18:51
    rationalthug starred pyblish/pyblish
  • Sep 18 06:26

    loonghao on 0.1.0

    (compare)

  • Sep 18 06:17
    mottosso commented #1
  • Sep 18 06:11
    loonghao commented #1
  • Sep 18 06:11

    loonghao on master

    Implement first version Update log Implement first version and 8 more (compare)

  • Sep 18 06:11
    loonghao closed #1
  • Sep 17 07:07
    tokejepsen commented #1
  • Sep 14 21:03
    mottosso commented #244
  • Sep 13 14:21
    loonghao added as member
  • Sep 13 05:31
    loonghao commented #1
  • Sep 12 09:09
    mottosso commented #1
  • Sep 12 08:58
    tokejepsen commented #1
  • Sep 12 08:12
    loonghao commented #1
  • Sep 12 08:01
    davidlatwe starred pyblish/pyblish-photoshop
  • Sep 12 08:00
    davidlatwe commented #1
  • Sep 12 07:59
    loonghao commented #1
  • Sep 12 07:28
    mottosso commented #1
  • Sep 12 06:59
    loonghao commented #1
  • Sep 12 05:16
    mottosso commented #1
  • Sep 12 04:58
    loonghao opened #1
Enno S
@enno.s_gitlab

Sorry I meant:
Is there a quick way of running the same actions on several instances ?

Imagine:

  • 3 out of 10 plugins failed.
  • The artist is informed by seeing 3x red on the first validation run.
    Let's assume it's due to wrong naming of nodes.
  • he toggles (somehow ) those 3 failed plugins and with one click is able to run all of those plugin's fix function.
  • Under the hood those fix functions would have totally different implementations for those different plugins respectively.
    ValidateRig.fix(): ... name.replace('rigging', 'rig')...
    ValidateModel.fix(): ... name.replace('model', 'mdl')...

does this make sense ?

Marcus Ottosson
@mottosso
Yes, if you put the action on one or all of those plug-ins, then you can access all instances via the context argument to the Action.process
Alternatively you could make a dedicated plug-in to hold that special action, a a plug-in that only serves as a visual cue to the users of success or failure. It could fail based on other plug-ins success state, for example
If you want a sort of inheritance to your actions, you'll probably have to rethink your strategy; like storing relevant options to a single action in each instance, and trigger the right function based on that.
if instance.data["I'm a model"]:
  self.repair_a_model(instance)
Enno S
@enno.s_gitlab
great thanks Marcus.
that's helpful quick insight. Perhaps I give it a shot :)
Marcus Ottosson
@mottosso
Anytime :)
Aleks Berland
@karmakat
Heya :)
I have a pyblish collector plugin which creates new instances., then deletes the original instance. How do I get those instances to show up in the artist view? They are in the detail view, but not the artist view.
Marcus Ottosson
@mottosso
Hi there, that sounds like a bug! Could you submit an example of how to reproduce this under pyblish-lite?
Aleks Berland
@karmakat
Hey Marcus! I am using pype, and its flavour of pyblish-lite.
I am not sure if it will be the same if you try to reproduce, but all I am doing is collecting a file and during its collection creating new instances, copying over the original instances data to the new instance., and then removing the original instance. I am wondering if there is some metadata that gets copied over that causes this.
I can look into making a reproducible example, but it might be a little tough without running pype's standalone publisher on your side
Aleks Berland
@karmakat

add original instance data except name key

        for key, value in instance.data.items():
            if key not in ["name"]:
                # Make sure value is copy since value may be object which
                # can be shared across all new created objects
                new_instance.data[key] = copy.deepcopy(value)
this is pretty broad, perhaps there is something transferred which is causing the new instance to also be removed from the the context
at the end of the loop, i just run context.remove(instance)
but new_instance is removed from artist view as well
Aleks Berland
@karmakat
Pype team says they think its an issue in the Artistview proxy model
i am running context.remove(instance) and it does get removed completely, but the new instance is also removed from the artist view but remains in the other view
Aleks Berland
@karmakat
ok i now realize the pype pyblish lite is very different codebase... zeroing in on the bug but I thank you for your help :)
Marcus Ottosson
@mottosso
Watch me mispronounce your names in front of everyone, Roy, Toke, Milan and David xD
David Lai
@davidlatwe
yeah yiii~ 🥳🥳🥳
My pride indeed XD (the t-shirt
Also, this might be the first time seeing Marcus’s face in full color 🤔
Marcus Ottosson
@mottosso
Haha, what does the t-shirt say? I actually don't know xD
David Lai
@davidlatwe
It is “My Pride” ! Excellent choice 👍🏼
Marcus Ottosson
@mottosso
Nice, then it was all planned xD
Jasper van Nieuwenhuizen
@jasperges
Congrats Marcus! Well deserved! :tada: :beers:
Erik Johansson
@Eiken
mottosso: congrats!
Marcus Ottosson
@mottosso
Woho!
Ruchit Bhatt
@ruchitinfushion
Congrats to contributors👍🎉
Enno S
@enno.s_gitlab
congrats !
Marcus Ottosson
@mottosso
Looks like we're getting some Photoshop support soon! pyblish/pyblish-photoshop#1
Jakub Trllo
@iLLiCiTiT
It's using photoshop-python-api. I think is also used in toke's implementation. Which is only for Windows as access to photoshop app in the module is via windows registers...
Marcus Ottosson
@mottosso
Good start at least! Where is Toke's implementation?
Jakub Trllo
@iLLiCiTiT
Joe Weidenbach
@scdrumz
huzzah!
Alex Fuller
@boberfly
I was playing around a bit with running a Qt app in Blender today (Gaffer)
trying out bpy.app.timers.register method as it is easy to implement in Gaffer's existing EventLoop, however I think it is interfering with Blender's opengl context somehow (debugger says it is crashing in some opengl code of Blender) :(
Marcus Ottosson
@mottosso
Can it be reproduced without gaffer? :O
Pyblish QML would also be using GL, albeit from another Python process rather than from within Blender
Alex Fuller
@boberfly
hmm probably difficult to try that to prove something meaningful, as it uses gaffer's EventLoop code & GafferUI hides the qt.py/GLWidget stuff, I'm wondering if blender does GL not on the main thread or something...
Jasper van Nieuwenhuizen
@jasperges

trying out bpy.app.timers.register method as it is easy to implement in Gaffer's existing EventLoop, however I think it is interfering with Blender's opengl context somehow (debugger says it is crashing in some opengl code of Blender) :(

Are you using Blender operators in the Qt app? That could also cause crashes if the context is incorrect. I haven't checked it recently, but that's why I am still using a modal operator to run the Avalon Qt apps inside of Blender.

Alex Fuller
@boberfly
@jasperges hey, nah this would just be as if launching gaffer from the command line but pumping the Qt events via the bpy.app.timers.register
I found this function DRW_opengl_context_enable(); and followed what other DCC apps do (Maya/Houdini) to get the OpenGL context, so I tried wrapping it in python and call it in GLWidget, but that kinda deadlocks things, I am pretty sure it is Gaffer nuking the existing GL context on that thread rather than just sharing the one with Blender
the other thing to try might be to run Qt on a different thread so it gets its own GL context
Alex Fuller
@boberfly
heh when Gaffer fails to make a GL context, the Qt window that it manages to create is stable with blender! so I must be onto something here :)
Jasper van Nieuwenhuizen
@jasperges
@boberfly cool! I hope hope you will get there. It would be really nice if we can run Qt apps inside of Blender in a non-blocking way, cross platform, without issues.
Alex Fuller
@boberfly
@jasperges your 4 variants script is what I've been trying here, that's been a huge help cheers!
the timers solution was the easy way, just needed to make a custom Blender one here: https://github.com/GafferHQ/gaffer/blob/master/python/GafferUI/EventLoop.py#L55
Jasper van Nieuwenhuizen
@jasperges
@boberfly nice! I wish I would have some time to fiddle around with Gaffer, but unfortunately I don't.