장면 양식 애니메이션

장면 양식을 사용하면 애니메이션으로 모델을 가져올 수 있습니다. Sceneform API를 사용하여 애니메이션을 재생 및 제어하고 모델의 스켈레톤에 노드를 연결할 수 있습니다.

예를 들어 장면 양식 애니메이션 샘플에는 Android 및 야구 모자 모델을 빌드하는 데 사용되는 파일이 포함되어 있습니다. 앤디 모델에는 애니메이션 데이터가 포함되지만 야구 모자는 애니메이션이 아닌 모델입니다. 샘플을 실행하면 모자가 노드를 사용하여 머리에 고정되어 있는 동안 앤디가 팔을 자르고 팔을 흔듭니다.

장면 양식 모델 애니메이션과 Android 속성 애니메이션 비교

장면의 모델 애니메이션과 Android의 속성 애니메이션을 구분하는 것이 중요합니다.

  • 모델 애니메이션은 아티스트가 모델링 및 애니메이션 소프트웨어를 사용하여 미리 생성합니다. 여기에는 골격 애니메이션 데이터가 포함됩니다. 이러한 애니메이션은 *.fbx 파일로 내보낸 다음 장면에 사용할 *.sfb 파일로 가져와야 합니다.

  • 속성 애니메이션은 기본적인 Android 개념이며 장면 양식과 관련이 없습니다. 이러한 종류의 애니메이션에서는 getter와 setter가 있는 자바 객체의 변경 가능한 값을 변경할 수 있습니다. 애니메이션 값을 동적으로 설정할 수 있지만 *.sfb 파일로 패키징할 수는 없습니다.

    속성 및 모델 애니메이션은 모두 Android Animator API를 지원합니다. 모두 리스너, 재생 컨트롤 (시작/중지/종료/일시중지/취소), 재생 시간 및 시작 지연을 지원합니다.

    모델 애니메이션에서는 TimeInterpolators 재생에 대한 제한된 지원만 제공됩니다. 역방향 재생은 모델 애니메이션에서 지원되지 않습니다.

  • 장면 양식 애니메이션 모델링의 실제 동작을 보려면 애니메이션 샘플을 검토합니다.

  • 실제로 사용되는 장면 형태를 사용하는 속성 애니메이션을 보려면 태양계 샘플을 검토하세요.

모델 애니메이션 개념

애니메이션 모델 작업을 시작하기 전에 뼈 애니메이션과 관련된 특정 개념과 장면에 적용되는 관련 제한사항 및 기능을 이해하는 것이 좋습니다.

  • 뼈. 애니메이션 모델에는 계층 구조에서 상위-하위 관계를 형성하는 서로 연결된 가 포함됩니다. 애니메이션은 재생 중 뼈의 위치와 방향을 변경합니다.

    장면에서 상위 Node를 이동하면 모든 하위 Node도 함께 이동하는 것처럼 장면에서 상위 뼈를 이동하면 하위 요소도 이동합니다. 뼈는 애니메이션으로 이동하거나 SkeletonNode 클래스를 통해 노드로 액세스할 수 있습니다. Node로 뼈에 액세스하면 새 프레임이 재생 중인 경우 프레임마다 새 위치를 덮어씁니다.

  • 스켈레톤. 뼈대는 모든 뼈로 구성되며 상위-하위 관계의 계층 구조를 형성합니다.

    예를 들어, 인간 팔의 모델에는 '왼쪽 어깨', '왼쪽 팔꿈치', '왼쪽 팔꿈치', '왼쪽 팔꿈치' 등과 같은 뼈가 포함될 수 있습니다. 이 계층 구조의 상위 요소로 '왼쪽 어깨'부터 하위 요소로 할당합니다. 왼쪽 상완은 좌측 팔꿈치와 아래 뼈일 수 있습니다. 어깨뼈를 회전하면 팔, 팔, 팔꿈치 및 아래 뼈가 함께 움직입니다.

    sceneform에는 골격의 뼈 간 상위-하위 관계를 변경하는 API가 없습니다. 이 작업은 외부 모델링 및 애니메이션 패키지에서 미리 실행해야 합니다.

    무기 객체를 묘사하는 모델도 골격을 활용하여 현실감을 높일 수 있습니다. 예를 들어, 소파 모델에는 뼈와 골격이 있을 수 있습니다.

  • 피부. 스킨은 모델의 그려진 표면 메시에 적용되는 가중치입니다. 스킨 메시의 위치와 모양은 주변 뼈에서 계산됩니다. 이 뼈대 연결은 모델이 어떻게 변형되는지 매핑하여 보다 사실적인 움직임을 제공합니다.

    모델링 및 애니메이션 패키지를 사용하여 스킨을 미리 준비해야 합니다. 장면 양식은 피부 메시의 머티리얼을 변경하여 모델의 모양을 변경할 수 있습니다.