This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold는 기본적으로 3D 엔진입니다. 2D 메터리얼만으로 작업하더라도 모든 렌더링은 3D에서 수행되며, 화면에는 직교 투영으로 표시됩니다. Defold에서는 3D 에셋, 즉 _모델_을 컬렉션에 포함해 완전한 3D 컨텐츠를 사용할 수 있습니다. 3D 에셋만 사용해 순수한 3D 게임을 만들 수도 있고, 원하는 대로 3D와 2D 컨텐츠를 섞을 수도 있습니다.
모델 컴포넌트는 다른 게임 오브젝트 컴포넌트와 같은 방식으로 생성합니다. 두 가지 방법이 있습니다:

모델을 만들고 나면 여러 프로퍼티를 지정해야 합니다:
Id, Position, Rotation 프로퍼티 외에 다음 컴포넌트별 프로퍼티가 있습니다:
위 프로퍼티 외에도 모델의 각 메쉬에 메터리얼을 할당하는 필드가 있습니다:
메터리얼에 따라 하나 이상의 텍스쳐 프로퍼티가 있습니다:
모델 컴포넌트를 배치한 뒤에는 일반 Scene Editor 도구로 컴포넌트 및/또는 이를 감싸는 게임 오브젝트를 자유롭게 편집하고 조작하여 원하는 대로 모델을 이동, 회전, 확대/축소할 수 있습니다.
여러 함수와 프로퍼티를 통해 런타임에 모델을 조작할 수 있습니다(사용 방법은 API 문서를 참조하세요).

Defold는 런타임에 애니메이션을 제어하는 강력한 지원을 제공합니다. 자세한 내용은 모델 애니메이션 매뉴얼을 참고하세요:
local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
애니메이션 재생 커서는 직접 조작하거나 프로퍼티 애니메이션 시스템을 통해 애니메이션할 수 있습니다:
-- run 애니메이션 설정
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- 커서 애니메이션
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_LINEAR, 10)
모델은 glTF morph target 애니메이션도 사용할 수 있습니다. morph target weight는 다른 모델 애니메이션처럼 model.play_anim()으로 애니메이션되며, 런타임에 model.get_blend_weights()와 model.set_blend_weights()를 사용해 읽거나 오버라이드할 수 있습니다. 자세한 내용은 모델 애니메이션 매뉴얼의 morph target 섹션을 참고하세요.
모델에는 go.get() 및 go.set()으로 조작할 수 있는 여러 프로퍼티도 있습니다:
animationhash). 읽기 전용입니다. 애니메이션은 model.play_anim()으로 변경합니다(위 참조).cursornumber).materialhash). 메터리얼 리소스 프로퍼티와 go.set()을 사용해 변경할 수 있습니다. 예제는 API 레퍼런스를 참고하세요.playback_ratenumber).textureNhash). 텍스쳐 리소스 프로퍼티와 go.set()을 사용해 변경할 수 있습니다. 예제는 API 레퍼런스를 참고하세요.3D 소프트웨어에서는 보통 색상이나 텍스쳐 같은 프로퍼티를 오브젝트 버텍스에 설정할 수 있습니다. 이 정보는 3D 소프트웨어에서 익스포트하는 glTF .gltf 또는 .glb 파일에 들어갑니다. 게임의 요구사항에 따라 오브젝트에 적합하고 성능이 좋은 메터리얼을 선택하거나 만들어야 합니다. 메터리얼은 오브젝트 렌더링을 위한 쉐이더 프로그램 과 파라미터 집합을 결합합니다.
시작점으로 사용할 수 있는 내장 메터리얼이 몇 가지 있습니다:
모델용 커스텀 메터리얼을 만들어야 한다면 메터리얼 문서를 참고하세요. 쉐이더 매뉴얼에는 쉐이더 프로그램이 어떻게 동작하는지에 대한 정보가 있습니다.
기본 model 메터리얼에는 go.set() 또는 go.animate()로 변경할 수 있는 다음 상수가 있습니다(자세한 내용은 메터리얼 매뉴얼을 참조하세요). 예:
go.set("#model", "tint", vmath.vector4(1,0,0,1))
go.animate("#model", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tintvector4). vector4는 x, y, z, w가 각각 빨강, 초록, 파랑, 알파 색조에 대응하는 tint를 표현하는 데 사용됩니다.기본 렌더 스크립트는 2D 게임에 맞춰 만들어졌기 때문에 3D 모델에는 동작하지 않습니다. 하지만 기본 렌더 스크립트를 복사하고 렌더 스크립트에 몇 줄의 코드를 추가하면 모델 렌더링을 활성화할 수 있습니다. 예를 들면:
function init(self)
self.model_pred = render.predicate({"model"})
...
end
function update()
...
render.set_depth_mask(true)
render.enable_state(graphics.STATE_DEPTH_TEST)
render.set_projection(stretch_projection(-1000, 1000)) -- 직교
render.draw(self.model_pred)
render.set_depth_mask(false)
...
end
렌더 스크립트가 어떻게 동작하는지에 대한 자세한 내용은 렌더 문서를 참고하세요.