메뉴 건너뛰기

A11Y

'사과 회사'의 맥미니(Mac mini) 본체 3D 모델링하기

이번 시간에는 우리가 손으로 만져본 경험이 있을 법한, '사과 회사'의 맥미니(Mac mini) 본체를 3D 모델로 함께 만들어 보겠습니다.

맥미니의 형태 관찰하기

맥미니 본체를 손으로 만져보면, 가로와 세로가 약 20cm 정도로 비슷한 정사각형 모양입니다. 하지만 모서리는 날카롭지 않고 부드럽게 둥글려져 있죠. 높이는 약 4cm 정도로 낮고 넓적한 형태를 하고 있습니다. 그리고 본체를 뒤집어 바닥을 만져보면, 안정적으로 놓일 수 있도록 중앙에 넓고 둥근 받침대 공간이 살짝 파여있는 것을 느낄 수 있습니다.

이번 시간에는 바로 이 모서리가 둥근 본체와 바닥의 원형으로 파인 부분을 만들어 보겠습니다.

모델링을 위한 오늘의 도구 세 가지

모델링을 시작하기 전에, 오늘 사용할 세 가지 중요한 명령어를 먼저 알아보겠습니다. 이 명령어들을 우리의 조각칼이나 연장이라고 생각해 보세요.

1. cylinder() (원기둥 만들기)

cylinder(r=반지름, h=높이); 형식으로 사용합니다.

마치 통조림 캔이나 기둥처럼, 지정한 반지름과 높이를 가진 원기둥을 만들어주는 명령어입니다. 우리는 이 원기둥을 맥미니의 둥근 모서리를 만드는 데 사용할 겁니다.

2. hull() (감싸서 합치기)

hull() { ... } 형식으로 사용하며, 중괄호 {} 안에 있는 모든 물체를 하나의 덩어리로 감싸주는 역할을 합니다.

예를 들어, 공간에 네 개의 기둥을 세운 뒤 hull() 명령어로 감싸면, 마치 네 개의 기둥 바깥으로 신축성 좋은 천을 팽팽하게 당겨 씌운 것처럼, 모서리가 둥근 사각 기둥 모양이 만들어집니다.

3. difference() (깎아내기)

difference() { ... } 형식으로 사용합니다. 중괄호 {} 안에 있는 첫 번째 물체를 기준으로, 그 뒤에 오는 나머지 물체들의 모양대로 파내는 명령어입니다.

지난 시간에 배운 union()이 여러 물체를 풀로 붙여 하나로 '더하기'하는 개념이었다면, difference()는 첫 번째 물체에서 나머지 물체들을 '빼기'하여 모양을 다듬는 조각칼 같은 역할을 합니다.

OpenSCAD 모델링 코드

자, 그럼 이 세 가지 도구를 가지고 맥미니 본체 모델링을 시작하겠습니다.

Mac mini 본체 모델링 OpenSCAD 코드

코드의 시작 <<<


// 1. 설계도를 위한 기본 치수 설정 (단위: mm)

// 맥미니의 전체 가로/세로 크기
mac_mini_size = 197;

// 맥미니의 높이
mac_mini_height = 36;

// 모서리의 둥근 정도 (원의 반지름으로 표현)
corner_radius = 20;

// 바닥에 파낼 원형 받침대의 반지름
bottom_foot_radius = 70;

// 바닥 원형 받침대의 파이는 깊이
bottom_foot_depth = 1.5;

// 렌더링 품질 (값이 높을수록 표면이 부드러워집니다)
$fn = 100;


// ======================================================
// 2. 실제 맥미니 본체 만들기
// ======================================================

// 'difference()' 명령으로 '깎아내기' 작업을 시작합니다.
difference() {
    
    // 첫 번째 물체: 깎아낼 대상이 되는 기본 몸체
    // 'hull()' 명령으로 네 개의 기둥을 감싸 모서리가 둥근 몸체를 만듭니다.
    hull() {
        // 네 개의 원기둥(기둥)을 각 모서리에 배치합니다.
        // 먼저, 중심에서 각 기둥까지의 거리를 계산합니다.
        offset = mac_mini_size / 2 - corner_radius;
        // offset의 값은 197 / 2 - 20 = 78.5 입니다.

        // 오른쪽 위 모서리에 기둥 배치
        translate([offset, offset, 0])
            cylinder(h = mac_mini_height, r = corner_radius);
            
        // 왼쪽 위 모서리에 기둥 배치
        translate([-offset, offset, 0])
            cylinder(h = mac_mini_height, r = corner_radius);
            
        // 오른쪽 아래 모서리에 기둥 배치
        translate([offset, -offset, 0])
            cylinder(h = mac_mini_height, r = corner_radius);
            
        // 왼쪽 아래 모서리에 기둥 배치
        translate([-offset, -offset, 0])
            cylinder(h = mac_mini_height, r = corner_radius);
    }
    
    // 두 번째 물체: 깎아내는 도구 역할
    // 바닥의 원형 받침대 부분을 파낼 원기둥을 만듭니다.
    translate([0, 0, -1]) // 확실하게 잘라내기 위해 살짝 아래에서 시작
        cylinder(h = bottom_foot_depth + 2, r = bottom_foot_radius);

}
        

>>> 코드의 끝

코드 설명: 한 단계씩 이해하기

