Multires Rebuild Subdivision shrinks shape #76302

Closed
opened 3 years ago by borschberry · 19 comments

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce RTX 2070 SUPER/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 442.92

Blender Version
Broken: version: 2.90 (sub 0), branch: master, commit date: 2020-05-01 14:06, hash: 60741cfe18
Worked: (newest version of Blender that worked as expected)

*Short description of error
Multires Rebuild Subdivision shrinks shape

Exact steps for others to reproduce the error
Create cube
Create multires with 2 levels and apply
Create multires and Rebuild subdivision
Start and rebuild shapes are different multires.PNG

Same for simple subdivision modifier

**System Information** Operating system: Windows-10-10.0.18362-SP0 64 Bits Graphics card: GeForce RTX 2070 SUPER/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 442.92 **Blender Version** Broken: version: 2.90 (sub 0), branch: master, commit date: 2020-05-01 14:06, hash: `60741cfe18` Worked: (newest version of Blender that worked as expected) **Short description of error* Multires Rebuild Subdivision shrinks shape **Exact steps for others to reproduce the error** Create cube Create multires with 2 levels and apply Create multires and Rebuild subdivision Start and rebuild shapes are different ![multires.PNG](https://archive.blender.org/developer/F8506075/multires.PNG) Same for simple subdivision modifier
Poster

Added subscriber: @borschberry

Added subscriber: @borschberry
Regnas commented 3 years ago

Added subscriber: @Regnas

Added subscriber: @Regnas
Regnas commented 3 years ago

Indeed.

Indeed.
ankitm commented 3 years ago
Collaborator

Added subscribers: @ankitm, @PabloDobarro

Added subscribers: @ankitm, @PabloDobarro
ankitm commented 3 years ago
Collaborator

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

Changed status from 'Needs Triage' to: 'Confirmed'
nudelZ commented 3 years ago

Added subscriber: @nudelZ

Added subscriber: @nudelZ
nudelZ commented 3 years ago

press "apply base" after that operation the new base mesh should roughly be the same as the previous one (its not 100% perfect..)

press "apply base" after that operation the new base mesh should roughly be the same as the previous one (its not 100% perfect..)
Poster

Much better, but the differences are still significant. Moreover, this is a cube example where everything should work well multires2.PNG

Thanks a lot for the tip though.

Much better, but the differences are still significant. Moreover, this is a cube example where everything should work well ![multires2.PNG](https://archive.blender.org/developer/F8516304/multires2.PNG) Thanks a lot for the tip though.

Added subscriber: @Andruxa696

Added subscriber: @Andruxa696

I think it is not correct to look as an example always on cube. Here is I did some comparison on more real examples.
For me in 90% rebuild subdivision works better then apply base , it try to be more close to high poly model then apply base. For example look on lips - in apply base lips getting too much close to each other and overlapping too much.
Screenshot_4.png

Screenshot_3.png

Screenshot_5.png

Screenshot_2.png
on hard surface rebuild subdivision also works a little bit better, but in more specific some cases apply base works better.
@borschberry rebuild subdivision task is to make level 0 and other levels as close to highpoly as possible, not to make original cube. I am artist, not developer, but in my opinion it is works as it should, the same way as it works in Zbrush.

I think it is not correct to look as an example always on cube. Here is I did some comparison on more real examples. For me in 90% rebuild subdivision works better then apply base , it try to be more close to high poly model then apply base. For example look on lips - in apply base lips getting too much close to each other and overlapping too much. ![Screenshot_4.png](https://archive.blender.org/developer/F8516630/Screenshot_4.png) ![Screenshot_3.png](https://archive.blender.org/developer/F8516629/Screenshot_3.png) ![Screenshot_5.png](https://archive.blender.org/developer/F8516628/Screenshot_5.png) ![Screenshot_2.png](https://archive.blender.org/developer/F8516627/Screenshot_2.png) on hard surface rebuild subdivision also works a little bit better, but in more specific some cases apply base works better. @borschberry rebuild subdivision task is to make level 0 and other levels as close to highpoly as possible, not to make original cube. I am artist, not developer, but in my opinion it is works as it should, the same way as it works in Zbrush.
Poster

It's not about examples at all. The question is whether the algorithm works correctly or not. The cube is the simplest example, so I use it as a volume preservation marker (it's not about saving the shape, it's about saving the volume first).

@Andruxa696 As an artist, you may be satisfied with the result, but I am not, it does not matter. If the algorithm is not working correctly, a small error can accumulate and lead to unpredictable results.

It's not about examples at all. The question is whether the algorithm works correctly or not. The cube is the simplest example, so I use it as a volume preservation marker (it's not about saving the shape, it's about saving the volume first). @Andruxa696 As an artist, you may be satisfied with the result, but I am not, it does not matter. If the algorithm is not working correctly, a small error can accumulate and lead to unpredictable results.

Added subscriber: @ebarranco

Added subscriber: @ebarranco
Poster

it looks like the problem may be in the new "limit surface" feature in the subdivision algorithm.

it looks like the problem may be in the new "limit surface" feature in the subdivision algorithm.
Debuk commented 3 years ago

Added subscriber: @Debuk

Added subscriber: @Debuk
Debuk commented 3 years ago

This is no bug and there is no danger that this is introducing problems. If the algorithm finds patches that can be evenly unsubivided it simply takes the position of the "remaining points" of the finegrained mesh itself. This is just the simplest solution for positioning the basemeshes points. Technically this is as valid as any other position and is rather a safe choice. The only thing that decides here about right or wrong is if the baseshape and the displacement combine to be the original smooth input surface.

It might be worth to think about if this should not have the bigger dimensions of a plain subdiv basemesh/controlcage though.
But it's no bug.

This is no bug and there is no danger that this is introducing problems. If the algorithm finds patches that can be evenly unsubivided it simply takes the position of the "remaining points" of the finegrained mesh itself. This is just the simplest solution for positioning the basemeshes points. Technically this is as valid as any other position and is rather a safe choice. The only thing that decides here about right or wrong is if the baseshape and the displacement combine to be the original smooth input surface. It might be worth to think about if this should not have the bigger dimensions of a plain subdiv basemesh/controlcage though. But it's no bug.

Added subscriber: @Frozen_Death_Knight

Added subscriber: @Frozen_Death_Knight

@borschberry This is definitely not a bug and @Andruxa696 is completely right about Rebuild Subdivisions producing the most correct results for sculpting.

Pablo Dobarro just uploaded a patch where he changed the Apply Base algorithm to the Rebuild Subdivisions/Unsubdivide algorithm and made the current algorithm into a separate button called Refit Base. After having tested 2.90 for the last week and having previous ZBrush experience, this is the way forward as far as I'm concerned. Current Apply Base is bad for what sculptors need in the vast majority of cases and I hope the new Pablo patch gets added asap.

@borschberry This is definitely not a bug and @Andruxa696 is completely right about Rebuild Subdivisions producing the most correct results for sculpting. Pablo Dobarro just uploaded a patch where he changed the Apply Base algorithm to the Rebuild Subdivisions/Unsubdivide algorithm and made the current algorithm into a separate button called Refit Base. After having tested 2.90 for the last week and having previous ZBrush experience, this is the way forward as far as I'm concerned. Current Apply Base is bad for what sculptors need in the vast majority of cases and I hope the new Pablo patch gets added asap.
Collaborator

Changed status from 'Confirmed' to: 'Archived'

Changed status from 'Confirmed' to: 'Archived'
PabloDobarro closed this issue 3 years ago
PabloDobarro self-assigned this 3 years ago
Collaborator

I also don't think this is a bug. I made unsubdivide work this way to make the Delete Lower operator. This way the resulting base mesh will always match the positions of the displacement. To improve this it is necessary to do a refit step after calculating the new base mesh and it will work like the current Apply Base. To make this more clear, I made a patch to split Apply Base into two separate buttons, one that refits (which inflates the mesh) and one that does not refit, matching the vertex positions of the displacement (like rebuild subdivisions) D7644

I also don't think this is a bug. I made unsubdivide work this way to make the Delete Lower operator. This way the resulting base mesh will always match the positions of the displacement. To improve this it is necessary to do a refit step after calculating the new base mesh and it will work like the current Apply Base. To make this more clear, I made a patch to split Apply Base into two separate buttons, one that refits (which inflates the mesh) and one that does not refit, matching the vertex positions of the displacement (like rebuild subdivisions) [D7644](https://archive.blender.org/developer/D7644)
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/Collada
Interest/Compositing
Interest/Core
Interest/Cycles
Interest/Dependency Graph
Interest/Development Management
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/Modeling
Interest/Modifiers
Interest/Motion Tracking
Interest/Nodes & Physics
Interest/Overrides
Interest/Performance
Interest/Pipeline, Assets & I/O
Interest/Translations
Interest/Undo
Interest/USD
Interest/Video Sequencer
legacy module/Animation & Rigging
legacy module/Core
legacy module/Development Management
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/Triaging
legacy module/User Interface
legacy module/VFX & Video
legacy project/1.0.0-beta.2
legacy project/Asset Browser (Archived)
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/Code Quest
legacy project/Datablocks and Libraries
legacy project/Eevee
legacy project/Game Animation
legacy project/Game Audio
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Logic
legacy project/Game Physics
legacy project/Game Python
legacy project/Game Rendering
legacy project/Game UI
legacy project/GPU / Viewport
legacy project/GSoC
legacy project/Infrastructure: Websites
legacy project/LibOverrides - Usability and UX
legacy project/Milestone 1: Basic, Local Asset Browser
legacy project/Nodes
legacy project/OpenGL Error
legacy project/Papercut
legacy project/Performance
legacy project/Physics
legacy project/Platforms, Builds, Tests & Devices
legacy project/Pose Library Basics
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Retrospective
legacy project/Sculpt, Paint & Texture
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Triaging
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Virtual Reality
legacy project/Wintab High Frequency
Meta/Good First Issue
Meta/Papercut
migration/requires-manual-verification
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 & Devices
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 Information 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#76302
Loading…
There is no content yet.