1. Introduction
간단한 LOGO 3D 그리기 예제입니다. 아래 기본 3D 예제는 입문자나 초보자도 할 수 있겠지만, 아마도. 그러나 이어지는 하단 응용 연습 예제들은 파이썬 코드로 되어 있고 중급 이상 예제입니다. 무리하시지 마세요.
■ 주의 : Up, Down, LeftRoll(=LR), RightRoll(=RR) 명령어들은 모두 3D 환경에서만 작동되는 명령어들입니다. Perspective 명령으로 3D 환경으로 전환한 다음에만 정상적으로 실행됩니다. 2D 환경으로 되돌아오는 명령어는 Window입니다.
■ 3D 관련 명령어들은 모두 중심 회전축을 기억하세요.
2. Code
to box1
repeat 4 [ fd 150 rt 90 ]
end
to box36
repeat 144 [ box1 move1 lr 2.5 ]
end
to draw
RightRoll 90
box36
ht
end
to GotoStartingPosition
pu lt 90 fd 300 lt 90 fd 300 rt 180 pd
end
to main
setup
draw
end
to move1
pu down 90 fd 20 up 90 pd
end
to setup
Home CS PPT PD ST Perspective
GotoStartingPosition
end
3. Result

4. Notes
1) 평범한 박스를 하나 그립니다. 크기는 적당하게 정하시면 됩니다. 3D 환경에서 그리려면, Perspective 명령어를 입력하면 됩니다. 다시 원래대로 되돌아오기는 Window 명령어.
to box1
repeat 4 [ fd 150 rt 90 ]
end

2) 위 박스 함수를 이용해서 박스를 여러개를 그립니다. 뒤에 붙은 숫자는 크게 신경쓰지 않아도 됩니다만. 완성된 코드에서는 수정하는 것이 좋겠죠? ^.^;
to box36
repeat 144 [ box1 move1 lr 2.5 ]
end
여기서 lr 2.5는 Left Roll의 단축어 약자입니다. Left Roll은 왼쪽으로 돌리기 정도의 의미입니다. 3D 환경에서 생각해야 합니다. 2.5는 각도를 의미합니다.
3) 그리기 함수입니다. 먼저 오른쪽 돌리기 90도를 실행합니다. 그리고 나서 박스36 함수를 실행합니다. 박스36 함수는 실제로는 144개의 박스를 그리지만 처음에는 36개를 그리는 것으로 되어 있었습니다. 144를 36으로 고쳐서 실행해보세요. 이름은 그대로 두고.
to draw
RightRoll 90
box36
ht
end


4) 그리기를 시작할 위치로 이동하는 함수입니다. 이동형 함수이기 때문에 pu으로 시작하고 pd으로 끝납니다.
to GotoStartingPosition
pu lt 90 fd 300 lt 90 fd 300 rt 180 pd
end
5) main 함수입니다. 단순하게 구성하는 것이 좋습니다. 이런 함수 구성은 프로세싱Processing 언어와 아두이노Arduino 언어 환경과 매우 비슷합니다. 이들 인접 언어를 학습할 때 도움이 됩니다.
to main
setup
draw
end
6) move1 함수입니다. down 90은 앞으로 고개 숙이기 90도, up 90은 고개 들기 90도의 의미입니다. 고개 숙이기와 고개 들기 역시 3D 환경에서 생각하셔야 합니다.
to move1
pu down 90 fd 20 up 90 pd
end


