freesewing icon indicating copy to clipboard operation
freesewing copied to clipboard

Add Umbra, an underwear pattern based on Uma

Open HaasJona opened this issue 2 years ago • 15 comments

Umbra is an underwear design I've been working on. It's based on some of my own patterns and measurements of my favourite briefs. I have sewn some prototypes already.

This is not completely polished, but I'm putting it up for review already to get some feedback from both a development and pattern design perspective.

umbra

image

Summary from designer notes:

Umbra is a comfortable and flexible underwear briefs design that aims to be inclusive for as many people as possible.

Umbra is based on some experiments, prototypes and measurements of my favourite underwear.

Umbra is especially designed for diverse users. You can easily add several useful modifications, even if some of them are not directly supported by the software.

Some features of Umbra are as follows:

  • It can be sewn so that no (potentially itchy) seam allowance touches the skin, which helps people with sensitive skin and those with autism. The crotch and side seams are placed on the inside between the front part layers and any elastics on the waist and leg openings can be put on the outside, if so desired.
  • It can be sewn with or without a bulge. You can even draft the design twice, and cut the front lining without bulge and the main fabric front part with one, and you'll be able to create a front pocket with plenty of space.
  • Rise, back exposure, front exposure and gusset width are controlled separately, so you can create e.g. very comfortable thongs with enough room in the front, or many other designs.

Umbra is based on code from Uma by Natalia Sayang and Joost De Cock, but has been heavily modified in its construction and default style. Some key differences are:

  • Umbra doesn't have a separate gusset part and instead adds lining to the whole front piece.
  • The hip measurements are being taken into account to better determine the waistband size.
  • The height of the underwear is based on the usually more accurate Cross Seam measurement instead of the Waist to upper leg measurement.
  • The positions of the side and crotch seams can be adjusted freely, even with a bulge selected.
  • The back part has a smoother, more comfortable curve and provides greater coverage by default and at maximum.

If you wish to adapt Umbra to a swimwear bottom, it should be easy to do so. Simply use swimwear fabric and, if desired, sew on a folded over piece of fabric with two holes instead of a waistband elastic, to create a drawstring.

Development notes:

  • Umbra's code is based on Uma, although there's not much original, untouched code left.
  • I chose the name Umbra because it starts with an U for underwear, it's similar to Uma to show its heritage, and Umbra is latin for "shadow", which sounds nice and mysterious and fits underwear. However, if you prefer another name, I wouldn't mind much
  • I thought about expanding Uma instead, but the differences are very large and integrating all the options into one part would be confusing.
  • It might make sense to extract a common underwear block body and extend both this and Uma from this, but as this was my first design, I avoided doing a large rework. Might be a good idea for the future, but will probably create some compatibility questions
  • It might also make sense to port some new features or fixes of this to Uma

HaasJona avatar Mar 10 '24 12:03 HaasJona

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
freesewing-dev ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 17, 2024 4:30pm
freesewing-org ❌ Failed (Inspect) Apr 17, 2024 4:30pm

vercel[bot] avatar Mar 10 '24 12:03 vercel[bot]

@HaasJona is attempting to deploy a commit to the freesewing Team on Vercel.

A member of the Team first needs to authorize it.

vercel[bot] avatar Mar 10 '24 12:03 vercel[bot]

Note: Unsure what to do with the Changelog as this is new and has no changes. Copied from Uma for now.

HaasJona avatar Mar 10 '24 15:03 HaasJona

The changelog is auto-generated grom config/changelog.yaml so don't worry about it 🤗

Didn't get around to reviewing this today as I was otherwise occupied, but I'll try to find time for it soon.

Meanwhile, thanks for this PR 🙏

joostdecock avatar Mar 10 '24 16:03 joostdecock

The changelog is auto-generated grom config/changelog.yaml so don't worry about it 🤗

Good to know. By the way, there is a typo in the auto generated text:

  • All FreeSewing pacakges are now ESM only.
  • All FreeSewing pacakges now use named exports.

Created #6334 for that.

HaasJona avatar Mar 10 '24 17:03 HaasJona

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 97.24%. Comparing base (0c324fb) to head (817d8eb). Report is 19 commits behind head on develop.

:exclamation: Current head 817d8eb differs from pull request most recent head 265b84d. Consider uploading reports for the commit 265b84d to get more accurate results

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #6332   +/-   ##
========================================
  Coverage    97.24%   97.24%           
========================================
  Files           15       15           
  Lines         4529     4529           
  Branches       541      541           
========================================
  Hits          4404     4404           
  Misses         122      122           
  Partials         3        3           
Flag Coverage Δ
core 97.24% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar Mar 10 '24 17:03 codecov[bot]

Converting this to a draft for now as I want to improve the back curve calculation and check some measurements again.

HaasJona avatar Mar 14 '24 06:03 HaasJona

Although Umbra seems to be in the middle of development with things not fully implemented and changing quickly, I did some initial testing in the localhost lab.

  • ~~I note that the Expanded Back part has no horizontal dimensions.~~
  • The seam allowance is on the inside of the Back part, when Flip Back is false.
  • The Back part title appears in the old, wrong location when Flip Back is false.
  • I was able to induce a crash:
