Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
3D 소개
3D 게임을 만드는 것은 어려울 수 있습니다. 추가 Z 좌표는 2D 게임을 단순하게 만드는 데 도움이 되었던 많은 일반적인 기술들을 더 이상 작동하지 않게 만듭니다. 이러한 전환을 돕기 위해 Godot는 2D와 3D에 유사한 API를 사용한다는 점을 언급할 필요가 있습니다. 대부분의 노드는 동일하며 2D 버전과 3D 버전 모두에 존재합니다. 실제로 3D 플랫포머 튜토리얼 또는 2D 튜토리얼과 거의 동일한 3D kinematic 튜토리얼을 검토할 만합니다.
Godot 3인칭 슈팅 게임(TPS) 데모는 Github 저장소 또는 :ref:`자산 라이브러리 <doc_project_manager_downloading_demos>`에서 사용할 수 있습니다.
3D에서 수학은 2D보다 조금 더 복잡하기 때문에 위키에서의 벡터 항목(특히 수학자나 엔지니어가 아닌 게임 개발자를 위해 만들어진 것)을 확인하는 것도 3D 게임을 효율적으로 개발할 수 있는 길을 닦는 데 도움이 될 것입니다.
3D 작업공간
3D 장면 편집은 3D 작업 영역에서 수행됩니다. 이 작업공간은 수동으로 선택할 수 있지만 Node3D 노드를 선택하면 자동으로 선택됩니다.
2D와 유사하게 작업 공간 선택기 아래의 탭은 현재 열려 있는 장면 간을 변경하거나 더하기(+) 버튼을 사용하여 새 장면을 만드는 데 사용됩니다. 왼쪽 및 오른쪽 도크는 :ref:`editor 소개 <doc_editor_introduction>`에서 익숙할 것입니다.
씬 선택기 아래에는 기본 도구 모음이 표시되고 기본 도구 모음 아래에는 3D 뷰포트가 있습니다.
메인루프(MainLoop)
기본 도구 모음의 일부 버튼은 2D 작업공간의 버튼과 동일합니다. 버튼 위에 마우스 커서를 1초간 올려놓으면 단축키에 대한 간략한 설명이 제공됩니다. 일부 버튼에는 다른 키를 누르는 경우 추가 기능이 있을 수 있습니다. 기본 단축키를 포함한 각 버튼의 주요 기능에 대한 요약은 아래 왼쪽에서 오른쪽으로 제공됩니다.
Transform Mode (Q): Enables a combined move + rotation mode for the selected nodes.
이동 모드 (W): 선택한 노드에 대한 이동(또는 번역) 모드를 활성화합니다. 자세한 내용은 :ref:`doc_introduction_to_3d_space_and_manipulation`를 참조하세요.
회전 모드 (E): 선택한 노드에 대한 회전 모드를 활성화합니다. 자세한 내용은 :ref:`doc_introduction_to_3d_space_and_manipulation`를 참조하세요.
**스케일 모드**(R): 선택한 노드에 대해 스케일링을 활성화하고 다양한 축에 스케일링 기즈모를 표시합니다. 자세한 내용은 :ref:`doc_introduction_to_3d_space_and_manipulation`를 참조하세요.
선택 모드 (Q): 뷰포트에서 노드를 선택할 수 있습니다. 노드를 마우스 왼쪽 버튼으로 클릭하여 선택합니다. 직사각형을 마우스 왼쪽 버튼으로 클릭하고 끌면 직사각형 경계 내의 모든 노드가 선택됩니다. 선택하는 동안 :kbd:`Shift`을 누르고 있으면 선택 항목에 더 많은 노드가 추가됩니다. :kbd:`Shift`을 누른 상태에서 선택한 노드를 클릭하면 노드가 선택 해제됩니다. 이 모드에서는 기즈모를 사용하여 이동이나 회전을 수행할 수 있습니다.
클릭한 위치에 선택 가능한 노드 목록 표시: 설명에서 알 수 있듯이 클릭한 영역에 노드가 2개 이상 있을 경우 클릭한 위치에 선택 가능한 노드 목록을 컨텍스트 메뉴로 제공합니다.
**잠금**(Ctrl + L) 선택한 노드를 잠그면 뷰포트에서 선택 및 이동이 방지됩니다. 버튼을 다시 클릭하면(또는 Ctrl + Shift + L 사용) 선택한 노드의 잠금이 해제됩니다. 잠긴 노드는 씬 트리에서만 선택할 수 있습니다. 씬 트리에서 노드 이름 옆에 있는 자물쇠로 쉽게 식별할 수 있습니다. 이 자물쇠를 클릭하면 노드도 잠금 해제됩니다.
그룹 선택한 노드 (Ctrl + G). 이를 통해 자식 노드 중 하나를 선택한 경우 루트 노드를 선택할 수 있습니다. :kbd:`Ctrl + G`를 사용하면 그룹이 해제됩니다. 또한 씬 트리에서 그룹 해제 버튼을 클릭하면 동일한 작업이 수행됩니다.
**눈금자 모드**(M): 활성화되면 클릭하고 드래그하여 씬의 거리를 미터 단위로 측정할 수 있습니다.
**로컬 공간 사용**(T): 활성화되면 노드의 기즈모는 전역 뷰포트 축 대신 현재 노드의 회전 각도를 사용하여 그려집니다.
스냅 사용 (Y): 활성화하면 이동 및 회전이 그리드에 맞춰집니다. 작업을 수행하는 동안 :kbd:`Ctrl`을 사용하여 스냅을 일시적으로 활성화할 수도 있습니다. 스냅 옵션 변경을 위한 설정은 아래에 설명되어 있습니다.
Use Trackball (U): When enabled, dragging the center of a node (represented by a subtle ray disc highlight) will rotate the node like a physical trackball.
Preserve Children Transform (P): When enabled, transforming a node will preserve the global transform of its children.
햇빛 미리보기 전환: 씬에 DirectionalLight3D가 없으면 햇빛 미리보기를 광원으로 사용할 수 있습니다. 자세한 내용은 :ref:`doc_introduction_to_3d_preview_environment_light`를 참조하세요.
미리보기 환경 전환: 씬에 WorldEnvironment가 없으면 환경 미리보기를 자리 표시자로 사용할 수 있습니다. 자세한 내용은 :ref:`doc_introduction_to_3d_preview_environment_light`를 참조하세요.
태양 및 환경 설정 편집(점 3개): 미리보기 햇빛 및 환경 설정을 구성하는 메뉴를 엽니다. 자세한 내용은 :ref:`doc_introduction_to_3d_preview_environment_light`를 참조하세요.
변환 메뉴: 세 가지 옵션이 있습니다.
객체를 바닥에 스냅: 객체를 단단한 바닥에 스냅합니다.
변환 대화상자: 변환 매개변수(변환, 회전, 배율 조정 및 변형)를 수동으로 조정하는 대화상자를 엽니다.
스냅 설정: 변환, 스냅 회전(도 단위) 및 크기 조정 스냅(퍼센트 단위) 설정을 변경할 수 있습니다.
보기 메뉴: 뷰 옵션을 제어하고 추가 뷰포트를 활성화합니다.
이 메뉴에서는 기본적으로 1x1미터로 설정된 그리드와 파란색, 녹색, 빨간색 축선이 교차하는 원점을 표시하거나 숨길 수도 있습니다. 또한 이 메뉴에서 특정 유형의 장치를 전환할 수 있습니다.
눈을 뜨면 기즈모가 보인다는 뜻이고, 눈을 감으면 숨겨져 있다는 의미입니다. 반쯤 열린 눈은 불투명한 표면을 통해서도 눈이 보인다는 것을 의미합니다.
이 보기 메뉴에서 설정*을 클릭하면 보기(VFOV) 매개변수(도), Z-Near 및 Z-Far 값의 *Vertical Field를 변경할 수 있는 창이 열립니다.
보기 메뉴 옆에 추가 버튼이 표시될 수 있습니다. 이 장의 시작 부분에 있는 도구 모음 이미지에는 MeshInstance3D가 선택되었기 때문에 추가 Mesh 버튼이 나타납니다. 이 메뉴는 특정 노드 또는 선택 사항에 대해 작업하기 위한 몇 가지 빠른 작업이나 도구를 제공합니다.
좌표계
Godot는 3D의 모든 것에 metric 시스템을 사용하며, 1단위는 1미터와 같습니다. 물리학 및 기타 영역은 이 규모에 맞게 조정됩니다. 따라서 다른 척도를 사용하려는 시도는 일반적으로 좋지 않습니다(무엇을 하고 있는지 모르는 경우).
3D 애셋 작업 시에는 항상 올바른 스케일로 작업하는 것이 가장 좋습니다 (3D 모델링 소프트웨어에서 단위를 미터법으로 설정하세요). Godot에서는 사후 가져오기의 스케일링을 허용하며, 대부분의 경우 작동하지만 드문 상황에서 렌더링이나 물리 연산과 같은 섬세한 영역에서 부동 소수점 정밀도 문제(즉, 글리치나 아티팩트)가 발생할 수 있습니다. 아티스트가 항상 올바른 스케일로 작업하도록 하세요!
Y 좌표는 "위"에 사용됩니다. 수평 X/Z 축에 대해 Godot는 오른손 좌표계를 사용합니다. 즉, 정렬이 필요한 대부분의 개체(예: 조명 또는 카메라)의 경우 Z축이 "향하는" 방향으로 사용됩니다. 이 규칙은 대략적으로 다음을 의미합니다.
X는 옆입니다
Y는 위아래입니다
Z는 앞뒤입니다
다른 3D 소프트웨어와 비교에 대한 이 차트를 참조하세요:
Freya Holmér의 이미지
공간 및 조작 장치
3D 뷰에서 개체 이동, 회전 및 크기 조정은 조작기 기즈모를 통해 수행됩니다. 각 축은 색상으로 표시됩니다. 빨간색, 녹색, 파란색은 각각 X, Y, Z를 나타냅니다. 이 규칙은 그리드 및 기타 기즈모에도 적용됩니다(또한 셰이더 언어, Vector3, Color 등에 대한 구성 요소 순서 지정).
몇 가지 유용한 키 바인딩:
뷰포트에서는 화살표를 클릭한 채로 유지하여 축에서 개체를 이동할 수 있습니다. 호를 클릭한 채로 유지하면 개체를 회전할 수 있습니다. 한 축을 잠그고 다른 두 축에서 개체를 자유롭게 이동하려면 색상이 지정된 직사각형을 클릭하고 누른 상태로 끌면 됩니다.
변환 모드가 *선택 모드*에서 *배율 모드*로 변경되면 화살표는 큐브로 대체되며, 큐브를 드래그하여 개체가 이동하는 것처럼 개체의 크기를 조정할 수 있습니다.
블렌더 스타일 변환 단축키 사용
Godot 4.2부터 노드 변환, 회전 및 크기 조정을 위한 블렌더 스타일 단축키를 활성화할 수 있습니다. 블렌더에서 이러한 단축키는 다음과 같습니다:
번역을 위해 G
회전용 R
확장을 위한 S
3D 에디터 뷰포트에 포커스를 맞춘 상태에서 단축키를 누른 후, 마우스를 움직이거나 숫자를 입력하면 선택한 노드가 3D 단위로 지정된 양만큼 이동됩니다. 축을 문자로 지정한 다음 거리를 지정하여 특정 축으로 이동을 제한할 수 있습니다(키보드로 값을 입력하는 경우).
예를 들어, 선택 항목을 2.5 단위 위로 이동하려면 다음 순서를 순서대로 입력하세요(Y+는 Godot에서 위쪽입니다):
G-Y-2-.-5-Enter
Godot에서 블렌더 스타일 변환 단축키를 사용하려면 편집기 설정의 단축키 탭으로 이동한 다음 공간 편집기 섹션으로 이동하세요:
팁
더 많은 단축키는 3D / 공간 편집기 페이지에서 찾을 수 있습니다.
불 방식 OR
Node2D 는 2D의 기본 노드입니다. Control 는 모든 GUI의 기본 노드입니다. 이러한 추론에 따라 3D 엔진은 모든 3D에 Spatial 를 사용합니다.
Spatial 노드는 부모 노드에 상대적인 지역 변형을 가집니다(부모 노드도 Spatial 유형의 노드를 상속받는 경우). 이 변형은 4x3 Transform 또는 위치, 오일러 회전 (x,y 와 z 각도) 그리고 스케일을 나타내는 세 Vector3 로 접근할 수 있습니다.
3D 콘텐츠
이미지 컨텐츠를 불러오고 그리는 것이 직설적인 2D와는 다르게 3D는 약간 더 어렵습니다. 컨텐츠는 Godot로 가져오려면 특수한 3D 툴(일반적으로 DCCs 라고 함)로 만들고 교환 파일 형식으로 내보내야 합니다(3D 형식이 이미지만큼 표준화되지 않음).
생성된 형상
ArrayMesh 리소스를 바로 사용하여 사용자 정의 지오메트리를 만들 수 있습니다.. 간단하게 당신의 배열을 만들고 ArrayMesh.add_surface_from_arrays() 함수를 사용하세요. 또한 SurfaceTool 도우미 클래스를 이용할 수 있습니다. 더 간단한 API와 indexing, generating normals, tangents 등을 위한 도우미를 제공합니다.
어쨌든, 이 메서드는 정적 기하(자주 업데이트되지 않는 모델)를 생성하기 위한 것입니다. 정점 배열을 만들고 3D API에 배열을 제출하는 것은 상당한 성능 비용이 있습니다
참고
Godot 내부의 프로토타입 제작이나 외부 도구 사용에 대해 배우려면 :ref:`doc_csg_tools`를 참조하세요.
즉각적인 지오메트리
대신에 자주 업데이트되는 간단한 지오메트리를 생성해야 할 경우 Godot는 MeshInstance3D 노드에 사용될 수 있는 특수 ImmediateMesh 리소스를 제공합니다. 점, 선, 삼각형 등을 만드는 OpenGL 1.x 스타일의 즉시-모드 API를 제공됩니다.
3D 안의 2D
Godot는 강력한 2D 엔진을 탑재하고 있지만, 게임들 중 많은 유형들이 3D 환경에서 2D를 사용합니다. 회전하지 않는 고정된 카메라(직교 또는 원근법)를 사용함으로써 Sprite3D 와 AnimatedSprite3D 같은 노드로 3D 배경, 더 현실적인 시차(Parallax), 조명/그림자(lighting/shadow) 효과 등을 혼합하는 이점을 가진 2D 게임들을 만드는데 사용할 수 있습니다.
물론 단점은 일반 2D에 비해 복잡성이 추가되고 성능이 저하된다는 점과 픽셀 작업에 대한 참조가 부족하다는 것입니다.
환경
씬을 편집하는 것 외에도 환경을 편집하는 것이 일반적입니다. Godot는 WorldEnvironment 노드를 제공하여 배경색, 모드(스카이박스 넣기 등)를 변경하고 여러 유형의 내장 후처리 효과를 적용할 수 있습니다. 카메라에서 환경을 재정의할 수도 있습니다.
미리보기 환경과 조명
기본적으로 WorldEnvironment 노드 또는 :ref:`DirectionalLight3D <class_DirectionalLight3D>`이 없는 3D 씬에는 씬을 밝히기 위해 누락된 부분에 대한 미리 보기가 켜져 있습니다.
미리보기 조명과 환경은 편집기에 있는 동안 씬에만 표시됩니다. 씬을 실행하거나 프로젝트를 내보내면 씬에 영향을 미치지 않습니다.
미리보기 조명과 환경은 해당 아이콘을 클릭하여 상단 메뉴에서 켜거나 끌 수 있습니다.
해당 아이콘 옆에 있는 점 3개 드롭다운 메뉴를 사용하면 미리보기 환경 및 조명(활성화된 경우)의 속성을 조정할 수 있습니다.
동일한 프로젝트의 모든 씬에 대해 동일한 미리보기 태양 및 환경이 사용되므로 미리보기 조명 및 환경이 필요한 모든 장면에 적용되는 조정만 수행하십시오.
카메라
3D 공간에 얼마나 많은 객체가 배치되어 있더라도 :ref:`Camera3D <class_Camera3D>`도 씬에 추가되지 않으면 아무것도 표시되지 않습니다. 카메라는 직교 또는 원근 투영으로 작동할 수 있습니다.
카메라는 상위 또는 상위 뷰포트와 연결되어 있으며 표시만 됩니다. 씬 트리의 루트는 뷰포트이므로 카메라는 기본적으로 여기에 표시되지만 하위 뷰포트(렌더 대상 또는 PIP)가 필요한 경우 표시하려면 자체 자식 노드 카메라가 필요합니다.
여러 대의 카메라를 처리할 때 각 뷰포트에 대해 다음 규칙이 적용됩니다.
씬 트리에 카메라가 없으면 트리에 처음으로 들어가는 카메라가 활성 카메라가 됩니다. 씬에 진입하는 추가 카메라는 무시됩니다(*현재*로 설정되지 않은 경우).
카메라에 "현재" 속성이 설정된 경우 씬의 다른 카메라와 관계없이 사용됩니다. 속성이 설정되면 활성화되어 이전 카메라를 대체합니다.
활성 카메라가 씬 트리를 벗어나면 트리 순서의 첫 번째 카메라가 그 자리를 차지합니다.
조명
배경 환경은 표면에 나타나는 주변광을 방출합니다. 그래도 씬에 광원을 배치하지 않으면 배경 환경이 매우 밝지 않으면 씬이 상당히 어둡게 나타납니다.
대부분의 실외 장면에는 방향성 조명(태양 또는 달)이 있는 반면 실내 장면에는 일반적으로 여러 위치 조명(램프, 횃불 등)이 있습니다. Godot에서 조명 설정에 대한 더 많은 정보는 :ref:`doc_lights_and_shadows`를 참조하세요.