コード例 #1
0
    private void ChangeResolution(int cameraWidth, int cameraHeight, bool grayscale)
    {
        CameraSensorComponent cameraSensor = arena.transform.FindChildWithTag("agent").GetComponent <CameraSensorComponent>();

        cameraSensor.width     = cameraWidth;
        cameraSensor.height    = cameraHeight;
        cameraSensor.grayscale = grayscale;
    }
コード例 #2
0
    private void Awake()
    {
        if (vehicleController == null)
        {
            vehicleController = GetComponent <NewCarController>();
        }
        if (agentRigidbody == null)
        {
            agentRigidbody = GetComponent <Rigidbody>();
        }
        if (depth == null)
        {
            depth = GetComponent <CameraSensorComponent>();
        }
        if (target == null)
        {
            target = transform.parent.Find("Target");
        }
        agentStartPosition = transform.position;
        agentStartRotation = transform.rotation;

        if (!training)
        {
            return;
        }

        if (env == null)
        {
            env = GetComponentInParent <RandomEnvironment>();
        }
        if (objectSpawner == null)
        {
            objectSpawner = transform.parent.Find("Object Spawner").GetComponent <ObjectSpawner>();
        }

        transform.parent        = env.transform;
        transform.localPosition = Vector3.zero;

        maxDistanceFromStart = Mathf.Max(
            env.length / 2,
            env.width / 2
            ) * 1.25f;
        maxDistanceFromStartSq = maxDistanceFromStart * maxDistanceFromStart;
    }
コード例 #3
0
    private void SetCameraSensor()
    {
        CameraSensorComponent sensorCamTopView = Cutter.AddComponent <CameraSensorComponent>();

        sensorCamTopView.camera      = GameObject.Find("Cam_CutterTopView").GetComponent <Camera>();
        sensorCamTopView.sensorName  = "CameraTopView";
        sensorCamTopView.width       = sensorCamWidthTopView;
        sensorCamTopView.height      = sensorCamHeightTopView;
        sensorCamTopView.grayscale   = false;
        sensorCamTopView.compression = SensorCompressionType.PNG;

        CameraSensorComponent sensorCamTopViewInverse = Cutter.AddComponent <CameraSensorComponent>();

        sensorCamTopViewInverse.camera      = GameObject.Find("Cam_CutterTopViewInverse").GetComponent <Camera>();
        sensorCamTopViewInverse.sensorName  = "CameraTopViewInverse";
        sensorCamTopViewInverse.width       = sensorCamWidthTopViewInverse;
        sensorCamTopViewInverse.height      = sensorCamHeightTopViewInverse;
        sensorCamTopViewInverse.grayscale   = false;
        sensorCamTopViewInverse.compression = SensorCompressionType.PNG;
    }
コード例 #4
0
    static public void UpdateComponents()
    {
        trainingCameras.Clear();
        candidatesCameras.Clear();
        GameObject cameraContainer = GameObject.Find("CameraContainer");
        GameObject agent           = GameObject.Find("Agent");
        int        childs          = cameraContainer.transform.childCount;

        for (int i = childs - 1; i >= 0; i--)
        {
            DestroyImmediate(cameraContainer.transform.GetChild(i).gameObject);
        }

        GameObject info = GameObject.Find("Info");

        childs = info.transform.childCount;

        string infoTxt = "K:" + numCameraSets.ToString() + "_St:" + numSt.ToString() + "_Sc:" + numSc.ToString() + "_Ft:" + numFt.ToString() + "_Fc:" + numFc.ToString() + "_SC:" + sizeCanvas.ToString() + "_g:" + grayscale.ToString();

        UnityEngine.Debug.Log("BUILDING INFO TXT " + infoTxt);
        info.transform.GetChild(0).name = infoTxt;

        GameObject.Find("DebugText").GetComponent <Text>().text = infoTxt;
        List <CameraSensorComponent> camComp = new List <CameraSensorComponent>(agent.GetComponents <CameraSensorComponent>());

        foreach (CameraSensorComponent cam in camComp)
        {
            DestroyImmediate(cam);
        }

        int totIndexT = 0;
        int totIndexC = 0;

        for (int k = 0; k < numCameraSets; k++)
        {
            GameObject candidateCamera = GameObject.Find("CandidateCamera"); // remember to take this out from the sensorlist
            for (int sc = 0; sc < numSc; sc++)
            {
                for (int fsc = 0; fsc < numFc; fsc++)
                {
                    candidatesCameras.Add(Instantiate(candidateCamera));
                    candidatesCameras[totIndexC].transform.parent = cameraContainer.transform;
                    candidatesCameras[totIndexC].name             = "C" + k.ToString("D3") + "S" + sc.ToString("D3") + "F" + fsc.ToString("D3");
                    candidatesCameras[totIndexC].SetActive(false);
                    totIndexC += 1;
                }
            }
        }

        for (int k = 0; k < numCameraSets; k++)
        {
            GameObject trainingCamera = GameObject.Find("TrainingCamera"); // remember to take this out from the sensorlist
            for (int st = 0; st < numSt; st++)
            {
                for (int fst = 0; fst < numFt; fst++)
                {
                    trainingCameras.Add(Instantiate(trainingCamera));
                    trainingCameras[totIndexT].transform.parent = cameraContainer.transform;
                    trainingCameras[totIndexT].name             = "T" + k.ToString("D3") + "S" + st.ToString("D3") + "F" + fst.ToString("D3");
                    trainingCameras[totIndexT].SetActive(false);
                    totIndexT += 1;
                }
            }
        }

        //Add Cameras to Agent
        Assert.IsTrue(candidatesCameras.Count == numCameraSets * numFc * numSc);
        Assert.IsTrue(trainingCameras.Count == numCameraSets * numFt * numSt);


        foreach (GameObject traingCam in trainingCameras)
        {
            CameraSensorComponent cmtmp = agent.AddComponent <CameraSensorComponent>();
            cmtmp.Camera     = traingCam.GetComponent <Camera>();
            cmtmp.SensorName = traingCam.name;
            cmtmp.Width      = sizeCanvas;
            cmtmp.Height     = sizeCanvas;
            cmtmp.Grayscale  = grayscale == 1;
        }

        foreach (GameObject candidCam in candidatesCameras)  // N * K
        {
            CameraSensorComponent cmtmp = agent.AddComponent <CameraSensorComponent>();
            cmtmp.Camera     = candidCam.GetComponent <Camera>();
            cmtmp.SensorName = candidCam.name;
            cmtmp.Width      = sizeCanvas;
            cmtmp.Height     = sizeCanvas;

            cmtmp.Grayscale = grayscale == 1;
        }

        // Includes labels, and N*K+K*Q vector3s
        //UnityEngine.Debug.Log((N * K + K * Q) + 3 * (N * K + K * Q));
        // If numSc is 0, then we only send 1 set of labels (the training ones), otherwise we send two (training and the paired one)
        agent.GetComponent <BehaviorParameters>().BrainParameters.VectorObservationSize = (numCameraSets * (numSc > 0 ? 2 : 1)) + (numFt * numSt + numFc * numSc) * numCameraSets * 3;

#if UNITY_EDITOR
        EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
        EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
#endif
    }
