Qt Quick 3D Physics 도형, 물체 및 연결부
시뮬레이션 내의 객체는 다음 네 가지 유형의 체(body) 중 하나로 표현됩니다: StaticRigidBody, DynamicRigidBody, CharacterController 및 TriggerBody. 체의 물리적 형상은 CollisionShape 의 하위 유형으로 표현됩니다.
모양
충돌 형상은 물리 시뮬레이션을 위해 객체의 물리적 형태와 범위를 정의하는 데 사용됩니다. 충돌 형상은 일반적으로 객체의 시각적 외관보다 단순합니다.
엔진에는 다음과 같은 사전 정의된 형상이 내장되어 있습니다: BoxShape, CapsuleShape, SphereShape 및 PlaneShape. 이러한 형상에 대한 처리가 최적화되어 있으므로, 이를 사용한 시뮬레이션은 일반적으로 더 나은 성능을 보입니다.
또한, 데이터로 정의되는 사용자 정의 형상도 있습니다: ConvexMeshShape, HeightFieldShape, TriangleMeshShape. 이러한 형상은 성능을 다소 희생하는 대신 더 큰 유연성을 제공합니다.
바디
body 는 시뮬레이션 내의 물리적 객체를 나타냅니다. 이러한 바디들은 서로 상호작용하고 충돌합니다. 두 가지 주요 유형은 정적 바디 (StaticRigidBody)와 동적 바디 (DynamicRigidBody)입니다. 바디의 물리적 형상은 형상 목록으로 지정됩니다. 유효 형상은 이러한 형상들의 합집합입니다. 형상 간의 상대적 위치는 고정되어 있으며, 바디는 강체입니다.
동적 바디
동적 물체는 이동할 수 있습니다. ‘ isKinematic ’ 속성은 이동 방식을 결정합니다. ‘ isKinematic ’가 ‘ true ’일 경우, ‘ kinematicPosition ’ 및 ‘ kinematicRotation ’ 속성을 수정하여 물체의 위치를 명시적으로 설정합니다. ‘ isKinematic ’가 ‘ false ’일 경우, 물체는 시뮬레이션에 의해 제어됩니다. 즉, 중력에 의해 떨어지거나 다른 물체에서 튕겨 나갑니다.
isKinematic이 true 일 때는 모든 형상이 허용됩니다. 그러나 비키네마틱 물체는 더 많은 제한을 받으며, 오목한 형상만 사용할 수 있습니다. 사전 정의된 형상은 BoxShape, CapsuleShape, SphereShape 이며, 사용자 정의 형상은 ConvexMeshShape 입니다. 그렇다고 해서 비볼록한 물리적 지오메트리를 가질 수 없다는 의미는 아닙니다. 여러 볼록한 형상을 결합하여 하나의 물체를 만들 수 있습니다. ‘복합 형상 예제(Compound Shapes Example )’에서는 볼록한 형상을 기반으로 링 모양의 물체를 만드는 방법을 보여줍니다.
정적 물체
정적 물체는 움직이지 않습니다. 이는 다른 물체들이 움직이는 환경을 나타냅니다. 기술적으로는 정적 물체를 이동시키는 것이 가능하지만, 이 경우 물리 시뮬레이션이 예상치 못한 방식으로 동작할 수 있다는 점에 유의하십시오. 특히, 정적 물체 위에서 정지 상태에 들어간 동적 물체는 정적 물체가 이동하더라도 다시 활성화되지 않습니다. 즉, 정적 물체가 이동하더라도 동적 물체는 동일한 위치에 그대로 머무르게 됩니다.
캐릭터 컨트롤러
CharacterController 유형은 특수한 경우입니다. 이는 환경 내를 이동하는 캐릭터를 나타냅니다. 대표적인 사용 사례로는 1인칭 시점이 있으며, 이때 camera 는 캐릭터 컨트롤러의 자식 객체이며, 키보드/마우스 또는 게임패드로 움직임을 제어합니다.
트리거 바디
또 다른 특수한 경우인 ‘ TriggerBody ’ 유형도 있습니다. 다른 바디와 달리 이는 물리적 바디가 아니므로, 다른 바디와 충돌 상호작용을 하지 않습니다. 이름에서 알 수 있듯이, 이 바디는 다른 바디가 충돌 형상으로 정의된 자신의 볼륨에 진입하거나 빠져나갈 때 액션을 트리거하는 데만 사용됩니다. 다른 바디의 ‘ sendTriggerReports ’ 속성이 ‘ true ’로 설정되어 있고, 해당 바디의 충돌 볼륨이 ‘ TriggerBody ’에 진입하면 ‘ bodyEntered ’ 신호가 발생합니다.
다음 표는 다양한 유형의 바디, 이들 간의 상호작용 방식 및 사용 방법에 대한 요약을 보여줍니다:
| 바디 | 상호작용 | 허용되는 형상 |
|---|---|---|
| StaticRigidBody | 움직이지 않음 | 모든 형상 |
DynamicRigidBody isKinematic 를 사용하여 true | 프로그래밍 방식으로 배치됩니다. 동적 물체에 영향을 미칩니다. 무엇에도 막히지 않습니다. | 모든 도형 |
DynamicRigidBody isKinematic 를 사용하여 false | 시뮬레이션을 통해 완벽하게 제어 | 제한된 형상 |
| CharacterController | 프로그래밍 방식으로 이동합니다. 동적 물체에 영향을 미칩니다. 정적 물체에 의해 멈춥니다. | 단 하나만 CapsuleShape |
| TriggerBody | 없음 | 모든 형상 |
물리 재료
PhysicsMaterial 유형은 객체가 다른 객체와 충돌할 때 어떻게 행동하는지를 지정합니다. dynamicFriction 및 staticFriction 속성은 객체의 미끄러짐 정도를 결정하고, restitution 는 탄성 정도를 결정합니다.
조인트
조인트는 두 물체가 서로에 대해 어떻게 움직이는지를 제한합니다. 예를 들어, 조인트는 문 경첩, 밧줄 또는 팔을 모방하는 데 사용할 수 있습니다. 다양한 사용 사례에 맞춰 여러 종류의 조인트가 지원됩니다. 자세한 내용은 DistanceJoint, FixedJoint, PrismaticJoint, RevoluteJoint 및 SphericalJoint 을 참조하십시오. 모든 조인트는 Joint QML 유형을 기반으로 하며, 연결되는 두 개의 바디와 연결된 각 바디에서의 위치를 설명하는 방향을 가지고 있습니다. 각 조인트 유형은 고유한 물리적 제약을 제어하는 서로 다른 속성을 갖습니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.