From 8f39a174d6c4415c7a4df418187090fb5e061983 Mon Sep 17 00:00:00 2001 From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> Date: Tue, 6 Oct 2026 09:56:21 +0900 Subject: bluebey-studio: ボーンのたて回転・縦書きと吹き出しの形・線画の帽子小物・光の色 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ボーンのたてスライダーが±180°で暴れる問題を修正。セリフの縦書きを禁則込みで直し、「ささやき」「思考」の吹き出しを追加。帽子・小物の輪郭線を線画のみにし、線画で帯や芯の境目が読めるよう調整。眼鏡の左右レンズ間隔、光と環境光の色を追加。ハートの下まぶた、レンズが濃いときのまばたきを修正。口メニューの項目名を整理。「顔/すべてをランダム」に眼鏡・Oの口・ひげの大きさ・目の左右位置などを追加。 --- public/bluebey-studio/src/main.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'public/bluebey-studio/src/main.js') diff --git a/public/bluebey-studio/src/main.js b/public/bluebey-studio/src/main.js index 23ed017..20c6c7d 100644 --- a/public/bluebey-studio/src/main.js +++ b/public/bluebey-studio/src/main.js @@ -521,9 +521,9 @@ async function init() { // Hats are built at runtime, so they are not in the GLB's mesh list. Register // them with the style system (and the current hat) so they follow flat/line art // and get an outline hull like every other part. - hatStyleRegister = (mesh) => styles.addMesh(mesh, { tone: true }); + hatStyleRegister = (mesh) => styles.addMesh(mesh, { tone: true, lineOnly: true }); hatStyleUnregister = (mesh) => styles.removeMesh(mesh); - for (const mesh of hatMeshes) styles.addMesh(mesh, { tone: true }); + for (const mesh of hatMeshes) styles.addMesh(mesh, { tone: true, lineOnly: true }); const face = new Face({ eyeMesh: model.parts.eyeMesh, mouthMesh: model.parts.mouthMesh, @@ -980,9 +980,10 @@ async function init() { ); propRoot.add(group); // Register with the style system, so フラット and 線画 reach the props too - // and each part gets an outline hull like the body and the hats. + // and each part gets an outline hull like the body and the hats. `lineOnly` + // keeps that outline out of リアル/フラット, where the props read by shading. group.traverse((object) => { - if (object.isMesh) styles.addMesh(object); + if (object.isMesh) styles.addMesh(object, { lineOnly: true }); }); // 看板 only: paint the saved text onto the freshly built face (no-op for // every other prop, which has no writing surface). @@ -1839,6 +1840,8 @@ async function init() { updateKeyLight(); key.intensity = state.render.lightIntensity; ambient.intensity = state.render.ambient; + key.color.set(state.render.lightColor ?? '#ffffff'); + ambient.color.set(state.render.ambientColor ?? '#ffffff'); renderer.toneMappingExposure = state.render.exposure; applyBackground(); renderer.shadowMap.needsUpdate = true; -- cgit v1.3.1