7) 3D 환경에서 그리려면, Perspective 명령어를 입력하면 됩니다. 다시 원래대로 되돌아오기는 Window 명령어.
to setup
Home CS PPT PD ST Perspective
GotoStartingPosition
end
■ 주의 : Up, Down, LeftRoll(=LR), RightRoll(=RR) 명령어들은 모두 3D 환경에서만 작동되는 명령어들입니다. Perspective 명령으로 3D 환경으로 전환한 다음에만 정상 실행됩니다. 2D 환경으로 되돌아오는 명령어는 Window입니다.
■ 3D 관련 명령어들은 모두 중심 회전축을 기억하세요.
5. 응용 연습 - 1
3D 환경에서 연습합니다. UP 연속 적용.
down 90
box1 up 15
box1 up 15
box1 up 15
box1 up 15
box1 up 15
box1 up 15
box1 up 15
같은 결과, 축약 코드로 표현 ::
down 90 ;; 누운 상태에서 시작합니다.
repeat 7 [ box1 up 15 ] ;; 위 코드와 같이 7번 반복합니다.
실행 결과 ::

■ 참고 : 프로세싱 언어 환경이나 C# 언어를 사용하는 유니티Unity 환경에서는 좀더 완전한 3D 그래픽 환경을 제공합니다. 추천.
■ 3D 환경 자체가 뭐가 뭔지 모를 경우, 먼저 Blender 3D나 TrueSpace 3D와 같은 무료 3D 소프트웨어 앱으로 사전에 조금 연습해보면 좋을 것으로 생각됩니다.
■ 3D Studio Max, Maya 3D, Cinema 4D, Rhino 3D, Sketch Up 3D Pro, Catia 3D, AutoCAD 등 기타 유명한 3D 소프트웨어 패키지 앱들이 있습니다. 이들은 비교적 고가의 상용 제품들입니다.
■ 응용 연습 과제
1) 3D Box로 성채를 만들어 보세요.
2) 3D Box에는 어떻게 색칠할 수 있을까요? 다양한 색칠을 해보세요.
6. 응용 연습 - 2
이하 응용 연습 예제들은 중급 이상 예제입니다. 무리하시지는 마세요. 이 예제는 위 본문의 FMS Logo 코드를 어쨌든 파이썬으로 비슷하게 변환합니다. 파이썬 내장 turtle 모듈은 2D 전용이라서 3D로 뭔가를 그리려면 다른 보완 대안이 필요합니다. 아래에서는 죽이되든 밥이 되든 무조건 파이썬으로 변환. vpython이 약간의 도움이 됩니다. ^.^;
■ Python + VPython에서 3D 구현하기 절차.
1) 오리지널 파이썬 설치. (보통은 이미 컴퓨터에 설치되어 있을 듯..하지만.) python.org에서 32비트용(Windows 7), 또는 64비트용(Windows 11) 최신판 중에서 적절한 것을 선택해서 다운로드 받아서 설치하시면 됩니다.
2) VPython 설치 : 추가로 설치해야 합니다. 오리지날 파이썬과 함께 사용하려면 Windows 7, 11의 CMD 창이나 파워쉘 창에서 입력합니다.
pip install vpython
3) Thonny에서 설치하려면, Thonny Menu / Tools / Manage packages ... 로 들어가서 검색창에서 검색합니다. 검색 키워드는 vpython. 인터넷 연결을 통해서 vpython이 설치되므로 이때 인터넷 연결이 필요합니다.

4) 파이썬 프로그램 소스코드에서 임포트하기
import vpython
또는
from vpython import *
# 다음 코드를 입력해서 테스트, 정상작동 여부 확인.
box() # 그냥 box()임. 3D.
# 주의. import vpython 으로 임포트하면 '모듈이름.box()' 형태이어야 함. 예. vpython.box()
설치 혹은 그 이후 코드 실행에서 보안 경고 창이 나타날 수 있습니다. 허용을 선택하세요.


