Blender 가구 배치와 장면 정리: Append·부모·Collection으로 방 꾸미기 — 입문 19강

가구의 여러 부품을 함께 옮기려면 Empty를 부모로 묶되, 그 기준점을 바닥에 두어야 합니다. 부품 가운데에 만든 Empty의 Z만 0으로 바꾸면 가구가 바닥에 잠길 수 있습니다. 19강에서는 네 가구를 Append하고 바닥 기준점으로 묶은 뒤, 창 아래 책상·책상 앞 의자·오른쪽 협탁·왼쪽 벽 책장으로 배치합니다.

이번 수치 예시는 수정된 12강의 가구 치수와 배치, Blender 5.2 LTS, Metric / Unit Scale 1 / Meters를 기준으로 합니다. 가구 원본이 다르면 같은 Scale로 같은 크기가 나오지 않습니다. 사진처럼 보이는 것보다 부품이 함께 움직이는지, 실제 형상이 바닥과 벽을 통과하지 않는지를 확인합니다.

시작하기 전에 두 파일과 가구 상태 확인하기

  1. 18강에서 만든 방 파일을 열고 File → Save As로 blender-lesson-19-furnished-room.blend를 저장합니다. 원래 방 파일은 보존합니다.
  2. 가져올 파일은 blender-lesson-12-desk-set.blend입니다. 수정된 12강과 같은 네 Collection, Mesh 총 15개, 아직 Empty 부모가 없는 상태를 전제로 합니다.
  3. 책상 상판 Dimensions 3.2 / 2 / 0.22m, 의자 좌판 중심 Z=1.09m, 가구 최저 형상 Z=0인지 확인합니다. 이전 의자를 크게 둔 파일과 수정된 파일을 섞지 않습니다.
  4. Object Mode에서 시작합니다. 기존 부모·Constraint·다른 치수가 있는 가구는 이 표의 전제와 다르므로 원본을 따로 보존하고 기준점·크기를 확인합니다.

12강만 마친 가구는 단순한 재질일 수 있습니다. 13·14강의 색상·나뭇결을 적용한 파일도 치수가 같으면 사용할 수 있지만, 가구 배치 자체에 텍스처는 필수가 아닙니다.

1단계: 네 Collection을 Append하기

  1. 방 파일에서 File → Append를 실행하고 가구 파일 안의 Collection을 엽니다.
  2. 01_Desk, 02_Nightstand, 03_Chair, 04_Bookcase 네 항목을 선택합니다. 상위 Furniture_Set과 그 하위 네 항목을 동시에 가져오지 않습니다.
  3. 파일 탐색기 옵션의 Instance Collections는 끄고 Append합니다. 이 강의는 Collection을 대표하는 인스턴스 하나가 아니라 실제 부품 Mesh들을 부모로 묶습니다.
  4. 책상 5개, 협탁 2개, 의자 3개, 책장 5개의 Mesh가 들어왔는지 확인합니다. Array 선반은 눈에 네 장이어도 Source 오브젝트 하나입니다. 부품 오브젝트 수와 보이는 선반 수를 구분합니다.

공식 Link & Append 안내처럼 Append는 외부 파일의 데이터를 복사합니다. 이후 원본 변경이 현재 파일에 자동으로 반영되지는 않습니다. 이번에는 Collection을 가져오므로 원본 Scene의 단위·렌더 설정까지 복사되는 것으로 생각하지 않습니다.

가구 위치는 원본에 저장된 값을 따라옵니다. 겹쳐 보일 수도 있고, 수정된 12강처럼 이미 떨어져 있을 수도 있습니다. 모양만 보고 다시 Append하지 말고 Outliner의 부품과 Collection을 먼저 확인합니다.

2단계: 바닥 기준점에 Empty 부모 만들기

Cursor to Selected는 선택한 부품 원점들의 평균 위치이지 가구의 바닥 점이 아닙니다. 이번에는 아래 값을 3D Cursor에 직접 넣고 부모를 만듭니다. 표의 X/Y는 수정된 12강의 가구 기준 위치, Z=0은 가구가 닿는 바닥입니다. 다른 파일이라면 실제 가구 바닥의 기준점을 사용해야 합니다.

