Пример #1
0
    void OnPreRender()
    {
        if (syncMode == SYNC_MODE.LOW_LATENCY)
        {
            _imageList = _controller.Images;
        }

        Image referenceImage = _imageList[(int)eye];

        if (referenceImage.Width == 0 || referenceImage.Height == 0)
        {
            _missedImages++;
            if (_missedImages == IMAGE_WARNING_WAIT)
            {
                Debug.LogWarning("Can't find any images. " +
                                 "Make sure you enabled 'Allow Images' in the Leap Motion Settings, " +
                                 "you are on tracking version 2.1+ and " +
                                 "your Leap Motion device is plugged in.");
            }
            return;
        }

        if (referenceImage.Height != _currentHeight || referenceImage.Width != _currentWidth || referenceImage.Format != _currentFormat)
        {
            initMainTexture(referenceImage);

            _currentHeight = referenceImage.Height;
            _currentWidth  = referenceImage.Width;
            _currentFormat = referenceImage.Format;

            _imageBasedMaterialsToInit.Clear();
            _imageBasedMaterialsToInit.AddRange(_registeredImageBasedMaterials);

            _forceDistortionRecalc = true;
        }

        loadMainTexture(referenceImage);

        for (int i = _imageBasedMaterialsToInit.Count - 1; i >= 0; i--)
        {
            LeapImageBasedMaterial material = _imageBasedMaterialsToInit[i];
            initImageBasedMaterial(material);
            _imageBasedMaterialsToInit.RemoveAt(i);
        }

        foreach (LeapImageBasedMaterial material in _registeredImageBasedMaterials)
        {
            if (material.imageMode == LeapImageBasedMaterial.ImageMode.STEREO ||
                (material.imageMode == LeapImageBasedMaterial.ImageMode.LEFT_ONLY && eye == EYE.LEFT) ||
                (material.imageMode == LeapImageBasedMaterial.ImageMode.RIGHT_ONLY && eye == EYE.RIGHT))
            {
                updateImageBasedMaterial(material, ref referenceImage);
            }
        }
    }
  void OnPreRender ()
  {
    if (syncMode == SYNC_MODE.LOW_LATENCY) {
      _imageList = _controller.Images;
      /*if (!_imageList.IsEmpty) {
        Debug.Log (name + " LOW_LATENCY: controller.Now(): " + _controller.Now() + " - imageList.Timestamp: " + _imageList[0].Timestamp + " = " + (_controller.Now() - _imageList[0].Timestamp));
      } else {
        Debug.LogWarning(name + " LOW_LATENCY -> NO FRAMES");
      }*/
    }

    int imageEye = frameEye;
    switch (retrievedEye) {
    case EYE.LEFT:
      imageEye = 0;
      break;
    case EYE.RIGHT:
      imageEye = 1;
      break;
    case EYE.RIGHT_TO_LEFT:
      imageEye = 1 - imageEye;
      break;
    default:
      break;
    }

    Image referenceImage = _imageList [imageEye];

    if (referenceImage.Width == 0 || referenceImage.Height == 0) {
      _missedImages++;
      if (_missedImages == IMAGE_WARNING_WAIT) {
        Debug.LogWarning ("Can't find any images. " +
          "Make sure you enabled 'Allow Images' in the Leap Motion Settings, " +
          "you are on tracking version 2.1+ and " +
          "your Leap Motion device is plugged in.");
      }
      return;
    }

    if (referenceImage.Height != _currentHeight || referenceImage.Width != _currentWidth || referenceImage.Format != _currentFormat) {
      initMainTexture (referenceImage);

      _currentHeight = referenceImage.Height;
      _currentWidth = referenceImage.Width;
      _currentFormat = referenceImage.Format;

      _imageBasedMaterialsToInit.Clear ();
      _imageBasedMaterialsToInit.AddRange (_registeredImageBasedMaterials);

      _forceDistortionRecalc = true;
    }

    loadMainTexture (referenceImage);

    for (int i = _imageBasedMaterialsToInit.Count - 1; i >= 0; i--) {
      LeapImageBasedMaterial material = _imageBasedMaterialsToInit [i];
      initImageBasedMaterial (material);
      _imageBasedMaterialsToInit.RemoveAt (i);
    }

    foreach (LeapImageBasedMaterial material in _registeredImageBasedMaterials) {
      if (material.imageMode == LeapImageBasedMaterial.ImageMode.STEREO ||
        (material.imageMode == LeapImageBasedMaterial.ImageMode.LEFT_ONLY && imageEye == 0) ||
        (material.imageMode == LeapImageBasedMaterial.ImageMode.RIGHT_ONLY && imageEye == 1)) {
        updateImageBasedMaterial (material, ref referenceImage);
      }
    }

    frameEye++;
  }
    void OnPreRender()
    {
        if (syncMode == SYNC_MODE.LOW_LATENCY)
        {
            _imageList = _controller.Images;

            /*if (!_imageList.IsEmpty) {
             * Debug.Log (name + " LOW_LATENCY: controller.Now(): " + _controller.Now() + " - imageList.Timestamp: " + _imageList[0].Timestamp + " = " + (_controller.Now() - _imageList[0].Timestamp));
             * } else {
             * Debug.LogWarning(name + " LOW_LATENCY -> NO FRAMES");
             * }*/
        }

        int imageEye = frameEye;

        switch (retrievedEye)
        {
        case EYE.LEFT:
            imageEye = 0;
            break;

        case EYE.RIGHT:
            imageEye = 1;
            break;

        case EYE.RIGHT_TO_LEFT:
            imageEye = 1 - imageEye;
            break;

        default:
            break;
        }

        Image referenceImage = _imageList [imageEye];

        if (referenceImage.Width == 0 || referenceImage.Height == 0)
        {
            _missedImages++;
            if (_missedImages == IMAGE_WARNING_WAIT)
            {
                Debug.LogWarning("Can't find any images. " +
                                 "Make sure you enabled 'Allow Images' in the Leap Motion Settings, " +
                                 "you are on tracking version 2.1+ and " +
                                 "your Leap Motion device is plugged in.");
            }
            return;
        }

        if (referenceImage.Height != _currentHeight || referenceImage.Width != _currentWidth || referenceImage.Format != _currentFormat)
        {
            initMainTexture(referenceImage);

            _currentHeight = referenceImage.Height;
            _currentWidth  = referenceImage.Width;
            _currentFormat = referenceImage.Format;

            _imageBasedMaterialsToInit.Clear();
            _imageBasedMaterialsToInit.AddRange(_registeredImageBasedMaterials);

            _forceDistortionRecalc = true;
        }

        loadMainTexture(referenceImage);

        for (int i = _imageBasedMaterialsToInit.Count - 1; i >= 0; i--)
        {
            LeapImageBasedMaterial material = _imageBasedMaterialsToInit [i];
            initImageBasedMaterial(material);
            _imageBasedMaterialsToInit.RemoveAt(i);
        }

        foreach (LeapImageBasedMaterial material in _registeredImageBasedMaterials)
        {
            if (material.imageMode == LeapImageBasedMaterial.ImageMode.STEREO ||
                (material.imageMode == LeapImageBasedMaterial.ImageMode.LEFT_ONLY && imageEye == 0) ||
                (material.imageMode == LeapImageBasedMaterial.ImageMode.RIGHT_ONLY && imageEye == 1))
            {
                updateImageBasedMaterial(material, ref referenceImage);
            }
        }

        frameEye++;
    }
