Esempio n. 1
0
        void OnGUI()
        {
            UnityGUI.Header("Coordinates");
            headset = UnityGUI.Enum("Headset", headset);

            UnityGUI.Space();

            UnityGUI.BeginHorizontal();
            UnityGUI.Label(" ", "X", UnityGUI.BoldLabel);
            UnityGUI.Label("Y", UnityGUI.BoldLabel);
            UnityGUI.EndHorizontal();

            UnityGUI.BeginHorizontal();
            UnityGUI.Label("Resolution", headset.GetWidth().ToString());
            UnityGUI.Label(headset.GetHeight().ToString());
            UnityGUI.EndHorizontal();

            UnityGUI.BeginHorizontal();
            UnityGUI.Label("Field of View", ((int)headset.GetFieldOfView(Axis.Horizontal)).ToString());
            UnityGUI.Label(((int)headset.GetFieldOfView(Axis.Vertical)).ToString());
            UnityGUI.EndHorizontal();

            UnityGUI.BeginHorizontal();
            UnityGUI.Label("Diameter (um)", ((int)headset.GetRetinalDiameter(Axis.Horizontal)).ToString());
            UnityGUI.Label(((int)headset.GetRetinalDiameter(Axis.Vertical)).ToString());
            UnityGUI.EndHorizontal();

            UnityGUI.Space();

            Draw("Pixel", ref pixel);
            Draw("Visual Angle", ref angle);
            Draw("Retina (um)", ref retina);
            Draw("Polar", ref polar);

            UnityGUI.Separator();
            UnityGUI.Header("Electrode Count");

            UnityGUI.BeginChangeCheck();
            pattern     = UnityGUI.Enum("Pattern", pattern);
            layout      = UnityGUI.Enum("Layout", layout);
            fieldOfView = UnityGUI.Float("Field of View", fieldOfView);
            var changed = UnityGUI.EndChangeCheck();

            if (changed)
            {
                numElectrodes = pattern.GetElectrodePositions(layout, fieldOfView).Length;
            }

            UnityGUI.Space();
            UnityGUI.Label("Electode Count", numElectrodes.ToString());
        }
Esempio n. 2
0
        /*
         * Protected methods
         */

        protected void Initialise(string phosShader, string tailShader)
        {
            // load shaders
            phos = new Material(Shader.Find(phosShader));
            tail = new Material(Shader.Find(tailShader));

            if (phos == null || tail == null)
            {
                Debug.LogError($"{name} does not have a material.");
                return;
            }

            // upload electrode/axon textures to the GPU
            phos.SetTexture(SP.electrodeTexture, epiretinalData.GetPhospheneTexture(headset, pattern, layout));
            tail.SetTexture(SP.axonTexture, epiretinalData.GetAxonTexture(headset));

            // create texture for the fading data
            fadeRT = new DoubleBufferedRenderTexture(headset.GetWidth(), headset.GetHeight());
            fadeRT.Initialise(new Color(1, 0, 0, 0));

            // overrides
            if (overrideCameraFOV)
            {
                Prosthesis.Instance.Camera.fieldOfView = headset.GetFieldOfView(Axis.Vertical);
            }

            if (overrideRefreshRate)
            {
                Application.targetFrameRate = headset.GetRefreshRate();
            }

            // cache texture-related variables
            lastHeadset = headset;
            lastPattern = pattern;
            lastLayout  = layout;

            // initialise eye gaze tracking
            EyeGaze.Initialise(eyeGazeSource, headset);

            // initialise camera target eye
            UpdateCameraTargetEye();
        }
Esempio n. 3
0
 public static float GetRetinalDiameter(this HeadsetModel headset, Axis axis)
 {
     return(CoordinateSystem.FovToRetinalDiameter(headset.GetFieldOfView(axis)));
 }