Mesh Sequence Cache (ABC) an hair interpolated children distribution issue (triangulate modifier seem to fix it) #92561
Labels
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
9 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#92561
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
System Information
Operating system: Ubuntu 20.04
Graphics card: GTX 1080
Blender Version
Broken:
d7b231baa8
Short description of error
When applying a Mesh Sequence Cache (ABC) to a mesh with hair, does not respect the hair correctly. Mesh Cache (PC2) Works correctly.
The PC2 reacts the way I would have expected the object to react.
Exporting to USD also experiences the same issue as ABC.
The file has a few different objects in it, one has the original hair setup. One has an armature (with simple animation). One has this and the hair on it. One has a ABC mesh sequence cache applied to it (which is the issue). and one has a PC2 mesh cache applied to it (works fine)
Aim
We want our animators to animate, without hair on the armature, as this would slow down the file and increase file size.
Once animation is ready to light / render / comp, we want to bake out the animation to ABC, apply the mesh cache to the object with hair, and render that.
Exact steps for others to reproduce the error
bug_v001.blend
untitled.abc
untitled.pc2
Added subscriber: @candreacchio
Files:
bug_v001.blend
untitled.abc
untitled.pc2
These are all relatively mapped, so put them all in the same folder!
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscriber: @dr.sybren
The mesh cache only deals with mesh data, so the importer doesn't produce curves. ABC & USD try to import hair as curves; however, this is not properly supported by Blender's modifier system. The Alembic importer in Blender 2.79 hacked around this by doing things that were banned in 2.80. To fix this properly, modifiers need to be able to output more than just mesh data. This work is tracked in #51311, and may gain some traction once Blender has a new hair object.
Added subscriber: @YegorSmirnov
Hm, I don't see the problem?2021-11-01_20-37-40.mp4
Hi @dr.sybren ,
I am not trying to bake out the curve data into the ABC file. i am only trying to bake out the mesh data. as in:
As in, I am trying ot use ABC, exactly like PC2. No data of hair to be stored in the ABC file.
Hey Yegor.
If you keep it on the frame when the file opens, and toggle the modifier on and off, you should see that the hair shifts around.
This is a test file, however on our production file, the hair on our creature is going beneath its skin, giving a 'patchy' look and not respecting how we have groomed it.
Added subscribers: @brecht, @lichtwerk
I can confirm as well.
@dr.sybren : this is about the hair system (interpolated children distribution) behaving awkward on a ABC driven mesh (not about real curves in ABC).
Couple of notes:
Original Hair Setup
&Armature with Hair
in restpose (they should, but if you look closely I think they arent)ee8aad79c1
), dristribution is not the sameMaybe @brecht can let us know if the distribution code of interpolated children is just in the status of a
Known Issue
?That being said, there is one possible way to get consistent output throughout the pipeline (at least as far as I can tell) -- so
Original Hair Setup
,Armature with Hair
&ABC Mesh Cache With Hair
could all look the same:Triangulate
modifier before the particle system in each step of the pipelineUse modifier stack
on the particle systembug_v001_triangulate_use_modifier_stack.blend
The usage of the triangulate modifier also reminds me of #91777 (Mesh is not being deformated correctly via Mesh Deform Modifier (quads, tris behave better)) (which is nice to know in itself)
Blender 3.0 - Mesh Sequence Cache (ABC) does not work correctly with hairto Mesh Sequence Cache (ABC) an hair interpolated children distribution issue (triangulate modifier seem to fix it)Note this will probably all change for the better with #68981 (New curves object type)
I don't think this is a known issue. As far as I know as long as the mesh topology coming from the Alembic file is stable, and the fix from
ee8aad79c1
to keep stable original coordinates is giving stable ORCO, then the child particle distribution should remain stable too,Why it's failing in this file is not immediately clear to me, needs some deeper investigation.
Just to clarify, this has happened in a more prominent way on a production scene. The scene provided is myself recreating the issue to give an example of what is going wrong, and not the worst case of it.
Is this something that was recently introduced? Did it ever work well for you @candreacchio in older versions of Blender?
i can test this weekend if it would be useful. but no this is the first time we are trying it with hair.
2.80 introduced the jump on enabling the modifier, in 2.79, you can enable/disable without the jump:
bug_v001_279.blend
(but then again in 2.79 the distribution never really looks the same, so
Original Hair Setup
,Armature with Hair
&ABC Mesh Cache With Hair
all look [slightly] different -- and in 2.79, the triangulate modifier workaround does not seem to help)Added subscriber: @kevindietrich
After some investigation the problem appears to be that the ORCOs as expected by the particle system have to be in the 0...1 range, at least this is what the particle system is using to create & store ORCOs when none exist on the Mesh (see https://developer.blender.org/diffusion/B/browse/master/source/blender/blenkernel/intern/particle_distribute.c$1000). However, the ORCOs as read from Alembic or as generated via
MOD_deform_mesh_eval_get
are not normalized.This little patch fixes the issue:
So, if all ORCOs should be stored in 0...1 range, then I can make a patch to ensure that all areas (like Alembic, USD, etc.) are also outputting normalized ORCOs.
But also, it seems like the code in
MOD_deform_mesh_eval_get
is ignoring a potential CD_ORCO layer on the mesh? At least one should be read from the Alembic file but it is never used.Added subscriber: @Memento
Removed subscriber: @Memento
Maybe @brecht knows more about how ORCOs should be stored? Also I find it strange that, if ORCOs should always be stored normalized, that they aren't normal when they're read from Alembic -- after all, they should have already been normal when they were written.
They are currently stored normalized. I'd actually like to change that to not be the case, but it's not a trivial change.
In other applications this is often called
Pref
(P
for position, andref
for reference like a a reference pose in rigging). So for interop, I think it would be best to read/write orcos as an unnormalizedPref
attribute in Alembic and USD. That could be done without changing how it's stored internally.This issue was referenced by
77694b571f
This issue was referenced by
02ab4ad991
Will this be committed for the next blender release?
Added subscriber: @Memento
Removed subscriber: @Memento
Changed status from 'Confirmed' to: 'Resolved'