Пример #4
0
    void OnPreRender() {
        if (syncMode == SYNC_MODE.LOW_LATENCY) {
            _imageList = _controller.Images;
        }

        Image referenceImage = _imageList[(int)eye];

        if (referenceImage.Width == 0 || referenceImage.Height == 0) {
            _missedImages++;
            if (_missedImages == IMAGE_WARNING_WAIT) {
                Debug.LogWarning("Can't find any images. " +
                                  "Make sure you enabled 'Allow Images' in the Leap Motion Settings, " +
                                  "you are on tracking version 2.1+ and " +
                                  "your Leap Motion device is plugged in.");
            }
            return;
        }

        if (referenceImage.Height != _currentHeight || referenceImage.Width != _currentWidth || referenceImage.Format != _currentFormat) {
            initMainTexture(referenceImage);

            _currentHeight = referenceImage.Height;
            _currentWidth = referenceImage.Width;
            _currentFormat = referenceImage.Format;

            _imageBasedMaterialsToInit.Clear();
            _imageBasedMaterialsToInit.AddRange(_registeredImageBasedMaterials);

            _forceDistortionRecalc = true;
        }

        loadMainTexture(referenceImage);

        for (int i = _imageBasedMaterialsToInit.Count - 1; i >= 0; i--) {
            LeapImageBasedMaterial material = _imageBasedMaterialsToInit[i];
            initImageBasedMaterial(material);
            _imageBasedMaterialsToInit.RemoveAt(i);
        }

        foreach (LeapImageBasedMaterial material in _registeredImageBasedMaterials) {
            if (material.imageMode == LeapImageBasedMaterial.ImageMode.STEREO ||
               (material.imageMode == LeapImageBasedMaterial.ImageMode.LEFT_ONLY && eye == EYE.LEFT) ||
               (material.imageMode == LeapImageBasedMaterial.ImageMode.RIGHT_ONLY && eye == EYE.RIGHT)) {
                updateImageBasedMaterial(material, ref referenceImage);
            }
        }
    }