示例#1
0
    // add camera
    private unsafe void AddCamera()
    {
        if (enable_rendering == false)
        {
            Destroy(GameObject.Find("PreviewCamera"));
        }
        else
        {
            Destroy(GameObject.Find("DummyCamera"));
        }


        // add camera under root
        GameObject camobj = new GameObject("camera");

        camobj.layer = LayerMask.NameToLayer("PostProcessing");

        camobj.transform.parent = root.transform;
        Camera thecamera = camobj.AddComponent <Camera>();

        // For Furniture Assembly Environment: remove SITE from the culling mask
        thecamera.cullingMask     = 1 + (1 << 1) + (1 << 2) + (1 << 4) + (1 << 8);
        thecamera.backgroundColor = new Color(1f, 1f, 1f);
        thecamera.clearFlags      = CameraClearFlags.SolidColor;

        Shader             segshader = Shader.Find("Unlit/SegmentationColor");
        SegmentationShader shadersub = camobj.AddComponent <SegmentationShader>();

        DepthShader shaderdepth = camobj.AddComponent <DepthShader>();


        // For Furniture Assembly Environment: no post process
        //GameObject pp_obj = GameObject.Find("PostPocessing");
        //PostProcessLayer pp_layer = camobj.AddComponent<PostProcessLayer>();
        //var resources= Resources.FindObjectsOfTypeAll<PostProcessResources>();
        //pp_layer.Init(resources[0]);
        //pp_layer.volumeTrigger = camobj.transform;
        //pp_layer.volumeLayer = 1 << LayerMask.NameToLayer("PostProcessing");

        // set field of view, near, far
        MJP.TCamera cam;
        MJP.GetCamera(-1, &cam);
        thecamera.fieldOfView = cam.fov;

        // For Furniture Assembly Environment: set znear and zfar independent to model extent.
        thecamera.nearClipPlane = 0.01f;
        thecamera.farClipPlane  = 10f;

        //thecamera.nearClipPlane = cam.znear * this.transform.localScale.x;
        //thecamera.farClipPlane = cam.zfar * this.transform.localScale.x;

        // thecamera.enabled = false;
        //camobj.SetActive(enable_rendering);
        // set transform
        MJP.TTransform transform;
        MJP.GetCameraState(-1, &transform);
        SetCamera(thecamera, transform);
    }
示例#2
0
    // add camera
    private unsafe void AddCamera()
    {
        if (enable_rendering == false)
        {
            Destroy(GameObject.Find("PreviewCamera"));
        }
        else
        {
            Destroy(GameObject.Find("DummyCamera"));
        }


        // add camera under root
        GameObject camobj = new GameObject("camera");

        camobj.layer = LayerMask.NameToLayer("PostProcessing");

        camobj.transform.parent = root.transform;
        Camera thecamera = camobj.AddComponent <Camera>();

        Shader             segshader = Shader.Find("Unlit/SegmentationColor");
        SegmentationShader shadersub = camobj.AddComponent <SegmentationShader>();

        GameObject pp_obj = GameObject.Find("PostPocessing");

        PostProcessLayer pp_layer = camobj.AddComponent <PostProcessLayer>();

        var resources = Resources.FindObjectsOfTypeAll <PostProcessResources>();

        pp_layer.Init(resources[0]);
        pp_layer.volumeTrigger = camobj.transform;
        pp_layer.volumeLayer   = 1 << LayerMask.NameToLayer("PostProcessing");

        // set field of view, near, far
        MJP.TCamera cam;
        MJP.GetCamera(-1, &cam);
        thecamera.fieldOfView   = cam.fov;
        thecamera.nearClipPlane = cam.znear * this.transform.localScale.x;
        thecamera.farClipPlane  = cam.zfar * this.transform.localScale.x;
        thecamera.enabled       = false;
        //camobj.SetActive(enable_rendering);
        // set transform
        MJP.TTransform transform;
        MJP.GetCameraState(-1, &transform);
        SetCamera(thecamera, transform);
    }
示例#3
0
    // add camera
    private unsafe void AddCamera()
    {
        // add camera under root
        GameObject camobj = new GameObject("camera");

        camobj.transform.parent = root.transform;
        Camera thecamera = camobj.AddComponent <Camera>();

        // set field of view, near, far
        MJP.TCamera cam;
        MJP.GetCamera(-1, &cam);
        thecamera.fieldOfView   = cam.fov;
        thecamera.nearClipPlane = cam.znear;
        thecamera.farClipPlane  = cam.zfar;

        // set transform
        MJP.TTransform transform;
        MJP.GetCameraState(-1, &transform);
        SetCamera(thecamera, transform);
    }
