diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-04 18:41:16 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-04 18:41:16 +0900 |
| commit | 0f981a4e28f0cde34e98975dd257f8c4bacf61d7 (patch) | |
| tree | 5c1d7d9e826f15927e5f5a0f626750340434d8db /public | |
| parent | 644fd0fa3c667d0a1b7e28d261e9f1f3b4598a72 (diff) | |
bluebey-studio: ゴル眉画像を再反映し、まえがみに凹と中央の針を追加
更新された右側の眉画像を gol-right.png に反映。まえがみはほっぺ側への凹みを強め、頭の中心に針のような下向きの尖りを追加した。
Diffstat (limited to 'public')
| -rw-r--r-- | public/bluebey-studio/assets/brows/gol-right.png | bin | 2490 -> 2537 bytes | |||
| -rw-r--r-- | public/bluebey-studio/src/faceArt.js | 18 |
2 files changed, 13 insertions, 5 deletions
diff --git a/public/bluebey-studio/assets/brows/gol-right.png b/public/bluebey-studio/assets/brows/gol-right.png Binary files differindex c81e2b6..73086a8 100644 --- a/public/bluebey-studio/assets/brows/gol-right.png +++ b/public/bluebey-studio/assets/brows/gol-right.png diff --git a/public/bluebey-studio/src/faceArt.js b/public/bluebey-studio/src/faceArt.js index ca23b74..5ed821d 100644 --- a/public/bluebey-studio/src/faceArt.js +++ b/public/bluebey-studio/src/faceArt.js @@ -847,8 +847,12 @@ function drawHeadCover(ctx, spec, limits) { const halfSpan = width / 2; const boundary = (x) => { const t = clamp((x - cx) / halfSpan, -1, 1); - // まえがみ: swept down towards the cheeks, raised in the middle. - if (shape === 'fringe') return base - 175 * (1 - t * t); + // まえがみ: falls towards the cheeks with a needle pulled down at the centre. + if (shape === 'fringe') { + const sweep = 420 * t * t; + const needle = 500 * Math.max(0, 1 - Math.abs(t) * 6); + return base - 100 + sweep + needle; + } // はちわれ: the same V upside down - a widow's peak. if (shape === 'fringe-up') return base - 320 * Math.max(0, 1 - Math.abs(t) * 1.5); // カーブ: a plain shallow curve, higher (more hair) round the sides. @@ -934,9 +938,13 @@ export function drawHeadCoverWrap(ctx, spec, layout) { const cx = layout.offsetX + span * 0.5 + clamp(spec.offsetX ?? 0, -600, 600); const vBound = (x) => { const t = clamp((x - cx) / half, -1, 1); - // まえがみ: swept down towards the cheeks, raised in the middle - the - // opposite curvature to a central point (concave towards the cheeks). - if (shape === 'fringe') return base + 0.22 * t * t; + // まえがみ: the hair falls towards the cheeks on both sides (a strong + // concave sweep) with a narrow needle pulled down at the centre of the head. + if (shape === 'fringe') { + const sweep = 0.30 * t * t; + const needle = 0.42 * Math.max(0, 1 - Math.abs(t) * 6); + return base + sweep + needle; + } // はちわれ: the same V upside down - a widow's peak. if (shape === 'fringe-up') return base - 0.18 * Math.max(0, 1 - Math.abs(t) * 1.5); // カーブ: a deep round cover - low at the sides, high in the middle, like the |
