UV Transfer #44522

Closed
opened 2015-04-27 16:26:07 +02:00 by francoisgfx · 18 comments

System Information
Linux RedHat

Blender Version
version 2.73

Short description of error
Transfer UVs from Object A to B are not quite correct. I have tried several combination, still no way to fix it.
I managed to reproduce the bug with Suzanne since I cannot share our mesh which is under NDA. Yet our more complex mesh have way more trouble, but looks the same as below so far
Source :
uv_source.jpg

Destination (transfered UV) :
transfered_UV.jpg

Exact steps for others to reproduce the error

  • Duplicate Object A into Object B
  • Delete half of Object B
  • Create seams on Object B
  • Unwrap Object B
  • Add Mirror Modifier to Object B
  • Apply Mirror Modifier (make sure there is same amount of vertex and faces as Object A)
  • Move the Mirrored UV next to each other (move, scale, ...)
  • Select Object A then Object B
  • Press CTRL+Shift+T
  • Best result in most cases is with the following settings and give the above results : transferUV_param.jpg
**System Information** Linux RedHat **Blender Version** version 2.73 **Short description of error** Transfer UVs from Object A to B are not quite correct. I have tried several combination, still no way to fix it. I managed to reproduce the bug with Suzanne since I cannot share our mesh which is under NDA. Yet our more complex mesh have way more trouble, but looks the same as below so far Source : ![uv_source.jpg](https://archive.blender.org/developer/F167318/uv_source.jpg) Destination (transfered UV) : ![transfered_UV.jpg](https://archive.blender.org/developer/F167320/transfered_UV.jpg) **Exact steps for others to reproduce the error** - Duplicate Object A into Object B - Delete half of Object B - Create seams on Object B - Unwrap Object B - Add Mirror Modifier to Object B - Apply Mirror Modifier (make sure there is same amount of vertex and faces as Object A) - Move the Mirrored UV next to each other (move, scale, ...) - Select Object A then Object B - Press CTRL+Shift+T - Best result in most cases is with the following settings and give the above results : ![transferUV_param.jpg](https://archive.blender.org/developer/F167322/transferUV_param.jpg)
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @francois.register

Added subscriber: @francois.register
Author

oups didn't finished to write the ticket (ctrl+enter trap)
Here is the attached file done with Suzanne.
transferUV_bug.blend

For now I have to do this process in Maya instead of Blender.

oups didn't finished to write the ticket (ctrl+enter trap) Here is the attached file done with Suzanne. [transferUV_bug.blend](https://archive.blender.org/developer/F167324/transferUV_bug.blend) For now I have to do this process in Maya instead of Blender.
Author

Added subscriber: @CedricPAILLE

Added subscriber: @CedricPAILLE
Bastien Montagne was assigned by Sergey Sharybin 2015-04-28 09:46:12 +02:00

Added subscribers: @mont29, @Sergey

Added subscribers: @mont29, @Sergey

@mont29, correct me if i'm wrong, but think it's related on your transfer tools?

@mont29, correct me if i'm wrong, but think it's related on your transfer tools?

Yes it its… and Think I know what’s happening - Even though we have several UV islands, there are no seams in the middle of that source mesh…

I didn’t wanted/though we'd have to implement UV Islands detections without seams, but look like it will be needed :(

There's also another issue here - the two faces generating the glitch are perfectly coplanar (they have the same normal), which breaks the 'select nearest corner from best matching face by normal' process).

So all in all, this is not really a bug, more like a TODO to enhance algorithms behind that feature - will have a look at it, but this is quite complex topic… :|

Yes it its… and Think I know what’s happening - Even though we have several UV islands, there are no seams in the middle of that source mesh… I didn’t wanted/though we'd have to implement UV Islands detections without seams, but look like it will be needed :( There's also another issue here - the two faces generating the glitch are perfectly coplanar (they have the same normal), which breaks the 'select nearest corner from best matching face by normal' process). So all in all, this is not really a bug, more like a TODO to enhance algorithms behind that feature - will have a look at it, but this is quite complex topic… :|
Author

I can confirm that we do have coplanar faces in our production mesh.
if we do add seams on each island and use a different transfer mode, would that work ?

I can confirm that we do have coplanar faces in our production mesh. if we do add seams on each island and use a different transfer mode, would that work ?

Seams will help, but won't fix all issues - what happens with coplanar faces is that, once nearest vertex is found, code cannot currently decide which face (and hence face corner) is best, since they both have same normal. I need to add a sensible fallback stuff here (like mere "nearest face among all 'same normals' candidates").

Seams will help, but won't fix all issues - what happens with coplanar faces is that, once nearest vertex is found, code cannot currently decide which face (and hence face corner) is best, since they both have same normal. I need to add a sensible fallback stuff here (like mere "nearest face among all 'same normals' candidates").

Ok, will commit a fix that addresses the 'coplanar faces' issue (basically, when a same vertex has several coplanar faces, the source face to use is choosen as nearest one from dest face).

Note however that with seams in the right place, 'interpolated' option for face corners' mapping do work too with existing code.

For now, we decided to only use edge seams to detect UV islands. This has of course some limitations, but it mostly means we can use the same UV islands data for all UVMaps, instead of having to generate one for each map…

Ok, will commit a fix that addresses the 'coplanar faces' issue (basically, when a same vertex has several coplanar faces, the source face to use is choosen as nearest one from dest face). Note however that with seams in the right place, 'interpolated' option for face corners' mapping do work too with existing code. For now, we decided to only use edge seams to detect UV islands. This has of course some limitations, but it mostly means we can use the same UV islands data for *all* UVMaps, instead of having to generate one for each map…

This issue was referenced by 34abe82205

This issue was referenced by 34abe82205995d6dab316e1c17b81f72358e7341

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'

Closed by commit 34abe82205.

Closed by commit 34abe82205.

This issue was referenced by 3074bf0a71736413fb1b1c8323755110cfdd99be

This issue was referenced by 3074bf0a71736413fb1b1c8323755110cfdd99be
Author

Changed status from 'Resolved' to: 'Open'

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

We did encounter some new issues.
I sent the files to Bastien, and asked me to update the ticket.

We tested the transfert both in Blender and Maya (where all cases worked fine). You can find the files in the attachment. We do believe that Maya does test the mirror to see if it finds a match.

Also the file transfert_UVs_001.blend return the following error "Error: Source and destination meshes do not have the same amount of face corners, 'Topology' mapping cannot be used in this case" while the stats (vertex, faces, edges,...) are exactly the same.
(Bastien already explained to me why it does this)

transfert_uvs.zip

cheers

F.

We did encounter some new issues. I sent the files to Bastien, and asked me to update the ticket. We tested the transfert both in Blender and Maya (where all cases worked fine). You can find the files in the attachment. We do believe that Maya does test the mirror to see if it finds a match. Also the file transfert_UVs_001.blend return the following error "Error: Source and destination meshes do not have the same amount of face corners, 'Topology' mapping cannot be used in this case" while the stats (vertex, faces, edges,...) are exactly the same. (Bastien already explained to me why it does this) [transfert_uvs.zip](https://archive.blender.org/developer/F200102/transfert_uvs.zip) cheers F.

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'

@francois.register please do not reopen fixed tasks, issues reported here have been fixed. New issues need new tasks (remember, one issue per thread). :)

@francois.register please do not reopen fixed tasks, issues reported here *have been fixed*. New issues need new tasks (remember, one issue per thread). :)
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#44522
No description provided.