/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!

\title Morphing Animation
\page quick3d-morphing overview

\section1 Introduction

Morphing animation (also known as \e{vertex animation}) is a way to simulate deformations of soft
materials. It transforms one shape smoothly into another. This is done by creating a mesh that
contains multiple positions for each vertex. Each additional set of positions defines a shape,
called a \l{MorphTarget}{morph target}. When animating, a \l{MorphTarget::weight}{weight} is
assigned to each target. The effective position of each vertex is calculated by linear interpolation
between the positions for that target, according to the weights.

Morphing differs from \l{Vertex Skinning}{skeletal animation} where we create an imagined skeleton,
and rig the model by defining the relationship between each vertex of the model and the nodes of
that skeleton.

Note that the fundamental structure of each morph target must be the same: If three vertices form a
triangle in the base model, they will form a triangle in all the morph targets. The triangle can
have a completely different position, orientation, and size; or it can even be effectively removed
by making it a degenerate triangle with size zero.

In most cases, the mesh will be created by an external tool, and imported using the \l{Balsam Asset
Import Tool}{Balsam} asset import tool. For example, in the Blender 3D editor, morph targets are
called "shape keys", and in Autodesk Maya they are called "blend shapes".

The \l{Qt Quick 3D - Morphing Example}{morphing example} shows how to control the weights of a model
imported from Blender.

The \l{Qt Quick 3D - Custom Morphing Animation}{custom morphing animation example} shows how to
create a morph target in C++ by subclassing QQuick3DGeometry.
*/
