From ab8d709e191e6c1260dcba90020924a508784c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sun, 8 Mar 2026 21:09:23 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[rd]=20=EB=AA=A8=ED=84=B0=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98/=ED=98=95=EC=83=81=20=EC=88=98=EC=A0=95=20=E2=80=94?= =?UTF-8?q?=20=EB=B8=8C=EB=9D=BC=EC=BC=93=20=EC=95=88=EC=AA=BD=EC=97=90=20?= =?UTF-8?q?3=EA=B0=9C=20=EB=8B=A4=EB=A6=AC=EB=A1=9C=20=EC=95=88=EC=B0=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 모터를 벽쪽(바깥)에서 샤프트 방향(안쪽)으로 이동 - 원통형 모터 본체로 변경 - 3개 마운팅 다리 추가 (브라켓 위에 안착) --- .../rd/fire-shutter-drawing/index.blade.php | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php index d4f435bf..c47716a1 100644 --- a/resources/views/rd/fire-shutter-drawing/index.blade.php +++ b/resources/views/rd/fire-shutter-drawing/index.blade.php @@ -1058,12 +1058,33 @@ function fs3dBuild() { meshes.shaft.position.set(0, shaftY, 0); scene.add(meshes.shaft); - // === MOTOR (outside bracket, connected via 복주머니) === - const motorGeo = new THREE.BoxGeometry(150, 100, 120); + // === MOTOR (브라켓 위에 3개 다리로 안착, 샤프트 방향으로 위치) === + meshes.motor = new THREE.Group(); const motorMat = new THREE.MeshStandardMaterial({ color: 0x2563eb, metalness: 0.4, roughness: 0.4 }); - meshes.motor = new THREE.Mesh(motorGeo, motorMat); - const motorXPos = motorDir * (W1 / 2 + 80); // 브라켓 바깥에 위치 - meshes.motor.position.set(motorXPos, shaftY, 0); + const legMat = new THREE.MeshStandardMaterial({ color: 0x374151, metalness: 0.5, roughness: 0.4 }); + + // Motor body (원통형) + const motorLen = 200; // 모터 길이 (X방향, 샤프트 방향) + const motorR = 55; // 모터 반지름 + const motorBodyGeo = new THREE.CylinderGeometry(motorR, motorR, motorLen, 24); + motorBodyGeo.rotateZ(Math.PI / 2); + const motorBody = new THREE.Mesh(motorBodyGeo, motorMat); + // 브라켓 안쪽면에서 샤프트 방향으로 모터 배치 + const motorCenterX = motorDir * (W1 / 2 - bkW - motorLen / 2); + motorBody.position.set(motorCenterX, 0, 0); + meshes.motor.add(motorBody); + + // Motor mounting legs (3개 — 브라켓 위에 안착) + const legW = 8, legH = 40, legD = 20; + const legGeo = new THREE.BoxGeometry(legW, legH, legD); + const legOffsets = [-motorLen * 0.35, 0, motorLen * 0.35]; // 모터 길이 방향 3등분 + legOffsets.forEach(dx => { + const leg = new THREE.Mesh(legGeo, legMat); + leg.position.set(motorCenterX + motorDir * dx, -motorR - legH / 2, 0); + meshes.motor.add(leg); + }); + + meshes.motor.position.set(0, shaftY, 0); scene.add(meshes.motor); // === GUIDE RAILS (ExtrudeGeometry) ===