コード例 #5
0
    static public void UpdateComponents()
    {
        testingCameras.Clear();
        supportCameras.Clear();
        GameObject cameraContainer = GameObject.Find("CameraContainer");
        GameObject agent           = GameObject.Find("Agent");

        UnityEngine.Debug.Log("CAMERA CONTAINER: ");
        UnityEngine.Debug.Log(cameraContainer);
        int childs = cameraContainer.transform.childCount;

        for (int i = childs - 1; i >= 0; i--)
        {
            DestroyImmediate(cameraContainer.transform.GetChild(i).gameObject);
        }

        GameObject info = GameObject.Find("Info");

        childs = info.transform.childCount;
        for (int i = childs - 1; i >= 0; i--)
        {
            DestroyImmediate(info.transform.GetChild(i).gameObject);
        }

        string infoTxt = "N:" + N.ToString() + "_K:" + K.ToString() + "_Q:" + Q.ToString() + "_SC:" + sizeCanvas.ToString() + "_d:" + nameDataset.ToString();
        var    infoObj = new GameObject(infoTxt);

        infoObj.transform.parent = info.transform;
        GameObject.Find("DebugText").GetComponent <Text>().text = infoTxt;
        List <CameraSensorComponent> camComp = new List <CameraSensorComponent>(agent.GetComponents <CameraSensorComponent>());

        foreach (CameraSensorComponent cam in camComp)
        {
            DestroyImmediate(cam);
        }

        //    UnityEngine.Debug.Log("CIAO");

        int totIndex = 0;

        for (int k = 0; k < K; k++)
        {
            GameObject supportCamera = GameObject.Find("SupportCamera"); // remember to take this out from the sensorlist
            for (int n = 0; n < N; n++)
            {
                supportCameras.Add(Instantiate(supportCamera));
                supportCameras[totIndex].transform.parent = cameraContainer.transform;
                supportCameras[totIndex].name             = (n + N * k).ToString("D3") + "_SupportCamera";
                supportCameras[totIndex].SetActive(false);
                totIndex += 1;
            }
        }

        int thisIndex = 0;

        for (int k = 0; k < K; k++)
        {
            GameObject testCamera = GameObject.Find("QueryCamera"); // remember to take this out from the sensorlist
            for (int q = 0; q < Q; q++)
            {
                testingCameras.Add(Instantiate(testCamera));
                testingCameras[thisIndex].transform.parent = cameraContainer.transform;
                // we want the test Cameras to be sent at the end, and since it's sent to python in alph, we prefix with an increasing number
                testingCameras[thisIndex].name = (totIndex).ToString("D3") + "_QueryCamera";
                testingCameras[thisIndex].SetActive(false);
                totIndex  += 1;
                thisIndex += 1;
            }
        }

        //Add Cameras to Agent
        Assert.IsTrue(supportCameras.Count == N * K);

        foreach (GameObject testingCam in testingCameras)
        {
            CameraSensorComponent cmtmp = agent.AddComponent <CameraSensorComponent>();
            cmtmp.Camera     = testingCam.GetComponent <Camera>();
            cmtmp.SensorName = testingCam.name;
            cmtmp.Width      = sizeCanvas;
            cmtmp.Height     = sizeCanvas;
        }

        foreach (GameObject supportCam in supportCameras)  // N * K
        {
            CameraSensorComponent cmtmp = agent.AddComponent <CameraSensorComponent>();
            cmtmp.Camera     = supportCam.GetComponent <Camera>();
            cmtmp.SensorName = supportCam.name;
            cmtmp.Width      = sizeCanvas;
            cmtmp.Height     = sizeCanvas;
        }


        agent.GetComponent <BehaviorParameters>().BrainParameters.VectorObservationSize = N * K + K * Q;
    }