Giter Club home page Giter Club logo

pose-thumbnails's Introduction

IMPORTANT: This add-on is not maintained anymore. For a Blender 2.8 compatible version you can try this version.


Pose Thumbnails

Pose Thumbnails is a simple add-on which adds the ability to have thumbnails for the poses in a Pose Library.

Installation

Download and put the 'pose_thumbnails' folder in your Blender addons folder or use the 'Install from File...' option within Blender.

Usage

Just create a pose library, add poses and start adding thumbnails. You can assign thumbnails to individual poses or 'batch' assign more images at once. Now just click on the thumbnails to apply a pose.

TIP: If you used the old version of this add-on, you can simply add the thumbnails you created for that by clicking 'Batch Add/Change' and then choose 'Index' as mapping method.

See the wiki for more documentation.

Notes

When making thumbnails for your poses, consider the following:

  • Make sure your thumbnails are square images, else they will be stretched.
  • Give them proper names, so you know for which poses they are. :)

Issues, bugs and suggestions

If you experience an issue or a bug with the add-on or have ideas for improvements, please create an issue.

pose-thumbnails's People

Contributors

jasperges avatar sybrenstuvel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pose-thumbnails's Issues

Fix Apply Flipped

It seems that 'Apply Flipped' doesn't work reliably for every rig. Need some more testing.

Linear interpolation of matrix elements is a bad idea

https://github.com/jasperges/pose_thumbnails/blob/e80726b23d7ee9d5245ac7914c3c0d5fadf90833/pose_thumbnails.py#L301

This performs interpolation of two poses by linear interpolation of the 16 components of the matrix. This is a bad idea and can cause unexpected results. The matrix should be decomposed and the components interpolated appropriately (linearly for translation, quaternion-SLERP for rotation, etc.). Also see this answer on Stack Exchange.

Quickly choose pose by searching or typing number

(Request by Pratik Solanki)
There are several ways this could work:

  • Probably the best way is to click on the previews and then quickly type the number. If you press 1 and then quickly after press 2, it would be 12. But I have no idea how to implement this in Blender (simple or complicated).
  • A simple input box underneath the previews where you can type a number.
  • A search box like for materials dropdown. Best to have this in previews, but I don't think that's possible at the moment. Other option would be to have an extra dropdown list underneath the previews... but then the UI gets rather messy.
  • look into CTRL+L behavior (pose previewing)

add animation cycle library

Idea by @johantri in #7.

Another idea is to have animation cycle library included. With .gif thumbnail (probably) we can see what kind of animation clip when the mouse is hovering. and apply (insert) the animation to the character at a certain frame.

Make it work with linked poselibs

All props are now stored on the Pose Library (Action). When that is linked you can't change these, so you can't even change a pose with the thumbnails. Probably have to add some/most props to the armature that can be 'proxified' and then it should work.

Merging Pose Tools

Great work on your addon its really really great

The addon cancels out the use of the "pose tools" addon which is super handy. I would seriously consider merging the 2 add-ons.

Link to pose tools: Link: https://github.com/TheDuckCow/pose-tools

I can't help think that this addon is really close to being full featured. It just needs a little more love and it will be there. Seriously really great work on what you have done.

Can't wait to see this add in the future it will be amazing. I will be promoting it on the "Pagewood Studios 2D to CG community" here is the link: _https://plus.google.com/u/0/communities/109082330838575508881

An excellent addon for reference for Maya addon called "Studio Library" it is used for the kids show here in Australia called Figaro Pho http://www.imdb.com/title/tt5016516/

Links related to studio library:

  1. http://www.studiolibrary.com/
  2. https://www.youtube.com/watch?v=lpaWrT7VXfM
  3. https://www.youtube.com/watch?v=xejWubal_j8&feature=youtu.be
  4. https://www.youtube.com/watch?v=kCv0XleJfjU

Seriously congratulations on what you have done beautiful work.

PS. Perhaps a refresh button on for the thumbnails would be amazing. Also any chance getting this to register grease pencil frames.

Libs and thumbnails aren't

Hi, neat addon, although I have this deal-breaking issue though:
While the addon works as advertised in my rig files, it fails to load correctly when I link the rig into a scene. It cannot find the thumbnails, even though they are all set with relative paths. The Action itself loads from the rig, b

Any idea why this might be?

Bizzarely, the thumbnails DO load if I first open the rig file, then open the scene with the linked rig.

install in 2.79 stable version or 2.79.4, butt shows errors