ERROR | TypeError: undefined is not an object (evaluating ‘points.pocketSeamBottom.x’)
We have also logged this error to the console of your browser so you can inpect it further.
ERROR | Unable to draft part umbra.front (set 0)
WARN | snippets.pocketBottom was set with an anchor parameter that is not a Point
measurements:
  waist: 730
  seat: 960
  waistToSeat: 200
  crossSeam: 620
  crossSeamFront: 280
  waistToHips: 90
  hips: 880
units: metric
metadata:
  setName: Elanor
sabool: 1
sa: 15.3125
samm: 15.3125
paperless: true
options:
  backDip: 0.089
  backExposure: 0.45
  frontDip: 0.111
  frontExposure: 0.947
  frontReduction: 0.234
  legRise: -0.5
  rise: 0.764
  pockets: inside
  pocketHem: 0.125

BenJamesBen avatar Mar 17 '24 11:03 BenJamesBen

Thanks for the review. The first one was already fixed (as you noticed). I've fixed the other issues, although the flip back one was intended mostly as a developer option and I don't consider the seam allowance and title position as important when in "developer mode". But fixed anyways.

HaasJona avatar Mar 17 '24 11:03 HaasJona

So some general comments about the state: I overhauled some of the construction after helpful discussions on discord and some prototype results. I'm mostly okay with the shape now, but if you have any suggestions, feel free to discuss them. The code should be mostly ready, but I'm aware that some of the point names and so on are not really self-explanatory and the scheme they follow isn't perfect.

I'll be sewing another prototype later and I'll cleanup and squash the commits and do a final code pass. Other than that, this should be ready for review.

@joostdecock Some of the changes could be backported to Uma, like some of the new options (flip back, front reduction), the usage of the cross seam and cross-seam-front measurement instead of waist-to-upper-leg (maybe optional, like the legacy armhole option on brian), what do you think about that? Essentially they could be mostly the same with Uma having a lined gusset piece (like typical for women's underwear) and Umbra having a lined front part instead (typical for men's underwear).

HaasJona avatar Mar 17 '24 11:03 HaasJona

Not necessarily issues but some behaviors I saw while testing:

  • Pocket lines (Zipper and Fold lining) are visible when Details are disabled.
  • One set of "Zipper" and "Fold lining" text is upside down due to the mirroring. I did some testing to see how the text could be finagled to be rightside up, but I'm not sure if it's worth going through all the trouble to do so.
+    const mid = (paths.mirroredZipperCut.start().x + paths.mirroredZipperCut.end().x) / 2
+    macro('mirror', {
+      mirror: [new Point(mid, 0), new Point(mid, 100)],
+      paths: ['mirroredZipper'],
+      clone: true,
+    })
+    paths.mirroredZipper = paths.mirroredMirroredZipper.clone()
+    delete paths.mirroredMirroredZipper
  • The below behavior is also seen with Uma and its predecessors, but it is possible to pull Umbra's parts into impossible geometries.
measurements:
  waist: 920
  seat: 1075
  waistToSeat: 280
  crossSeam: 900
  crossSeamFront: 415
  waistToHips: 145
  hips: 960
units: metric
metadata:
  setName: Joost
options:
  pockets: inside
  pocketHem: 0.181
  rise: 0.2
  pocketGap: 0.173
  legRise: 0.8
  frontExposure: 1
  frontDip: 0.15
  backExposure: 1
  backDip: 0.1
  bulge: 11.1
  bulgeFullness: 0.679
  gussetPosition: 0.5
  gussetWidth: 0.03
  splitPosition: 0.259
sabool: 1
sa: 15.3125
samm: 15.3125

Screenshot 2024-03-17 at 9 40 11 AM

BenJamesBen avatar Mar 17 '24 23:03 BenJamesBen

The zipper and fold text I'm aware of. Instead of mirroring, it would probably be simpler to just construct the left paths manually in an appropriate way. Maybe I'll look at this later.

About the last case, you're combining several very extreme options. Some of the options (mainly the gusset position, which I added very late) should probably have a more restricted range, on the other hand, without something like #6335 present, this could be restricting for some use cases. I'm not sure if it's worth it to change something here. At least it doesn't crash.

HaasJona avatar Mar 18 '24 05:03 HaasJona

Current result looks like this: grafik

Todo:

  • [x] thong string width probably shouldn't be hardcoded to 2cm
  • [x] Maybe enforce minimum thickness for waistband part

HaasJona avatar Mar 18 '24 10:03 HaasJona

These particular settings look like this now: grafik

(I renamed pocketHem to pocketHeight)

HaasJona avatar Mar 19 '24 08:03 HaasJona

I'm happy with this now. Any reviews are appreciated.

I have changed the back curve calculation, so the side seams corners are right angles (by default). This should look smoother and create a straight line when sewn together. I also fixed the rotation origin for the bulge, so the crotch region isn't elongated that much on high bulge settings.

HaasJona avatar Mar 24 '24 15:03 HaasJona

I fixed both things and rebased it onto develop.

HaasJona avatar Apr 16 '24 17:04 HaasJona