Exemple #1
0
        private void DrawAugmentatedImage()
        {
            Image <Bgr, Byte> res = BigImage.Clone();

            res[1]   = res[1] + MaskImage.ThresholdBinary(new Gray(1), new Gray(100));
            AugImage = res;
        }
Exemple #2
0
        protected override Effect GetEffect(FastBitmap source)
        {
            FastBitmap maskBitmap = MaskImage.GetBitmap();

            _maskImageWidth  = maskBitmap.Width;
            _maskImageHeight = maskBitmap.Height;
            return(new ClippingMaskEffect
            {
                Mask = new ImageBrush(maskBitmap.InnerBitmap),
                InputCoordsOffset = new Vector(MaskPositionX / (double)source.Width, MaskPositionY / (double)source.Height),
                InputCoordsScale = new Vector(_maskImageWidth / (double)source.Width, _maskImageHeight / (double)source.Height)
            });
        }
        private void OnVideoPrepareCompleted(VideoPlayer source)
        {
            Debug.Log(source.name + "Prepare Completed!");
            mPrepareCount++;
            //等左中右视频都准备完毕以后,统一开始播放
            if (mPrepareCount >= 3)
            {
                MaskImage.Hide();
                LeftVideo.Play();
                MidVideo.Play();
                RightVideo.Play();
                mPrepareCount = 0;

                if (source.url.Contains("四季"))
                {
                    //通知交互端开始倒计时
                    var msg = new UdpMessage(MessageDefine.WholeVideoEnd);
                    UdpManager.Instance.SendMessage(msg.ToJson());
                }
            }
        }
Exemple #4
0
 public void SetParent(LuaSpriteController parent)
 {
     CheckExists();
     if (parent != null && parent.img.transform != null && parent.img.transform.parent.name == "SpritePivot")
     {
         throw new CYFException("text.SetParent(): Can not use SetParent with an Overworld Event's sprite.");
     }
     try {
         if (parent == null)
         {
             throw new CYFException("text.SetParent(): Can't set a sprite's parent as nil.");
         }
         container.transform.SetParent(parent.img.transform);
         foreach (Transform child in container.transform)
         {
             MaskImage childmask = child.gameObject.GetComponent <MaskImage>();
             if (childmask != null)
             {
                 childmask.inverted = parent._masked == LuaSpriteController.MaskMode.INVERTEDSPRITE || parent._masked == LuaSpriteController.MaskMode.INVERTEDSTENCIL;
             }
         }
     }
     catch { throw new CYFException("You tried to set a removed sprite/nil sprite as this text object's parent."); }
 }
Exemple #5
0
 private void StopAllVideoPlay()
 {
     //WholeVideo.Stop();
     FourSeasonVideo.Stop();
     MaskImage.Show();
 }
        // Create sprite object
        public override Tuple <Sprite, Sprite> GetSpriteParts(Data.Resource resource, uint index)
        {
            if (index >= Data.GetResourceCount(resource))
            {
                return(Tuple.Create <Sprite, Sprite>(null, null));
            }

            Resource dosRes = DosResources[(int)resource];

            ColorDos[] palette = GetDosPalette(dosRes.DosPalette);
            Buffer     data;

            if (palette == null)
            {
                return(Tuple.Create <Sprite, Sprite>(null, null));
            }

            if (resource == Data.Resource.SerfTorso)
            {
                data = GetObject(dosRes.Index + index);

                if (data == null)
                {
                    return(Tuple.Create <Sprite, Sprite>(null, null));
                }

                Sprite torso = new SpriteDosTransparent(data, palette, 64);

                data = GetObject(dosRes.Index + index);

                if (data == null)
                {
                    return(Tuple.Create <Sprite, Sprite>(null, null));
                }

                Sprite torso2 = new SpriteDosTransparent(data, palette, 72);

                MaskImage maskImage = SeparateSprites(torso, torso2);

                data = GetObject(DATA_SERF_ARMS + index);

                Sprite arms = new SpriteDosTransparent(data, palette);

                torso.Stick(arms, 0, 0);

                return(maskImage);
            }
            else if (resource == Data.Resource.MapObject)
            {
                if ((index >= 128) && (index <= 143))
                {
                    // Flag sprites
                    uint flagFrame = (index - 128) % 4;
                    data = GetObject(dosRes.Index + 128 + flagFrame);

                    if (data == null)
                    {
                        return(Tuple.Create <Sprite, Sprite>(null, null));
                    }

                    Sprite s1 = new SpriteDosTransparent(data, palette);

                    data = GetObject(dosRes.Index + 128 + 4 + flagFrame);

                    if (data == null)
                    {
                        return(Tuple.Create <Sprite, Sprite>(null, null));
                    }

                    Sprite s2 = new SpriteDosTransparent(data, palette);

                    return(SeparateSprites(s1, s2));
                }
            }
            else if (resource == Data.Resource.Font || resource == Data.Resource.FontShadow)
            {
                data = GetObject(dosRes.Index + index);

                if (data == null)
                {
                    return(Tuple.Create <Sprite, Sprite>(null, null));
                }

                return(Tuple.Create <Sprite, Sprite>(new SpriteDosTransparent(data, palette), null));
            }

            data = GetObject(dosRes.Index + index);

            if (data == null)
            {
                return(Tuple.Create <Sprite, Sprite>(null, null));
            }

            Sprite sprite;

            switch (dosRes.SpriteType)
            {
            case SpriteType.Solid:
            {
                sprite = new SpriteDosSolid(data, palette);
                break;
            }

            case SpriteType.Transparent:
            {
                sprite = new SpriteDosTransparent(data, palette);
                break;
            }

            case SpriteType.Overlay:
            {
                sprite = new SpriteDosOverlay(data, palette, 0x80);
                break;
            }

            case SpriteType.Mask:
            {
                sprite = new SpriteDosMask(data);
                break;
            }

            default:
                return(Tuple.Create <Sprite, Sprite>(null, null));
            }

            return(Tuple.Create <Sprite, Sprite>(null, sprite));
        }
