Triangulation Modifier breaks split normals #51117

Closed
opened 2017-04-03 14:54:41 +02:00 by notallowed · 17 comments

System Information
Linux Mint 17.3
Intel i7 4770
Nvidia GTX 760

Blender Version
Broken: 2.78c.e92f2352830

Short description of error
Normals become broken, when using mesh with edited split normals and then adding triangulation modifier on the top of it.

PS: I have tried even on daily build, same problem: blender-2.78-54a60eff24
PS2: I tried to search for this problem in developer system, but did find one, that's why I am opening new issue.

Exact steps for others to reproduce the error

  1. Create cube, bevel all edges
  2. Create split normals -> edit normals somehow. I used weighted normals calculation -> https://blenderartists.org/forum/showthread.php?372785-Addon-Weighted-Normals-Calculator
  3. Add triangulation modifier
  4. Normals gets distorted! :(
**System Information** Linux Mint 17.3 Intel i7 4770 Nvidia GTX 760 **Blender Version** Broken: 2.78c.e92f2352830 **Short description of error** Normals become broken, when using mesh with edited split normals and then adding triangulation modifier on the top of it. PS: I have tried even on daily build, same problem: blender-2.78-54a60eff24 PS2: I tried to search for this problem in developer system, but did find one, that's why I am opening new issue. **Exact steps for others to reproduce the error** 1. Create cube, bevel all edges 2. Create split normals -> edit normals somehow. I used weighted normals calculation -> https://blenderartists.org/forum/showthread.php?372785-Addon-Weighted-Normals-Calculator 3. Add triangulation modifier 4. Normals gets distorted! :(
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @simon_lusenc

Added subscriber: @simon_lusenc

Added subscriber: @mano-wii

Added subscriber: @mano-wii

Hi @simon_lusenc,

Could you simplify the code to reproduce the bug?
To understand the bug, it is necessary to analyze the attached code, and this is not practical for developers who already have to analyze a stack of 323 bugs at the moment :\

Hi @simon_lusenc, Could you simplify the code to reproduce the bug? To understand the bug, it is necessary to analyze the attached code, and this is not practical for developers who already have to analyze a stack of 323 bugs at the moment :\
Author

Well actually you don't even need to check the add-on, because it's not related to add-on. Add-on just calculates normals and assign them back to mesh. The real problem is that once you have that mesh and you apply triangulation on it, normals get distorted.

I have created simple blend file for you, with 2 objects: broken_normals.blend

  1. original -> is beveled cube with custom split normals
  2. broken -> is shallow duplicate (it uses same mesh as original) and has triangulation modifier which brakes normals
    To check it just go into the edit mode of each object and you will see the difference.

And sorry for not attaching blend file before ;)

Well actually you don't even need to check the add-on, because it's not related to add-on. Add-on just calculates normals and assign them back to mesh. The real problem is that once you have that mesh and you apply triangulation on it, normals get distorted. I have created simple blend file for you, with 2 objects: [broken_normals.blend](https://archive.blender.org/developer/F537130/broken_normals.blend) 1. original -> is beveled cube with custom split normals 2. broken -> is shallow duplicate (it uses same mesh as original) and has triangulation modifier which brakes normals To check it just go into the edit mode of each object and you will see the difference. And sorry for not attaching blend file before ;)

Added subscribers: @ideasman42, @dfelinto

Added subscribers: @ideasman42, @dfelinto

@ideasman42 This is the expected behaviour as far as I can see, no?

@ideasman42 This is the expected behaviour as far as I can see, no?

This is related to Custom Split Normal Data. So there must be a problem in CustomData interpolation.

This is related to `Custom Split Normal Data`. So there must be a problem in CustomData interpolation.
Author

Hello,

well it's been quite some time now and I am wondering if this is being looked at or it's just not solvable at current state?

Thx!

Hello, well it's been quite some time now and I am wondering if this is being looked at or it's just not solvable at current state? Thx!

Added subscriber: @mont29

Added subscriber: @mont29

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
Bastien Montagne self-assigned this 2017-05-22 23:07:39 +02:00

Thanks for the report, but this is not considered a bug currently - custom normals are to be used as latest step, they are designed to handle well deformations of the mesh, but absolutely not changes in topology.

Thanks for the report, but this is not considered a bug currently - custom normals are to be used as latest step, they are designed to handle well *deformations* of the mesh, but absolutely not changes in topology.

Added subscriber: @BrentLiu

Added subscriber: @BrentLiu

This may be working as intended(not a bug). But,

Baking a normal map requires the mesh to be triangulated to have the best possible result.

Having triangulate modifier is a way to keep the model workable(were still quads in edit-mode) while at the same time, previews/renders that mesh as triangulated.

3D modelling workflows for games uses custom normal very often, especially for low-poly models.

Now that this modifier wouldn't maintain the custom normals, to get the same level of result using such workflow become drastically slow due to manual processing of the triangulations. Or rather, the inability to go back to quads for back/forth editing & testing for the better result with different normal map iterations.

If I know CPython and was able to contribute, this will be my task. Badly I only started learning Python last year, and I haven't found a way to implement custom modifiers, I can only rely on Blender Foundation to help with this, for now.

If this can't be viewed as a bug, please, please, please, help us improve the triangulate modifier so it doesn't change the existing custom normals.

EDIT:

Actually, I just found a trick to keep custom normal using Data Transfer modifier, while moving the triangulate modifier above the Data Transfer... This introduces an extra object in the scene, but does the job pretty nicely. Kudos to BF this time!! But still, it would be nice to not having that extra object. ; )

This may be working as intended(not a bug). But, Baking a normal map requires the mesh to be triangulated to have the best possible result. Having triangulate modifier is a way to keep the model workable(were still quads in edit-mode) while at the same time, previews/renders that mesh as triangulated. 3D modelling workflows for games uses custom normal very often, especially for low-poly models. Now that this modifier wouldn't maintain the custom normals, to get the same level of result using such workflow become drastically slow due to manual processing of the triangulations. Or rather, the inability to go back to quads for back/forth editing & testing for the better result with different normal map iterations. If I know CPython and was able to contribute, this will be my task. Badly I only started learning Python last year, and I haven't found a way to implement custom modifiers, I can only rely on Blender Foundation to help with this, for now. If this can't be viewed as a bug, please, please, please, help us improve the triangulate modifier so it doesn't change the existing custom normals. # EDIT: Actually, I just found a trick to keep custom normal using Data Transfer modifier, while moving the triangulate modifier above the Data Transfer... This introduces an extra object in the scene, but does the job pretty nicely. Kudos to BF this time!! But still, it would be nice to not having that extra object. ; )

Added subscriber: @RohanRathi

Added subscriber: @RohanRathi

@RohanRathi might be interesting to implement support of custom normals in a few modifiers like triangluate, if you still have time in your GSoC?

@RohanRathi might be interesting to implement support of custom normals in a few modifiers like triangluate, if you still have time in your GSoC?
Member

Definitely could check it out.

Definitely could check it out.
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
6 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#51117
No description provided.