Bezier-curve warp mode for Transform Tool
Open, Needs TriagePublic

Description

Requirements

  1. It should do a different kind of transformation to do proper wrap of the textures over 3d-looking objects. Our current tools cannot do that properly. To solve the problem we need a bezier-based wrapping algorithm like Sharaf used in mesh gradients (but a bit different). In general, I think such transformation would be rather useful for Krita users. E.g. painters could easily wrap a tattoo on a character's arm.
  1. It would also be nice to do the in-stack transformations preview to include blending modes and compositing. Right now we do the preview via canvas overlay.
  1. There is a scrolling problem with the docker. It is solvable by redesigning the docker a bit (again).
  1. There is a bug with the current wrapping algorithm (it crops the selected image on preview for some reason).

Comments and estimations

  1. Doing bezier-based interpolation would be a really fun task, I think I know how to implement that. I could probably reuse some parts of existing warp code for that. And the resulting code could be partially reused in mesh gradients. The algorithm itself would optimistically take 3 to 4 8h-days. The bigger concern is GUI part of it. I feel that people expect a really flexible has quite a lot of really nice GUI features for editing these meshes. I'm not yet sure how the "click outside node to deform the mesh" feature works. I guess some inverse kinematic maths will be needed there. So I would estimate the GUI part of the project as 5-6 8h-days.
  1. In-stack transformations. I have a feeling that we can remove our overlay code now and substitute that with a forced Instant Preview thing. The probability of success is about 80%, though the project might be rather difficult. At least a week of work. But, in the result, we would get a framework for forcing Instant Preview even when it is disabled in the GUI, which can be reused in Filters and Move Tool (and probably in other places).
  1. The scrolling problem of the Tool Options is a valid bug and needs a bit of love.
  1. Wrapping artifacts bug is valid, but if we have a completely different algorithm it can be ignored.

Conclusion

The tasks are rather interesting and it does fit into Krita's vision quite well. It has also been requested by several independent users before.

The main concern for me is how to fit that into our timeline. We have a release at the moment and will have to polish resource management right after that. And the project would optimistically take at least three weeks of net time for me.

dkazakov created this task.Sep 7 2020, 1:51 PM
dkazakov updated the task description. (Show Details)Sep 7 2020, 1:55 PM
sh-zam added a subscriber: sh-zam.Sep 7 2020, 4:14 PM