이 코드가 어떻게 맥미니 모양을 만들어내는지 차근차근 살펴보겠습니다.

  1. 기본 치수 설정 (변수)

    코드의 가장 윗부분에서는 맥미니의 크기, 높이, 모서리의 둥근 정도 등을 숫자로 정해두었습니다. 이렇게 이름을 붙여두면 나중에 크기를 바꾸고 싶을 때 이 숫자들만 수정하면 되므로 매우 편리합니다. 마치 요리 레시피의 재료 목록과 같습니다.

  2. difference()로 조각 시작하기

    전체 코드는 difference()로 시작합니다. 이는 "이제부터 깎아내는 작업을 할 거야. 첫 번째 나오는 물체가 재료이고, 두 번째부터는 깎아낼 조각칼이야."라고 선언하는 것과 같습니다.

  3. hull()로 몸체 만들기 (재료 준비)

    difference() 안의 첫 번째 작업은 hull()을 이용해 맥미니의 기본 몸체를 만드는 것입니다. hull() 안을 보면 네 개의 cylinder가 있습니다. 이것이 바로 우리가 세울 네 개의 기둥입니다.

    offset이라는 계산은 이 네 기둥을 정확한 모서리 위치에 세우기 위한 좌표 계산입니다. translate 명령어를 사용해 네 개의 원기둥을 각각 오른쪽 위, 왼쪽 위, 오른쪽 아래, 왼쪽 아래, 이렇게 네 꼭짓점 위치로 옮겨줍니다. hull()은 이렇게 배치된 네 개의 기둥을 부드럽게 감싸서, 우리가 상상했던 모서리가 둥근 사각 기둥 형태의 몸체를 완성합니다.

  4. cylinder로 바닥 파내기 (조각칼 사용)

    difference() 안의 두 번째 물체는 바닥을 파내는 역할을 합니다. translate([0, 0, -1])은 바닥을 확실히 파내기 위해, 파내는 도구 역할을 할 원기둥을 아주 살짝 아래쪽에서 시작하도록 위치를 조정하는 것입니다. 그 다음에 나오는 cylinder는 넓고 얇은 원기둥 모양의 조각칼입니다. 이 조각칼이 hull()로 만든 몸체의 바닥 부분을 깎아내어, 우리가 만져봤던 그 둥글고 오목한 받침대 공간을 만들어냅니다.

직접 만들어보고 응용하기

위 코드를 OpenSCAD 편집기에 붙여넣고 F6 키를 눌러 렌더링을 실행하면, 잠시 후 맥미니의 본체가 3D 모델로 완성됩니다. 변수의 값을 바꿔서 다른 모양으로도 만들 수 있습니다.

  • mac_mini_size를 300으로 바꾸면 '맥 라지(Mac large)'가 탄생합니다.
  • mac_mini_height를 1000으로, bottom_foot_depth를 960 정도로 바꾸면 속이 깊게 파인 형태가 되어, 멋진 우산꽂이나 흰지팡이꽂이로 변신시킬 수도 있답니다.
번호 제목 날짜 조회 수
36 OpenSCAD#9. 시각장애인도 3D 디자인을 - 모서리가 둥근 큐브 만들기 new 2026.03.31 8
35 OpenSCAD#8. 시각장애인도 3D 디자인을 - scale, 빵 만들기 2026.03.27 19
34 OpenSCAD#7. 시각장애인도 3D 디자인을 - 곡면의 이해 - 품질과 성능 2026.03.26 25
33 OpenSCAD#6. 시각장애인도 3D 디자인을 - 맥미니에 구멍 뚫기 2026.03.24 34
» OpenSCAD#5. 시각장애인도 3D 디자인을 - 맥미니(Mac mini) 만들기 2026.03.23 55
31 OpenSCAD#4. 시각장애인도 3D 디자인을 - 미키마우스 머리 만들기 2026.03.20 59
30 [수정] OpenSCAD#3. 시각장애인도 3D 디자인을 - 공간의 이해 - 좌표, 단위, 회전 2026.03.19 74
29 OpenSCAD#2. 시각장애인도 3D 디자인을 - 설치와 실행 2026.03.18 77
28 OpenSCAD#1. 시각장애인도 3D 디자인을 - 소개편 2026.03.17 67
27 센스리더 어센드 멀티라인 점자 출력 기능 2026.02.20 175
26 센스리더 가상커서 해제시 포커스 정보에 관하여 2026.02.09 225
25 센스리더 즐겨찾기 도구의 A.I. 프롬프트 사용 안내 2026.02.03 204
24 센스리더 도구에 대한 간략한 소개 2026.01.27 292
23 alt="" 접근성을 더욱 위배할 수 있다. 2025.05.14 810
22 시각장애 개발자와 함께하는 아이디어 마이닝 #9. 마치며 2024.11.22 1008
21 시각장애 개발자와 함께하는 아이디어 마이닝 #8. 자바스크립트 2024.11.21 853
20 시각장애 개발자와 함께하는 아이디어 마이닝 #7. 스크립트 예시, CMD 2024.11.20 775
19 시각장애 개발자와 함께하는 아이디어 마이닝 #6. 스크립트 언어 2024.11.19 819
18 시각장애 개발자와 함께하는 아이디어 마이닝 #5. HTML 2024.11.18 798
17 시각장애 개발자와 함께하는 아이디어 마이닝 #4. 의사 코드 2024.11.14 692