가구 Collection / Mesh 수부모 이름부모 생성 전 3D Cursor X/Y/Z (m)
01_Desk / 5Desk_Group-0.4 / 0.6 / 0
02_Nightstand / 2Nightstand_Group2.55 / 0.7 / 0
03_Chair / 3Chair_Group-0.4 / -1.8 / 0
04_Bookcase / 5Bookcase_Group-4 / 1.65 / 0

책상부터 묶는 순서

  1. 3D Viewport의 N → View → 3D Cursor → Location에 -0.4 / 0.6 / 0m를 입력합니다.
  2. Shift+A → Empty → Cube로 Empty를 추가하고 Desk_Group으로 이름을 바꿉니다. 생성 직후 Rotation X/Y/Z 0°, Scale X/Y/Z 1인지 확인합니다.
  3. 선택을 풀고 책상 상판과 다리 네 개만 선택합니다. 마지막에 Empty를 Shift+클릭해 활성 오브젝트로 만듭니다. 방 부품이나 다른 가구는 선택하지 않습니다.
  4. Ctrl+P → Object로 부모를 지정합니다. 이어서 실행 옵션의 Keep Transform을 켭니다. 실행 옵션은 왼쪽 아래 마지막 작업 패널 또는 F9로 확인할 수 있습니다.
  5. 모양과 위치가 부모 지정 전과 같은지 확인합니다. Empty를 조금 옮겼을 때 다섯 부품이 모두 따라오는지 본 뒤 Esc로 이동을 취소합니다.
  6. 같은 순서로 나머지 세 부모를 만듭니다. 각 Empty는 해당 가구 Collection 안에 두고, 끝나면 3D Cursor를 0 / 0 / 0으로 되돌립니다.

공식 Parenting Objects 안내의 Keep Transform은 부모를 지정할 때 기존 월드 위치·회전·크기를 유지하는 선택입니다. 부모가 만들어진 뒤 그 위치나 Scale을 바꾸면 자식은 함께 변합니다. Keep Transform이 이후 이동까지 막아주는 기능은 아닙니다.

3단계: 부모 네 개의 크기와 위치 입력하기

이제 각 _Group Empty만 선택하고 N → Item → Transform에서 다음 값을 입력합니다. 자식 Mesh의 Location을 같은 값으로 덮어쓰지 않습니다. Scale은 세 축을 같은 값으로 넣어 비율을 유지합니다.

선택할 부모Location X/Y/Z (m)Rotation ZScale X/Y/Z
Desk_Group1.1 / 1.55 / 00°0.45 / 0.45 / 0.45
Chair_Group1.1 / 0.5 / 0180°0.45 / 0.45 / 0.45
Nightstand_Group2.45 / 1.55 / 00°0.30 / 0.30 / 0.30
Bookcase_Group-2.58 / 0.1 / 090°0.45 / 0.45 / 0.45

바닥 기준점을 먼저 만든 상태에서 이 표를 적용하면 실제 최저 형상은 Z=0을 유지합니다. 책상은 폭 1.44m·깊이 0.90m·상판 위 약 0.77m가 되고, 의자 좌판 위는 약 0.52m입니다. 이번 연습 모델의 결과값이며 가구 제품 규격이나 인체공학 기준을 뜻하지 않습니다. 부모 Empty의 Scale은 표처럼 남겨둡니다. 이를 임의로 1로 초기화하면 크기가 돌아갑니다.

