VisualGestureBuilderDatabase Class

Represents a VisualGestureBuilderDatabase.

Syntax

public ref class VisualGestureBuilderDatabase sealed : IClosable  

Remarks

VisualGestureBuilderDatabase represents a VGB database. This class operates on a VGB database generated on a PC using the Visual Gesture Builder tool. A VGB database contains gestures that can be detected using NUI streams.

To setup a gesture for detectio:

  1. Open the database and extract the gestures you are interested in.
  2. Create a VisualGestureBuilderFrameSource object for each player you want to detect the gesture for.
  3. Associate the gesture with the player.

The following code shows the typical usage of this.

    ref class MyClass
    {
      Microsoft::Kinect::VisualGestureBuilderFrameReader^ m_pVgbFrameReader;
      Microsoft::Kinect::Gesture^ m_pMyGesture;

      void Init()
      {
        auto pVgbDatabase = ref new VisualGestureBuilderDatabase( ref new Platform::String( LD:\\MyGestureDatabase.gbd ) );
        auto pGestureList = pVgbDatabase->AvailableGestures;

        // Look for the L”MyGesture” gesture
        m_pMyGesture = nullptr;
        for ( auto pGesture : pGestureList )
        {
          if ( Platform::String::CompareOrdinal( pGesture->Name, LMyGesture ) == 0 )
          {
            m_pMyGesture = pGesture;
            break;
          }
        }

        // associate gesture with the player object.
        auto pPlayer = ref new VisualGestureBuilderFrameSource(KinectSensor:: GetDefault(), 0);
        pPlayer->AddGesture( pMyGesture );
        m_pVgbFrameReader = pPlayer->OpenReader();

        // subscribe for gesture events.
        m_pVgbFrameReader->FrameArrived += ref new Windows::Foundation::TypedEventHandler<VisualGestureBuilderFrameReader^,VisualGestureBuilderFrameArrivedEventArgs^>(this, &MyClass::OnVGBFrameArrived);

        // note: the player is not associated with any valid tracking id yet. Once you receive NUI body frames, you need to find the tracking id for
        // player and set it in the player object by
        // m_pVgbFrameReader-> VisualGestureBuilderFrameSource->TrackingID = newTrackingID;

    }


    // This would get called for everyframe with 
    void MyClass::OnVGBFrameArrived(VisualGestureBuilderFrameReader^ sender, VisualGestureBuilderFrameArrivedEventArgs^ args)
    {
      auto pLatestGestureFrame = args->AcquireFrame();
      if (pLatestGestureFrame)
      {
        auto GestureDetectionResult = pLatestGestureFrame->DiscreteGestureResults->Lookup( m_pMyGesture );
        if (GestureDetectionResult && GestureDetectionResult->Detected)
        {
          // gesture was detected!
        } 
      }
    }  

Requirements

Namespace: Microsoft.Kinect

Metadata: microsoft.kinect.winmd

See also

Reference

VisualGestureBuilderDatabase Members

Microsoft.Kinect Namespace