Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

If you have any questions, reports, suggestions, or requests about Live2D, please send them to this forum.
※We cannot guarantee statements or answers from Live2D staff. Thank you for your understanding in advance.
 
Live2D Cubism
Cubism Products and Downloads
Cubism product manuals and tutorials
Cubism Editor Manual    Cubism Editor Tutorial    Cubism SDK Manual    Cubism SDK Tutorial
[Notice of Holidays]
Please note that our staff will not be available from 2024/Dec/28 - 2025/Jan/5 JST.
The Live2D Creators Forum will remain open during the holidays.
Submissions that require a response will be answered after we reopen for business.
Please note that it will take longer than usual to respond to your request.

Better Clipping Masks

Clipping masks could be better, especially with all the work-arounds needed to compensate for all of it's shortcomings.

The main problems that I have, and many others is the fact that clipping masks tend to stack incorrectly, as well as that the system is generally clunky with it's current configuration.

Here are some of my proposed solutions, but I'm not someone who knows a lot about the coding and math side of things, so take it with a grain of salt.



ALPHA MASKS

For the 'Incorrect Stacking/ Leaking" problem, I had proposed this earlier in another thread (here) and I'll just put it here as well:
There can be a separate function from Clipping Mask(s), called; 'Inherit Alpha'. This new function works in the same manner: i.e; a textbox where you can paste artmeshes into, and the "invert mask" tick-box. But inherits the visible alpha of the layer/s specified in the text box, instead of the whole alpha, regardless of the current state of it's visibility.

For example; You have Mesh 1 clipped Mesh 2- of which is clipped to Mesh 3. When you move Mesh 1 and 2, Mesh 2 stays within the bounds of Mesh 3, but Mesh 1 leaks, as it only clips to Mesh 1, regardless of it's visibility.

(From the "Stacking Dual Clipping" discussion)

With 'Inherit Alpha', Mesh 1 would be inheriting the visibility of Mesh 2, meaning rather than leaking, it stays both within Mesh 2, and Mesh 3.

(From the "Stacking Dual Clipping" discussion)

It would be good to keep the legacy system, as that allows for invisible masking, and a whole bunch of other very useful applications.




MASK GROUPS

Mask groups would help a ton with efficiency. I propose that there are two ways to group-mask artmeshes.

One, being the easiest- allowing folders to mask onto artmeshes, and vice versa. This can allow for things like eyes and mouths to reduce their mask count.

The second being a separate function, either in the deformer or parts list. I can't say much about this, as it functions the same, if not with more features than masking folders, but I haven't been able to think up of any more features, without being able to actually use it.

Anyways, I do hope the team considers this. Many thanks! Live2D is great, and I'd love to see it improve. Hopefully this isn't too long winded.

Comments

  • Hello, @MakingThings .
    Thank you for your contact.
    This is Live2D Support.

    I have shared this request with the developers.
    We will use this as a reference for future development.

    Thank you very much!
    Live2D Support
  • Just now I was thinking that the space where you write the clipping ID works as if I had the "or" configuration in the code making the areas of the multiple masks add up

    For example
    ArtMesh3.Clipping_ID = "ArtMesh1 , ArtMesh2"
    Circle_Green.Clipping_ID = "Circle_Red , Circle_Blue"



    in scuffed code this would look like
    [ArtMesh1.Area + ArtMesh2.Area]
    [Circle_Red.Area + Circle_Blue.Area]

    but what if, instead a "or" "," "||" "+" we can use the "and" "&&" "*"

    we would have to need both textures and so we can make the segment of the green circle
  • I'd also like to see this, but with a further feature than what has been requested.

    As I understand it, the original post in summary is requesting an option to configure clipping masks as the intersection of specified masks instead of just the sum of them as is done presently.

    Per the later commenter's idea, adding binary operations to the Clipping ID field could allow for an implementation of that.

    You could then create combinations in the Clipping ID field which might look like:

    Artmesh1 AND Artmesh2
    = The intersection of the mesh with Artmeshes 1 & 2

    Artmesh1 AND !Artmesh2
    = The intersection of the mesh with Artmesh1 except where Artmesh2 also overlaps

    Artmesh1 XOR (Artmesh2 OR Artmesh3)
    = the intersection of the mesh with Artmesh 1 except where it overlaps with artmesh2 or 3, and the areas of artmesh 2 or 3 except where they overlap with artmesh 1.
  • Mask groups alone would be incredible.
Sign In or Register to comment.