4단계: 원점 숫자 대신 실제 바닥·벽 간격 확인하기

  1. View → Viewpoint → Front / Right / Top에서 정면·측면·위쪽을 번갈아 봅니다. 키패드가 있으면 Numpad 1 / 3 / 7도 사용할 수 있습니다.
  2. 가구 다리나 본체의 실제 아래 끝이 바닥 윗면 Z=0에 닿는지 확인합니다. Empty의 Z=0만 보고 완료하지 않습니다.
  3. 책상 뒤쪽 Y 최대는 2.00m이고, 뒤 벽 걸레받이의 앞쪽은 Y=2.045m입니다. 이 예시에서는 4.5cm가 남습니다.
  4. 책상 상판 아래 약 Z=0.67m보다 의자 좌판 위 약 Z=0.52m가 낮은지 확인합니다. 의자 등받이는 책상에서 먼 쪽에 있어야 합니다.

가구가 떠 있거나 잠기면 원점과 크기 조건부터 다시 봅니다. 현재 형상의 최저 Z가 z_min이면 부모를 Z 방향으로 -z_min만큼 이동하면 바닥을 맞출 수 있습니다. 부모를 이미 생성한 상태에서 자식 원점만 옮기거나 부품 하나만 따로 움직이지 않습니다.

Snap은 보조 기능으로 구분하기

공식 Snapping 안내에서 Face는 커서 아래 면, Closest는 선택한 형상의 가까운 경계점을 기준으로 합니다. Empty만 선택한 상태를 가구 Mesh 전체의 바닥 면이 선택된 상태와 같게 취급하지 않습니다. 이번 수치 예시는 Snap을 끄고 부모 위치와 실제 형상의 경계를 대조하는 방식으로 검증했습니다. N 패널에 값을 넣는 것 자체가 Face Snap을 실행하는 것은 아닙니다.

5단계: 책장 방향과 문 여유 확인하기

Bookcase_Group은 -2.58 / 0.1 / 0m, Rotation Z 90°, Scale 0.45입니다. 수정된 12강의 책장 앞면은 원래 -Y 방향이므로 90° 회전하면 방 안쪽 +X를 향합니다. 자신의 원본이 반대로 만들어졌다면 선반이 열린 방향을 보고 판단합니다.

별도 재현에서 책장의 왼쪽 외곽은 X≈-2.7375m, 왼쪽 벽 걸레받이가 방 안쪽으로 나온 끝은 X=-2.805m여서 약 6.8cm 여유가 있었습니다. 책장 높이도 약 2.19m로 벽 높이 2.8m보다 낮았습니다. 이 간격은 위의 치수·원점·Scale이 일치할 때의 값입니다.

문짝은 Rotation Z를 직접 0° / -14° / -28°로 바꾸어 확인한 뒤 -28°로 되돌립니다. 이미 -28°인 문에 R → Z → -28을 더 입력하면 -56°가 될 수 있으므로 절대값과 추가 회전을 구분합니다. 방 중앙의 여유와 의자를 빼는 자리도 위쪽 시점에서 살펴봅니다.

6단계: 협탁을 책상 오른쪽에 배치하기

Nightstand_Group은 2.45 / 1.55 / 0m, Rotation Z 0°, Scale 0.30입니다. 협탁은 책상 오른쪽에 놓이고, 이 예시의 X 외곽 사이에는 약 30cm가 남습니다. 가구가 다르면 같은 숫자만 복사하기보다 실제 겹침과 앞쪽 공간을 확인합니다.

Blender 가구를 중앙에 겹쳐 둔 배치 전과 벽에 맞춘 배치 후 비교
기존 배치 전후 디자인 참고입니다. 모든 Append가 겹친 상태로 시작하는 것은 아니며, 이 이미지의 가구 크기·부모 원점은 아래 별도 검증 수치와 다릅니다.

7단계: 부모 관계와 Collection 분류 따로 정리하기