■ 응용 연습 2 코드
# 응용 연습 2 - 0 코드
# 응용 연습 2 - 1 코드
# 박스 대신 사용할 3D 타일 객체
# 보는 각도에 따라서 매우 달라 보입니다.
# 기본 코드만 포함해서 다소 부적절하게 표시됩니다.
from vpython import *
scene = canvas(title="Single Tile Example",
width=600, height=600,
center=vector(0,0,0),
background=color.black)
# 단일 타일 객체
tile = box(pos=vector(0,0,0),
size=vector(150, 2, 150), # 얇은 정사각형 판
axis=vector(1,0,0), # 방향성 부여
color=color.white,
opacity=0.7)
# ..
# ..
# ..
# 응용 연습 2 - 1 코드
# 응용 연습 2 - 1 코드
# 3D 입체 타일 형태의 박스 하나를 만들고 회전 애니메이션으로 보여주기
# 위 코드의 보여주기 개선판임.
# 오리지날 python이나 thonny 이 외에 vpython이 추가로 정상 설치되어 있어야 합니다.
from vpython import *
import math
scene = canvas(title="Rotating Tile",
width=600, height=600,
center=vector(0,0,0),
background=color.black)
# 단일 타일
tile = box(pos=vector(0,0,0),
size=vector(150, 2, 150),
axis=vector(1,0,0),
color=color.white,
opacity=0.8)
# 카메라 시점 약간 기울이기
scene.forward = vector(-1,-0.5,-0.7)
scene.up = vector(0,0,1)
# 회전 애니메이션
while True:
rate(60)
tile.rotate(angle=math.radians(1), axis=vector(0,1,0), origin=vector(0,0,0))
# ..
# ..
# .. 이상입니다만. ^.^;
# 응용 연습 2 - 2 코드
# 응용 연습 2 - 2 코드
# 3D 타일 막대 객체를 활용
from vpython import *
import math
scene = canvas(title="Circular Tile Pattern",
width=800, height=800,
center=vector(0,0,0),
background=color.black)
def circular_tiles():
R = 200 # 원의 반지름
N = 144 # 반복 횟수, 144.
# 이것을 36으로 수정 테스트해보세요. 또는 1로 테스트, 개별 타일 원형 확인용.
angle_step = math.radians(2.5)
for i in range(N):
theta = i * angle_step
# 원 위의 좌표 (x, y)
x = R * math.cos(theta)
y = R * math.sin(theta)
pos = vector(x, y, 0)
# 타일의 방향: 원의 접선 방향
tangent = vector(-math.sin(theta), math.cos(theta), 0)
tile = box(pos=pos,
size=vector(150, 2, 150), # 얇은 타일. x, y. z. 순서. 가늘고 긴 정사각형 막대는 (20, 20, 150) 정도.
axis=tangent,
color=color.white,
opacity=0.7)
# RightRoll 90 --> x축 기준으로 전체를 눕힘
scene.forward = vector(0, -1, -0.5)
scene.up = vector(0,0,1)
circular_tiles()
# ..
# ..
# .. vpython은 그 자체로 새로운 놀라운 기능을 가지고 있는 것으로 생각됩니다. 추천할 만합니다.
■ 결과 : # 응용 연습 2 - 2 코드
- 실행 옵션 수정 :: N = 144, size=vector(20, 20, 150).
- 가로 20, 세로 20, 높이 150의 '몽둥이' 각목같이 생긴 가늘고 긴 '짝대기'를 오밀조밀하게 회전체 모양으로 한 바퀴 돌린 것.
- 세부 조건은 코드 내 관련 숫자들을 참고하세요. ^.^;

