// Update is called once per frame
    void Update()
    {
        if (!PopCheckCurrentCamera.CheckCurrentCamera())
        {
            return;
        }

        //	if (!mGenerateOnce || !mRandomInitialised) {
        mRandomTexture.DiscardContents();
        Graphics.Blit(null, mRandomTexture, mRandomShader);
        mRandomInitialised = true;
        //	}
    }
Пример #2
0
    bool MakeHomographyTexture()
    {
        if (!PopCheckCurrentCamera.CheckCurrentCamera())
        {
            return(false);
        }

        if (mHomographys.height != HomographyOutlierRow + 1 || mHomographys.width < 4)
        {
            throw new UnityException("Homography target texture needs to be " + HomographyOutlierRow + " pixels high (3x3 matrix)");
            return(false);
        }

        mHomographys.DiscardContents();
        Graphics.Blit(mHomographyPoints, mHomographys, mMakeHomographyShader);
        return(true);
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        if (!PopCheckCurrentCamera.CheckCurrentCamera())
        {
            return;
        }


        if (!mInputPrev ||
            !mInputNext ||
            !mMakeFeaturesShader ||
            !mFeaturesPrev ||
            !mFeaturesNext ||
            !mTrackFeaturesShader ||
            !mFeatureMatches
            )
        {
            Debug.Log("FeatureMatcher not setup");
            return;
        }

        //	make features for both inputs
        mFeaturesPrev.DiscardContents();
        mFeaturesNext.DiscardContents();
        Graphics.Blit(mInputPrev, mFeaturesPrev, mMakeFeaturesShader);
        Graphics.Blit(mInputNext, mFeaturesNext, mMakeFeaturesShader);

        //	match features
        mTrackFeaturesShader.SetTexture("FeaturesPrev", mFeaturesPrev);
        Graphics.Blit(mFeaturesNext, mFeatureMatches, mTrackFeaturesShader);

        FeatureTrackOptions Options = new FeatureTrackOptions();

        Options.MaxResults = mMaxResults;
        mJoints            = FeatureTracker.GetFeatureTracks(mFeatureMatches, ref mFeatureMatchesBuffer, Options);

        if (mCopyToPrev)
        {
            Graphics.Blit(mInputNext, mInputPrev);
        }
    }
Пример #4
0
    // Update is called once per frame
    void Update()
    {
        if (!PopCheckCurrentCamera.CheckCurrentCamera())
        {
            return;
        }

        if (!mWebcamTexture)
        {
            Application.RequestUserAuthorization(UserAuthorization.WebCam);

            string RealDeviceName = DeviceName;
#if UNITY_ANDROID
            RealDeviceName = "";
#endif
#if UNITY_IOS
            RealDeviceName = "";
#endif
            if (RealDeviceName.Length > 0)
            {
                mWebcamTexture = new WebCamTexture(RealDeviceName);
            }
            else
            {
                string debug = "using default webcam device. Options: ";
                foreach (WebCamDevice w in WebCamTexture.devices)
                {
                    debug += "\n" + w.name;
                }
                Debug.Log(debug);
                mWebcamTexture = new WebCamTexture();
            }

            if (mWebcamTexture != null)
            {
                mWebcamTexture.Play();
            }
        }

        if (mOutputTexture && mWebcamTexture)
        {
            mOutputTexture.DiscardContents();

            var TempTarget = mProcessShader != null?RenderTexture.GetTemporary(mOutputTexture.width, mOutputTexture.height, 0, mOutputTexture.format) : mOutputTexture;

            //	ios camera seems to be upside down...
            if (mFlipMaterial)
            {
                mFlipMaterial.SetInt("Flip", mFlip?1:0);
                mFlipMaterial.SetInt("Mirror", mMirror?1:0);
                Graphics.Blit(mWebcamTexture, TempTarget, mFlipMaterial);
            }
            else
            {
                Graphics.Blit(mWebcamTexture, TempTarget);
            }

            if (TempTarget != mOutputTexture)
            {
                Graphics.Blit(TempTarget, mOutputTexture, mProcessShader);
                RenderTexture.ReleaseTemporary(TempTarget);
            }
        }
    }