Maniphest T73935

Texture Displacement Sculpting design
Confirmed, NormalDESIGN

Assigned To
Pablo Dobarro (pablodp606)
Authored By
Pablo Dobarro (pablodp606)
Feb 17 2020, 7:01 PM
Tags
  • Sculpt, Paint & Texture
Subscribers
Alan Redd (AlRedd)
Alex (SpectreFirst)
Andrey (andruxa696)
Demeter Dzadik (Mets)
Ivan Perevala (ivpe)
kfir merlaub (kfir)
Konstantina Anagnostou (Constantina32)
6 More Subscribers
Tokens
"Burninate" token, awarded by WorldBuilder."100" token, awarded by mayank898."Love" token, awarded by Harti."Love" token, awarded by ivpe."Love" token, awarded by kynu."Love" token, awarded by n-pigeon."Love" token, awarded by mindinsomnia."Love" token, awarded by cfnjrey."The World Burns" token, awarded by Schamph."Burninate" token, awarded by Rubens91."Love" token, awarded by kfir."Love" token, awarded by mswf."100" token, awarded by Floatharr."Love" token, awarded by tiagoffcruz."Mountain of Wealth" token, awarded by TheRedWaxPolice."Love" token, awarded by franMarz."Love" token, awarded by Alrob."Love" token, awarded by CobraA."100" token, awarded by Frozen_Death_Knight."Love" token, awarded by Kronk."Love" token, awarded by irfan."Love" token, awarded by billreynish."Love" token, awarded by siebeneicher."Love" token, awarded by Brandon777."Love" token, awarded by plundh."Love" token, awarded by RodDavis."Love" token, awarded by andruxa696."Love" token, awarded by brilliant_ape.

Description

Texture Displacement Sculpting

Some things originally in this task have moved to T96223: PBVH image texture painting technical design and T96225: PBVH image texture painting implementation.

The idea here is to build on the above tasks, and make sculpt tools work with displacement textures and normal maps.

For some workflows this is a huge improvement. Game artist that rely on high poly sculpts and baking tools to create details in assets for game engines won’t need any of that anymore. They will be able to use a fully feature sculpting system to add the detail to the textures of the model directly.

This is obviously going to fail and create a lot of artifacts if the sculpted deformation is too big, but that is not the initial idea (that is also going to fail if the the high res sculpt and the low res mesh shape differ too much). The idea is to avoid using high poly sculpts to add surface detail when it is not necessary, and for surface detail, this approach should work fine.

I can’t evaluate the performance of this sculpting mode, but if we add UDIM support to the PBVH_TEXTURE (should not be hard to do, specially if we don’t support faces across different UDIM tiles) and the performance is OK, it could potentially allow to sculpt surface detail on models with a much higher resolution than any other solution based on mesh geometry and vertex deformation.

To implement this, the idea is to add a second buffer that stores the vectors to get the “deformed” 3D coordinates, and its normals. When iterating over the vertices in PBVH_ITER_BEGIN, the vd.co will be calculated by using the original 3D position of the vertex + displacement vector stored in the buffer. It should be possible to write this information to the texture to get a displacement texture and it should also be possible to write the normals calculated when the PBVH_UpdateNormals flag is processed to get a normal map.

Possible Issues

  • I’m still not sure how this is going to work across seams. I think that if we add some extra padding pixels to the node which contains that face as if we were extending the face in 3D space it should be fine, but hard to know without trying it.
  • I’m also not sure what kind of performance we can expect out of this, but even if performance is not the best, we can still try to code it to support some of its features, like sculpting information to the textures.

Technical Requirements

  • Implement the neighbor iterator in the sculpt API
  • Implement the deformed coordinates buffer and the normal map/vector displacement calculations
  • Update the Sculpt API to read data from the coordinates buffer
  • Add the Sculpt Mode UI to support textures
  • Add normal map/displacement support to workbench (If possible, we can use EEVEE instead if that is hard to do)

Event Timeline

Pablo Dobarro (pablodp606) created this task.Feb 17 2020, 7:01 PM
Konstantina Anagnostou (Constantina32) added a subscriber: Konstantina Anagnostou (Constantina32).Feb 17 2020, 7:26 PM
Ted Nielsen (brilliant_ape) awarded a token.Feb 17 2020, 7:30 PM
Andrey (andruxa696) awarded a token.Feb 17 2020, 8:16 PM
Andrey (andruxa696) added a subscriber: Andrey (andruxa696).
Rodger Davis (RodDavis) awarded a token.Feb 17 2020, 8:28 PM
Aaron Carlisle (Blendify) changed the task status from Needs Triage to Confirmed.Feb 17 2020, 8:31 PM
Aaron Carlisle (Blendify) changed the subtype of this task from "Report" to "Design".
Petter Lundh (plundh) awarded a token.Feb 17 2020, 8:57 PM
Petter Lundh (plundh) added a subscriber: Petter Lundh (plundh).
Brandon (Brandon777) awarded a token.Feb 17 2020, 9:10 PM
Leonard Siebeneicher (siebeneicher) awarded a token.Feb 18 2020, 11:01 AM
Demeter Dzadik (Mets) added a subscriber: Demeter Dzadik (Mets).Feb 18 2020, 12:33 PM

