벽 앞의 색상 가이드를 두껍게 바꾸는 것만으로는 구멍이 나지 않습니다. 뒤 벽에 Boolean을 추가하고 Difference의 대상으로 각 커터를 지정해야 합니다. 18강에서는 두 개구부를 확인한 뒤 문틀·경첩 기준으로 열린 문짝·네 칸 창틀·걸레받이를 만듭니다. 창의 파란 판은 투명 유리 대신 모양을 확인하는 불투명 표식으로 사용합니다.
Boolean은 초보자가 결과를 얻기 쉬운 대신, 커터가 벽을 완전히 통과하지 않거나 Scale이 적용되지 않으면 갑자기 아무 변화가 없는 것처럼 보일 수 있습니다. 이번에는 Blender 5.2 LTS, Metric / Unit Scale 1 / Meters, 회전 0인 닫힌 벽 큐브를 기준으로 합니다. Object Mode에서 한 물체씩 선택하고, 커터 치수 확인 → Apply Scale → Difference → Exact → 커터 표시 숨기기 → 부품 제작 순서로 진행합니다. Scale 적용만으로 모든 Boolean 오류가 해결되는 것은 아닙니다. 각 단계에서 무엇이 보여야 정상인지도 함께 확인하겠습니다.
이번 강의에서 남아야 하는 결과
- 뒤 벽에 폭 0.95m, 바닥 위 높이 2.10m의 문 개구부와 1.6×1.2m 창 개구부가 있습니다. 문 커터 전체 높이 2.12m와 구분합니다.
- Boolean Modifier 두 개가 Difference, Exact로 설정되어 있습니다.
- 문 커터와 창 커터는 지우지 않고 숨겨 다시 수정할 수 있습니다.
- 문틀 세 조각, 창틀과 십자 몰딩, 파란 불투명 판이 있습니다.
- 문짝 원점이 경첩 쪽에 있고 Z축으로 약 -28° 열려 있습니다.
- 걸레받이가 문 개구부를 가로막지 않고 벽 구간별로 배치되어 있습니다.
blender-lesson-18-room-details.blend가 저장되어 있습니다.
시작 파일을 복사해 18강 이름으로 저장합니다
- 17강에서 만든 6×4.5m 방 골조 파일을 엽니다.
- 상단 메뉴에서 File → Save As를 선택합니다.
- 파일 이름을
blender-lesson-18-room-details.blend로 바꾸고 저장합니다. - Outliner에서
Back_Wall_6x2_8m, 문 가이드, 창문 가이드가 있는지 확인합니다.
Boolean을 적용하기 전 파일을 별도로 보존하면 결과가 꼬였을 때 17강 완성 상태로 돌아갈 수 있습니다. 바로 Apply를 누르기보다 Modifier를 유지해 두는 이유도 같은 맥락입니다.
1단계: 문 가이드를 벽을 관통하는 커터로 바꿉니다
- 주황색 문 가이드를 선택하고 이름을
Door_Cutter로 바꿉니다. - N → Item → Dimensions에서 X 0.95m, Y 0.55m, Z 2.12m를 입력합니다.
- Location을 X -1.55m, Y 2.175m, Z 1.04m로 입력합니다.
- Ctrl+A → Scale을 실행합니다.
- Object Properties → Viewport Display에서 Display As를 Wire로 바꾸고 In Front를 켭니다. Solid Viewport에서 위치를 보기 위한 표시이며 렌더 제외 설정은 아닙니다.

뒤 벽 두께는 0.15m인데 커터 Y는 0.55m입니다. 커터가 벽의 앞뒤를 여유 있게 완전히 통과해야 Boolean이 안정적으로 계산됩니다. 문 커터 Z는 2.12m, 중심은 1.04m이므로 Z=-0.02~2.10m를 차지합니다. 벽은 Z=0에서 시작하므로 바닥 위에 남는 개구부 높이는 2.10m입니다. 바닥과 정확히 한 면으로 맞닿는 상황을 피하려고 살짝 아래로 통과시킨 값입니다.
2단계: 창문 가이드도 커터로 바꿉니다
- 파란색 창문 가이드를 선택하고 이름을
Window_Cutter로 바꿉니다. - Dimensions에 X 1.6m, Y 0.55m, Z 1.2m를 입력합니다.
- Location을 X 1.15m, Y 2.175m, Z 1.55m로 입력합니다. 17강의 Y=2.08m에서 벽 중심으로 옮기는 것입니다.
- Ctrl+A → Scale을 실행합니다.
- Display As를 Wire, In Front를 On으로 바꿉니다.
3D Viewport 상단의 자석 아이콘을 눌러 Snap을 켤 수 있습니다. 자석 오른쪽 화살표에서 Vertex 또는 Face를 선택하면 커터 위치를 벽 기준으로 맞추기 쉽습니다. Blender 공식 Snapping 문서에서 자석 버튼과 임시 Ctrl 스냅의 동작을 확인할 수 있습니다.

