// 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); }
// 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); }
// 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); }
// 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); }
// 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(); }
// 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; }