Sculpt Mode, Texture paint and Vertex Paint will run on the exact same code

Is it fair to assume that this also includes Weight Paint, since it's probably already sharing most code with Vertex Paint?

William Reynish (billreynish) awarded a token.Feb 18 2020, 12:42 PM
Irfan Celik (irfan) awarded a token.Feb 18 2020, 12:50 PM
Tobias Fuchsberger (Kronk) awarded a token.Feb 18 2020, 1:13 PM
Kenn Nyström (Frozen_Death_Knight) awarded a token.Feb 18 2020, 1:19 PM
CobraA (CobraA) awarded a token.Feb 18 2020, 1:35 PM
Alan Redd (AlRedd) added a subscriber: Alan Redd (AlRedd).Feb 20 2020, 12:58 AM

This is a game changer for realistic character workflows! Especially texture displacement Sculpting

srikanth (Alrob) awarded a token.Feb 24 2020, 4:31 PM
Fran Marz (franMarz) awarded a token.Feb 25 2020, 1:29 AM
TheRedWaxPolice (TheRedWaxPolice) awarded a token.Feb 25 2020, 1:40 AM
Tiago Cruz (tiagoffcruz) awarded a token.Feb 25 2020, 2:27 PM
Floatharr (Floatharr) awarded a token.Feb 26 2020, 9:26 PM
Steff Kempink (mswf) awarded a token.Feb 27 2020, 2:40 PM
kfir merlaub (kfir) awarded a token.Mar 27 2020, 6:19 AM
kfir merlaub (kfir) added a subscriber: kfir merlaub (kfir).May 1 2020, 5:43 AM
Pablo Dobarro (pablodp606) mentioned this in T63745: Sculpt, Paint, Texture Module.Jun 8 2020, 7:53 PM
Ruben Dario Espinel Mora (Rubens91) awarded a token.Jun 8 2020, 8:52 PM
Alex (SpectreFirst) added a subscriber: Alex (SpectreFirst).Jun 9 2020, 5:11 PM
Silas Opel (Schamph) awarded a token.Jun 14 2020, 3:31 PM
Aleksandr (cfnjrey) awarded a token.Jun 17 2020, 11:39 AM
Mindinsomnia (mindinsomnia) awarded a token.Sep 8 2020, 10:08 AM
Mindinsomnia (mindinsomnia) added a subscriber: Mindinsomnia (mindinsomnia).Sep 8 2020, 10:11 AM

@Pablo Dobarro (pablodp606) Would this change make it possible to draw to multiple textures concurrently with different colour values?

Like for example, creating a custom brush for painting "bolts", with textures for albedo, metallic, roughness, specular, displacement, etc, and painting those textures directly onto a surface in one go?

Przemyslaw Golab (SirPigeonz) (n-pigeon) awarded a token.Sep 8 2020, 1:49 PM
Przemyslaw Golab (SirPigeonz) (n-pigeon) added a subscriber: Przemyslaw Golab (SirPigeonz) (n-pigeon).
David Kozma (kynu) awarded a token.Sep 18 2020, 10:50 AM
Ivan Perevala (ivpe) added a subscriber: Ivan Perevala (ivpe).Oct 28 2020, 7:56 PM
Pablo Dobarro (pablodp606) moved this task from Backlog to Long Term (Texture) on the Sculpt, Paint & Texture board.Jan 5 2021, 5:33 PM
Ivan Perevala (ivpe) awarded a token.Jan 6 2021, 7:02 AM
Steffen Hartmann (Harti) awarded a token.Jan 8 2021, 9:16 PM
zhouxiang (zhouxiang) added a subscriber: zhouxiang (zhouxiang).May 3 2021, 6:31 PM
Mayank Jain (mayank898) awarded a token.Dec 30 2021, 8:01 AM
Brecht Van Lommel (brecht) renamed this task from PBVH_TEXTURE Design to Texture Displacement Sculpting design.Apr 6 2022, 7:17 PM
Brecht Van Lommel (brecht) updated the task description.
Brecht Van Lommel (brecht) updated the task description.
Marcel Freyer (WorldBuilder) awarded a token.Sep 11 2022, 2:14 AM
sergi (clivies) added a subscriber: sergi (clivies).Sep 14 2022, 12:20 AM
Paul Larson (GeorgiaPacific) added a subscriber: Paul Larson (GeorgiaPacific).Sep 21 2022, 9:36 PM