Giter Site home page Giter Site logo

blendergbhtool's Introduction

GBH Tool

GBH Tool

Download GBH Tool on Gumroad

Download GBH Tool on GitHub


Key features:

  • Built on the new Blender hair system
  • Ability to use curve, curves or mesh object as base for hair object
  • Fast generation and easy property editing with just a few clicks
  • Capability to create various types of hair, such as hair strands, stylized hair mesh, and hair cards for video games
  • Convenient creation of braids, curls, and rolls
  • Vertex color-based hair distribution on surfaces
  • Full UV map control (uniform or separated by length)
  • Hair conversion to mesh, curve, curves, or particle system for further operations
  • Pre-made node groups and sample materials library
  • Ability to load node groups and materials from your files into library
  • Hair rigging and automatic weight paiting
  • Hair card texture creation

Check out GBH Tool Manual for more details.


Installation:

In Blender: Edit -> Preferences -> Add-ons -> Install -> Select downloaded zip and enable check-mark


Requirements:

  • Blender 3.5 and later

Roadmap:

Detailed list of upcoming features and improvements


License:

GPL-2.0-or-later


blendergbhtool's People

Contributors

gixoxyz 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

Watchers

 avatar

blendergbhtool's Issues

feat(rigging): hair weight paint

Describe your idea
Automatic hair weight painting for mesh-based hair created in GBH Tool.

TO-DO:

  • Add weight painting section to "Rigging" panel.
  • Levels and smoothing control.
  • Clear weight painting from root.
  • Duplicate and remove extra splines for weight painting directly.
  • 3D Viewport graphical indicators for clear weight from root feature.

fix(presets, library): flipped normals on mesh based presets and node groups

System Information
Operating system: All

Blender Version
Broken: version: All
Worked: -

GBH Tool Version
Broken: version: 2.2.0.alpha.3
Worked: -

Short description of error
Some presets and library node groups that are related to mesh based hair creation, create meshes with flipped normals.

Exact steps for others to reproduce the error
Use all mesh based presets and library node groups one by one, then check if the created mesh has flipped normals or not.

fix(UI): "Include Preview Updates" checkbox size

System Information
Operating system: All

Blender Version
Broken: All
Worked: -

GBH Tool Version
Broken: 2.2.0.alpha.3
Worked: -

Short description of error
"Include Preview Updates" checkbox button size in GBH Tool preferences is larger than 1x size.

Screenshots
23-12-28_160755

feat(hair cards): add shading and lighting presets

Describe your idea
Add shading and lighting presets, such as HDRIs, lights and MatCaps, and provide a quick way to change them for hair card texture creation. This could be achieved by having a separate section in "Hair Card Texture Creation" panel and adding lighting setups to GBH's library, or by adding them to a new section in Blender's "Viewport Shading" settings menu.

Describe alternatives you've considered
Just add premade HDRIs, lights and MatCaps presets to Blender's "Viewport Shading" settings menu and "World" settings panel.

TO-DO:

  • Create respective HDRIs and MatCaps.
  • Decide which route to take.
  • Create the logic for setting up the presets.
  • Create the UI.
  • Make sure the HDRIs are only affecting the lighting and are not shown in the renders.

fix(rigging): "use modifiers" option creates duplicated mesh with automatic weight paint

System Information
Operating system: All

Blender Version
Broken: version: All
Worked: -
GBH Tool Version
Broken: version: 2.2.0.alpha.3
Worked: -

Short description of error
Enabling "use modifiers" option in armature creation, creates duplicated mesh in certain scenarios when used with automatic weight paint.

Exact steps for others to reproduce the error
Use mesh based presets or node groups, specifically the ones that create new extra hair (children, braids, etc.), then create an armature with "use modifiers" enabled. After creating an armature, head to the weight paint section and click on "automatic weight paint" button.

fix: error caused by hair object deletion

System Information
Operating system: All

Blender Version
Broken: All
Worked: -

GBH Tool Version
Broken: 2.2.0.alpha.3
Worked: All Previous

Short description of error

"BlenderGBHTool\ui\common_ui.py", line 71, in clear_pointer_if_object_deleted
    setattr(prop_parent, prop_pointer, None)
AttributeError: Writing to ID classes in this context is not allowed: Scene, Scene datablock, error setting Scene.hair_object

Exact steps for others to reproduce the error
Remove the selected hair object manually from the viewport.

Additional context
clear_pointer_if_object_deleted function has been recently changed to be working with parent armature selection and this error is the result of that changes.

docs: update docs to v2.2.0

Description
Update documentations to include all new features and changes from v2.1.0 to v2.2.0.

Information to Include

  • Add docs for all the new features.
  • Update the docs for all changes made.
  • Replace the "Changelog" section with GitHub's changelog.
  • Migrate tutorials to Gumroad.
  • Update the landing page to include the links from GitHub.

Checklist

  • Draft the documentation.
  • Review and edit for clarity.
  • Ensure consistency with existing documentation.
  • Include examples if necessary.
  • Update relevant links.

feat(library): filter user library by files

