Unsubdivide support for non-grid topology #65748

Open
opened 2019-06-12 11:45:51 +02:00 by Daniel Ulrich · 10 comments

System Information
Operating system:mac os mojave 10.14.5
Graphics card:intel iris 550

Blender Version
Broken: d62a749fcf
Worked: never

Unsubdive either from the edge menu or under the decimate modifier not giving expected result with many production models. This never worked well so I figured I put in a report since I haven't seen an active one.

Exact steps for others to reproduce the error
Attached blend file, unsibdivide fails more often than not, producing triangles with unsubividealbe geometry. Works in other packages though, so it's not a problem with the geo.

Screen Shot 2019-06-12 at 9.31.20 PM.png
unsubdivide.blend

**System Information** Operating system:mac os mojave 10.14.5 Graphics card:intel iris 550 **Blender Version** Broken: d62a749fcf48 Worked: never Unsubdive either from the edge menu or under the decimate modifier not giving expected result with many production models. This never worked well so I figured I put in a report since I haven't seen an active one. **Exact steps for others to reproduce the error** Attached blend file, unsibdivide fails more often than not, producing triangles with unsubividealbe geometry. Works in other packages though, so it's not a problem with the geo. ![Screen Shot 2019-06-12 at 9.31.20 PM.png](https://archive.blender.org/developer/F7099874/Screen_Shot_2019-06-12_at_9.31.20_PM.png) [unsubdivide.blend](https://archive.blender.org/developer/F7099878/unsubdivide.blend)
Author

Added subscriber: @dan2

Added subscriber: @dan2

Added subscribers: @ideasman42, @ZedDB

Added subscribers: @ideasman42, @ZedDB
Campbell Barton was assigned by Sebastian Parborg 2019-06-17 15:41:59 +02:00

@ideasman42 thoughts?

@ideasman42 thoughts?
Author

I don't know how the tool currently works, but the one's I saw before would take the last vertID, convert it to en edge selection, select the loop, every 2nd ring, repeat, delete the edges. Just guessing here but if in Blender checker deselect is involved, that'd have some problems with 3-5 pole verts (this might be a different issue though) -

deselect.gif

I don't know how the tool currently works, but the one's I saw before would take the last vertID, convert it to en edge selection, select the loop, every 2nd ring, repeat, delete the edges. Just guessing here but if in Blender checker deselect is involved, that'd have some problems with 3-5 pole verts (this might be a different issue though) - ![deselect.gif](https://archive.blender.org/developer/F7107525/deselect.gif)

Un-subdivide currently only works on grid-topology, this would be useful to add but not a bug, moving to TODO.

Un-subdivide currently only works on grid-topology, this would be useful to add but not a bug, moving to TODO.
Campbell Barton changed title from unsubdivide issue to Unsubdivide support for non-grid topology 2019-06-18 01:16:32 +02:00
Campbell Barton removed their assignment 2019-06-18 01:16:39 +02:00

Added subscriber: @1D_Inc

Added subscriber: @1D_Inc

It is a Turboreverse issue.
I don't know exactly how it was made, but Turboreverse works like magic.

https://youtu.be/tIeJsy-Tj3I

In Blender you have to find proper vertex to recalculate indexes to achieve better results, but it is entire algorithm issue.
Find a "topology star", then count vertices from it in any direction, corresponding to leves of subd you want to remove, then make it active, then sort indexes, then run unsubdive and hope for better results. You should guess how much levels you need to remove.
sort.jpg

It is a Turboreverse issue. I don't know exactly how it was made, but Turboreverse works like magic. https://youtu.be/tIeJsy-Tj3I In Blender you have to find proper vertex to recalculate indexes to achieve better results, but it is entire algorithm issue. Find a "topology star", then count vertices from it in any direction, corresponding to leves of subd you want to remove, then make it active, then sort indexes, then run unsubdive and hope for better results. You should guess how much levels you need to remove. ![sort.jpg](https://archive.blender.org/developer/F7780200/sort.jpg)

Here is my result on that model with that sorting trick.

SORTOUT.jpg

Unsubdivide_1D.blend

In general, we need better function.

Here is my result on that model with that sorting trick. ![SORTOUT.jpg](https://archive.blender.org/developer/F7780214/SORTOUT.jpg) [Unsubdivide_1D.blend](https://archive.blender.org/developer/F7780219/Unsubdivide_1D.blend) In general, we need better function.
Author

Nice trick!

Yes, unsibdivide works fine in zbrush or maya as well.

The important thing is though that the vert IDs remain intact, the IDs on the lowres mesh would remain the same on the corresponding subdivided mesh, ensuring that there can be a live connection between them, something that is used frequently in production rigs.

(this way in maya if a mesh is subdivided, duplicated and deformed, the deformed mesh can be applied as a shape key onto the lowres mesh directly because it would only transfer deltas to verts with matching IDs.)

The objective should be to achieve the exact same behavior, as a mesh with arbitrary vert IDs would be just as useless as one that is only partially matching. Mesh/surface deform and the equivalent wrap deformers are way to unreliable.

Nice trick! Yes, unsibdivide works fine in zbrush or maya as well. The important thing is though that the vert IDs remain intact, the IDs on the lowres mesh would remain the same on the corresponding subdivided mesh, ensuring that there can be a live connection between them, something that is used frequently in production rigs. (this way in maya if a mesh is subdivided, duplicated and deformed, the deformed mesh can be applied as a shape key onto the lowres mesh directly because it would only transfer deltas to verts with matching IDs.) The objective should be to achieve the exact same behavior, as a mesh with arbitrary vert IDs would be just as useless as one that is only partially matching. Mesh/surface deform and the equivalent wrap deformers are way to unreliable.

Thanks. It works sometimes.
For sure, it should be kind a reversed subd algorithm.
I tried to find a programmer for this task, maybe AFX, but suddenly has gone out of funds some time ago.
All related solutions in other software are compiled, so it yet have to be reinvented, I guess.

Thanks. It works sometimes. For sure, it should be kind a reversed subd algorithm. I tried to find a programmer for this task, maybe AFX, but suddenly has gone out of funds some time ago. All related solutions in other software are compiled, so it yet have to be reinvented, I guess.
Philipp Oeser removed the
Interest
Modeling
label 2023-02-09 15:29:51 +01:00
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
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#65748
No description provided.