Пример #1
0
    // cleanup
    void OnApplicationQuit()
    {
        // free plugin
        MJP.Close();

        // close file
        if (videofile != null)
        {
            videofile.Close();
        }

        // free render texture
    }
Пример #2
0
    // cleanup
    void OnApplicationQuit()
    {
        // free plugin
        MJP.Close();

        // close tcp listener
        listener.Stop();

        // close file
        if (videofile != null)
        {
            videofile.Close();
        }

        // free render texture
        offrt.Release();
    }
Пример #3
0
 void OnApplicationQuit()
 {
     MJP.Close();
 }
Пример #4
0
    // run importer
    private unsafe void RunImport()
    {
        Resources.UnloadUnusedAssets();

        BuildAssetDatabase(modelFile);


        // adjust global settings
        Time.fixedDeltaTime = 0.005f;
        //PlayerSettings.runInBackground = true;
        if (enableRemote)
        {
            QualitySettings.vSyncCount = (noVSync ? 0 : 1);
        }
        else
        {
            QualitySettings.vSyncCount = 1;
        }

        // disable active cameras

        /* Camera[] activecam = FindObjectsOfType<Camera>();
         * foreach( Camera ac in activecam )
         *   ac.gameObject.SetActive(false);
         */

        fileName = Path.GetFileName(modelFile);

        // initialize plugin and load model
        MJP.Close();
        MJP.Initialize();
        MJP.LoadModel(modelFile);

        // get model sizes
        MJP.TSize size;
        MJP.GetSize(&size);

        // import materials
        //if( size.nmaterial>0 )
        {
            //    MakeDirectory("Assets", "Materials");
            ImportMaterials(size.nmaterial);
        }

        // create root, destroy old if present
        root = GameObject.Find("MuJoCo");
        if (root != null)
        {
            Destroy(root);
        }

        root = new GameObject("MuJoCo");
        if (root == null)
        {
            throw new System.Exception("Could not create root MuJoCo object");
        }

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

        // add camera to root
        AddCamera();

        // import renderable objects under root
        ImportObjects(size.nobject);

        // ImportLights(size.nlight);

        // attach script to root
        if (enableRemote)
        {
            // add remote
            MJRemote extsim = root.GetComponent <MJRemote>();
            if (extsim == null)
            {
                extsim = root.AddComponent <MJRemote>();
            }

            extsim.root      = root;
            extsim.modelFile = fileName + ".mjb";

            MJTCPInterface tcpif = this.gameObject.GetComponent <MJTCPInterface>();
            if (tcpif == null)
            {
                tcpif = this.gameObject.AddComponent <MJTCPInterface>();
            }

            tcpif.root       = root;
            tcpif.tcpAddress = tcpAddress;
            tcpif.tcpPort    = tcpPort;

            // destroy simulate if present
            if (root.GetComponent <MJInternalSimulation>())
            {
                Destroy(root.GetComponent <MJInternalSimulation>());
            }
        }
        else
        {
            // add simulate
            MJInternalSimulation sim = root.GetComponent <MJInternalSimulation>();
            if (sim == null)
            {
                sim = root.AddComponent <MJInternalSimulation>();
            }
            sim.root      = root;
            sim.modelFile = fileName + ".mjb";

            // destroy remote if present
            if (root.GetComponent <MJRemote>())
            {
                Destroy(root.GetComponent <MJRemote>());
            }
            // destroy remote if present
            if (this.GetComponent <MJTCPInterface>())
            {
                Destroy(root.GetComponent <MJTCPInterface>());
            }
        }

        // close plugin
        //  MJP.Close();
    }
Пример #5
0
    // run importer
    private unsafe void RunImport()
    {
        // adjust global settings
        Time.fixedDeltaTime            = 0.005f;
        PlayerSettings.runInBackground = true;
        if (enableRemote)
        {
            QualitySettings.vSyncCount = (noVSync ? 0 : 1);
        }
        else
        {
            QualitySettings.vSyncCount = 1;
        }

        // disable active cameras
        Camera[] activecam = FindObjectsOfType <Camera>();
        foreach (Camera ac in activecam)
        {
            ac.gameObject.SetActive(false);
        }

        // get filename only (not path or extension)
        int i1 = modelFile.LastIndexOf('/');
        int i2 = modelFile.LastIndexOf('.');

        if (i1 >= 0 && i2 > i1)
        {
            fileName = modelFile.Substring(i1 + 1, i2 - i1 - 1);
        }
        else
        {
            throw new System.Exception("Unexpected model file format");
        }

        // initialize plugin and load model
        MJP.Initialize();
        MJP.LoadModel(modelFile);

        // get model sizes
        MJP.TSize size;
        MJP.GetSize(&size);

        // save binary model
        MakeDirectory("Assets", "StreamingAssets");
        MJP.SaveMJB("Assets/StreamingAssets/" + fileName + ".mjb");

        // import textures
        if (size.ntexture > 0 && importTexture)
        {
            MakeDirectory("Assets", "Textures");
            ImportTextures(size.ntexture);
        }

        // import materials
        if (size.nmaterial > 0)
        {
            MakeDirectory("Assets", "Materials");
            ImportMaterials(size.nmaterial);
        }

        // create root, destroy old if present
        root = GameObject.Find("MuJoCo");
        if (root != null)
        {
            DestroyImmediate(root);
        }
        root = new GameObject("MuJoCo");
        if (root == null)
        {
            throw new System.Exception("Could not create root MuJoCo object");
        }

        // add camera to root
        AddCamera();

        // import renderable objects under root
        ImportObjects(size.nobject);

        // attach script to root
        if (enableRemote)
        {
            // add remote
            MJRemote rem = root.GetComponent <MJRemote>();
            if (rem == null)
            {
                rem = root.AddComponent <MJRemote>();
            }
            rem.modelFile  = fileName + ".mjb";
            rem.tcpAddress = tcpAddress;
            rem.tcpPort    = tcpPort;

            // destroy simulate if present
            if (root.GetComponent <MJSimulate>())
            {
                DestroyImmediate(root.GetComponent <MJSimulate>());
            }
        }
        else
        {
            // add simulate
            MJSimulate sim = root.GetComponent <MJSimulate>();
            if (sim == null)
            {
                sim = root.AddComponent <MJSimulate>();
            }
            sim.modelFile = fileName + ".mjb";

            // destroy remote if present
            if (root.GetComponent <MJRemote>())
            {
                DestroyImmediate(root.GetComponent <MJRemote>());
            }
        }

        // close plugin
        MJP.Close();
    }