Is your feature request related to a problem? Please describe.
Having multiple files in the user library could cluster the library.

Describe your idea
Add a filter option to the library to filter out the shown items by files.

feat: tutorials button on each section

Is your feature request related to a problem? Please describe.
As the add-on gets larger, it's more overwhelming to learn and work with it.

Describe your idea
Add a button to each section to open the related docs / tutorials for that section. The links should be stored on an online source and be categorized based on each version, so they'll point to the relative content on each version.

Media
24-01-08_235925

fix(rigging): select similar bones with empty bone name property

System Information
Operating system: All

Blender Version
Broken: version: All
Worked: -

GBH Tool Version
Broken: version: 2.2.0.alpha.3
Worked: -

Short description of error
Using gbh.select_similar_bones( ) with empty prefs.arm_name_bone property produces ValueError.

Exact steps for others to reproduce the error
Create a rig for a hair object, clean the prefs.arm_name_bone property, change to pose mode then use gbh.select_similar_bones( ).
Produced error:

File: "/operators/rig_ops.py", line 399
in execute
    name_pattern = bone_name.split(gbh_rig.arm_name_bone)[-1]
ValueError: empty separator

feat: use active object as hair object

Is your feature request related to a problem? Please describe.
Selecting a hair object on a file that has multiple hair objects could be frustrating.

Describe your idea
Add a toggle to hair panel to use the active object in the viewport as the hair object.

feat(presets): add presets hub

Describe your idea
Create a section for users to upload and share their custom-made presets.

Describe alternatives you've considered
Use discord server or other third-party solutions for it, and just add a section that guides the user to those third-party solutions. Or just list them in the UI, so the users can sell their presets on third-party solutions.

TO-DO:

  • Gather user feedback on this matter.

feat(reporting): use pop-up reporting menu for info

Is your feature request related to a problem? Please describe.
Using the built-in reporting system for showing informatic messages is too subtle for some purposes, and some might not notice it.

Describe your idea
Use the custom pop-up reporting system to show informatic messages where it makes sense.

feat: convert add-on to extension

Is your feature request related to a problem? Please describe.
The old way of creating add-ons is considered deprecated, and legacy add-ons should be converted into extensions.

Additional context
Follow this guideline to convert the add-on into an extension.

feat: add hair simulation

Is your feature request related to a problem? Please describe.
The curves based Blender hair system does not have any simulation feature yet.

Describe your idea
Add hair simulation using simulation nodes and geometry nodes.

Describe alternatives you've considered
Add a new panel to the add-on and have fixed sets of parameters for the hair simulation, like the old hair particle system. The backend for the simulation still could be based on geometry nodes, or it could be based on cloth simulation on a strained mesh object, alternatively it could be based on a custom external logic.

  • Decide which route is the most suitable and future-proof.
  • Research hair simulation in general.

fix(rigging): weight painting with external parent bone

System Information
Operating system: All

Blender Version
Broken: All
Worked: -

GBH Tool Version
Broken: 2.2.0.alpha.3
Worked: -

Short description of error
When using automatic weight painting, the external parent bone won't work.

Exact steps for others to reproduce the error

  1. Create a mesh hair with its armature.
  2. Set parent bone to "Select Parent Bone from Another Armature" and select the bone.
  3. Click on "Automatic Weight Paint".

fix(rigging): clear parent pointer on manual parent deletion

System Information
Operating system: All

Blender Version
Broken: All
Worked: -

GBH Tool Version
Broken: 2.2.0.alpha.3
Worked: -

Short description of error
Deleting parent armature won't clean hair armature's parent and doesn't set the value of bpy.context.window_manager.gbh_rig.arm_parent_bone to "None".

Exact steps for others to reproduce the error

  1. Generate an armature using GBH Tool.
  2. Set parent bone type to "Select Parent Bone from Another Armature".
  3. Select the parent armature.
  4. Remove the parent armature manually, while it is still selected by the GBH Tool.

feat(rigging): add bones dynamics

Is your feature request related to a problem? Please describe.
No

Describe your idea
Add a way to have bone dynamics with created hair armature.

Settled idea:

  1. Leave the choice to the user to use third-party add-ons (such as wiggle bones, spring bones and bone dynamics pro).
  2. Have an automated bone dynamics setup using constraints. This could be achieved by providing the ability to apply constraints in batch based on the given relations (such as child to parent, or children to root and more).
  3. Have an automated bone dynamics setup using rigid-body physics.

The options that should be included with this version:
Be usable on any armature containing bone chains.
The option to choose the starting point of the bone dynamics using the bone position in the chain (Ex. starting from second bone from the root, or last 3 bones on the chain).
The options to set constraints properties, such as their influence or direction (Ex. parent to child or reversed).
The options to set rigid body points properties, such as size, weight, dampening and more.

Ideas for the future:
Turn the solution using constraints into a separate modular setup (could be a new node editor), for applying constraints to bones in batch.

Screenshots

bone-dynamics-constraints-concept

TO-DO:

  • Find the sensible solution.
  • Mark the features as experimental and ask for user feedback.
  • Make the base logic for applying constraints to bones in batch.

