diff --git a/packages/frontend/assets/room/objects/photoframe/photo-uv.png b/packages/frontend/assets/room/objects/photoframe/photo-uv.png
deleted file mode 100644
index 9b94906413..0000000000
Binary files a/packages/frontend/assets/room/objects/photoframe/photo-uv.png and /dev/null differ
diff --git a/packages/frontend/assets/room/objects/photoframe/photo.jpg b/packages/frontend/assets/room/objects/photoframe/photo.jpg
deleted file mode 100644
index af14f0f36a..0000000000
Binary files a/packages/frontend/assets/room/objects/photoframe/photo.jpg and /dev/null differ
diff --git a/packages/frontend/assets/room/objects/photoframe/photoframe.blend b/packages/frontend/assets/room/objects/photoframe/photoframe.blend
deleted file mode 100644
index 4224cde45b..0000000000
Binary files a/packages/frontend/assets/room/objects/photoframe/photoframe.blend and /dev/null differ
diff --git a/packages/frontend/assets/room/objects/photoframe/photoframe.glb b/packages/frontend/assets/room/objects/photoframe/photoframe.glb
deleted file mode 100644
index 4255a77de6..0000000000
Binary files a/packages/frontend/assets/room/objects/photoframe/photoframe.glb and /dev/null differ
diff --git a/packages/frontend/assets/room/objects/picture-frame/picture-frame.blend b/packages/frontend/assets/room/objects/picture-frame/picture-frame.blend
index 9901727872..33d703ec7b 100644
Binary files a/packages/frontend/assets/room/objects/picture-frame/picture-frame.blend and b/packages/frontend/assets/room/objects/picture-frame/picture-frame.blend differ
diff --git a/packages/frontend/assets/room/objects/picture-frame/picture-frame.glb b/packages/frontend/assets/room/objects/picture-frame/picture-frame.glb
index adaa1ffe69..bbb6ee48fb 100644
Binary files a/packages/frontend/assets/room/objects/picture-frame/picture-frame.glb and b/packages/frontend/assets/room/objects/picture-frame/picture-frame.glb differ
diff --git a/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.blend b/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.blend
index ce1d379dca..3ae45934a6 100644
Binary files a/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.blend and b/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.blend differ
diff --git a/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.glb b/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.glb
index 0154a7ba06..195734f8f3 100644
Binary files a/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.glb and b/packages/frontend/assets/room/objects/tabletop-picture-frame/tabletop-picture-frame.glb differ
diff --git a/packages/frontend/src/pages/room.vue b/packages/frontend/src/pages/room.vue
index 63158deb05..802ada2204 100644
--- a/packages/frontend/src/pages/room.vue
+++ b/packages/frontend/src/pages/room.vue
@@ -61,6 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
Edit mode: {{ engine.isEditMode.value ? 'on' : 'off' }}
addObject
save
+ showBoundingBox
@@ -578,6 +579,11 @@ function removeSelectedObject() {
canvas.value!.focus();
}
+function showBoundingBox() {
+ engine.value?.showBoundingBox();
+ canvas.value!.focus();
+}
+
function getHex(c: [number, number, number]) {
return `#${c.map(x => Math.round(x * 255).toString(16).padStart(2, '0')).join('')}`;
}
diff --git a/packages/frontend/src/utility/room/engine.ts b/packages/frontend/src/utility/room/engine.ts
index d112a396d2..49f9c720b2 100644
--- a/packages/frontend/src/utility/room/engine.ts
+++ b/packages/frontend/src/utility/room/engine.ts
@@ -48,8 +48,35 @@ type RoomStateObject = {
sticky?: string | null;
};
+type SimpleHeyaWallBase = {
+ material: null | 'wood' | 'concrete';
+ color: [number, number, number];
+};
+
+type Heya = {
+ type: 'simple';
+ options: {
+ size: [number, number];
+ window: 'none' | 'kosidakamado' | 'demado' | 'hakidasimado';
+ wallN: SimpleHeyaWallBase;
+ wallE: SimpleHeyaWallBase;
+ wallS: SimpleHeyaWallBase;
+ wallW: SimpleHeyaWallBase;
+ flooring: {
+ material: null | 'wood' | 'concrete';
+ color: [number, number, number];
+ };
+ ceiling: {
+ material: null | 'wood' | 'concrete';
+ color: [number, number, number];
+ };
+ };
+} | {
+ type: 'japanese';
+};
+
type RoomState = {
- roomType: 'default';
+ heya: Heya;
installedObjects: RoomStateObject[];
};
@@ -865,7 +892,6 @@ export class RoomEngine {
// シェイプキー(morph)を考慮してbounding boxを更新するために必要
mesh.refreshBoundingInfo({ applyMorph: true });
- //mesh.showBoundingBox = _DEV_;
mesh.metadata = metadata;
mesh.checkCollisions = !hasCollisionMesh;
@@ -1289,6 +1315,14 @@ export class RoomEngine {
}
}
+ public showBoundingBox() {
+ for (const mesh of this.objectMeshs.values()) {
+ for (const m of mesh.getChildMeshes()) {
+ m.showBoundingBox = true;
+ }
+ }
+ }
+
public resize() {
this.engine.resize();
}
diff --git a/packages/frontend/src/utility/room/objects/pictureFrame.ts b/packages/frontend/src/utility/room/objects/pictureFrame.ts
index d12ab1aad3..7c6dd86f32 100644
--- a/packages/frontend/src/utility/room/objects/pictureFrame.ts
+++ b/packages/frontend/src/utility/room/objects/pictureFrame.ts
@@ -125,6 +125,7 @@ export const pictureFrame = defineObject({
matMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
pictureMesh.morphTargetManager!.getTargetByName('Width')!.influence = options.width * (1 - options.matHThickness);
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
+ matMesh.isVisible = options.matHThickness > 0 || options.matVThickness > 0;
meshUpdated();
applyFit();
diff --git a/packages/frontend/src/utility/room/objects/tabletopPictureFrame.ts b/packages/frontend/src/utility/room/objects/tabletopPictureFrame.ts
index 352564e14f..3811b44f74 100644
--- a/packages/frontend/src/utility/room/objects/tabletopPictureFrame.ts
+++ b/packages/frontend/src/utility/room/objects/tabletopPictureFrame.ts
@@ -130,6 +130,7 @@ export const tabletopPictureFrame = defineObject({
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
pictureMesh.morphTargetManager!.getTargetByName('MatH')!.influence = options.matHThickness * options.width;
pictureMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
+ matMesh.isVisible = options.matHThickness > 0 || options.matVThickness > 0;
meshUpdated();
applyFit();