示例#4
0
    // initialize
    unsafe void Start()
    {
        // For Furniture Assembly Environment: record geom positions
        modifiedObjects = new Dictionary <string, Vector3>();
        backgrounds     = new List <GameObject>();
        foreach (GameObject child in SceneManager.GetActiveScene().GetRootGameObjects())
        {
            if (child.name.StartsWith("Background_"))
            {
                backgrounds.Add(child);
                child.SetActive(false);
            }
        }

        //material_random_parameters["Plastic (Instance)"] = new RandomColor(0.0f, 1.0f, 0.0f, 1.0f, 0.2f, 1.0f);

        // set selection color
        selcolor = new Color(0.5f, 0.5f, 0.5f, 1);

        // preallocate buffer with maximum possible message size
        buffersize = 2048; // Math.Max(4, Math.Max(4*nqpos, 28*nmocap));
        buffer     = new byte[buffersize];

        // initialize plugin
        //   MJP.Initialize();
        //  MJP.LoadModel(Application.streamingAssetsPath + "/" + modelFile);

        // get number of renderable objects, allocate map
        MJP.TSize size;
        MJP.GetSize(&size);
        nqpos   = size.nqpos;
        nmocap  = size.nmocap;
        ncamera = size.ncamera;
        nobject = size.nobject;
        objects = new GameObject[nobject];

        // get root
        //root = GameObject.Find("MuJoCo");
        if (root == null)
        {
            throw new System.Exception("MuJoCo root object not found");
        }

        root.transform.localPosition = transform.localPosition;
        root.transform.localRotation = transform.localRotation;
        root.transform.localScale    = transform.localScale;

        // get camera under root
        int nchild = root.transform.childCount;

        for (int i = 0; i < nchild; i++)
        {
            thecamera = root.transform.GetChild(i).gameObject.GetComponent <Camera>();
            if (thecamera != null)
            {
                // thecamera.enabled = false;
                break;
            }
        }
        if (thecamera == null)
        {
            throw new System.Exception("No camera found under MuJoCo root object");
        }

        // make map of renderable objects
        for (int i = 0; i < nobject; i++)
        {
            // get object name
            StringBuilder name = new StringBuilder(100);
            MJP.GetObjectName(i, name, 100);

            // find corresponding GameObject
            for (int j = 0; j < nchild; j++)
            {
                if (root.transform.GetChild(j).name == name.ToString())
                {
                    objects[i] = root.transform.GetChild(j).gameObject;
                    break;
                }
            }

            // set initial state
            if (objects[i])
            {
                MJP.TTransform transform;
                int            visible;
                int            selected;
                MJP.GetObjectState(i, &transform, &visible, &selected);
                SetTransform(objects[i], transform);
                objects[i].SetActive(visible > 0);
            }
        }

        // get camera fov and offscreen resolution
        camfov = new float[ncamera + 1];
        int offwidth  = 1280;
        int offheight = 720;

        for (int i = -1; i < ncamera; i++)
        {
            MJP.TCamera cam;
            MJP.GetCamera(i, &cam);
            camfov[i + 1] = cam.fov;

            // plugin returns offscreen width and height for all cameras
            offwidth  = cam.width;
            offheight = cam.height;
        }

        //TODO: The dummy camera and camera added by mjonline import should be merged together
        GameObject camobj = GameObject.Find("DummyCamera");

        if (camobj != null)
        {
            dummycamera         = camobj.GetComponent <Camera>();
            dummycamera.enabled = true;
        }

        // prepare offscreen rendering
        off_render = new OffscreenRenderer(offwidth, offheight);

        // synchronize time
        MJP.SetTime(Time.time);

        //randomizeAppearance();

        Debug.Log("New simulation init'd " + offwidth + "x" + offheight);
    }
