From 33557794b50815ff43204a81dfce71d3d95fa1c3 Mon Sep 17 00:00:00 2001 From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> Date: Sun, 4 Oct 2026 19:20:51 +0900 Subject: bluebey-studio: まぶたの形と目の傾きを追加し、細目時のまばたきを修正 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「直線(平ら)」と「目の傾き」を「目を細める」の隣に移動・追加(左右で反転)。上まぶたが下まぶたの位置まで下りて閉じるようにし、細目でもまばたきで最後まで閉じるようにした。 --- public/bluebey-studio/src/panel.js | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 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 ce479c7..3c2dc15 100644 --- a/public/bluebey-studio/src/panel.js +++ b/public/bluebey-studio/src/panel.js @@ -646,6 +646,24 @@ export function buildPanel(app, root) { }], })); + // まぶたの形 and 目の傾き sit right next to 目を細める, so the narrowed eye can be + // tuned without hunting inside こまかい設定. + const lidShapeSegment = segmented({ + label: 'まぶたの形', + options: [ + { value: 'curve', label: '曲線' }, + { value: 'flat', label: '直線(平ら)' }, + ], + value: 'curve', + onChange: (value) => { state.face.eyes.lidShape = value; app.actions.refresh('face'); }, + }); + faceSection.add(lidShapeSegment.el); + const lidTiltSlider = slider({ + label: '目の傾き', min: -40, max: 40, step: 1, value: 0, format: (v) => `${Math.round(v)}°`, + onInput: (value) => { state.face.eyes.lidTilt = value; app.actions.refresh('face'); }, + }); + faceSection.add(lidTiltSlider.el); + const eyeAdvanced = details(faceSection.body, 'こまかい設定(瞳・ハート・涙・まぶた)'); const irisScaleSlider = slider({ label: '瞳の大きさ', min: 0.4, max: 1.4, step: 0.01, value: 1, format: (v) => v.toFixed(2), @@ -677,15 +695,6 @@ export function buildPanel(app, root) { label: '下まぶた', min: 0, max: 1, step: 0.01, value: 0, format: (v) => v.toFixed(2), onInput: (value) => { state.face.eyes.lowerLid = value; app.actions.refresh('face'); }, }); - const lidShapeSegment = segmented({ - label: 'まぶたの形', - options: [ - { value: 'curve', label: '曲線' }, - { value: 'flat', label: '直線(平ら)' }, - ], - value: 'curve', - onChange: (value) => { state.face.eyes.lidShape = value; app.actions.refresh('face'); }, - }); eyeAdvanced.add(irisScaleSlider.el); eyeAdvanced.add(heartScaleSlider.el); eyeAdvanced.add(controlRow(null, heartWhiteToggle.el, { wide: true })); @@ -693,10 +702,8 @@ export function buildPanel(app, root) { eyeAdvanced.add(lookMaxSlider.el); eyeAdvanced.add(lidWidthSlider.el); eyeAdvanced.add(lowerLidSlider.el); - eyeAdvanced.add(lidShapeSegment.el); - eyeAdvanced.add(hint('「まぶたの形」を「直線」にすると、まぶたが平らに下りてきます。' - + '「目を細める」で、上まぶたを下げつつ下まぶたを上げた細目になります。' - + '「下まぶた」を上げると、下からもまぶたが持ち上がります。')); + eyeAdvanced.add(hint('「下まぶた」を上げると、下からもまぶたが持ち上がります。' + + '「まぶたの形」「目の傾き」「目を細める」は、この上の「目」にあります。')); const highlightToggle = check({ label: '瞳のハイライト', @@ -2701,6 +2708,7 @@ export function buildPanel(app, root) { lidWidthSlider.set(state.face.eyes.lidWidth ?? 14); lowerLidSlider.set(state.face.eyes.lowerLid ?? 0); lidShapeSegment.set(state.face.eyes.lidShape ?? 'curve'); + lidTiltSlider.set(state.face.eyes.lidTilt ?? 0); browToggle.set(state.face.eyes.brow.enabled); browSliders.angle.set(state.face.eyes.brow.angle); browSliders.height.set(state.face.eyes.brow.height); -- cgit v1.3.1