fix: [fire-shutter] 가이드레일 Z위치를 벽면 중심으로 조정

- 레일이 벽면(Z=0)에 걸치도록 Z오프셋 변경
- 좌측: Z=0 → Z=+rw/2, 우측: Z=-rw → Z=-rw/2
- 레일 Z범위: -rw/2 ~ +rw/2 (벽면 중심 기준)
This commit is contained in:
김보곤
2026-03-14 14:07:47 +09:00
parent 34ad156141
commit dc0d274ffb

View File

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