메뉴 건너뛰기

A11Y

열심히 공부했더니 배가 살짝 고파지네요. 그래서 이번 시간에는 간단한 빵 모양을 함께 만들어 보려고 합니다. 오늘 만들 빵은 둥근 공을 양옆으로 늘리고 밑면을 평평하게 잘라낸 모양입니다. 이 과정을 코드로 구현하며 물체의 크기를 조절하는 `scale` 명령어를 배워보겠습니다.

1. 새로운 명령어: 크기를 조절하는 `scale`

scale은 마치 고무찰흙을 특정 방향으로 늘리거나 누르는 것처럼, 물체의 크기를 조절하는 명령어입니다. { } 괄호 안에 있는 모든 물체에 영향을 줍니다.

기본 형태:

scale([x, y, z]) { 만들고 싶은 물체; }

[x, y, z] 안의 숫자들은 각 축의 배율을 의미합니다.

  • x축: 좌우 방향
  • y축: 앞뒤 방향
  • z축: 위아래 방향

scale의 기본값은 scale([1, 1, 1])으로, 아무런 크기 변화가 없는 상태입니다. 각 숫자를 바꿔보면 다음과 같이 변합니다.

  • scale([2, 1, 1]): x축, 즉 좌우 방향으로만 2배 길어집니다. 동그란 공이 좌우로 길쭉한 럭비공 모양이 됩니다.
  • scale([1, 2, 1]): y축, 즉 앞뒤 방향으로만 2배 길어집니다.
  • scale([1, 1, 2]): z축, 즉 위아래 방향으로만 2배 길어집니다.
  • scale([2, 0.5, 1]): 좌우로는 2배 길어지고, 앞뒤로는 0.5배(절반)로 납작해집니다.

이처럼 scale을 사용하면 우리가 원하는 비율로 물체의 형태를 자유자재로 바꿀 수 있습니다.

2. 복습: 상자 만들기 `cube`

빵의 밑면을 잘라낼 칼 역할을 할 cube에 대해 복습해 보겠습니다.

기본 형태:

cube(크기);
cube([가로, 세로, 높이]);

예를 들어, cube(10);은 모든 변의 길이가 10인 정육면체를, cube([10, 20, 5]);는 가로(x) 10, 세로(y) 20, 높이(z) 5인 직육면체를 만듭니다.

여기서 중요한 속성은 center=true 입니다.

  • center=true가 없으면: 상자의 한쪽 꼭짓점이 원점(0, 0, 0)에 위치합니다.
  • center=true를 추가하면: 상자의 정중앙이 원점(0, 0, 0)에 위치하게 됩니다. 물체의 중심을 기준으로 작업할 때 매우 유용합니다.

3. 실습: `scale`과 `cube`로 빵 만들기

자, 이제 배운 내용을 종합해서 빵을 만들어 보겠습니다. 전체 코드를 먼저 살펴보고, 한 줄 한 줄 그 의미를 자세히 파헤쳐 보겠습니다.

코드의 시작 <<<


// 3D 모델의 표면을 부드럽게 표현하기 위한 설정입니다.
$fn = 100;

// 빵의 치수를 변수로 만들어두면 나중에 모양을 바꾸기 쉽습니다.
bread_radius = 20;          // 빵의 기본이 되는 구의 반지름
bread_length_ratio = 2.5;   // 빵을 좌우로 늘릴 비율 (2.5배)
bread_height_ratio = 0.8;   // 빵을 위아래로 납작하게 만들 비율 (0.8배)

// difference()는 첫 번째 물체에서 나머지 물체들을 빼는, '깎아내기' 작업입니다.
difference() {
    
    // 1단계: 빵의 기본 덩어리 만들기 (재료)
    // 구(sphere)를 만든 후, scale을 이용해 모양을 변형시킵니다.
    scale([bread_length_ratio, 1, bread_height_ratio])
        sphere(r = bread_radius);
    
    // 2단계: 빵의 밑면을 잘라낼 거대한 상자 만들기 (깎는 도구)
    // 이 상자는 빵보다 훨씬 커야 확실하게 잘라낼 수 있습니다.
    // 또한, 빵의 아랫부분과 겹치도록 위치를 아래로 이동시켜야 합니다.
    translate([0, 0, -bread_radius])
        cube([150, 80, 40], center = true);
}
        

>>> 코드의 끝

코드 상세 설명

코드가 실행되는 순서를 상상하며 따라와 보세요.

  1. difference() { ... } (깎아낼 준비)

    가장 바깥의 difference()는 "이제부터 깎아내는 작업을 할 거야"라고 선언하는 것과 같습니다. 이 괄호 안의 첫 번째 물체가 재료가 되고, 두 번째부터는 모두 칼이나 끌 같은 도구가 됩니다.

  2. 1단계: 빵 덩어리 만들기 (재료)

    scale([2.5, 1, 0.8]) sphere(r = 20);
    먼저 반지름 20의 완벽한 구(sphere)를 만들고, scale 명령으로 x축(좌우)으로 2.5배, z축(위아래)으로 0.8배 크기를 조절합니다. 그 결과, 좌우로 길쭉하고 살짝 눌린 빵 덩어리 모양이 완성됩니다.

  3. 2단계: 밑면을 자를 상자 만들기 (도구)

    translate([0, 0, -20]) cube([150, 80, 40], center = true);
    먼저 빵보다 훨씬 큰 직육면체(cube)를 원점 중앙에 만듭니다. 이 상자는 빵의 한가운데를 관통하고 있으므로, 빵의 '아랫부분'만 잘라내기 위해 translate를 사용해 아래로(z축 -20만큼) 이동시킵니다. 빵의 원래 반지름이 20이었기 때문에, 상자의 윗면이 빵의 아래쪽 절반과 정확히 겹치게 됩니다.

  4. 최종 작업: 깎아내기

    difference()는 1단계의 '길쭉한 빵 덩어리'에서 2단계의 '아래로 이동한 거대 상자'가 차지하는 부분을 깨끗하게 도려냅니다. 그 결과, 빵의 밑면이 평평하게 잘려 안정적으로 바닥에 놓을 수 있는 최종 빵 모양이 완성됩니다.

오늘의 학습 정리

오늘 우리는 물체의 크기와 비율을 조절하는 scale 명령을 배웠습니다. 이로써 OpenSCAD의 가장 기본적인 3대 변형 명령을 모두 익히게 되었습니다.

  • translate([x, y, z]): 물체의 위치를 이동시킵니다.
  • rotate([x, y, z]): 물체의 방향을 회전시킵니다.
  • scale([x, y, z]): 물체의 크기를 조절합니다.

이 세 가지 명령만 잘 조합하면 아주 복잡하고 멋진 모양도 만들어낼 수 있습니다. 이제 여러분은 3차원 공간에서 물체를 원하는 대로 다룰 수 있는 강력한 도구를 모두 갖게 된 것입니다.

번호 제목 날짜 조회 수
36 OpenSCAD#9. 시각장애인도 3D 디자인을 - 모서리가 둥근 큐브 만들기 new 2026.03.31 8
» OpenSCAD#8. 시각장애인도 3D 디자인을 - scale, 빵 만들기 2026.03.27 19
34 OpenSCAD#7. 시각장애인도 3D 디자인을 - 곡면의 이해 - 품질과 성능 2026.03.26 25
33 OpenSCAD#6. 시각장애인도 3D 디자인을 - 맥미니에 구멍 뚫기 2026.03.24 34
32 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