Search Unity

Puppet2D - An advanced skeletal animation tool

Discussion in 'Assets and Asset Store' started by jamieniman, Dec 31, 2013.

  1. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    By any chance - is it possible your skinned mesh has had its quality settings set to 4 bones? (Puppet2D expects it to use 2 bone skinning)

    upload_2019-7-31_12-18-10.png
     
  2. Ox02

    Ox02

    Joined:
    Jun 25, 2015
    Posts:
    6
    N
    No. All time set to 2 bones. I never changing this setting
     
  3. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    I'm baffled with this - I can't understand how the weights are being read/written consistently correct, whereas the skinning is behaving differently.

    Are you able to make a package with the broken mesh and send it to me? puppet2d@gmail.com

    Could you try making a new clean project with just Puppet2D and that image, and see if the weight painting issues happen?

    By the way - what version of Unity, and which version of Puppet2D are u using?
     
  4. Ox02

    Ox02

    Joined:
    Jun 25, 2015
    Posts:
    6
    Hello! I sended my scene
     
  5. DJ_JW

    DJ_JW

    Joined:
    Apr 26, 2015
    Posts:
    24
    I am testing the AutoRig feature and have found that the sort layer of the left arm is wrong even with the Puppetbot, When you rig it the left hand and forearm sit in front of the hip and body.
    I see that there is a "Sort Bones" feature but this doesn't seem to do anything with Autorig (in fact I cannot see how to use this at all with a rigged character). Is there a way to sort the bones with autorig?
    Using 2019.2.2 with Puppet2D 3.7
     
  6. Wanwidi5

    Wanwidi5

    Joined:
    Aug 18, 2015
    Posts:
    8
    Hi jamie
    Can puppet2d make stretchy bones? I mean not spline bones, but a regular bones that can stretch

    And in skinned mesh, is there no UV animation? You know, to be able to move the UV from one picture to another
    Thanks
     
    Last edited: Sep 6, 2019
  7. Pserpha

    Pserpha

    Joined:
    Mar 20, 2015
    Posts:
    4
    Hello Jamie,

    is there a way to swap meshes?

    I want to make a Character Creator with lots of different Clothing so the player can change shirts, pants, hat, etc. They cannot share the same UVs and it will be too many to store them all in the character prefab and enable/disable them. Is there an other way?

    Any help would be appreciated :)
     
  8. ramboaslak

    ramboaslak

    Joined:
    Jan 7, 2017
    Posts:
    6
    Hello! I'm working with Unity and Adventure Creator. I used Puppet 2D's Autorig for character animation. When I try to flip the walk animation left using this script, the sprite itself flips over to the left, but the bones remain facing right. How can I fix this?
     
  9. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    There is a flip checkbox on the global control - use that instead. (it makes sure all the IK controls behave well after the flip.)
     
  10. Crazy-Soviet-Engineer

    Crazy-Soviet-Engineer

    Joined:
    Nov 20, 2015
    Posts:
    1
    HI.
    Pls tell me about Puppet2D_SortingLayer:
    When I use it in script - why I can't find fields like [Sorting Layer][Sorting Layer Order][Offset UVs], which one represented in inspector?
     
  11. jdiperla

    jdiperla

    Joined:
    Nov 2, 2013
    Posts:
    37
    Hey, I am trying to view your website for the tutorials and the main content for everything is just a white page.
     
  12. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    Thanks for pointing this out - refresh the page it should be fixed now
     
  13. jdiperla

    jdiperla

    Joined:
    Nov 2, 2013
    Posts:
    37
    It is. Great. Thank you!
     
  14. unitimokccount

    unitimokccount

    Joined:
    Apr 29, 2019
    Posts:
    21
    Would this asset like me rig a 2D character without having to cut it into different sprites for legs/torso/head or am I understanding it wrong?
     
  15. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    Yes, you can rig it from a single character image. It can depend on the look of the character if it is better to split it up or not. (Splitting off the arms and legs can be better for when one arm/leg goes behind the torso)
     
  16. Anoa

    Anoa

    Joined:
    Apr 1, 2016
    Posts:
    9
    Hello, I try to use the paint weight, but the shortcut alt is used by unity as a hand tool. How can I delete/substract the weigh now?
     
  17. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    You can use "Ctrl" instead.
    In general, as best practice, I don't recommend removing weights, but only adding to the bones you want them to be on. The weights always have to go somewhere, so when you remove weights it will go to the last bone that you painted. Its easier to paint where you want it to go to make sure you get the results how you want it.
     
  18. ZolnierGames

    ZolnierGames

    Joined:
    Feb 19, 2018
    Posts:
    88
    I can't get Autorig to work with the most basic of human characters. Using Unity 2019.4.20f1 LTS, I add each image to the scene, arrange in a t-pose, click the Make Guides, move the guides and then click Auto Rig and it oddly moves a few of the images and does not attach the images to the created bones. FYI, I have separate images for things like upper arm, forearm, hands, thighs, shins, shoes, etc. I have attached images that help show my issue. What am I doing wrong?? HELP!!
     

    Attached Files:

  19. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    I've only just come aware of this bug (which ill be fixing in the next release). It's an issue with how the autorig is trying to parent sprites as opposed to skin meshes, it doesn't know the centre of the sprite anymore.
    Not to worry though as there is an easy workaround -
    1. just use the autorig to make the rig (can be done on a single dummy sprite to speed things up)
    2. then select all the sprites, convert them to a mesh,
    3. select them and all the bones and click Bind Smooth Skin.
    (NB if you do the autorig on the actual sprites, make sure to unparent them first, before converting to mesh and skinning)
     
  20. ZolnierGames

    ZolnierGames

    Joined:
    Feb 19, 2018
    Posts:
    88
    I tried the 3 things you said, but it's not working. Remember, I am new to your tool so I need more guidance on what to do here. 1. Just autorig on anything? I don't understand what you mean by that. 2. I assume you mean select all of the sprites in the hierarchy and then in your Puppet2D editor window under Skinning, select "Convert Sprite to Mesh" - after which I don't see much of a difference. Apparently it creates a "New Game Object" in the hierarchy but doesn't change my sprites in the hierarchy. Is this expected? 3. Select all of what? My sprites? The "new Game Object" item? What are the bones? Everything under what is labeled "Global_CTRL" in the hierarchy?

    This is a little messy so I need more clarity and guidance, because attempting to follow those steps above does not remedy my issue. Thanks.
     
  21. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    Select any sprite before clicking make guides (you will be skinning the sprites as meshes to the bones in a later step)
    Ok Something sounds like it broke. Did you get a console error? Did you make sure that your sprites were unparented completely from the bones?

    When it doesnt error there will be meshes for each of your character parts instead of sprites.
     
  22. ZolnierGames

    ZolnierGames

    Joined:
    Feb 19, 2018
    Posts:
    88
    Yes, so when I click "Convert Sprite to Mesh" it throws the following error in the console:

    Puppet2D.Puppet2D_Skinning.ConvertSpriteToMesh (System.Int32 triIndex) (at Assets/Puppet2D/Scripts/Editor/Puppet2D_Skinning.cs:74)
    Puppet2D.Puppet2D_Editor.OnGUI () (at Assets/Puppet2D/Scripts/Editor/Puppet2D_Editor.cs:409)
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at <8d21067e8d9c494db25a2b2485216e63>:0)
    UnityEditor.HostView.Invoke (System.String methodName) (at <8d21067e8d9c494db25a2b2485216e63>:0)
    UnityEditor.HostView.InvokeOnGUI (UnityEngine.Rect onGUIPosition, UnityEngine.Rect viewRect) (at <8d21067e8d9c494db25a2b2485216e63>:0)
    UnityEditor.DockArea.DrawView (UnityEngine.Rect viewRect, UnityEngine.Rect dockAreaRect) (at <8d21067e8d9c494db25a2b2485216e63>:0)
    UnityEditor.DockArea.OldOnGUI () (at <8d21067e8d9c494db25a2b2485216e63>:0)
    UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, UnityEngine.Matrix4x4 worldTransform, UnityEngine.Rect clippingRect, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Action onGUIHandler, System.Boolean canAffectFocus) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.IMGUIContainer.HandleIMGUIEvent (UnityEngine.Event e, System.Boolean canAffectFocus) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.IMGUIContainer.SendEventToIMGUI (UnityEngine.UIElements.EventBase evt, System.Boolean canAffectFocus) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.IMGUIContainer.HandleEvent (UnityEngine.UIElements.EventBase evt) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.MouseCaptureDispatchingStrategy.DispatchEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.ApplyDispatchingStrategies (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, System.Boolean imguiEventIsInitiallyUsed) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.OpenGate () (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcherGate.Dispose () (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.IPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.UIElementsUtility.DoDispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.UIElements.UIElementsUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <06214b245dbb4d10a9cefd10639bb04e>:0)
    UnityEngine.GUIUtility.ProcessEvent (System.Int32 instanceID, System.IntPtr nativeEventPtr) (at <fe7ee1881b524b0d9443f74417fb598b>:0)
     
  23. HuginnRaven

    HuginnRaven

    Joined:
    Dec 20, 2015
    Posts:
    33
    Thanks for this tool, but there seems to be an issue where I can't convert sprites to mesh. All I get is a NullReferenceException.
    I'm using Unity 2021.1.1.7f1 Personal. Do I have to downgrade or is there a different fix?
    upload_2021-10-3_13-40-8.png
    upload_2021-10-3_13-41-54.png
     
  24. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    987
    I just tried 2021.1.15f1 and it worked fine. Could you try unparenting the sprite first? Also could you try it on a sprite that comes with Puppet2D (like the croc or something). That would help me to see if its related to your specific sprite.
    If that works, can you try adding a polygonCollider2D to your sprite and editing slightly the points.
     
  25. HuginnRaven

    HuginnRaven

    Joined:
    Dec 20, 2015
    Posts:
    33
    It worked like a charm with the included textures. I'm working in pixel art, so now I'm guessing it's due to the size. Got any idea on how to fix that?
    I added the file I'm working with if you want it.

    (Thanks for the quick response)

    Edit: I guess I could upscale the model when exporting it and then downscale the model if I want to use mesh instead of sprite...
     

    Attached Files:

    Last edited: Oct 4, 2021