diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-03 13:51:53 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-03 13:51:53 +0900 |
| commit | 7892cc6f46cdfcd6dfbbdc94d34cbf0c68f29fba (patch) | |
| tree | cc353614365d2a2b56055b46e8b3c9e8d930ad12 /public/bluebey-studio/src/panel.js | |
| parent | c3046436182754c550d447d689c28af86d06b316 (diff) | |
public/bluebey-studio: 寝ているポーズと鼻ちょうちんを追加し、動きを修正
- ポーズ例に「ねている」を追加(体を横に倒した姿勢)
- 「顔」タブに「鼻ちょうちん」を追加。鼻の横に泡を描き、大きさ・位置
・色を調整できる。寝ている顔に使う
- 「歩く」の腕と脚の位相を逆にし、右手が前に出るときは左足が前に出る
ように修正
- 「てをふる」の腕の上げ幅を抑え、手が顔にめり込まないように修正
Diffstat (limited to 'public/bluebey-studio/src/panel.js')
| -rw-r--r-- | public/bluebey-studio/src/panel.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/public/bluebey-studio/src/panel.js b/public/bluebey-studio/src/panel.js index babeb59..bad4059 100644 --- a/public/bluebey-studio/src/panel.js +++ b/public/bluebey-studio/src/panel.js @@ -927,6 +927,41 @@ export function buildPanel(app, root) { + '「ツートン」は頭を左右2色に分けます(2色目を使います)。' + '決まったキャラクターの髪ではなく、よくあるマンガの記号として用意しました。')); + // --- 鼻ちょうちん: the snot bubble of a sleeping face. + faceSection = section(tabFace, '鼻ちょうちん'); + const snotToggle = check({ + label: '鼻ちょうちんを出す', + value: false, + onChange: (value) => { state.face.eyes.snot.enabled = value; app.actions.refresh('face'); }, + }); + faceSection.add(controlRow(null, snotToggle.el, { wide: true })); + const snotSize = slider({ + label: '大きさ', min: 0.4, max: 2.2, step: 0.01, value: 1, format: (v) => v.toFixed(2), + onInput: (v) => { state.face.eyes.snot.size = v; app.actions.refresh('face'); }, + }); + faceSection.add(snotSize.el); + const snotBox = details(faceSection.body, 'こまかい設定(位置・色)'); + const snotSliders = { + offsetX: slider({ + label: 'よこの位置', min: -160, max: 160, step: 1, value: 0, format: (v) => `${Math.round(v)}`, + onInput: (v) => { state.face.eyes.snot.offsetX = v; app.actions.refresh('face'); }, + }), + offsetY: slider({ + label: 'たかさ', min: -160, max: 160, step: 1, value: 0, format: (v) => `${Math.round(v)}`, + onInput: (v) => { state.face.eyes.snot.offsetY = v; app.actions.refresh('face'); }, + }), + }; + for (const widget of Object.values(snotSliders)) snotBox.add(widget.el); + const snotColor = colorField({ + label: '泡の色', value: '#e3ecff', + swatches: ['#e3ecff', '#ffffff', '#cfe0ff', '#bfe8d0'], + onChange: (v) => { state.face.eyes.snot.color = v; app.actions.refresh('face'); }, + }); + snotBox.add(snotColor.el); + snotBox.add(hint('寝ている顔の横に、鼻から出る泡を描きます。' + + '「ねている」ポーズと組み合わせると、いねむりしているように見えます。' + + '泡は鼻の横に出るので、位置は「よこの位置」「たかさ」で調整できます。')); + // --- mouth faceSection = section(tabFace, '口'); @@ -2355,6 +2390,10 @@ export function buildPanel(app, root) { for (const [key, widget] of Object.entries(headMarkSliders)) widget.set(state.face.eyes.headMark[key]); headMarkColor.set(state.face.eyes.headMark.color); headMarkColor2.set(state.face.eyes.headMark.color2 ?? '#ffffff'); + snotToggle.set(state.face.eyes.snot.enabled === true); + snotSize.set(state.face.eyes.snot.size); + for (const [key, widget] of Object.entries(snotSliders)) widget.set(state.face.eyes.snot[key]); + snotColor.set(state.face.eyes.snot.color); }); syncers.push(() => { |
