From 0aa91f6f02fc95762ea4a6dbf5a4f795e4e35b86 Mon Sep 17 00:00:00 2001 From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> Date: Sat, 3 Oct 2026 22:40:54 +0900 Subject: public/bluebey-studio: ひげ画像を色替え可能に、ダリの既定を調整 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit テクスチャのひげを「ひげの色」で着色できるようにした(source-in で墨の部分を色に置換え、輪郭のアンチエイリアスは維持)。近黒で作った画像でそのまま使える。 ひげの色の既定を近黒(#1c1624)にし、スウォッチに #000000 を追加。 ダリ: 左右の間隔を -10 まで選べるようにし、既定を 大きさ1/高さ100/間隔-10 にした。 --- public/bluebey-studio/src/panel.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'public/bluebey-studio/src/panel.js') diff --git a/public/bluebey-studio/src/panel.js b/public/bluebey-studio/src/panel.js index 3f63eb6..d63055a 100644 --- a/public/bluebey-studio/src/panel.js +++ b/public/bluebey-studio/src/panel.js @@ -168,7 +168,7 @@ export function buildPanel(app, root) { left: randomEye(), right: randomEye(), cheeks: { enabled: Math.random() < 0.5 }, - beard: { shape: beardShape, ...(BEARD_KIND_DEFAULTS[beardShape] ?? { size: 1, offsetY: 0 }) }, + beard: { shape: beardShape, ...(BEARD_KIND_DEFAULTS[beardShape] ?? { size: 1, offsetY: 0, spacing: 0 }) }, headMark: { shape: pick(['off', 'cap', 'fringe', 'fringe-up', 'wave', 'side']) }, brow: { enabled: true, @@ -1135,7 +1135,7 @@ export function buildPanel(app, root) { // Each kind starts at its own size and height (a textured kind is drawn at a // different scale from the built-in strokes). A kind with no entry resets to // the neutral values, so switching kinds cannot leave a stray size behind. - Object.assign(beard, BEARD_KIND_DEFAULTS[value] ?? { size: 1, offsetY: 0 }); + Object.assign(beard, BEARD_KIND_DEFAULTS[value] ?? { size: 1, offsetY: 0, spacing: 0 }); app.actions.refresh('face'); sync(); }, @@ -1147,7 +1147,7 @@ export function buildPanel(app, root) { onInput: (v) => { state.face.eyes.beard.size = v; app.actions.refresh('face'); }, }), spacing: slider({ - label: '左右の間隔', min: 0, max: 240, step: 1, value: 0, format: (v) => `${Math.round(v)}`, + label: '左右の間隔', min: -10, max: 240, step: 1, value: 0, format: (v) => `${Math.round(v)}`, onInput: (v) => { state.face.eyes.beard.spacing = v; app.actions.refresh('face'); }, }), offsetY: slider({ @@ -1170,8 +1170,8 @@ export function buildPanel(app, root) { beardBox.add(beardSliders.length.el); beardBox.add(beardSliders.lineGap.el); const beardColor = colorField({ - label: 'ひげの色', value: '#3a2a4a', - swatches: ['#3a2a4a', '#1c1624', '#6b4a2a', '#8a8a94'], + label: 'ひげの色', value: '#1c1624', + swatches: ['#1c1624', '#000000', '#3a2a4a', '#6b4a2a', '#8a8a94'], onChange: (v) => { state.face.eyes.beard.color = v; app.actions.refresh('face'); }, }); beardBox.add(beardColor.el); -- cgit v1.3.1