부모는 부품을 함께 움직이는 관계이고 Collection은 표시·분류를 관리하는 묶음입니다. Empty만 다른 Collection으로 옮겨도 자식들이 자동으로 같은 Collection에 옮겨지는 것은 아닙니다. 한 오브젝트가 여러 Collection에 속할 수도 있다는 점은 공식 Collections 안내와 함께 확인할 수 있습니다.

  1. Outliner에서 01_ROOM, 02_FURNITURE, 03_LIGHTS_CAMERA를 만듭니다.
  2. 방의 바닥·벽·문짝·문틀·창틀·파란 판·걸레받이와 숨겨둔 두 커터까지 01_ROOM에 모읍니다. 커터의 렌더 제외는 유지합니다.
  3. 네 가구 Collection을 Outliner에서 02_FURNITURE의 하위로 옮깁니다. 각각 해당 부모 Empty와 부품들이 모두 포함되어야 합니다. Collection 중첩과 M으로 오브젝트를 옮기는 동작을 구분합니다.
  4. 가구만 숨겼을 때 방은 남고, 다시 표시하면 가구가 모두 돌아오는지 확인합니다. 빠진 부품이나 다른 Collection에도 중복 소속된 물체가 있는지 살핍니다.
  5. 기존 Camera·Light가 있으면 03_LIGHTS_CAMERA에 모읍니다. 없으면 이번 단계에서는 빈 Collection으로 두어도 됩니다. 조명은 다음 강의에서 만듭니다.

자주 막히는 문제와 복구 순서

Append를 두 번 실행했습니다

방금 한 Append를 되돌릴 수 있으면 Undo로 복구합니다. 시간이 지났다면 이름 끝 .001만으로 중복을 판정하지 않습니다. 새로 생긴 Collection과 부품 수·위치를 확인해 숨긴 뒤 비교합니다. 빈 Collection만 삭제하고 부품이 남는 것과 전체 계층을 제거하는 것도 구분합니다. 원본 방과 이미 정리한 가구를 확인한 뒤 중복 묶음만 제거합니다.

부모를 지정하자 부품이 튑니다

Undo로 부모 지정 전 상태로 돌아갑니다. 자식을 먼저 선택하고 Empty를 마지막 활성 오브젝트로 만든 뒤 Keep Transform으로 다시 지정합니다. Parent 입력칸만 직접 바꾸면 Parent Inverse가 초기화될 수 있습니다. 부모를 해제해야 한다면 Alt+P → Clear and Keep Transformation으로 현재 월드 위치를 유지하는 선택을 확인합니다. Clear Location이나 Clear Origin으로 부품을 한 점에 모으지 않습니다.

부품 하나만 움직입니다

이동을 취소하고 해당 _Group Empty를 선택합니다. 모든 부품의 Parent가 같은 Empty인지, 빠진 다리나 Array Source가 없는지 확인합니다. 부모만 선택했을 때 자식까지 선택 색으로 강조되지 않더라도, 실제 형상이 모두 따라오는지가 기준입니다.

가구가 바닥이나 벽을 통과합니다

표를 적용하기 전에 부모 기준점을 바닥에 만들었는지, 수정된 12강 치수인지부터 확인합니다. 정면·측면·위쪽에서 실제 외곽을 봅니다. 이 강의에서 자식 Mesh의 Location을 전부 0으로 초기화하면 부품 배치가 무너질 수 있습니다.

재질이 분홍색입니다

이미지 텍스처를 사용한 경우에는 File → External Data → Find Missing Files에서 실제 원본 폴더를 찾고, 정상 표시를 확인한 뒤 Pack Resources로 파일에 포함합니다. 12강의 단색 가구만 가져온 경우에는 14강의 나뭇결이 없는 것이 경로 오류는 아닙니다. 저장한 파일을 다시 열어 이미지가 유지되는지도 확인합니다.

별도 재현에서 확인한 결과