Exemple #7
0
        private void backgroundWorkerGetFrames_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!backgroundWorkerGetFrames.CancellationPending)
            {
                // capture a new frame
                try
                {
                    //cam.Invoke("StartStreams", null);
                    cam.Update();
                    //cam.Invoke("StopStreams", null);
                }
                catch (Exception ex)
                {
                    GC.KeepAlive(ex);
                    cam = new CameraClient("192.168.1.72", 8081, 8082, "MetriCam2.Cameras.Kinect2", "MetriCam2.Cameras.Kinect2");
                    cam.Connect();
                    //cam.Invoke("StopStreams", null);
                }

                Point3fImage p3Image = null;
                if (channel3DName == ChannelNames.Point3DImage)
                {
                    Point3fCameraImage image3D = (Point3fCameraImage)cam.CalcChannel(ChannelNames.Point3DImage);
                    p3Image = new Point3fImage(ref image3D);
                }
                else if (channel3DName == ChannelNames.Distance || channel3DName == ChannelNames.ZImage)
                {
                    FloatCameraImage image3D = (FloatCameraImage)cam.CalcChannel(channel3DName);
                    p3Image = new Point3fImage(new FloatImage(ref image3D), projectiveTransformation, channel3DName == ChannelNames.ZImage);
                }

                FloatImage ir     = ConvertToFloatImage(cam.CalcChannel(channel2DName).ToFloatCameraImage());
                Bitmap     bitmap = ir.ToBitmap();
                //secondBitmap = zImage.ToBitmap();
                // set the picturebox-bitmap in the main thread to avoid concurrency issues (a few helper methods required, easier/nicer solutions welcome).
                this.InvokeSetBmp(bitmap);

                MaskImage mask = new MaskImage(p3Image.Width, p3Image.Height);
                ir = ir.Normalize();
                for (int y = 0; y < mask.Height; y++)
                {
                    for (int x = 0; x < mask.Width; x++)
                    {
                        Point3f p = p3Image[y, x];
                        if (p.X > -99f && p.X < 99f && p.Y > -99f & p.Y < 99f && p.Z > 0 && p.Z < 99f)
                        {
                            mask[y, x] = 0xff;
                        }
                    }
                }

                p3Image.EliminateFlyingPixels(5, 0.005f, 0.2f);
                p3Image.Mask = mask;

                TriangleIndexList til = new TriangleIndexList(p3Image, false, true);
                if (renderTil == null)
                {
                    renderTil = new Metri3D.Objects.RenderTriangleIndexList(til, Color.White);
                    panel3D.AddRenderObject(renderTil);
                }
                else
                {
                    renderTil.UpdateData(til, Color.White);
                }
                panel3D.Invalidate();
            }
        }
Exemple #8
0
    public void Mask(string mode)
    {
        switch (tag)
        {
        case "event":  throw new CYFException("sprite.Mask: Can not be applied to Overworld Event sprites.");

        case "letter": throw new CYFException("sprite.Mask: Can not be applied to Letter sprites.");

        default:       if (mode == null)
            {
                throw new CYFException("sprite.Mask: No argument provided.");
            }
            break;
        }

        MaskMode masked;

        try {
            masked = (MaskMode)Enum.Parse(typeof(MaskMode), mode, true);
        } catch {
            throw new CYFException("sprite.Mask: Invalid mask mode \"" + mode + "\".");
        }

        if (masked != _masked)
        {
            //If children need to have their "inverted" property updated, then do so
            if ((int)_masked < 4 && (int)masked > 3 || (int)_masked > 3 && (int)masked < 4)
            {
                foreach (Transform child in GetTarget())
                {
                    MaskImage childmask = child.gameObject.GetComponent <MaskImage>();
                    if (childmask != null)
                    {
                        childmask.inverted = (int)masked > 3;
                    }
                }
            }
            RectMask2D box = img.GetComponent <RectMask2D>();
            Mask       spr = img.GetComponent <Mask>();

            switch (masked)
            {
            case MaskMode.BOX:
                //Remove sprite mask if applicable
                spr.enabled = false;
                box.enabled = true;
                break;

            case MaskMode.OFF:
                //Mask has been disabled
                spr.enabled = false;
                box.enabled = false;
                break;

            default:
                //The mask mode now can't possibly be box, so remove box mask if applicable
                spr.enabled = true;
                box.enabled = false;
                // Used to differentiate between "sprite" and "stencil"-like display modes
                spr.showMaskGraphic = masked == MaskMode.SPRITE || masked == MaskMode.INVERTEDSPRITE;
                break;
            }
        }

        _masked = masked;
    }