Traceback (most recent call last):
File "D:\Program Files\Blender Foundation\Blender\2.79\scripts\modules\addon_utils.py", line 331, in enable
mod = import(module_name)
File "C:\Users\joe\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\pose_thumbnails_init_.py", line 43, in
from . import core, creation
File "C:\Users\joe\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\pose_thumbnails\core.py", line 509
pose_index: bpy.props.IntProperty(
^
SyntaxError: invalid syntax

Removal of unused thumbnails is unnecessarily complex

https://github.com/jasperges/pose_thumbnails/blob/e80726b23d7ee9d5245ac7914c3c0d5fadf90833/pose_thumbnails.py#L785

remove_double_thumbnails() iterates over self.poselib.pose_thumbnails using an inner generator function, which gets iterated over, and then it calls self.remove_thumbnail() which iterates over the same collection again, only to get the index number of the thumbnail to remove. This is quadratic in the number of thumbnails, and could be much easier. Also, it is kind of dangerous to iterate over a collection and delete things from it at the same time.

All of this code:


        def get_unused_thumbnails():
            for thumbnail in self.poselib.pose_thumbnails:
                if not get_pose_from_thumbnail(thumbnail):
                    yield thumbnail

        unused_thumbnails = get_unused_thumbnails()
        for thumbnail in unused_thumbnails:
            self.remove_thumbnail(thumbnail)

can be replaced by:

        thumbs = self.poselib.pose_thumbnails
        count = len(thumbs)
        for i, thumbnail in enumerate(reversed(thumbs)):
            if not get_pose_from_thumbnail(thumbnail):
                thumbs.remove(count - i - 1)

This still removes things from the iterated-over collection, but doesn't use a generator and double iterations any more, and doesn't call into self.remove_thumbnail() to do even more iterations. It also uses reversed() to iterate over the thumbnails back to front, keeping the indices to remove valid.

add a mix power slider

add one "mix power" slider under the pose thumbnail list, so we can add 10% (or else) over the current pose.

Loading and updating linked pose libraries

Carrying on from this issue thread, one of the current limitations of the linked pose libraries is that they cannot be edited, among a couple other property related issues which @jasperges is more aware of than I at this point.

First, the driving vision behind any functionality changes (from my perspective, at least):

  • Being able to have a single repository for actions which can be read and edited from other locations
  • Being able to work with a team of animators on a single project using a single shared pose library; this currently is possible in a read-only fashion, but would be nice if it also could configured such that the post library could be updated with new poses. even if linked in.
  • Once linking a library, the user shouldn't have to deal with filepaths/be burdened with the fact that it is library linked, it should feel like using any normal type of pose libra

Possible ways to do this

  • Blender in general I understand is moving towards being able to edit external libraries through python api's through other open files (source?), but does not exist yet.
  • Run a shell command from python which opens a background blender instance and opens the source library file and runs a script which runs the changes the user is attempting in that native file and saves it.
    • Must know location of executable, but blender background instances were accomplished in the edit linked library script (for researching at least)
    • The background script that runs could be simply located in the pose library addon's folder under the blender addons folder, and it could be written such that it takes argument inputs of any kind, thus passing whatever necessary info in order to process the change the user is making (e.g. filenames, bones to save and values to save it as, everything needed to make/adjust the pose)
    • This would be a slow operation, because a full blender has to be opened and then the library file, which might not be lightweight since created by the user. Thus, either blender will go slowly in any of these interactions saving back to the library, or it would be necessary to run the operation in a background thread thus decoupling with blender's UI refresh (complicated/awkward but possible)
  • Similar to above, but instead of opening the library file in a background instance, actually open up a new instance of blender (a full new blender window, like the edit linked library addon does) with a shell command and pre-apply the changes intended to be made to the pose
    • Operation: open blender and file, then apply or otherwise pass through the changes to be made from the source file into the now open library file, so that the user doesn't have to re-pose the character to save the changes intended.
  • I'm not actually sure immediately the way to pass this information through, that is pass the pose information from the open file to the newly opened library file.
  • When the user saves the library pose file, the next time the UI refreshes in the already open file it should attempt to reload the library accordingly.

These are just some high level thoughts. None of it's very elegant or simple, but does at least still stick to using blender's internal pose library system. Of course, if moving away from that and using addon-controlled json saved files for saving pose information, all this could be avoided, but agreed it is not the blender way and creates a dependency on using the addon and not the blender pose library system.

doesn't work on 2.79 Linux

Thanks for this great addon (idea). I couldn't get it to run under Linux.

It doesn't show me any thumbnail creation options, complains about wrong registration property, and some more errors.
Although I can see the thumbnail panel, I can't get it to work properly and I'm not a noob.
I unfortunately gave up trying to install it.

Improvement: add addon updater module

If desirable, since this repository already uses github releases, I can implement the addon updater code so that users can install updates from inside blender directly and chose to be notified of updates directly. Allows you to check for updates over an interval of time automatically, update to master directly, and install old target releases.

Updater module:
https://github.com/CGCookie/blender-addon-updater

Store thumnails internally

This seems the way to go. Problem is that if you have lots of poses, the blend-file can get quite huge.

What to do when mixing a pose and auto keyframe insertion is on?

What should be keyed when auto keyframe insertion is on when mixing a pose? It seems that the standard 'apply pose' operator uses the 'Available' keying set. But isn't it better to respect the active keying set and default to 'Available' when there is no active keying set?
Other options?

Pose Thumbnail 0.2 problem

Hi Jasper. Just got update email for version 0.2 (Thank you very much) and immidiately download it. But error when i try to install it.

pose thumbnail v02 error

[idea] generate thumbnail automatically

Hi Jasper,

Thank you so much for your work! I think this addon needs a lot of love :)