feat(rigging-UI): add rigging pie menu

Describe your idea
Add rigging pie menu in specific modes such as "Pose Mode" and "Weight Paint Mode" to quickly select bones, manipulate weight paintings and more.

TO-DO:

  • Add basic pie menu with weight painting and bone selection sections.
  • Generic bone selection logic that works with both GBH Tool and non GBH Tool armatures.
  • Make sure that the buttons are disabled dynamically in unsupported conditions.
    • Disable pie menu weight painting related buttons if the object has no vertex groups or all are deleted.
    • Make sure UI buttons are made in a way that won't be accidentally selectable when disabled. Or add a safety measure to the logic.

Potential features:

  • Select similar bones by their position in the chain.
  • Select chain.
  • Add bone constraints to the selected bones.

test(rigging): rigging pie menu behavior

Description
Test rigging pie menu in different scenarios.

Steps

  1. Test the pie menu in different modes (object mode, weight paint mode, pose mode, etc.).
  2. Test the pie menu with different armatures created by GBH Tool with different naming schemes.
  3. Test the pie menu with non GBH Tool armatures.

Expected Outcome

  • Pie menu buttons should be disabled in unsupported scenarios.
  • Pie menu buttons should behave normally and be easily selectable in supported scenarios.
  • Pie menu shouldn't appear in unrelated modes.

Actual Outcome
[Describe what actually happened during the test.]

Test Environment

  • Operating System: All
  • Version/Commit: 2.2.0.alpha.3

feat(presets): add advanced presets

Describe your idea
Add more advance presets which are not only adding a set of node groups to hair object, but also have the ability to do extra work such as:

  1. Determining the shape of the object that the hair is attached to.
  2. Applying and adjusting premade procedural hairstyles.
  3. Scriptable presets that can do extra operations when applying a preset to a hair object. This could be done with creating a new node system with custom nodes for operators, or by creating operators library combined with a list UI as presets creator.
  4. Each preset can have its own UI for adjustments before applying it to the hair object.
  5. Add options for managing and renaming presets.

Describe alternatives you've considered
Only create premade hairstyles as "Object" presets and make them adjustable before applying them to a hair object.

refactor: convert functions to methods

Description and Problem
Functions are scattered.

Proposed Changes
Convert functions to class methods where it makes sense.

Benefits
Cleaner, more unified code.

Tests

  • Check the code under normal conditions.
  • Check the code with problematic internet connection, unusual scenarios and repeatedly.
  • Check the results and reportings to make sure they work as intended.

Checklist

  • Proposed changes have been reviewed and approved.
  • Code has been reviewed and has passed the tests.
  • Documentation has been updated (if necessary).
  • Code follows coding standards.

refactor: add annotation to functions and methods

Proposed Changes
Add return type hint, default parameter values or define parameter types of functions and methods, where it makes sense.

Benefits
Clarity and possibility for optimization (Ex. defining default values instead of passing them each time).

Tests

  • Make sure changed areas work as before.
  • Look for possible bugs under abnormal conditions.

Checklist

  • Proposed changes have been reviewed and approved.
  • Code has been reviewed and has passed the tests.
  • Documentation has been updated (if necessary).
  • Code follows coding standards.

feat(rigging): use another armature as parent

Is your feature request related to a problem? Please describe.
Having the parent bone in the armature created by GBH Tool could be limiting.

Describe your idea
Add the option to use a bone (something like head bone) in another armature as parent instead of creating a parent bone inside the armature created by GBH Tool.

TO-DO:

  • Experiment with bpy.ops.object.parent_set(type='BONE') and bpy.ops.object.parent_set(type='BONE_RELATIVE').

feat(rigging): add select similar for multiple bone selection

Is your feature request related to a problem? Please describe.
Select similar bones feature, only selects similar bones to the active bone.

Describe your idea
Select similar bones, finds the similar bones to all the selected bones, instead of only the active bone.

fix(rigging): hair scale is not transformed to its armature

System Information
Operating system: All

Blender Version
Broken: All
Worked: -

GBH Tool Version
Broken: 2.2.0.alpha.3
Worked: -

Short description of error
When creating an armature if the hair object's scale or its parent's scale is anything other than 1, the scale is not transformed into the created armature.

Exact steps for others to reproduce the error

  1. Create a hair object and scale it or its parent in object mode.
  2. Select the hair object with GBH Tool and click on "Generate Armature".

refactor: add units to properties

Description and Problem
[Briefly describe the purpose and context of the refactoring and the problem it aims to address.]

Proposed Changes
Add unit="MASS" ("MASS", "LENGTH", "TIME", etc.), to the properties that use units, instead of only adding the units to their names.
Update the units in the logic and pre-built node groups as well.

Benefits
More unified code and adaptive units.

Tests

  • Test the changed properties in different measuring systems.
  • Make sure that all the leftover units added to the names and layout.lablel( ) are deleted.

Checklist

  • Proposed changes have been reviewed and approved.
  • Code has been reviewed and has passed the tests.
  • Documentation has been updated (if necessary).
  • Code follows coding standards.

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.