aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bluebey-studio/src/panel.js
diff options
context:
space:
mode:
authorYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-04 19:20:51 +0900
committerYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-04 19:20:51 +0900
commit33557794b50815ff43204a81dfce71d3d95fa1c3 (patch)
tree2b0dd3a1dd5915c458d00dbf33d12463694392b8 /public/bluebey-studio/src/panel.js
parent291408cc4939e68aac60fb7a4cd37d0fea85c57a (diff)
bluebey-studio: まぶたの形と目の傾きを追加し、細目時のまばたきを修正
「直線(平ら)」と「目の傾き」を「目を細める」の隣に移動・追加(左右で反転)。上まぶたが下まぶたの位置まで下りて閉じるようにし、細目でもまばたきで最後まで閉じるようにした。
Diffstat (limited to 'public/bluebey-studio/src/panel.js')
-rw-r--r--public/bluebey-studio/src/panel.js34
1 files changed, 21 insertions, 13 deletions
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);