대략 이렇게 생겼습니다. 파이썬 3D!!! 이제 파이썬으로도 3D를 손쉽게 구현 할 수 있습니다.
PyOpenGL은 조금 난이도가 높아 보여 일단 패스. ^.^;;;
vpython은 공식 웹사이트에 온라인 문서도 잘 되어 있는 편이고 마침 한국어판 교재도 한 권 출판되었습니다.
알라딘 검색 추천. vpython.
아, 참.
Blender 3D 패키지 앱과 일부 몇몇 3D 그래픽 앱들은 그 내부에 파이썬을 내장해 가지고 있어서 파이썬으로 3D 구성요소들을 제어할 수도 있습니다. Blender, Maya, TrueSpace(Old) 등등.
🎨 파이썬 내장 스크립트 지원 3D 그래픽 소프트웨어
| 소프트웨어 | 특징 | 파이썬 활용 범위 |
| Blender | 무료/오픈소스 3D 모델링·애니메이션 툴 | Blender 전체 UI, 모델링, 애니메이션, 렌더링, 애드온 제작까지 모두 Python API로 제어 가능 |
| Maya (Autodesk) | 영화·게임 업계에서 많이 쓰이는 상용 툴 | Maya Embedded Language(MEL) 외에 Python API 제공. 리깅, 애니메이션, 파이프라인 자동화 |
| Houdini (SideFX) | 절차적 모델링·시뮬레이션 특화 | Python으로 노드 제어, 툴 제작, 시뮬레이션 파라미터 자동화 |
| Cinema 4D (Maxon) | 모션그래픽 분야 강세 | Python으로 플러그인, 스크립트, 자동화 가능 |
| Modo (Foundry) | 모델링·렌더링 툴 | Python API 제공, 파이프라인 통합 및 자동화 |
| 3ds Max (Autodesk) | 건축·게임 분야에서 많이 사용 | MaxScript가 기본이지만 Python API도 지원 |
| FreeCAD | 오픈소스 CAD/3D 모델링 | Python으로 매크로, 파라메트릭 모델링 제어 가능 |
📌 요약 정리
- 오픈소스 진영: Blender, FreeCAD --> 무료로 바로 Python 스크립팅 가능.
- 상용 툴: Maya, Houdini, Cinema 4D, Modo, 3ds Max --> 업계 표준 툴들이며, 모두 Python API를 제공.
- 활용 범위: 단순 자동화 매크로부터, UI 확장, 플러그인 제작, 파이프라인 통합까지 다양.
🎨 주요 3D 그래픽 앱과 Python 버전 지원 현황
| 소프트웨어 | Python 지원 현황 (2024~2025 기준) | 비고 |
| Blender | Python 3.11 내장 (Blender 4.x 기준) | Blender는 항상 최신 안정 버전의 Python을 내장하려고 합니다. |
| Maya (Autodesk) | Maya 2025 --> Python 3.11 지원 | Maya 2022부터 Python 3.x로 전환, 최신 버전은 3.11 기반 |
| Houdini (SideFX) | Houdini 20 --> Python 3.10 지원 | 점진적으로 최신 버전으로 업데이트 중 |
| Cinema 4D (Maxon) | R2024 --> Python 3.11 지원 | 파이썬 콘솔과 플러그인 제작에 최신 버전 사용 가능 |
| Modo (Foundry) | Python 3.10 지원 | 일부 기능은 아직 3.11 미지원 |
| 3ds Max (Autodesk) | 2025 버전 --> Python 3.11 지원 | MaxScript와 병행 사용 가능 |
| FreeCAD | Python 3.11 호환 | 오픈소스라서 시스템에 설치된 최신 Python을 그대로 활용 |
📌 요약 정리
- 최신 Python 3.11을 바로 지원: Blender, Maya, Cinema 4D, 3ds Max, FreeCAD
- 조금 이전 버전(3.10): Houdini, Modo
- 업데이트 속도: Blender와 FreeCAD는 오픈소스라 빠르고, Autodesk/Maxon 제품군은 매년 릴리스에 맞춰 최신 버전으로 따라갑니다.
7. Files
본문의 기본 예제 코드입니다.
8. Ref.
1) FMS Logo 내장 도움말.
2) FMS Logo 내장 예제.
Happy Programming!
^.^;
'Programming > LOGO' 카테고리의 다른 글
| LOGO 3D 연습 : Castle - 001 (0) | 2025.11.16 |
|---|---|
| LOGO 3D - 002 (0) | 2025.11.07 |
| 거북이 떼를 만나보세요 - 001 (0) | 2025.08.07 |
| 컬러링 기초 연습 - 001 (0) | 2025.06.29 |
| LOGO 중급 연습 : repCount - 003 - if 조건문과 AND (0) | 2025.01.27 |