이번 실습은 숫자로 위치를 확정하기 때문에 Snap을 켠 채 마우스로 다시 끌 필요는 없습니다. 자석이 켜져 있으면 예상하지 않은 곳에 달라붙을 수 있으므로 위치 확인이 끝나면 다시 꺼도 됩니다.
3단계: 문 구멍용 Boolean을 추가합니다
- 커터가 아니라 뒤 벽
Back_Wall_6x2_8m을 선택합니다. - Properties의 파란 렌치 아이콘 Modifiers를 클릭합니다.
- Add Modifier → Generate → Boolean을 선택합니다.
- Operation에서 Difference를 선택합니다.
- Operand Type은 Object, Object에는 스포이드로
Door_Cutter를 선택합니다. - Solver는 Exact를 선택합니다.

Difference는 뒤 벽에서 커터와 겹친 부피를 빼는 연산입니다. 공식 Boolean Modifier 안내의 Blender 5.2 Solver 이름은 Float / Exact / Manifold입니다. 이번에는 겹치는 형상을 다루는 Exact를 사용합니다. 예전 설명의 Fast 이름과 혼동하지 않습니다. 닫힌 메시가 아닌 경우 Exact로 바꾸어도 오류가 남을 수 있습니다.
4단계: 창문용 Boolean을 한 번 더 추가합니다
- 뒤 벽이 선택된 상태에서 다시 Add Modifier → Boolean을 누릅니다.
- Operation은 Difference로 선택합니다.
- Object에는
Window_Cutter를 지정합니다. - Solver는 Exact로 선택합니다.
- Outliner에서 Door_Cutter와 Window_Cutter의 눈 아이콘을 꺼 구멍을 확인합니다. 렌더에는 카메라 아이콘도 꺼야 합니다. 해당 열이 없으면 Outliner의 필터 팝오버 → Restriction Toggles에서 Show in Renders 열을 표시합니다.

