Example #1
0
    private void SetSegmentationEffect()
    {
        var renderers = FindObjectsOfType <Renderer>();
        var mpb       = new MaterialPropertyBlock();

        foreach (var r in renderers)
        {
            var theTag = r.gameObject.tag;
            var id     = getTheId(theTag);
            Debug.Log("object name :" + theTag + "object ID :" + id);
            mpb.SetColor("_ObjectColor", ColorEncoding.EncodeIDAsColor(id, theTag));
            mpb.SetColor("_CategoryColor", ColorEncoding.EncodeTagAsColor(theTag));//give a color by name
            r.SetPropertyBlock(mpb);
        }
    }
Example #2
0
    public void OnSceneChange()
    {
        sentColorCorrespondence = false;
        var renderers = UnityEngine.Object.FindObjectsOfType <Renderer>();

        colorIds = new Dictionary <Color, string> ();
        var mpb = new MaterialPropertyBlock();



        foreach (var r in renderers)
        {
            // var layer = r.gameObject.layer;
            // var tag = r.gameObject.tag;

            string classTag = r.name;
            string objTag   = getUniqueId(r.gameObject);

            StructureObject so = r.gameObject.GetComponent <StructureObject> ();
            if (so == null)
            {
                so = r.gameObject.GetComponentInParent <StructureObject> ();
            }

            SimObjPhysics sop = r.gameObject.GetComponent <SimObjPhysics> ();
            if (sop == null)
            {
                sop = r.gameObject.GetComponentInParent <SimObjPhysics> ();
            }

            if (so != null)
            {
                classTag = "" + so.WhatIsMyStructureObjectTag;
                //objTag = so.gameObject.name;
            }
            if (sop != null)
            {
                classTag = "" + sop.Type;
                objTag   = sop.UniqueID;
            }


            Color classColor;
            Color objColor;
            classColor = ColorEncoding.EncodeTagAsColor(classTag);
            objColor   = ColorEncoding.EncodeTagAsColor(objTag);

            capturePasses [0].camera.WorldToScreenPoint(r.bounds.center);

            if (so != null || sop != null)
            {
                colorIds [objColor]   = objTag;
                colorIds [classColor] = classTag;
            }

            else
            {
                colorIds [objColor] = r.gameObject.name;
            }

//			if (r.material.name.ToLower().Contains ("lightray")) {
//				objColor.a = 0;
//				classColor.a = 0;
//				mpb.SetFloat ("_Opacity", 0);
//
//			} else {
//				objColor.a = 1;
//				classColor.a = 1;
//				mpb.SetFloat ("_Opacity", 1);
//			}
//
            // updated per @danielg - replaces commented out code
            if (r.material.name.ToLower().Contains("lightray"))
            {
                r.enabled = false;
                continue;
            }

            objColor.a   = 1;
            classColor.a = 1;
            mpb.SetFloat("_Opacity", 1);
            mpb.SetColor("_CategoryColor", classColor);
            mpb.SetColor("_ObjectColor", objColor);

            r.SetPropertyBlock(mpb);
        }
    }
Example #3
0
    public void OnSceneChange()
    {
        sentColorCorrespondence = false;
        var renderers = UnityEngine.Object.FindObjectsOfType <Renderer>();

        colorIds = new Dictionary <Color, string> ();
        var mpb = new MaterialPropertyBlock();



        foreach (var r in renderers)
        {
            var    layer  = r.gameObject.layer;
            var    tag    = r.gameObject.tag;
            SimObj simObj = r.gameObject.GetComponent <SimObj> ();
            if (simObj == null)
            {
                simObj = r.gameObject.GetComponentInParent <SimObj> ();
            }


            Color classColor;
            Color objColor;
            if (simObj == null)
            {
                classColor = ColorEncoding.EncodeTagAsColor("" + r.name);
                objColor   = ColorEncoding.EncodeTagAsColor(getUniqueId(r.gameObject));
            }
            else
            {
                classColor = ColorEncoding.EncodeTagAsColor("" + simObj.Type);
                objColor   = ColorEncoding.EncodeTagAsColor("" + simObj.UniqueID);
                //Debug.Log ("renderer type " + simObj.Type + " " + simObj.name + " " + simObj.UniqueID + " " + MD5Hash(simObj.UniqueID) + " " + MD5Hash(simObj.UniqueID).GetHashCode());
            }

            capturePasses [0].camera.WorldToScreenPoint(r.bounds.center);

            //mpb.SetVector ("_Scale", scaleVector);
            //mpb.SetVector ("_Shift", shiftVector);
            // Make transparent if light ray.
            if (simObj != null)
            {
                colorIds [objColor]   = "" + simObj.UniqueID;
                colorIds [classColor] = "" + simObj.name;
                Debug.Log("colored " + simObj.UniqueID);
            }
            else
            {
                colorIds [objColor] = r.gameObject.name;
                if (r.gameObject.name == "Cube.100")
                {
                    Debug.Log(r.gameObject.name);
                }
            }

//			if (r.material.name.ToLower().Contains ("lightray")) {
//				objColor.a = 0;
//				classColor.a = 0;
//				mpb.SetFloat ("_Opacity", 0);
//
//			} else {
//				objColor.a = 1;
//				classColor.a = 1;
//				mpb.SetFloat ("_Opacity", 1);
//			}
//
            // updated per @danielg - replaces commented out code
            if (r.material.name.ToLower().Contains("lightray"))
            {
                r.enabled = false;
                continue;
            }

            objColor.a   = 1;
            classColor.a = 1;
            mpb.SetFloat("_Opacity", 1);


            mpb.SetColor("_CategoryColor", classColor);
            mpb.SetColor("_ObjectColor", objColor);

            r.SetPropertyBlock(mpb);
        }
    }