Creates a hair system with hair guides derived from mesh objects.
#35062
Closed
opened 10 years ago by Jandals
·
60 comments
No Branch/Tag Specified
main
asset-shelf
brush-assets-project
blender-v2.93-release
blender-v3.3-release
blender-v3.4-release
xr-dev
blender-v3.2-release
blender-v3.1-release
screenshots-manual
gltf_vtree
blender-v2.83-release
blender-v3.0-release
xr-controller-support
studio-sprite-fright
asset-browser-poselib
blender-v2.92-release
blender-v2.91-release
blender-v2.90-release
greasepencil-addon
xr-world-navigation
soc-2019-openxr
blender-v2.82-release
blender-v2.81-release
filebrowser_redesign
blender-v2.80-release
blender2.7
blender-v2.79b-release
blender-v2.79a-release
blender-v2.79-release
fbx_experiments
blender-v2.78b-release
collada-2
blender-v2.78-release
rigify_fixes
fbx_io_export_ignore_parents
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76a
v2.76
v2.76-rc3
v2.76-rc1
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72
v2.72-rc1
v2.71
v2.71-rc1
v2.70a
v2.70
v2.70-rc
v2.68
v2.67b
v2.67a
v2.67
v2.66a
v2.66
v2.65a
v2.65
v2.64a
v2.64
v2.63a
v2.63
v2.62
v2.61
v2.60a
v2.53
v2.54
v2.55
v2.56
v2.56a
v2.57
v2.57a
v2.57b
v2.58
v2.58a
v2.59
v2.60
v2.69
Labels
Apply labels
Clear labels
good first issue
legacy module/Animation & Rigging
legacy module/Core
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/User Interface
legacy module/VFX & Video
legacy project/2.81
legacy project/2.82
legacy project/2.83
legacy project/2.90
legacy project/2.92
legacy project/2.93
legacy project/3.0
legacy project/3.1
legacy project/3.2
legacy project/3.4
legacy project/Add-ons (BF-Blender)
legacy project/Add-ons (Community)
legacy project/Alembic
legacy project/Animation & Rigging
legacy project/Asset Browser
legacy project/Automated Testing
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Blender Cloud
legacy project/Code Quest
legacy project/Collada
legacy project/Compositing
legacy project/Core
legacy project/Cycles
legacy project/Datablocks and Libraries
legacy project/Dependency Graph
legacy project/Documentation
legacy project/EEVEE & Viewport
legacy project/Freestyle
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Physics
legacy project/Game Python
legacy project/Game UI
legacy project/Geometry Nodes
legacy project/Good First Issue
legacy project/Grease Pencil
legacy project/Images & Movies
legacy project/Import/Export
legacy project/Infrastructure: Blender Buildbot
legacy project/Infrastructure: Blender Web Assets
legacy project/Infrastructure: Websites
legacy project/Modeling
legacy project/Modifiers
legacy project/Motion Tracking
legacy project/Nodes
legacy project/Nodes & Physics
legacy project/OpenGL Error
legacy project/Overrides
legacy project/Papercut
legacy project/Physics
legacy project/Pillar
legacy project/Pipeline, Assets & I/O
legacy project/Platform: Linux
legacy project/Platform: macOS
legacy project/Platforms, Builds, Tests & Devices
legacy project/Platform: Windows
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Sculpt, Paint & Texture
legacy project/Straightforward Issue
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Translations
legacy project/USD
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Video Sequencer
legacy project/Virtual Reality
papercut
Priority › High
Priority › Low
Priority › Normal
Priority › Unbreak Now!
Status › Archived
Status › Confirmed
Status › Duplicate
Status › Needs Information from Developers
Status › Needs Information from User
Status › Needs Triage
Status › Resolved
straightforward issue
Type › Bug
Type › Design
Type › Known Issue
Type › Patch
Type › Report
Type › To Do
No Label
good first issue
legacy module/Animation & Rigging
legacy module/Core
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/User Interface
legacy module/VFX & Video
legacy project/2.81
legacy project/2.82
legacy project/2.83
legacy project/2.90
legacy project/2.92
legacy project/2.93
legacy project/3.0
legacy project/3.1
legacy project/3.2
legacy project/3.4
legacy project/Add-ons (BF-Blender)
legacy project/Add-ons (Community)
legacy project/Alembic
legacy project/Animation & Rigging
legacy project/Asset Browser
legacy project/Automated Testing
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Blender Cloud
legacy project/Code Quest
legacy project/Collada
legacy project/Compositing
legacy project/Core
legacy project/Cycles
legacy project/Datablocks and Libraries
legacy project/Dependency Graph
legacy project/Documentation
legacy project/EEVEE & Viewport
legacy project/Freestyle
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Physics
legacy project/Game Python
legacy project/Game UI
legacy project/Geometry Nodes
legacy project/Good First Issue
legacy project/Grease Pencil
legacy project/Images & Movies
legacy project/Import/Export
legacy project/Infrastructure: Blender Buildbot
legacy project/Infrastructure: Blender Web Assets
legacy project/Infrastructure: Websites
legacy project/Modeling
legacy project/Modifiers
legacy project/Motion Tracking
legacy project/Nodes
legacy project/Nodes & Physics
legacy project/OpenGL Error
legacy project/Overrides
legacy project/Papercut
legacy project/Physics
legacy project/Pillar
legacy project/Pipeline, Assets & I/O
legacy project/Platform: Linux
legacy project/Platform: macOS
legacy project/Platforms, Builds, Tests & Devices
legacy project/Platform: Windows
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Sculpt, Paint & Texture
legacy project/Straightforward Issue
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Translations
legacy project/USD
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Video Sequencer
legacy project/Virtual Reality
papercut
Priority › High
Priority › Low
Priority › Normal
Priority › Unbreak Now!
Status › Archived
Status › Confirmed
Status › Duplicate
Status › Needs Information from Developers
Status › Needs Information from User
Status › Needs Triage
Status › Resolved
straightforward issue
Type › Bug
Type › Design
Type › Known Issue
Type › Patch
Type › Report
Type › To Do
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
19 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender-addons#35062
Reference in new issue
There is no content yet.
Delete Branch '%!s(<nil>)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Project: Blender Extensions
Tracker: Py Scripts Upload
Blender: 2.66
Category: Object
Python: 3.2
Script name: HairNet
Wiki page: https://en.blender.org/index.php/Extensions:2.6/Py/Scripts/Objects/HairNet
Download: https://github.com/Jandals/HairNet
Local Download:HairNet.py.zip
Author(s): Rhett Jackson
Status: Open
%%%HairNet lets users create simple meshes to define the basic shape of a hair system. If a simple mesh plane is used as a starting point, one edge of the plane is marked as a seam. This edge will be the root from which all hairs start and each edge loop that intersects it will become a hair guide. Multiple meshed can be used as long as the number of vertices in each "guide hair" in every mesh is the same.%%%
Changed status to: 'Open'
%%%Version 0.2 does some extra checking so that HairNet can manage multiple hair systems, each derived from a separate mesh object.%%%
%%%Version 0.4 adds a second button aimed at creating hair systems from an object containing only edges (specifically, a ZBrush fiber mesh). Hair guides could be created backwards and HairNet doesn't account for that yet,%%%
%%%Version 0.4.5 adds a button for converting curves (without bevel objects) to hair systems.%%%
Added subscriber: @AniruddhaHardikar
Added subscriber: @khtrammell-1
Hi Rhett,
I'm using Hair Net for an upcoming character creation course over a Blender Cookie. It's a very powerful tool already, fantastic job! I'm running into a wonky issue though:
Whenever I add a second hair system, the particles/points of the first hair-net-generated hair system are all moved slightly, despite touching every one in particle edit mode to "lock" them in place.
Thank you khtrammell. The problem was created by having the script disconnect and then reconnect the hair system while moving all the hair vertices into place. I was able to observe the same effect manually by clicking (twice) the "Disconnect Hair" button which appears when combing hair in Particle Edit Mode. It appears to have been an unnecessary step so the script no longer does it.
Version 0.4.5 required users to manually select a particle system that matched the name of the mesh object being used as a guide. Version 0.4.6 will find and use a matching particle system for you.
@Jandals -
Oh yeah, 0.4.6 works like a charm! Thanks so much for the quick fix. I'm excited to showcase the tool in my new course.
@Jandals
Thanks a ton for fixing the bug! It’s been working great ever since.
I have been very EAGER to explore the workflow that’s now possible thanks to Hairnet. I know a lot of studios employ this method where modelers build a hair style with geometry and hair is simply generated from it. It’s great that Blender can finally do this. As I continue to work extensively with your add-on I’m developing some ideas that could make the "Hairnet workflow" much more efficient. Maybe we could work together to level up the add-on! My Hairnet workflow thus far looks like this:
It only took a couple redo’s to realize that the majority of default hair settings never work, and remembering/re-imputting them in each time was a big hinderance. So I began to maintain a quick script for ‘saving’ the settings I tweaked each time. Now when I generate the hair I can simply click ‘run script’ and the hair updates with my ‘preset’. That worked well enough yesterday.
Today, I’m realizing that in order to really fine tune a hairstyle with Hairnet, I need to use multiple geometry pieces which usually require slightly different settings (clump, roughness, etc). Also, I’m finding that modeling a low-res piece is easiest to manage for tweaking yet when I generate hair from it, subdividing the geometry produces more appropriate numbers of strands. Therefore I’d like suggest a wish list to make Hairnet a little more fully-featured:
What do you think? If you don’t have the time or don’t share the interest, I certainly understand.
@khtrammell-1
I am grateful for the feedback you have from using HairNet in a workflow that demands a higher level of performance than I can test for. I'd enjoy working on the script to make it more useful and your input is will be very meaningful.
Here are my first thoughts on your wish list items:
I would like to see the "quick script" you are using so I can get a better idea of the work it is doing for you. That'll help me figure out how much I can do within HairNet itself.
Tag each proxy object with a preset - It has taken me a while, but think I see where this is going. See #3
Automate hairnet generation - Yes! After this last revision, HairNet is a bit smarter about connecting a proxy object with its hair settings. It should be quite easy to update it further so that all proxy objects can be processed at one time.
In my mind, tagging them might end up being redundant. That will become clear as we correspond a little more. I can see the usefulness of a workflow which lets you assign a "curly bouffant" hairstyle to proxy object #1 and make that association stick so you don't ever have to redefine a hair style's settings. I think that "transplanting" hair settings as I mentioned would achieve that but you would know better than I. If it is necessary to pre-tag objects with a hair style, it ought to be possible. I have done something like it before so HairNet should be able to make a list of proxy-object->hair-style pairs for each object.
Those are my first thoughts. I hope we can keep this going and I'll look forward to hearing more from you either here or via email.
Added subscriber: @Samir-Osman
Added subscriber: @PaulGeraskin
Hi.
Great tool!
I found this script for maya http://www.thundercloud-studio.com/index.php?page=shop%2F1.script%2F0.GMH2 and i was impressed when i found HairNet too.
@Jandals could we improve the HairNet based on Maya's script?
I mean this:
Make Particle system at the same mesh. Without a head object or any other reference object. As in Maya's script you can see how they edit polygons. http://i.imgur.com/EAMiONq.png
This will solve some issues as we can use the same hair on a polygon and we don't need to move hair's orgin.
Also we can put a integer value how many hairs will be generated on the mesh. Sometimes it;s ok to have 3 hairs and sometimes it's ok to have 30 hairs.
Make distribution with some thickness http://i.imgur.com/0KhtAyW.png
You can see on side view a bit thickness.
Make different types of distribution. http://i.imgur.com/0sqPcH1.png
Also, could you put your work at github? I could help you with some programming and could make pull requests.
Also, what's license of your script?
Thanks.
You can also see some examples maya's script here http://3dpapa.ru/gmh2-script-by-thundercloud-studio-creates-maya-hair/ .
But sorry it's in russian.
@PaulGeraskin Thanks for making suggestions and sharing the examples. There are a lot of good ideas there.
I hadn't considered attaching the generated hair to the proxy object and I can see how useful it would be. I have added that as an option so users can put the hair systems on either the proxy objects or on a separate "head" object.
I had always intended that the script would be GPL but I haven't made it official.
When I get the code on GitHub, I'll get in touch with you. Thank you for offering to help out.
@Jandals Thanks for answering. Waiting you on Github.
I'm certanly sure that we can make the same quality tool as Maya's one. You already did good job!
Added subscriber: @item412
Made a couple of quick changes to restore features:
Some selections will cause errors when HairNet is not used as intended. It still needs a way to handle them without failing.
Added subscriber: @bireos
Added subscriber: @Sparazza
Added subscriber: @sage2014
Added subscriber: @fjg3d
Hi there, hope this is a good place for a comment/bug report. Is this addon still being supported? just curious since its useful...
The current version doesn't seem to work with fibermesh from ZB. This worked with past versions (quite a while ago).
I'm selecting the fibermesh object first, then the hair emitter, then clicking 'Add hair from Fibers'. I'm using the latest from https://github.com/Jandals/HairNet.
Thanks for reporting, Frederick. I'm glad to hear HairNet is useful to you. It sounds like I broke a connection to one of the helper functions. I'll try to find time this week to sort that out.
I fixed the error Frederick reported. Converting from fibers should work like it used to do.
Tried the latest and my initial test seems to work! Thanks!
fjg
Found a couiple of issues:
Advanced option not available: Clicking the advanced hair checkbox before the initial combing will make the guide hairs lose the fibermesh styling. However, the initial combing makes the advanced option is unavailable.
Switching to interpolated children mode will make the guide hairs go a bit crazy.
{F304978}
Those are both properties of Blender's hair system. I don't think the addon can do anything about them.
I think that combing overrides the settings available when "advanced" is checked so Blender disables it when you manually edit particle hairs.
Interpolated child hairs follow the guide hairs loosely because they are filling-in the spaces between guides rather than just following their parent hair.
Added subscriber: @DustinRussell
Where is the best place to get the latest version?
The "Local Download" and the external link to github.com should both lead to the most recent version.
Added subscriber: @BrendonMurphy
hi, is this still valid? @Jandals
As far as I know, the plugin still works. I haven't tested it in a while so I'll have to find some time to make sure. The instructions in the wiki page and the addon itself should still be valid.
hi @Jandals If your interested I'm putting some addons from the tracker into contrib, maybe you could double check this is still working ok?
Thanks for your interest, Brendon. I have done a run-through and it appears that Everything still works fine.
Changed status from 'Open' to: 'Resolved'
@Jandals
hi, I've committed this to addons contrib so it can be a part of the 2.79 addons contrib pack, sorry for the late run.
It's possible we may change how contrib works in 2.8 series so I cannot guarantee the addon inclusion past 2.79 & the last of the series.
If you have any updates please post to this task or create a new task.
Thanks for your participation & welcome. We look forward to seeing you again in the 2.8 series.
Brendon.
Added subscriber: @user1
I tried to use this amazingly well working addon to convert makehuman's character eyelashes (alpha textured planes) into real hair, and it did the job as expected, but when i pose the eyelid, the created hair doesn't follow. I pushed the particle system in front of the armature modifier, but that didn't do the trick. Checking "use modifier stack" in the particle settings makes a real mess, breaks the hairnet result. Is this a bug? My only, cumbersome way to circumvent this is described in this video:
MH eyelashes made real
Added subscriber: @t3du
Hi Rhett this addon is so great!!! it allows a funcionality that particle hair really needs to incorporate. It will be such a contribution to be able to use it in 2.8 with eevee hair render. If you don't mind me asking, are you considering to upgrade it to 2.8 in a near future? thanks a lot =)
Hi Eduardo. Thanks for the comment. I would like to make sure that HairNet works in 2.8 but, as you may have guessed from my delayed reply, I haven't got much time to commit to it right now. I wish I had a timeline for keeping it current, but I can't predict what it'll take to update to 2.8.
But updating HairNet is on my mind and I'd like to add a few features to it. But I haven't yet got a plan to make it happen.
Added subscriber: @UraKozachok
Changed status from 'Resolved' to: 'Open'
Hello, dear Rhett Jackson (jandals)!
I really need a working version of the add-on for Blender 2.8.
Is it planned to be updated and when ?
Waiting for an answer, Yuriy.
Added subscriber: @brecht
Changed status from 'Open' to: 'Resolved'
Please leave old tasks closed.
Added subscriber: @Kalessin
I'm a bit new to this, but I sent a pull request with changes I made to make this work with 2.8.
cool bro thank you both for such contribution =)
Please give version 2.8 if you already have one.
Very necessary!
You can find the changes here : https://github.com/NicSJ/HairNet
Please note that I only changed the code to make it work with 2.8, i.e. I just made it stop throwing up errors. I have not fixed any issues that it might of had or added anything.
It sounds like Nicholas and I have done the same job. When I clear out everything that throws up an error, HairNet doesn’t move hair particles into place because of a bug in Blender that has not yet been addressed.
I’ll look at Nicholas’s changes, in case he’s done something different than I have, and I’ll try it with the latest build of Blender, in case the bug we’re waiting on has been resolved.
I installed Nicholas version, it says upgrade to 2.8 required, despite not throwing any errors, hairnet option is not enabled so i can not used it. Time will solve this good day!
Added subscriber: @PierreSchiller
I am testing it on 2.9 today. Will be back with feedback. Thanks for making such amazing addon.
Added subscriber: @fatboyzzfatboyzz