기존 비교 이미지는 커터 부피와 결과 모양을 보여줍니다. 커터가 반드시 빨간색이어야 하는 것은 아닙니다. Wire 설정이면 윤곽선으로 보일 수 있습니다. 커터 표시를 숨긴 뒤 3D Viewport 시점을 돌려 벽 앞뒤가 열린 것과 구멍 안쪽 두께 면을 확인합니다. 눈 아이콘을 끄는 것, 렌더에서 숨기는 것, 오브젝트를 삭제하는 것은 서로 다릅니다. Modifier를 유지하는 동안 커터를 삭제하지 않습니다.
기존 벽에 Bevel Modifier가 있다면 Boolean과의 순서도 결과에 영향을 줄 수 있습니다. 모서리가 찌그러지거나 구멍 가장자리에 이상한 홈이 생기면 Modifier 오른쪽 점 손잡이로 Boolean을 Bevel보다 위로 이동해 다시 확인합니다. Apply는 완성 검수 후에만 선택합니다.
5단계: 문틀 세 조각을 만듭니다
문틀은 왼쪽 세로, 오른쪽 세로, 위쪽 가로 세 조각입니다. 모두 Cube로 만들고 벽보다 방 안쪽인 Y=2.075m에 둡니다.
- Shift+A → Mesh → Cube를 선택하고 이름을
Door_Frame_Left로 바꿉니다. - Dimensions: X 0.08m, Y 0.12m, Z 2.15m.
- Location: X -2.065m, Y 2.075m, Z 1.075m.
- Shift+D → X → 1.03 → Enter로 오른쪽 문틀을 복제하고 이름을
Door_Frame_Right로 바꿉니다. - 새 Cube로
Door_Frame_Top을 만들고 Dimensions 1.11 / 0.12 / 0.08m, Location -1.55 / 2.075 / 2.11m를 입력합니다.
세 조각에 밝은 아이보리 재질을 적용합니다. 문 개구부보다 문틀의 바깥 폭이 조금 넓어 벽과 틈 없이 겹쳐 보이면 정상입니다. 각 Cube는 Ctrl+A → Scale을 실행합니다.
6단계: 경첩을 기준으로 문짝을 28° 엽니다
- Cube를 추가하고 이름을
Door_Panel로 바꿉니다. - Dimensions를 X 0.88m, Y 0.065m, Z 2.02m로 입력합니다.
- Rotation을 X/Y/Z 0°로 두고 Location을 X -1.55m, Y 2.075m, Z 1.04m로 입력합니다. 문짝 아래는 Z=0.03m, 위는 2.05m입니다. Object → Apply → Scale을 실행합니다.
- 이번에는 꼭짓점 선택 대신 숫자로 경첩 위치를 지정합니다. N → View → 3D Cursor → Location에 X -1.99m, Y 2.075m, Z 1.04m를 입력합니다. 문짝 왼쪽 면 중앙을 지나는 세로 회전축입니다.
- 문짝만 선택한 Object Mode에서 Object → Set Origin → Origin to 3D Cursor를 실행합니다. 모양은 그대로이고 원점만 왼쪽으로 옮겨져야 합니다.
- N → Item → Rotation Z에 -28°를 입력합니다. 문짝이 방 안쪽으로 열리는지 확인합니다. 이어서 3D Cursor Location을 0 / 0 / 0으로 되돌립니다.
문짝이 가운데에서 돌면 먼저 Rotation Z를 0으로 되돌리고 경첩 좌표와 Origin to 3D Cursor를 다시 확인합니다. 공식 Object Origin 안내처럼 원점 위치는 회전 기준에 영향을 줍니다. 원점을 옮긴 뒤 문짝 Location을 -1.55로 다시 입력하면 모양까지 이동하므로, 원점의 Location과 처음 메시 중심 위치를 구분합니다.
손잡이는 선택 과제입니다. 함께 회전할 때는 피벗이 경첩인지 확인하거나, 닫힌 문짝에 손잡이를 배치한 뒤 문짝의 자식으로 연결하고 문짝만 돌립니다. 단순히 두 물체를 선택해 회전하면 기본 Median Point 때문에 가운데를 기준으로 돌 수 있습니다. 이번 검증 범위는 손잡이가 아닌 문짝과 경첩 원점입니다.
7단계: 창틀과 십자 몰딩을 만듭니다
창문 바깥 프레임은 문틀과 같은 방식으로 네 개의 Cube를 사용합니다.
- 왼쪽/오른쪽: Dimensions 0.08 / 0.12 / 1.28m, X는 0.31m와 1.99m, Y 2.075m, Z 1.55m.
- 위/아래: Dimensions 1.76 / 0.12 / 0.08m, X 1.15m, Y 2.075m, Z는 2.19m와 0.91m.
- 가운데 세로 몰딩: Dimensions 0.055 / 0.10 / 1.18m, Location 1.15 / 2.075 / 1.55m.
- 가운데 가로 몰딩: Dimensions 1.58 / 0.10 / 0.055m, Location 1.15 / 2.075 / 1.55m.
여섯 조각에 문틀과 같은 재질을 지정하고 Object → Apply → Scale을 실행합니다. 모든 프레임의 Rotation은 0°이며 세로·가로는 회전이 아니라 Dimensions로 만듭니다. 한 조각을 정확히 만든 뒤 Shift+D로 복제하고 Location만 바꾸면 됩니다. 이동 중 Ctrl을 누르면 임시 Snap이 작동하지만, 이번에도 마지막 값은 N 패널에서 숫자로 검산합니다.
8단계: 유리 자리에 파란 불투명 판을 넣습니다
- Cube를 추가하고 이름을
Window_Glass로 바꿉니다. - Dimensions를 X 1.6m, Y 0.025m, Z 1.2m로 입력합니다. 기존 1.54×1.14m는 개구부 가장자리에 3cm씩 틈을 남기므로, 이번에는 개구부 전체 크기에 맞춥니다.
- Location은 X 1.15m, Y 2.11m, Z 1.55m로 입력합니다.
- Object → Apply → Scale을 실행하고 파란색 재질을 만듭니다. Roughness 0.08, Metallic 0, Alpha 1, Transmission Weight 0을 기준으로 합니다. Material Preview에서 확인합니다.
파란색과 낮은 Roughness는 투명 유리를 만드는 조건이 아닙니다. 이번 판은 창 위치와 프레임 모양을 확인하는 불투명 부품입니다. 실제 투과는 Transmission·IOR·렌더 엔진 조건을 따로 다뤄야 합니다. 구버전의 Blend Mode라는 항목을 무조건 찾도록 안내하지 않습니다. 역할 차이는 공식 Principled BSDF 안내를 참고할 수 있습니다.
9단계: 걸레받이를 문 구간에서 끊어 배치합니다
걸레받이를 벽 전체 한 줄로 만들면 문 아래를 가로막습니다. 창 아래는 Z=0.95m, 걸레받이 위는 Z=0.15m라 서로 닿지 않습니다. 창 아래를 비울 필요는 없습니다. 왼쪽 벽에 한 조각, 뒤 벽에 문틀 양쪽 두 조각을 둡니다.
- Cube를 추가하고 이름을
Baseboard_Left_Wall로 바꿉니다. - Dimensions를 X 0.07m, Y 4.18m, Z 0.15m로 입력합니다.
- Location을 X -2.84m, Y 0, Z 0.075m로 입력합니다.
- 밝은 문틀 재질을 적용하고 Ctrl+A → Scale을 실행합니다.
- 뒤 벽 왼쪽 조각
Baseboard_Back_Left: Dimensions 0.745 / 0.07 / 0.15m, Location -2.4775 / 2.08 / 0.075m. - 뒤 벽 오른쪽 조각
Baseboard_Back_Right: Dimensions 3.995 / 0.07 / 0.15m, Location 1.0025 / 2.08 / 0.075m. 창 아래까지 이어집니다. - 각 조각에 문틀 재질을 재사용하고 Object → Apply → Scale을 실행합니다.

