Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

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:
    782
    Definitely sounds like an interesting thing to add for future updates. I'll add it to my feature list.
     
    wetcircuit likes this.
  2. Tor_Sprouted

    Tor_Sprouted

    Joined:
    Oct 7, 2014
    Posts:
    13
    But if the visible game sprites themselves aren't scaled 1:1 wouldn't it break batching for them - regardless of whether the bones are visible or not. My understanding is that if the sprite isn't:
    • Generally, objects should be using the same transform scale.
      • The exception is non-uniform scaled objects; if several objects all have different non-uniform scale then they can still be batched.
    //unity doc

    .. it's an additional draw call. (thanks for the speedy response) :)

    ...the sprites aren't all the same scale, even though they come from the same sprite atlas.
     
    Last edited: Jan 23, 2015
  3. Valls

    Valls

    Joined:
    May 4, 2014
    Posts:
    3
    The problem here is that the only reason bones are scaled is for gizmo visualisation purposes. Puppet2D uses spriteRenderers as gizmos so if bones are not scaled the sprite doesn't reach the target bone. That's just a bad practice, it shouldn't be that way and it could be solved using proper unity editor code.

    People who want to parent anything to bones should replace this line from Puppet2D_BoneCreation.cs:
    changedBonesParent.localScale = newVector3(length, length, length);
    to:
    changedBonesParent.localScale = Vector3.one;
     
  4. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    I'll have a look into improving this (I went for the sprite method instead of gizmos to allow customisation of look the controls, but perhaps it would be a good to change it)

    - for anyone planning on doing this change, i'd advise also changing all the bone sprites to use "BoneNoJoint" instead so you can use the bone slider to change all the scales to something that looks nicer.
     
  5. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    sprites dynamically batch even with non-uniform scale. If you're parenting to bones, make sure you don't convert the sprite to a mesh as this is unnecessary and will currently break batching with puppet2d.
    (see here http://forum.unity3d.com/threads/optimization-using-the-new-2d-tools.211021/)
     
  6. CarterG81

    CarterG81

    Joined:
    Jul 25, 2013
    Posts:
    1,737
    Whenever I try to "Convert Sprite to Mesh" on many of my sprites, they shrink to become very tiny and look nothing like they should.

    I've made sure the scale is (1,1,1), messed around with ("Type of Mesh") right above "Convert Sprite To Mesh" but nothing seems to matter, tried various things- nothing seems to work.

    This is consistent with many of my sprites. I'm not using any bones or animation, but figured I could use the tool to convert my sprites to meshes for another reason (not using any other Puppet2D feature for this goal).

    example.png
     
  7. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Could you try this:

    Before converting, add a polygonCollider2D and then go to debug view (instead of inspector). You should be able to see what outlines it is getting (called paths). Puppet2d uses the first path to convert to a mesh, so if this is wrong it wont work. What you should do is clean up your image so that the first path is the outline you need.
    Alternatively you can use the ffd tool to custom create your mesh (you can delete the ffd controls after if you wont be using them.
     
  8. creepco

    creepco

    Joined:
    Feb 2, 2015
    Posts:
    8
    First of all, I wanted to say how amazing I think Puppet 2D is. Really powerful!
    I'm having similar problems with FFD...
    I've got a sprite, and when I try to 'Convert Sprite to Mesh' or use the FFD tool, my sprite shrinks and deforms. I've tried it on several sprites, and I've tried adding a polygonCollider2D like you suggested. I've made sure the image is at 0,0,0 and the scale is 1,1,1. The paths look correct:

    But this is what it looks like when I convert to mesh:

    And this is what it looks like when I use the FFD tool:

    Any advice would be greatly appreciated!
     
  9. creepco

    creepco

    Joined:
    Feb 2, 2015
    Posts:
    8
     
  10. creepco

    creepco

    Joined:
    Feb 2, 2015
    Posts:
    8
    And I wanted to update my post, as I've been experimenting and think I found a way to get around this issue:
    I tried making my sprite dimensions a power of 2: I resized the canvas of the sprite in Photoshop to 512x1024, which leaves a large amount of transparency around the image, and retried a FFD on it, and it worked properly. Is that expected behavior?
    Anyway, I thought I'd share if this hasn't been covered on the forum yet.
     
  11. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    It needs to be a square image to work. I'll add that to my features/bug list.
     
  12. iansnyder

    iansnyder

    Joined:
    Dec 22, 2012
    Posts:
    12
    Just wanted to pop in and say I'm loving Puppet2d so far! Got it working with my weird 2D/3D hybrid game (like FFT on PS1) and it's running on my VITA perfectly :) Thanks!
     
  13. Neuyazvimyi

    Neuyazvimyi

    Joined:
    Feb 5, 2015
    Posts:
    1
    Hello, I used to texturepacker for atlas and then used puppet2d to animate sprites. Next, I made another atlas. How can I replace the atlas without reanimating sprites?
     
  14. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    You won't need to reanimate anything, but you may have to reskin any meshes to the bones. The reason is that once you convert a sprite to a mesh it relies on the texture UVs being the same. Texture packer will likely rearrange these, so you most likely will have to reconvert any meshes and skin them to the same bones you've already animated.
     
  15. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Thats great - fell free to promote your Puppet2D made game here - I'd love to see some vids when its ready :)
     
  16. funshark

    funshark

    Joined:
    Mar 24, 2009
    Posts:
    225
    (pst pst, some automatic task for that would be great ;) )
     
  17. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Need to figure out the best way to do it (and get texture packer :) )
     
  18. pbalaga

    pbalaga

    Joined:
    Feb 8, 2015
    Posts:
    1
    Hello!
    I'm wondering how I could use Mecanim animations and Puppet2d's IK together. There is a Mecanim animation running on my character, but in some circumstances, I'd like to set e.g. leg position to touch the ground. But when I do it, the Mecanim motion animation seems to almost immediately override the leg position I set.

    How would I do it? There are some examples for animation blending and IK but related to 3D. Do I need animation layers for this? Is there a chance to have an example for this anywhere?

    So the question is, basically, whether it is possible to use Puppet2d's IK system to make the character more responsive in-game (is there a built-in way?) or its only use is to simplify predesigning animations? I believe this is possible but I don't know how I should make this work together with "recorded" Mecanim animations.
     
  19. Bears

    Bears

    Joined:
    Feb 7, 2015
    Posts:
    5
    First off thanks for the great asset it makes animating in Unity much easier! And the system is pretty intuitive as well. I'm running into one issue and was hoping you might be able to help me out with it. I have 4 goblins on screen, which are just duplication of each other. And each one is a single draw call and we want to attempt to get them down to 1 call for the group of them. I've seen where you linked above the performance tips and tricks and found the CombinedSkinnedMesh code that you link in it. But when we apply that code to our scene the meshes deform horribly but they do become 1 draw call for the group of them! So I was wondering if you have any clue on what could possibly be the problem with it? Thanks again for all your hard work!

    EDIT: Figured out it was a issues with the translations/scale of the top level object and children. Go figure I would find a fix for it after I post! :p Now just need to figure out how to keep their Sorting Layer Order!
     
    Last edited: Feb 13, 2015
  20. Pundek

    Pundek

    Joined:
    May 17, 2013
    Posts:
    9
    does it work with unity 5?
     
  21. Dris

    Dris

    Joined:
    Jan 24, 2015
    Posts:
    4
    Hi,
    how do I open the puppet2D? As a regular Unity project or as a plugin? I cant seem to get around this. Any help would be appreciated.

    Thanks in advance
     
  22. funshark

    funshark

    Joined:
    Mar 24, 2009
    Posts:
    225
    Like any asset, you add it on your project.
     
  23. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    It should do, I tested it a few months back, and it worked then. If you have any issues please report them so I can fix it speedily.
     
  24. JDuaneJ

    JDuaneJ

    Joined:
    Jul 26, 2014
    Posts:
    29
    Anyone experiencing very slow or choppy performance when animating a rigged character in the Animation Timeline? It seems like every time I select a control, I have to wait a second or two before the control is selected...if I Mouse Down and Mouse Up a selection, then move my mouse, the control doesn't get selected. I also see this choppy workflow when hitting record and/or play.

    The rest of Unity is fine, and it's not my machine. i7 6GB
     
  25. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    It sounds like an old bug where a variable wasn't being cleared in the global control which mounted up and slowed down everything.

    Are you using the latest version of Puppet2d? (2.0)
     
  26. JDuaneJ

    JDuaneJ

    Joined:
    Jul 26, 2014
    Posts:
    29
    Ok I've updated to the latest version. Issues have been fixed, but now all of my controls on every character are a million times larger. How do I scale them back without scaling the sprites? When I try to scale, using the rect tool, the model scales as well. Thanks!
     
  27. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    theres a slider at the top of the puppet2d GUI
    upload_2015-2-25_9-7-2.png
     
  28. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Hi Jamie,

    I haven't posted in a while, but I thought I would update you regarding my team's use of Puppet2D.

    While we decided not to use any of the mesh deformation features and stuck with sprite translation,
    we did find Puppet2D to be a very powerful and versatile tool for our animation asset workflow.

    Of the projects we had in the pipeline last quarter, I would say that the rig-sharing in our Puppet2D project
    had the best balance of superfluous data reduction, accessibility for non-technical design staff,
    and general animation creation efficiency.


    Puppet2D was only used for the battle portion of our title, but because we had so many character sprites to
    swap onto the rig, it was a welcome tool that is well worth the per seat license.

    The game is a Japanese-style card-based social game called "ToysDrive":

    http://toysdrive.bushimo.jp/

    I work in a Tokyo mobile game company, so all of the info on the title is in Japanese, but here is a YouTube
    video of the game's battle portion:




    In fact, it seemed to work so well that it looks like we will be adopting it for another upcoming title.
    This time, we will be making more use of 2.0's advanced features. I've already been making prototypes
    using the latest version, and I have to say that the feature set (especially the integrated weight painting)
    is absolutely insane.

    Will likely be asking for further advice here in the future, so thanks in advance!

    -Matt
     
  29. kumarsmurthy

    kumarsmurthy

    Joined:
    Dec 20, 2013
    Posts:
    1
    Hi Jamie,
    I am a student and I am considering buying this product. Is it possible to switch the sprites for a rigged character at run time? I have a character creation system in my game and the individual sprites in the character are different each time.
    Also is there a sample rigged character anywhere on your website?
    Thank you,
    -Kumar
     
  30. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    You can switch the sprites parented to the bones using GetComponent<SpriteRenderer>(),sprite = newSprite;
    If you are using skinned meshes you will instead need to skin all the meshes to the same bones and switch the meshes by turning on and off the skinnedMeshRenderers
    The crocodile rig, puppetman rig and monster rig are all included in package :)
     
  31. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Thanks for the update - its great to see games being made using puppet2d - has it been released yet?

    Glad you enjoy using it - can't wait to see what you produce with v2.0 :)
     
  32. tango209

    tango209

    Joined:
    Feb 23, 2011
    Posts:
    378
    Hi Jamie,

    I think there is a bug attaching a mesh to bones from a sprite in Unity 5. It works OK in 4.6, but in the Unity 5 RC3 I get what you see in the attached image (note: I just have the body and leg images) when trying to attach the leg mesh to the bones.
    puppetproblem.png
     
  33. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Just checked - yes, looks like theres a bug there.
    I found a work around. Select the mesh and click Paint Weights - for some reason that fixes it! Not sure whats causing the bug - I'll add it to my bug list.
     
    tango209 likes this.
  34. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Jamie,

    Yeah, Toys Drive was released in December in the Japanese Google Play Store and Apple AppStore.

    --

    On another note, I think I may have encountered a bug which is present in both Unity 4.6 and the official release of 5.0.
    We are using both mesh and sprites for a dragon in our current prototype. Everything looks fine when the build settings are set to WebPlayer or Desktop, but it seems that when the following settings are being used, the Puppet2D skinned meshes display their textures strangely:

    ・Build Settings Platform: Android or iOS
    ・Graphics Emulation: OpenGL ES 2.0
    ・Texture Import Settings: Generate Mipmaps

    Here are some screen shots showing the model with its textures as normal(①), while latter image (②) shows the broken model as represented by the settings above:

    Screen Shot 2015-03-06 at 15.33.56.png

    By not importing the image with mipmapping, or simply by not emulating OpenGL ES 2.0 ,
    the GEO objects display their textures fine.


    Screen Shot 2015-03-06 at 15.34.04.png
    Where as the combination of emulating OpenGL ES 2.0 and enabling mipmapping seems to break the mesh's UVs or something. Note that the eye and jaw are Unity sprites rendered with the default Sprite Renderer.


    What was a little more puzzling was, despite it being displayed like this in the editor, when we built to either iOS or Android it would appear as expected on the actual devices -- except in the case of devices running a Tegra 3 GPU (specifically, a first generation Nexus 7 and the Wacom Cintiq Companion Hybrid Android device). Similarly, unchecking "Generate mipmaps" for this texture solved the issue on the Tegra devices as well.

    --

    While we likely won't need mipmaps in this project, we have resolved this issue for the time being.
    But I thought I would give you a heads up in case you had any insight about what might be going on.

    Thanks again for being available here on the forum! It seems like you are a one man show, so us devs really appreciate all the time and effort you put into helping us out.

    Best,
    Matt
     
  35. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Thanks so much for the detailed bug report and kind words.

    Its a very strange one - why mipmapping should be broken randomly is very odd. I'll add it to my list.
     
  36. Overwurm

    Overwurm

    Joined:
    Dec 11, 2014
    Posts:
    3
    Hey everyone! New to the party here.... For starters, thanks for the great animating tool! I'm currently starting to use it in Unity 5 and i'm having the same issue as Tango209 - except, clicking Paint Weights on the mesh doesn't fix the issue. The lines explode in random directions regardless of what i do in that instance (just like the screenshot tango209 posted). Has anyone else had the "Paint Weights" work-around actually work?
     
  37. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Your the first one to report that paint weights isnt fixing the issue. Are you definitely selecting the broken gameobject and clicking "paint weights"?
    Could u snd me ur email address so I can send you the version I did a fix in, to check its working?
     
  38. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Hey Jamie,

    Sorry to bombard you with questions., but another peculiar issue came up today when I went to build my
    animation tests on Android, iOS and the Unity Webplayer.

    In the past, the animations and mesh skinning was displaying properly on the above platforms.
    But today, it seems like the weights are breaking upon build. The issue is not being exhibited in the editor.

    Screen Shot 2015-03-13 at 17.57.14.png
    This is a screenshot from inside the Unity editor.

    Screen Shot 2015-03-13 at 17.57.07.png
    This screenshot is from the webplayer, at roughly the same frame.


    While I have made some changes to some rigs since I last built the project, even an unedited rig is now exhibiting this strange "weight artifact." I am scratching my head, wonder if it is something in the build settings, but I can't come up with anything.

    I will keep poking around on my end, but I thought I would let you know incase you have seen something like this before.
    It's also possible I am doing something weird when building my rigs.


    A few notes about my workflow:

    ・Since I started using Puppet2D, I stopped using the default GRP_ control group parent objects, to reduce hierarchy clutter. The same goes for the pole targets' parent objects.
    ・I might sometimes nest controllers within one another, for instance IK controller/ orientation controller, or parent controller / parent controller, orientation controller / orientation controller / orientation controller, .. etc..
    ・I use custom shaders in both mesh and sprite renderer objects to achieve additive- and other color effects. The shaders are written in GLSL and formatted for ShaderLab.
    ・I am using the latest pro build of Unity 5

    I don't know that any of these things have anything to do with it. Just throwing ideas out there, haha.

    Thanks again in advance.
    -Matt
     
  39. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Well, I probably should have dug a little further before posting.

    It looks like changing default quality settings to anything above "Fastest" fixed things on Android and Webplayer.

    Our engineers will check it out on iOS and let me know what is up.
    I will try to remember to update you when that happens.
     
  40. Overwurm

    Overwurm

    Joined:
    Dec 11, 2014
    Posts:
    3
    Ahh! I was clicking Paint Weights prior to hitting Bind Smooth Skin, so - i had it backwards and nothing was working. Now that i'm hitting it in the proper order (after the mesh blows up), it's working just fine. Thanks for pointing me in the right direction!
     
  41. jamez

    jamez

    Joined:
    Jun 17, 2014
    Posts:
    14
    I'm pretty sure your problem is being caused by "Blend Weights" being set to "4 Bones" on higher quality settings. Fix this by going to Edit->Project Settings->Quality. Under "Other" you'll see "Blend Weights". This needs to be set to "2 Bones" for all the quality settings.

    I had very similar looking graphical problems on "Beatiful" and "Fantastic" settings... Blend Weights was the problem.
     
  42. jamez

    jamez

    Joined:
    Jun 17, 2014
    Posts:
    14
    I have a problem when trying to animate by turning skinnedMeshRenderers on and off. It works fine in individual animations, but the problem comes when transitioning between animations.

    I end up with two different skinnedMeshRenderers visible at the same time (usually the same body part because I'm flipping between a different graphic of the same body part). For example, I'll have two versions of an arm overlapping each other as the transition happens.

    This is caused by the way that Unity does transitions. During transitions, Unity tries to blend the starting state to the ending state over time. Works great for floats (position, angle, opacity, etc.). But for bools, there isn't much to blend, it's either true or false... Problem is that Unity just turns bools "true" for entire transition if they are true at either end of the transition. So for animating skinnedMeshRenderer visibility, they both get set to be visible during the transition.

    Anyone else have this problem, or have an nice fix for it?

    I came up with a fix that works, although I don't really like it... I add this script to every Puppet2D _GEO that I want to animate visible/not visible:
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. [ExecuteInEditMode]
    5. public class GeoAnimator : MonoBehaviour {
    6.  
    7.     public float visibility = 1.0f ;
    8.  
    9.     private SkinnedMeshRenderer skinnedMeshRenderer ;
    10.  
    11.     // Use this for initialization
    12.     void Start () {
    13.         skinnedMeshRenderer = GetComponent< SkinnedMeshRenderer >( ) ;
    14.     }
    15.  
    16.     // Update is called once per frame
    17.     void Update () {
    18.     }
    19.  
    20.     void LateUpdate () {
    21.         if ( Application.isEditor ) {
    22.             // Don't let user enter values outside of 0 to 1
    23.             visibility = Mathf.Clamp01( visibility ) ;
    24.         }
    25.  
    26.         if ( visibility > 0.5 ) {
    27.             skinnedMeshRenderer.enabled = true ;
    28.         }
    29.         else {
    30.             skinnedMeshRenderer.enabled = false ;
    31.         }
    32.     }
    33. }
    Instead of animating the skinnedMeshRenderer visibility directly, I animate the "visibility" variable in this script. 0 for invisible, 1 for visible. Unity will interpolate the "visiblity" variable during transitions, and the script flips skinnedMeshRenderer on/off when it passes the halfway point. In my game, my character's two different skinnedMeshRenderer arms get flipped on/off at the same time, so only one is ever visible at the same time.

    Anyone else have this problem or have a better solution?
     
  43. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    As jamez said, currently you need bone weights set to 2 for skinned meshes. You can change this in the skinnedMeshRenderer or in the quality settings. Its a slight bug that I hope to fix in an up coming release
     
  44. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Ahh! Okay. Actually, I thought it had something to do with that, but the drop-down already read "2 Bones", so I left it alone. I didn't realize that this setting was per Quality Preset, though.

    Thanks for the heads up, that oughta fix things!
     
  45. mhope

    mhope

    Joined:
    Aug 14, 2013
    Posts:
    13
    Thanks for posting your solution.

    In the past, I had similar needs of exposing and hiding different sprites, but the nature of the game didn't necessitate any animation blending and we were fine with the way it looked.

    Though in my current project we will likely use animation layers and blending. I can't think of a better work around than what you've posted, so we may end up trying a similar method.
     
  46. Nyxo

    Nyxo

    Joined:
    Mar 12, 2013
    Posts:
    19
    Hey jamieniman~

    My team has been using Puppet2D for quite some time now (many months), and we've been struggling with using it in a source control environment, because of scene dirtiness.

    As a note, we haven't upgraded to Puppet2D 2.x yet, as we are trying to avoid high risk changes until we hit our next milestone. However, perusing the changelogs and these forums has lead me to believe that this issue is not only unfixed, but unknown to you.

    We have a variety of scenes that have one or more Puppet2D characters in them, and if the "Auto Refresh" checkmark is turned on for any of them, the scene is constantly marked as dirty by Unity because Puppet2D is constantly recalculating/re-setting transform positions, rotations, and scales -- some of these values recalculate to a difference of 0.0000001 and back again, every other frame. This causes issues when committing to our source control, as many people (especially artists) don't know whether the changes they've actually made apply to the scene file or not (and as such, they don't know if they should be committing the scene file, or ignoring it to avoid making our source control history messy). Even for people who know what they're doing, when they're reviewing their commits for unexpected changes, they constantly have to manually diff the scene file and try to mentally filter out all the transform changes being done by Puppet2D so they can see if anything ELSE has changed.

    Our workaround that we've been using until just recently, was to have the artists always remember to turn off Auto Refresh before committing their changes-- however that allows for human error in cases where they forget to do so, so we recently decided to start looking into whether we can allow Auto Refresh to remain on at all times, and avoid scene dirtiness.

    What I've managed to do is change some of Puppet2D's source code so that it uses rounded values in a few places, and then the constant recalculations don't cause the scene to have different values all the time. This has fixed the issue with source control, as it no longer detects these insignificant differences, and life is significantly easier on all team members as a result.

    However, we still have a minor annoyance in that Puppet2D is still performing these calculations and setting the values on the transform, causing Unity to flag it as dirty. So what's ending up happening, is that Unity -always- thinks the scenes are dirty, and asks you to save, even if you haven't changed anything. But when you say "yes" and perform a save, then go to commit in source control, there are no changes detected to commit. This is mostly a win, and something we are willing to deal with for now, but I wanted to bring this whole issue to your attention so that you can hopefully change Puppet2D to fix this issue for all users of this great product, and hopefully fix the "fake dirty scene" issue in the process.
     
  47. Overwurm

    Overwurm

    Joined:
    Dec 11, 2014
    Posts:
    3
    That last one sounds frightening, as we're also going to be passing scenes back and forth through source control. Thanks Nyxo for the suggested work-around!

    Aside from that, i'm running into an issue that i'm hoping to get some help with. I've read back a few pages but couldn't find anyone talking about this particular problem. Currently, if i save a scene and then close it out while i'm in the middle of setting up a rig. When i load the scene up later, the control points (IK Control and Parent Control) become disassociated from the bones and i can no longer use them to move the rig around. While this is happening, Unity spits out the following error:

    "UnassignedReferenceException: The variable bone of Puppet2D_ParentControl has not been assigned.
    You probably need to assign the bone variable of the Puppet2D_ParentControl script in the inspector."

    The funny thing is - when i click on an IK Control or Parent Control point, the Inspector shows them as being connected to the proper scripts and bones. Does anyone know what might be happening here?

    Thanks for any help!
     
  48. nagbharat92

    nagbharat92

    Joined:
    Mar 20, 2015
    Posts:
    8
    Hi Jamie and all other contributors of this thread. I am Bharat, lead game designer at a small indie studio in India. We have just started with the pre production of a 2d game and are looking for a good 2d animation tool. I have explored maya for 2d animation. Its can be turned into a great 2d animation setup but requires a lot of time when it comes to 2d rig setup. I also tried out Spine, its good but their pricing plans are not flexible enough for a small startup like ours. Puppet 2d looks great, is a great value for money too ut I have some basic questions before I decide to integrate this into our pipeline.
    I Looked at some tutorials you have on youtube where you used FFDs to animate an eye blink. Now consider we need some rigid solution where its easy to switch between image sprites to do expressions instead of using FFDs. I will refer an image from rayman here.

    Consider at one frame i need to switch from sprite 1 (open mouth) to sprite 2 (closed mouth) how will i go about doing that?
    This is a simpler case where i can play around with opacity values and do a switch but now consider leg sprites marked 3 and 4. Both of these sprites require a differnt set of bone sets. Now what if i need to make a switch sprites and have unity ik solutions for each. How will you go about doing that?
    To refer, here is a spine tutorial mentioning their image switching feature -


    Thanks in advance
     
  49. nagbharat92

    nagbharat92

    Joined:
    Mar 20, 2015
    Posts:
    8
    Also, Im unable to convert a transparent sprite to a mesh. It is ignoring the transparent parts of the sprite. Any workaround for this issue? say for example i want an ffd for a transparent mesh, then how to go about it?
    The top left is the original sprite other 3 are meshes with varing resolution.
     
  50. jamieniman

    jamieniman

    Joined:
    Jan 7, 2013
    Posts:
    782
    Yes - that has been fixed in v2.0 (I added so many features in that release I forgot to add it in the release notes).

    I think the cause was due to not clearing the bone list or something, and there was a tweak to the Onvalidate function to fix it.

    How come you haven't updated? It shouldn't break any of your previous work - if you do get issues be sure to let me know.