Hair particles duplication with duplicate settings enabled copies all the particles instead of one selected #83317

Closed
opened 2020-12-02 12:42:08 +01:00 by Yegor · 17 comments

System Information
Operating system: Linux-5.4.0-53-generic-x86_64-with-debian-bullseye-sid 64 Bits
Graphics card: GeForce GTX 1080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 450.80.02

Blender Version
Broken: version: 2.91.0, branch: master, commit date: 2020-11-25 08:34, hash: 0f45cab862

Short description of error
There is a case when you've done a basic groom with a bunch of hair particle systems and want to duplicate some of them to create a set of loose hair. You make a duplicate of an existing groomed hair, reduce the number of them and add more roughness or groom a little bit differently.
This is a common workflow for making a realistic haircuts in Blender as we cannot create loose hair in the same hair particle setting.
So, when you duplicate a hair system it has the "duplicate settings" unchecked in the operation options (F9) and the duplicated hair particle settings share settings with the original, which is not what we want. But if you check the "duplicate settings" checkbox Blender duplicates all the particle settings you have, instead of the only one selected. Imagine you have 10 or 20 particle settings, then you get 102 or 202 particle settings. Then you have to manually delete all of the unneeded duplicates, leaving the one needed.
I know that this hair system is in the EOL, but we're going to have it for quite a long time still. This issue is very painful for grooming and I assume is quite easy to fix.
2020-12-02_14-24-37.mp4

Exact steps for others to reproduce the error
hair_duplication_bug.blend

  • Open the file

  • Select a particle system

  • Duplicate particle settings

  • Go to F9

  • Check Duplicate Settings

**System Information** Operating system: Linux-5.4.0-53-generic-x86_64-with-debian-bullseye-sid 64 Bits Graphics card: GeForce GTX 1080 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 450.80.02 **Blender Version** Broken: version: 2.91.0, branch: master, commit date: 2020-11-25 08:34, hash: `0f45cab862` **Short description of error** There is a case when you've done a basic groom with a bunch of hair particle systems and want to duplicate some of them to create a set of loose hair. You make a duplicate of an existing groomed hair, reduce the number of them and add more roughness or groom a little bit differently. This is a common workflow for making a realistic haircuts in Blender as we cannot create loose hair in the same hair particle setting. So, when you duplicate a hair system it has the "duplicate settings" unchecked in the operation options (F9) and the duplicated hair particle settings share settings with the original, which is not what we want. But if you check the "duplicate settings" checkbox Blender duplicates all the particle settings you have, instead of the only one selected. Imagine you have 10 or 20 particle settings, then you get 10*2 or 20*2 particle settings. Then you have to manually delete all of the unneeded duplicates, leaving the one needed. I know that this hair system is in the EOL, but we're going to have it for quite a long time still. This issue is very painful for grooming and I assume is quite easy to fix. [2020-12-02_14-24-37.mp4](https://archive.blender.org/developer/F9424436/2020-12-02_14-24-37.mp4) **Exact steps for others to reproduce the error** [hair_duplication_bug.blend](https://archive.blender.org/developer/F9424438/hair_duplication_bug.blend) - Open the file - Select a particle system - Duplicate particle settings - Go to F9 - Check Duplicate Settings
Author

Added subscriber: @YegorSmirnov

Added subscriber: @YegorSmirnov

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Philipp Oeser self-assigned this 2020-12-10 18:43:45 +01:00
Member

Problem is the buttons context with the {key F9} popup here.
The operator handles the Duplicate Settings option fine actually, so a quick workaround would be to just call the operator with that option ON.
For example, you could just add this to the menu:
P1843: #83317 workaround



diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 60caa39b723..faefd803687 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -94,6 +94,12 @@ class PARTICLE_MT_context_menu(Menu):
             "particle.duplicate_particle_system",
             icon='DUPLICATE',
         )
+        props = layout.operator(
+            "particle.duplicate_particle_system",
+            icon='DUPLICATE',
+            text="Duplicate Particle System (duplicate settings)"
+        )
+        props.use_duplicate_settings = True
 
 
 class PARTICLE_PT_hair_dynamics_presets(PresetPanel, Panel):

The 'real' problem is the buttons context though, and this might be a bit tricky to track down correctly:

  • in duplicate_particle_systems_exec the context's "particle system" cannot be found if this is done from the {key F9} menu (not doing it from this menu is fine)
  • CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem).data returns NULL when this is called from {key F9}
  • tracking this a bit further reveals that SpaceProperties doesnt have a valid ButsContextPath in buttons_context() when this is called from {key F9}
  • things go downhill from there

Will stare it this for a tiny bit longer (but not too long since particles are EOL) to see if there is a quick fix.