걸레받이의 중심 Z가 0.075m이고 높이가 0.15m이므로 아래면이 정확히 Z=0에 닿습니다. 벽과 같은 위치에 묻히면 Y를 방 안쪽으로 조금 옮깁니다. 문이 열리는 경로와 겹치지 않는지도 확인합니다.
Boolean이 안 될 때는 이 순서로 고칩니다
Modifier를 넣었는데 벽이 그대로입니다
- 뒤 벽이 선택된 상태에서 Modifier를 추가했는지 확인합니다.
- Operation이 Union이 아니라 Difference인지 확인합니다.
- Object에 Door_Cutter 또는 Window_Cutter가 지정됐는지 확인합니다.
- 커터의 눈 아이콘을 켜 벽 앞뒤를 실제로 관통하는지 확인합니다.
구멍 일부가 막히거나 검은 얼룩이 생깁니다
벽과 커터를 각각 선택해 Ctrl+A → Scale을 실행합니다. 커터의 면이 벽 면과 정확히 같은 위치에 멈추지 않도록 Y 두께를 0.55m처럼 충분히 키웁니다. Blender 5.2의 Solver가 Float라면 Exact로 바꾸어 비교하고 Modifier 순서도 확인합니다.
커터를 지웠더니 구멍도 사라졌습니다
Modifier를 적용하지 않은 상태에서는 커터가 계산 기준이므로 삭제하면 안 됩니다. Ctrl+Z로 복구하고, Outliner의 눈과 카메라 아이콘만 꺼서 숨깁니다. 커터 전용 Collection을 만들어 정리하면 실수로 선택할 가능성이 줄어듭니다.
문짝이 경첩이 아니라 가운데에서 돕니다
Rotation Z를 0으로 되돌립니다. 문짝의 닫힌 위치·크기를 먼저 확인하고, 3D Cursor를 -1.99 / 2.075 / 1.04m에 둔 뒤 문짝만 선택해 Origin to 3D Cursor를 실행합니다. 문짝의 옆면 꼭짓점이 모두 고정되는 것이 아니라 그 면 중앙을 지나는 세로 축이 고정되는 회전입니다.
걸레받이가 문을 막습니다
하나의 긴 Cube를 쓰지 말고 문 왼쪽과 오른쪽을 별도 조각으로 나눕니다. 잘못 놓은 조각을 선택해 X로 지운 뒤 가까운 정상 조각을 Shift+D로 복제합니다.
별도 장면에서 실제로 확인한 결과
이 보완안은 공식 문서와 Codex가 별도로 만든 Blender 5.2.0 LTS 방 파일을 사용했습니다. 필자가 직접 경험한 시험 기록이나 기존 참고 이미지의 제작 기록으로 바꾸지 않습니다.
- 17강의 다섯 큐브 장면을 복사해 두 Exact Difference를 추가했습니다. 문·창 중심을 지나는 광선이 벽에 부딪히지 않는지, 문 위 Z=2.11과 창 아래 Z=0.94에서는 벽에 부딪히는지 확인했습니다.
- 문 커터 Z=-0.02~2.10, 바닥 위 개구부 높이 2.10m를 구분했습니다. 평가된 벽 부피는
6×0.15×2.8 - (0.95×2.10 + 1.6×1.2)×0.15 = 1.93275m³와 일치했고, 결과 메시의 닫힌 상태도 확인했습니다. - 원점을 경첩으로 옮겨도 문짝 모양이 이동하지 않고, -28° 회전할 때 경첩 세로 축은 고정되며 문짝 아래는 Z=0.03을 유지했습니다.
- 걸레받이 세 조각은 바닥 Z=0에 닿고, 뒤 벽 조각은 문틀 바깥 끝 X=-2.105 / -0.995에서 끊어져 출입구를 가로막지 않았습니다. 파란 판은 개구부 1.6×1.2m를 덮는 불투명 부품으로 확인했습니다.
- 커터의 눈 표시를 꺼도 Boolean이 유지되는지, 렌더 제외와 두 Modifier 참조가 저장·재열기 뒤 유지되는지 확인했습니다. 17강 시험 원본은 변경하지 않았습니다.
검증은 Blender Python API의 실제 Boolean 평가·광선 교차·부피·원점 이동·회전·파일 재열기로 진행했습니다. 실제 메뉴 클릭이나 키 입력 기록은 아닙니다. 별도의 EEVEE 렌더에서 열린 문·창틀·걸레받이와 커터가 나오지 않는 결과도 확인했습니다. 렌더용 보조 카메라·조명은 연습 모델 파일과 구분했습니다.
18강 완료 체크리스트
- Door_Cutter는 0.95 / 0.55 / 2.12m이며 벽을 완전히 관통합니다.
- Window_Cutter는 1.6 / 0.55 / 1.2m입니다.
- 뒤 벽의 두 Boolean은 Difference, Object, Exact입니다.
- 커터를 숨기면 문과 창 구멍의 안쪽 두께 면이 보입니다.
- 문틀 세 조각과 약 -28° 열린 문짝이 있습니다.
- 창문에는 바깥 프레임 네 조각, 십자 몰딩 두 조각, 1.6×1.2m 파란 불투명 판이 있습니다.
- 걸레받이가 바닥 Z=0에 닿고 문 개구부를 지나지 않습니다.
blender-lesson-18-room-details.blend로 저장했습니다.
응용 과제: 창문을 두 칸으로 바꿔 봅니다
가운데 가로 몰딩의 눈과 렌더 카메라 표시를 모두 끄면 Viewport와 렌더 모두 좌우 두 칸 창문이 됩니다. 반대로 세로 몰딩을 Shift+D로 두 번 복제하고 X 위치를 바꾸면 네 칸보다 촘촘한 창을 만들 수 있습니다. 프레임 개수를 바꿔도 바깥 개구부 1.6×1.2m와 유리 크기는 유지되는지 확인해 보세요.
다음 19강에서는 12강의 책상·의자·협탁·책장을 이 방으로 Append하고, Collection과 Snap을 사용해 실제 생활 공간처럼 배치합니다.
