Hair Dynamics: collision doesn't work (exploding) #67958

Closed
opened 2019-07-31 01:40:33 +02:00 by Tommy Hjalmarsson · 24 comments

System Information
Operating system:Ubuntu Studio 19.04

Blender Version
Broken: current master @ 84c537e685
Worked: 2.82 alpha @ 6bf0e9dbb1, 2.81a release

Short description of error
Open a 2.79 file with working hair dynamic in current master and the hair goes in all directions.

Exact steps for others to reproduce the error

The first 30 frames have been cached by Blender 2.79, so they show the correct dynamics. After that new dynamics are computed and are exploding.

Frame 20 (cached 2.79 dynamics): image.png

Frame 47 (2.82 alpha dynamics): image.png

Original example: BadHairDay2.jpg

**System Information** Operating system:Ubuntu Studio 19.04 **Blender Version** Broken: current master @ 84c537e685 Worked: 2.82 alpha @ 6bf0e9dbb1, 2.81a release **Short description of error** Open a 2.79 file with working hair dynamic in current master and the hair goes in all directions. **Exact steps for others to reproduce the error** - Open [slightly-simplified-279.blend](https://archive.blender.org/developer/F8305258/slightly-simplified-279.blend) - Play the animation. The first 30 frames have been cached by Blender 2.79, so they show the correct dynamics. After that new dynamics are computed and are exploding. Frame 20 (cached 2.79 dynamics): ![image.png](https://archive.blender.org/developer/F8305262/image.png) Frame 47 (2.82 alpha dynamics): ![image.png](https://archive.blender.org/developer/F8305266/image.png) Original example: ![BadHairDay2.jpg](https://archive.blender.org/developer/F7638325/BadHairDay2.jpg)

Added subscriber: @hjalle

Added subscriber: @hjalle

#73745 was marked as duplicate of this issue

#73745 was marked as duplicate of this issue
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Tested on linux with simple file from 2.79 [incl. interpolated children -- which are a known source of issues in 2.8] but could not reproduce...

I guess we need an example .blend file where this happens... mind sharing?

Tested on linux with simple file from 2.79 [incl. interpolated children -- which are a known source of issues in 2.8] but could not reproduce... I guess we need an example .blend file where this happens... mind sharing?

The file is a 2.79b file to be open in v2.80.
2.79b good hair day, 2.80 bad hair day.
This file is tested on 3 computers, all Ubuntu Studio 19.04
Go to frame '0' and press play.

T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file.blend

The file is a 2.79b file to be open in v2.80. 2.79b good hair day, 2.80 bad hair day. This file is tested on 3 computers, all Ubuntu Studio 19.04 Go to frame '0' and press play. [T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file.blend](https://archive.blender.org/developer/F7639379/T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file.blend)
Member

Will have a look...

Will have a look...
Member

first note: getting this on file load:

add_operation: Operation already exists - 18)Particles Component : OBHair( affects_directly_visible: false) has PARTICLE_SYSTEM_EVAL(Pile_over_2)
BLI_assert failed: /blender/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc:230, add_operation_node(), at '!"Should not happen!"' Aborted (core dumped)

checking further...

first note: getting this on file load: `add_operation: Operation already exists - 18)Particles Component : OBHair( affects_directly_visible: false) has PARTICLE_SYSTEM_EVAL(Pile_over_2)` `BLI_assert failed: /blender/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc:230, add_operation_node(), at '!"Should not happen!"' Aborted (core dumped)` checking further...
Member

Some progress:
Issue mentioned above (cannot open file in Debug builds) seems to be caused by two particle systems in the file having the same name (there are two equally named Pile_over_2)
If I rename the second one (to e.g. to Pile_over_2_variant), I can open the file.
T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file_part_variant_renamed.blend

Normally equally named particle systems shouldnt be possible, I guess (e.g. renaming one to the same name that already exists, will result in a unique name).
I can only assume this happened by using Duplicate Particle System operator? [this seems to have a bug in that it does not ensure a unique name -- fix for it in {D5632}].

Now on to the "bad hair day":
This is caused by something in the collision modifier, will need some more investigation...

Some progress: Issue mentioned above (cannot open file in Debug builds) seems to be caused by two particle systems in the file having the same name (there are two equally named `Pile_over_2`) If I rename the second one (to e.g. to `Pile_over_2_variant`), I can open the file. [T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file_part_variant_renamed.blend](https://archive.blender.org/developer/F7710619/T67958_Tommy_Hjalmarson_Hair_Dynamic_2.79_file_part_variant_renamed.blend) Normally equally named particle systems shouldnt be possible, I guess (e.g. renaming one to the same name that already exists, will result in a unique name). I can only assume this happened by using `Duplicate Particle System` operator? [this seems to have a bug in that it does not ensure a unique name -- fix for it in {[D5632](https://archive.blender.org/developer/D5632)}]. Now on to the "bad hair day": This is caused by something in the collision modifier, will need some more investigation...
Philipp Oeser changed title from v2.80 Dynamic Hair dosn't work (linux) to Dynamic Hair collision dosn't work (exploding) 2019-08-30 12:39:12 +02:00
Philipp Oeser changed title from Dynamic Hair collision dosn't work (exploding) to Hair Dynamics: collision dosn't work (exploding) 2019-09-04 11:45:13 +02:00

Added subscriber: @iss

Added subscriber: @iss

I am not able to reproduce this (after clearing cache).

@hjalle Is this still an issue with latest build, even if there is workaround? https://builder.blender.org/download/

I am not able to reproduce this (after clearing cache). @hjalle Is this still an issue with latest build, even if there is workaround? https://builder.blender.org/download/

Changed status from 'Confirmed' to: 'Needs User Info'

Changed status from 'Confirmed' to: 'Needs User Info'

Changed status from 'Needs User Info' to: 'Confirmed'

Changed status from 'Needs User Info' to: 'Confirmed'

Oops this is wrong report :/
But thread is quite old anyway, feel free to re-check...

Sorry!

Oops this is wrong report :/ But thread is quite old anyway, feel free to re-check... Sorry!

Added subscribers: @LucaRood-3, @ZedDB, @mano-wii, @dr.sybren

Added subscribers: @LucaRood-3, @ZedDB, @mano-wii, @dr.sybren

I tried to reproduce the issue (and provide new screenshots & update in the description), but doing a bisect it turns out that the hair explosion I witnessed is introduced by d42a7bbd6e (D6545). This can't be the original problem (as this report is from before that commit).

CC @LucaRood-3 @ZedDB @mano-wii

@hjalle with Blender 2.81a I can't seem to reproduce your original issue, so I'm guessing that got fixed in between. I'll keep this task open, though, as there is still exploding hair.

I tried to reproduce the issue (and provide new screenshots & update in the description), but doing a bisect it turns out that the hair explosion I witnessed is introduced by d42a7bbd6e ([D6545](https://archive.blender.org/developer/D6545)). This can't be the original problem (as this report is from before that commit). CC @LucaRood-3 @ZedDB @mano-wii @hjalle with Blender 2.81a I can't seem to reproduce your original issue, so I'm guessing that got fixed in between. I'll keep this task open, though, as there is still exploding hair.
Sybren A. Stüvel changed title from Hair Dynamics: collision dosn't work (exploding) to Hair Dynamics: collision doesn't work (exploding) 2020-01-27 17:52:36 +01:00

The problem seems to be related to the fact that some strands are partly inside and partly outside the mesh.
It seems to be resolved if you enable the option Single Sided in the collision properties.

It seems to be more of a limitation of the new system than actually a bug.

The problem seems to be related to the fact that some strands are partly inside and partly outside the mesh. It seems to be resolved if you enable the option `Single Sided` in the collision properties. It seems to be more of a limitation of the new system than actually a bug.

If it's a situation that the old hair collision system could handle and the new one cannot, this should be documented well. However, the release notes have only one line about this:

Hair now uses the same collision engine as cloth, yielding much more reliable collisions.

Which means that if it's less reliable, it's a bug.

If it's a situation that the old hair collision system could handle and the new one cannot, this should be documented well. However, the release notes have only [one line about this](https://wiki.blender.org/wiki/Reference/Release_Notes/2.83/Physics): > Hair now uses the same collision engine as cloth, yielding much more reliable collisions. Which means that if it's less reliable, it's a bug.

@dr.sybren Well it is not less reliable as the new collision system actually works.

The old one would simply just have hair strands fall through solid objects no matter what you did.

To me this problem seems to be that, as Germano pointed out, the hair strands gets stuck inside the mesh if Single Sided is off.
Which is logical because the surface will try to keep the hair inside of it if it clips into it too deep.
But at the same time it will try to push the other part of the hair out.

@dr.sybren Well it is not less reliable as the new collision system actually works. The old one would simply just have hair strands fall through solid objects no matter what you did. To me this problem seems to be that, as Germano pointed out, the hair strands gets stuck inside the mesh if `Single Sided` is off. Which is logical because the surface will try to keep the hair inside of it if it clips into it too deep. But at the same time it will try to push the other part of the hair out.

@ZedDB In the above screenshot (2.79 dynamics) the hair is indeed penetrating the skull, so it's not perfect, but it does not explode either.

IMO this change warrants a better description in the release notes of exactly what's required for people to use the new system. Currently it is described as only having upsides and not requiring anything of users to get it to work, but this report shows that this is not accurate. If people need to change the collision settings to prevent hair from exploding with a file that previously worked well enough, this needs to be documented.

@ZedDB In the above screenshot (2.79 dynamics) the hair is indeed penetrating the skull, so it's not perfect, but it does not explode either. IMO this change warrants a better description in the release notes of exactly what's required for people to use the new system. Currently it is described as only having upsides and not requiring anything of users to get it to work, but this report shows that this is not accurate. If people need to change the collision settings to prevent hair from exploding with a file that previously worked well enough, this needs to be documented.

Added subscribers: @craigievar, @grosgood

Added subscribers: @craigievar, @grosgood

Changed status from 'Confirmed' to: 'Archived'

Changed status from 'Confirmed' to: 'Archived'
Sebastian Parborg self-assigned this 2020-03-02 12:56:07 +01:00

As stated before, this is not really a bug.

The more strait forward solution here would be to disable the collision modifier on the emitter object. As it really didn't do anything is older blender versions, this should be fine.

Otherwise, just make sure that the hair strands are located outside of the mesh so that they are not stuck inside the object.

As stated before, this is not really a bug. The more strait forward solution here would be to disable the collision modifier on the emitter object. As it really didn't do anything is older blender versions, this should be fine. Otherwise, just make sure that the hair strands are located outside of the mesh so that they are not stuck inside the object.

@ZedDB, just one idea (maybe it can be indicated as TODO). But all segments that by default intersect a triangle could be static and not contribute to the animation. This could solve this and possible other problems.

@ZedDB, just one idea (maybe it can be indicated as TODO). But all segments that by default intersect a triangle could be static and not contribute to the animation. This could solve this and possible other problems.

@mano-wii right, I think that this will come up when the new hair object type makes its way into blender.

So we can try to flesh this out more then.

@mano-wii right, I think that this will come up when the new hair object type makes its way into blender. So we can try to flesh this out more then.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
7 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#67958
No description provided.