이 보완안은 공식 문서와 Codex의 Blender 5.2.0 LTS 별도 재현을 구분해 작성했습니다. 사용자가 직접 이 실습을 했다는 경험담을 추가하지 않습니다. 방은 18강의 별도 검증 파일, 가구는 수정된 12강 치수에 13·14강 재질을 더한 별도 검증 파일을 복사해 사용했습니다.

  • 네 Collection에서 실제 Mesh 15개를 Append하고, 방의 단위 설정이 유지되는지 확인했습니다. Mirror·Array와 묶인 재질·이미지도 보존됐습니다.
  • 이전 방식대로 책상 부품 원점 평균 Z≈0.928에 Empty를 만들고 Scale 0.29·부모 Z=0을 적용하자 책상 최저 형상이 Z≈-0.269로 내려갔습니다. 현재 원본에서 기존 표를 그대로 쓰면 바닥에 잠길 수 있음을 확인했습니다.
  • 바닥 기준점의 부모로 바꾼 뒤 Keep Transform 전후 월드 위치·회전·크기가 유지됐고, 책상 Empty를 0.2m 옮기면 다섯 부품이 모두 같은 만큼 움직였습니다.
  • 새 배치에서 네 가구의 최저 형상은 모두 Z=0이었고, 벽·걸레받이·가구끼리의 외곽이 겹치지 않았습니다. 의자 좌판은 책상 아래보다 낮고 책장 높이는 벽보다 낮았습니다.
  • 문을 0° / -14° / -28°로 바꾼 모습과, 경첩을 중심으로 문 전체 회전을 포함하는 보수적인 XY 외곽을 확인했습니다. 이 시험에서는 네 가구가 그 범위 밖에 있었습니다. 모든 장애물 충돌이나 실제 건축·인체공학 기준을 검사한 것은 아닙니다.
  • 가구 Collection을 숨기면 방은 보이고 가구는 숨겨졌습니다. 저장·재열기 뒤 방 19 Mesh와 가구 15 Mesh·부모 Empty 4개, Boolean 참조와 커터 렌더 제외가 유지됐습니다. 시험 원본 파일은 변경하지 않았습니다.

시험은 Blender Python API의 Append·부모 지정·평가된 형상 외곽·Collection 연결·저장 재열기를 사용했습니다. 실제 메뉴 클릭이나 마우스 Face Snap을 시험한 기록은 아닙니다. 아래 새 이미지는 별도 EEVEE 64 Samples, AgX, Exposure 0, 960×640 렌더입니다. 저장된 연습 모델과 렌더용 보조 카메라·조명을 구분했습니다.

별도 검증한 Blender 방 배치: 왼쪽 책장과 열린 문, 창 아래 책상, 책상 앞 의자, 오른쪽 협탁
Codex가 수정된 배치 값으로 별도 재현한 실제 렌더입니다. 필자의 직접 실습 캡처가 아니며, 재현에 사용한 단위·원점·크기는 본문에 밝혔습니다.

19강 완료 체크리스트

  • 네 가구의 부모 Empty를 움직이면 각 부품이 함께 움직입니다.
  • 실제 형상이 바닥 Z=0에 닿고 벽·걸레받이·다른 가구를 통과하지 않습니다.
  • 책장은 방 안쪽을 향하고, 의자는 책상을 향하며 문을 여닫을 자리가 남습니다.
  • 01_ROOM, 02_FURNITURE, 03_LIGHTS_CAMERA 분류와 네 하위 가구 Collection을 확인합니다.
  • blender-lesson-19-furnished-room.blend를 저장하고 다시 열어 구조와 재질을 확인합니다.

최종 작업 파일은 Ctrl+S 또는 macOS의 Cmd+S로 저장합니다. 렌더를 더 만들려면 16강의 카메라 구도와 PNG 저장 절차를 참고합니다. F12 렌더 완료와 PNG 파일 저장은 별도입니다.

응용 과제

  1. 의자 Rotation Z를 180°에서 165°로 바꾸어 부품이 함께 회전하는지 확인한 뒤 180°로 복원합니다.
  2. 협탁 X를 2.45m에서 2.55m로 옮겨 간격을 비교합니다. 오른쪽 바닥 끝 X=3을 넘지 않는지도 확인합니다.
  3. 가구 Collection의 표시를 껐다 켜 보고, 방과 커터의 상태는 그대로인지 확인합니다.

다음 20강은 이 파일과 Collection 구조를 이어받아 낮·밤 조명을 설정합니다. 가구 배치가 먼저 맞아야 조명 결과도 비교하기 쉽습니다.