msm

  • 21 avr. 2018
  • Inscrit 29 juil. 2013
  • congrats, looks awesome.

    Impressed as always at the features you are packing into Spine.

    I'd just like to say that all the editor updates are awesome of course, but I appreciate the attention you also are giving to improving the runtimes and the repos. Your previous move to keeping the runtimes in pace with latest editor release features was huge, and now moving to versioned branches for the repo is another big improvement. So thanks for the awesome work.

    Any thoughts on separating the individual runtimes into their own git repos? For one, reading the commit history would be a lot more useful, as it would not be interspersed with other platforms I'm not using. Would also make importing just what I need as a git submodule for example a lot easier.

    Thanks again

  • Thanks

  • Hi,

    in the Spine editor,
    the animation list sorting seems to be broken when copying a new animation and renaming it. I have an animation named "WindupPunch", copied it, renamed it "Foo" or something, but Foo doesn't get sorted alphabetically with the rest, it remains next to WindupPunch in the list... is this a bug? Pretty sure this didn't happen in earlier versions of the editor, I am on 3.5.43 at the moment

    ... OK, just found that if you then use the "Add Animation" button to create a new animation, the list then gets sorted properly again. Until then though, the incorrect sorting persists even between editor relaunches

    Thanks

    • Modifié
    • Modifié
  • Hey,

    this line:
    spine-runtimes/SkeletonGhost.cs at master

    should be

    !string.IsNullOrEmpty(e.String)

    This is actually do to the spine-csharp change from 3.4 to 3.5, the exports haven't changed but the parsing has, which may have deeper impact that just the skeleton ghost
    Updated to v3.5 (merge dev branch).@36000e3

    The default event string value changed from null to the empty string.

    The impact for skeleton ghost is that my ghost color ends up pink

  • Is there an upgrade guide from 3.4 to 3.5? I understand that AnimationState and how mixing works has changed, but not sure exactly what I should expect. After upgrading my animations dont play well together anymore, and I dont see the "End" event fire like it used to.

    Also, from what I've read, is it correct that when an animation completes, it should be cleared and mix back to setup pose? Unless I queue up another animation or clear it myself, I still see the ended animation in the TrackEntry list (when I call animationState.GetCurrent(index) for example)

    Thanks for the help

    • Modifié
  • Hi,

    this is regarding SkeletonUtility in Unity and the CollectBones method. I've been looking to remove as much GC allocations from my game as possible, and noticed that SkeletonUtility was allocating every frame. It is due to this line:
    spine-runtimes/SkeletonUtility.cs at master

    When looping over the bones, it exits early if a BoneFollower.bone is null. This is ALWAYS the case if your GameObject root node is the auto generated "SkeletonUtility-Root" follower (spine-runtimes/SkeletonUtility.cs at master).

    What happens is exiting early means the

    needToReprocess

    flag is never set to false (spine-runtimes/SkeletonUtility.cs at master), and so

    CollectBones()

    is called every frame when

    UpdateLocal()

    is called.

    This was easily fixed by just changing

    return

    to

    continue

    , but not sure what the implications are for others who don't use the SkeletonUtility-Root follower, or if that SkeletonUtility-Root follower is actually a discouraged or out-of-date practice (my project began from the spine asset packs).

    Thanks, I was actually also going to look into pooling TrackEntry objects that were created in AnimationState, but I upgraded from Spine 3.4 to 3.5 first and found that you guys already did that! Thanks for the continued awesome work you put into Spine and the runtimes

    MattouBatou a écrit

    I had this issue. See my post a few posts up. Check your console to see if you see 1 error that matches the error mentioned in my previous post.

    Ah, thanks that was it. I was not getting anything logged to the console, I must have missed your post. Thanks for the help

    yeah, not sure why they dont work for me. I'm on Unity 5.3.6

    Hi,

    I'm just looking at trying out these shaders again. I imported the package from the first post, but Im not sure what I should be expecting.

    The character renders as all pink, and I believe I should be seeing a custom GUI for the shader settings?
    This is what it looks like for me
     Loading Image

    Is there anything I need to do after importing the package? Reading through the thread it seems like the required changes have been integrated into the latest runtime, which I just recently updated to.

    Also, do these work with baked lighting and light probes? The biggest issue I am trying to solve is that when the character is facing left he is lighted differently than when facing right.

    Thanks

    ok thanks, not a big deal for my case. I can just create a separate animation that is keyed in reverse. Thanks for the help

    • Modifié

    Hi,

    I am trying to play an animation in reverse (timeScale=-1), but it seems like the custom timeline events in the animation don't fire at the appropriate time, instead they all seem to fire at the same time at the start or end of the animation loop.

    I think I saw mention of this in another thread at one point, but can't seem to find it anymore. Is there a solution or workaround to this?

    I have an animation that I am playing forwards, and the custom events fire as expected. But under certain conditions I want to just change the same entry timeScale to -1 to play it in reverse, that is when the custom events all fire at the wrong time.

    Any help appreciated,
    thanks

    Hey,

    yeah, the only reason I was trying the manual approach was I had the same thought that it might be an order-of-operations thing, if I had the Mix set 1, if the IK constraint was being applied and fighting with where I wanted the arm to go. So I tried keeping the constraint disabled, and just then manually updating the position myself... but I had the same stuttering problem.

    So I think it is just the issue that the bone is a child of a parent that is rotating. Like you suggested, I am going to try using a separate bone at the root outside of the bone being pivoted. I read in another thread about hiding/showing bones, and it looks like I will just need to write an extension to SkeletonRenderer? That is my current plan.

    Thanks for the suggestion.

    I was trying to avoid reworking any animations. I am actually building off of the Gunman asset pack, and those animations are built with the parent being the pivot bone for aiming. And my ledge grabbing is actually a one-arm grab, since I wanted to retain the ability for aiming and shooting with the other arm while hanging.

    I actually came to the same conclusion, that I would need to just add another copy of the arm bones at the root with a separate IK constraint, and just hide the original arm and show the grabber arm when needed.

    Thanks for the help

    Hi,

    I am trying to programmatically pin my character's arm to a point (ledge grabbing). I have a SkeletonUtilityBone set to Override, and when I want to pin the arm, I enable it and continuously set the world position to the desired point during Update().

    This works, but I have an issue where the arm stutters while a parent bone is rotated. The parent bone is rotated to follow the mouse cursor for aiming a gun. The arm IK is a child of this rotated bone so that the arms will rotate with the gun. In my ledge grab scenario though, I want the child arm to stick to a specific point. So Spine is fighting to rotate the arm with the parent, then I pull it back into my desired place, and the result is a stuttering while aiming.

    Is there a better approach I can take? Any suggestions?

    One thought I am trying out, is to turn off IK (set the Mix to 0) for the arm to be pinned, and then just use the IkConstraint to calculate the bone SRTs and update them myself, like

    Vector2 ledgePoint = ... // the world point to pin to
    SkeletonUtilityBone armIK = ... // the arm IK bone
    IkConstraint c = ... // the arm ik constraint
    armIK.bone.x = ledgePoint.x;
    armIK.bone.y = ledgePoint.y;
    armIK.bone.UpdateWorldTransform();
    IkConstraint.Apply(c.Bones.Items[0], c.Bones.Items[1], armIK.bone.WorldX, armIK.bone.WorldY, c.BendDirection, 1f);

    but still trying to get that to work

    Thanks for the help


    16 Mar 2016 10:14 am


    I just read about Transform Constraints, Use case for transform constraint

    Is that something I could use to solve my issue?

    • Modifié

    Hi,

    is SkeletonRagDoll expected to work with FlipX ? It previously worked, but I just updated my package, and now the ragdolls don't honor the FlipX. The rigidbodies go flying in the opposite direction as the skeleton