Just an idea to improve this addon, i think it will be awesome if we can generate thumbnail automatically (i'm sure you already think about that).

Another idea is to have animation cycle library included. With .gif thumbnail (probably) we can see what kind of animation clip when the mouse is hovering. and apply (insert) the animation to the character at a certain frame.

Cheers,
Johan

Suggestions for improving usability of library enum dropdown

Having just had some trouble to make the pose library enum dropdown to work with actions I had setup (and having needed to jump into the code to see how it was actually working), I have a couple minor suggestions:

  • Either make the default setting for pose_lib_name_prefix be PLB_, OR update the comment tip for the pose_lib_for_char enum to match the default setting, ie Only lists Pose Libraries for the current character, i.e. PLB-{charname}* as that took me some time to figure out why it wasn't populating (tooltip said use _ but default setting actually uses -)
  • Alt suggestion: Do away with the dashes or whatever for the prefix, and add some default segmentation characters to the regex (e.g. {1}[-_. ]) so that as long as the prefix of the entire action matches the character letters of the preferences prefix, it should work without trying to remember if it should be a dash or a space etc.
    • I realize there's coded logic for making something like char_blenrig be treated as unique from char-blendrig which would resolve to char, so this logic of the separator could just be used in the context of the very first separator for the purposes of what to draw in the enum items list of pose libraries
    • Further motivation - there's not that much harm in showing maybe more items than you want in that enum, but there is if it's hard to get the enum to draw anything at all due to mismatches
  • Consider adding a little more help text to the enum tooltip, something perhaps like: Only lists Pose Libraries for the current character, i.e. PLB-{charname}*, based on selected armature object name since the armature object name (not the group, not the armature datablock) is the other relevant thing.
  • Maybe another user-centric thing to do is create an operator, like the sanitize button, but for the action name to make it populate correctly in the enum dropdown.
    • Pressing this would auto prefix the PLB (or whatever from user prefs) and pull in the characters name based off of the rig, that way they don't have to fiddle around with getting the right name just to make the action appear in the library enum dropdown.
  • [Added after initial post] Also expand the rules about how the rig is named such that {charactername}_proxy is also recognized, as when linking into another scene and then proxying, the rig proxy is given this name. Right now the workaround is to rename the proxy rig by chopping off the _proxy part.

If you like some or any of these ideas, I'm happy to slap the code together and make a pull request. I think at the very least the first and last two would be good to do, but that's just me.

Thumbnail shapekeys enhancement

HI!!! AWESOME ADDON, thank you so much for sharing it!, i have a request, can you please try to do the same for shapekeys?? thumbnails would be so awesome and would speed everything up for those character that doesnt have a full graphic rig, C: thanks in advance if you take the time.
Greetings!

Creation not allowed when rig/mesh is linked

See https://github.com/jasperges/pose_thumbnails/blob/e80726b23d7ee9d5245ac7914c3c0d5fadf90833/pose_thumbnails.py#L362
This code is too eager to hide the creation options. In our case we have a local action datablock for the pose library, and a linked-in character. Creation of pose thumbnails should be allowed in such a case.

if obj.pose_library.library: would probably be enough.

On a side-note, I think it's bad design to simply hide the creation controls without telling the user why. It took me quite some digging in the code to figure out what was going on.

Moving documentation to GitHub Wiki

Following on from the other conversation, the idea is to move / create more comprehensive documentation of the addon into the repo's wiki page. I will largely be copying from this previous doc I made, though updating to reflect the new UI change recently committed.

My plan is to create these pages:

  • Home:
    • Overview (section on home page)
    • Installation (section on home page)
  • Creating pose libraries
  • Using pose libraries
  • File and naming conventions

Let me know if you'd see it any differently.

folder or tabs

with folders or tabs, we could separate faces, hands, body in different lists of thumbnails.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.