void FaceUpdated(IMRFace face)
        {
            Debug.Assert(m_FaceMeshRenderer != null);

            m_FaceMeshRenderer.transform.SetPositionAndRotation(face.pose.position, face.pose.rotation);

            // get current face's desired size (based on landmarks)
            var targetSize = face.GetBounds().size;

            // dynamic scale (not keeping aspect ratio)
            m_DynamicScale.x = m_OriginalUnscaledSize.x > 0 ? targetSize.x / m_OriginalUnscaledSize.x : targetSize.x;
            m_DynamicScale.y = m_OriginalUnscaledSize.y > 0 ? targetSize.y / m_OriginalUnscaledSize.y : targetSize.y;
            m_DynamicScale.z = m_OriginalUnscaledSize.z > 0 ? targetSize.z / m_OriginalUnscaledSize.z : targetSize.z;

            // get average scale from the axis (to keep aspect ratio)
            var averageScale = (m_DynamicScale.x + m_DynamicScale.y + m_DynamicScale.z) / 3;

            m_DynamicScale.Set(averageScale, averageScale, averageScale);

            // apply dynamic scale and scale factor
            m_FaceMeshRenderer.transform.localScale = m_DynamicScale * m_ScaleFactor;
        }