fix: [fire-shutter] 가이드레일 Z축 위치를 벽면에 밀착되도록 수정

- 스크린형 레일 전면을 벽면(Z=0)에 정렬
- 레일이 벽 뒤쪽으로 확장되도록 Z오프셋 변경
- 좌측: Z=-rw/2 → Z=-rw, 우측: Z=+rw/2 → Z=0
This commit is contained in:
김보곤
2026-03-14 13:49:33 +09:00
parent 3cc4180b8d
commit fbcabde49e

View File

@@ -2244,19 +2244,23 @@ function createRailGroup() {
const railPosX = W1 / 2 - railDepth; // front face 위치 (중심에서)
// Left rail — Ry(-PI/2): 개구부(립) → +X (중심), 백월 → -X (벽)
// Z방향: Ry(-PI/2)에서 z'=x(원본), 폭 0→70이 z' 0→70으로 매핑
// 레일 전면을 벽면(Z=0)에 맞추기: wrapper Z = -rw → 레일 Z범위 -rw~0
const railGroupL = createRailGroup();
const wrapperL = new THREE.Group();
wrapperL.add(railGroupL);
wrapperL.rotation.y = -Math.PI / 2;
wrapperL.position.set(-railPosX, 0, -rw / 2);
wrapperL.position.set(-railPosX, 0, -rw);
meshes.rails.add(wrapperL);
// Right rail — Ry(+PI/2): 개구부(립) → -X (중심), 백월 → +X (벽)
// Z방향: Ry(+PI/2)에서 z'=-x(원본), 폭 0→70이 z' 0→-70으로 매핑
// 레일 전면을 벽면(Z=0)에 맞추기: wrapper Z = 0 → 레일 Z범위 0~-rw
const railGroupR = createRailGroup();
const wrapperR = new THREE.Group();
wrapperR.add(railGroupR);
wrapperR.rotation.y = Math.PI / 2;
wrapperR.position.set(railPosX, 0, rw / 2);
wrapperR.position.set(railPosX, 0, 0);
meshes.rails.add(wrapperR);
} else {
// ====== 철재형: 기존 C채널 방식 (슬랫이 Z방향 슬롯 통과) ======