Problem is the buttons context with the {key F9} popup here. The operator handles the `Duplicate Settings` option fine actually, so a quick workaround would be to just call the operator with that option ON. For example, you could just add this to the menu: [P1843: #83317 workaround](https://archive.blender.org/developer/P1843.txt) ``` diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 60caa39b723..faefd803687 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -94,6 +94,12 @@ class PARTICLE_MT_context_menu(Menu): "particle.duplicate_particle_system", icon='DUPLICATE', ) + props = layout.operator( + "particle.duplicate_particle_system", + icon='DUPLICATE', + text="Duplicate Particle System (duplicate settings)" + ) + props.use_duplicate_settings = True class PARTICLE_PT_hair_dynamics_presets(PresetPanel, Panel): ``` The 'real' problem is the buttons context though, and this might be a bit tricky to track down correctly: - in `duplicate_particle_systems_exec` the context's "particle system" cannot be found if this is done from the {key F9} menu (not doing it from this menu is fine) - `CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem).data` returns `NULL` when this is called from {key F9} - tracking this a bit further reveals that `SpaceProperties` doesnt have a valid `ButsContextPath` in `buttons_context()` when this is called from {key F9} - things go downhill from there Will stare it this for a tiny bit longer (but not too long since particles are EOL) to see if there is a quick fix.
Author

Could you add this workaround to Master? It won't hurt anybody, but will behave as expected at least.

Could you add this workaround to Master? It won't hurt anybody, but will behave as expected at least.
Author

Oh, sadly I've just found a new issue. Maybe it's a subject for a new report, but here it is. 2020-12-10_21-06-08.mp4
When the settings are truly duplicated (when the checkbox is already there), you can't modify any of the settings.
But when you duplicate, then check the duplication box, then delete one of the second duplicate it does give to modify settings.
2020-12-10_21-11-19.mp4

Oh, sadly I've just found a new issue. Maybe it's a subject for a new report, but here it is. [2020-12-10_21-06-08.mp4](https://archive.blender.org/developer/F9500598/2020-12-10_21-06-08.mp4) When the settings are truly duplicated (when the checkbox is already there), you can't modify any of the settings. But when you duplicate, then check the duplication box, then delete one of the second duplicate it does give to modify settings. [2020-12-10_21-11-19.mp4](https://archive.blender.org/developer/F9500602/2020-12-10_21-11-19.mp4)
Member

Can confirm the issue regarding no immediate updates (was also just mentioned in #83462).
Note you can enter/leave editmode to enforce updates [not nice, just saying...]
This might have the same roots [wrong context], I have asked to have this reported separately though

Can confirm the issue regarding no immediate updates (was also just mentioned in #83462). Note you can enter/leave editmode to enforce updates [not nice, just saying...] This might have the same roots [wrong context], I have asked to have this reported separately though
Member

Oh, sadly I've just found a new issue. Maybe it's a subject for a new report, but here it is

That is now fixed in caed4849d0

> Oh, sadly I've just found a new issue. Maybe it's a subject for a new report, but here it is That is now fixed in caed4849d0

This issue was referenced by 3834dc2f7b

This issue was referenced by 3834dc2f7b38a8a29b8cd6dbcd55ac5be7890553
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Author

Sorry to inform you, but the duplication issue persists in 2.93.1, 2.93.2 and 3.0

Sorry to inform you, but the duplication issue persists in 2.93.1, 2.93.2 and 3.0
Author

Oh, I forgot, that we ended up in a workaround, when the duplicate settings checkbox must be set from the start and then it works correctly.
If the checkbox is not checked and you check it, then it duplicates all the particle systems, not just selected. Dunno if it's still considered a bug.

Oh, I forgot, that we ended up in a workaround, when the duplicate settings checkbox must be set from the start and then it works correctly. If the checkbox is not checked and you check it, then it duplicates all the particle systems, not just selected. Dunno if it's still considered a bug.
Member

Cannot reproduce here:
T83317_.webm

Is this behaving differently for you?

Cannot reproduce here: [T83317_.webm](https://archive.blender.org/developer/F10238735/T83317_.webm) Is this behaving differently for you?
Author

Here's the fun thing. If you F9 over properties, then it works correctly. But if the cursor over the viewport and you F9, then the issue occurs.

Here's the fun thing. If you F9 over properties, then it works correctly. But if the cursor over the viewport and you F9, then the issue occurs.

This issue was referenced by 4e14fe167d

This issue was referenced by 4e14fe167dcc90bcd0f3710f23ac378e883b07ec

This issue was referenced by f9308a585e

This issue was referenced by f9308a585ecdd1d9e287caa8e0643347784c17e2
Member

Yep, can confirm for the 3DView. There are a lot of operators tied to the Properties Editor originally, but this one can be made working in the 3DView as well.
Also: this was was never really meant to duplicate all systems I think (it just happens to use copy_particle_systems_to_object internally as well -- same as the Copy Active/All to Selected Objects operators)

Yep, can confirm for the 3DView. There are a lot of operators tied to the Properties Editor originally, but this one can be made working in the 3DView as well. Also: this was was never really meant to duplicate all systems I think (it just happens to use `copy_particle_systems_to_object` internally as well -- same as the `Copy Active/All to Selected Objects` operators)
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
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
Asset Browser Project
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
4 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#83317
No description provided.