示例#5
0
    // initialize
    unsafe void Start()
    {
        // set selection color
        selcolor = new Color(0.5f, 0.5f, 0.5f, 1);

        // initialize plugin
        MJP.Initialize();
        MJP.LoadModel(Application.streamingAssetsPath + "/" + modelFile);

        // get number of renderable objects, allocate map
        MJP.TSize size;
        MJP.GetSize(&size);
        nqpos   = size.nqpos;
        nmocap  = size.nmocap;
        ncamera = size.ncamera;
        nobject = size.nobject;
        objects = new GameObject[nobject];

        // get root
        root = GameObject.Find("MuJoCo");
        if (root == null)
        {
            throw new System.Exception("MuJoCo root object not found");
        }

        // get camera under root
        int nchild = root.transform.childCount;

        for (int i = 0; i < nchild; i++)
        {
            thecamera = root.transform.GetChild(i).gameObject.GetComponent <Camera>();
            if (thecamera != null)
            {
                break;
            }
        }
        if (thecamera == null)
        {
            throw new System.Exception("No camera found under MuJoCo root object");
        }

        // make map of renderable objects
        for (int i = 0; i < nobject; i++)
        {
            // get object name
            StringBuilder name = new StringBuilder(100);
            MJP.GetObjectName(i, name, 100);

            // find corresponding GameObject
            for (int j = 0; j < nchild; j++)
            {
                if (root.transform.GetChild(j).name == name.ToString())
                {
                    objects[i] = root.transform.GetChild(j).gameObject;
                    break;
                }
            }

            // set initial state
            if (objects[i])
            {
                MJP.TTransform transform;
                int            visible;
                int            selected;
                MJP.GetObjectState(i, &transform, &visible, &selected);
                SetTransform(objects[i], transform);
                objects[i].SetActive(visible > 0);
            }
        }

        // get camera fov and offscreen resolution
        camfov = new float[ncamera + 1];
        for (int i = -1; i < ncamera; i++)
        {
            MJP.TCamera cam;
            MJP.GetCamera(i, &cam);
            camfov[i + 1] = cam.fov;

            // plugin returns offscreen width and height for all cameras
            offwidth  = cam.width;
            offheight = cam.height;
        }

        // prepare offscreen rendering
        offtex       = new Texture2D(offwidth, offheight, TextureFormat.RGB24, false);
        offrt        = new RenderTexture(offwidth, offheight, 24);
        offrt.width  = offwidth;
        offrt.height = offheight;
        offrt.Create();

        // synchronize time
        MJP.SetTime(Time.time);

        // preallocate buffer with maximum possible message size
        buffersize = Math.Max(4, Math.Max(4 * nqpos, 28 * nmocap));
        buffer     = new byte[buffersize];

        // start listening for connections
        listener = new TcpListener(System.Net.IPAddress.Parse(tcpAddress), tcpPort);
        listener.Start();
    }
示例#6
0
    // initialize
    unsafe void Start()
    {
        // set selection color
        selcolor = new Color(0.5f, 0.5f, 0.5f, 1);

        // initialize plugin
        ////  MJP.Initialize();
        //  MJP.LoadModel(Application.streamingAssetsPath + "/" + modelFile);

        // get number of renderable objects, allocate map
        MJP.TSize size;
        MJP.GetSize(&size);
        ncamera = size.ncamera;
        nobject = size.nobject;
        objects = new GameObject[nobject];

        // get root
        // root = GameObject.Find("MuJoCo");
        if (root == null)
        {
            throw new System.Exception("MuJoCo root object not found");
        }

        // get camera under root
        int nchild = root.transform.childCount;

        for (int i = 0; i < nchild; i++)
        {
            thecamera = root.transform.GetChild(i).gameObject.GetComponent <Camera>();
            if (thecamera != null)
            {
                break;
            }
        }
        if (thecamera == null)
        {
            throw new System.Exception("No camera found under MuJoCo root object");
        }

        // make map of renderable objects
        for (int i = 0; i < nobject; i++)
        {
            // get object name
            StringBuilder name = new StringBuilder(100);
            MJP.GetObjectName(i, name, 100);

            // find corresponding GameObject
            for (int j = 0; j < nchild; j++)
            {
                if (root.transform.GetChild(j).name == name.ToString())
                {
                    objects[i] = root.transform.GetChild(j).gameObject;
                    break;
                }
            }

            // set initial state
            if (objects[i])
            {
                MJP.TTransform transform;
                int            visible;
                int            selected;
                MJP.GetObjectState(i, &transform, &visible, &selected);
                SetTransform(objects[i], transform);
                objects[i].SetActive(visible > 0);
            }
        }

        int offwidth  = 1280;
        int offheight = 720;

        // get camera fov and offscreen resolution
        camfov = new float[ncamera + 1];
        for (int i = -1; i < ncamera; i++)
        {
            MJP.TCamera cam;
            MJP.GetCamera(i, &cam);
            camfov[i + 1] = cam.fov;

            // plugin returns offscreen width and height for all cameras
            offwidth  = cam.width;
            offheight = cam.height;
        }

        off_render = new OffscreenRenderer(offwidth, offheight);

        // synchronize time
        MJP.SetTime(Time.time);
        videotime = Time.time;
    }