Ejemplo n.º 1
0
    void _internalCreateMesh(EyeName eye)
    {
        int i = (int)eye;

        if (_RenderPlane == null)
        {
            _RenderPlane = new GameObject("RicohThetaMesh_" + eye.ToString());
        }
        MeshFilter mf = _RenderPlane.GetComponent <MeshFilter> ();

        if (mf == null)
        {
            mf = _RenderPlane.AddComponent <MeshFilter> ();
        }
        MeshRenderer mr = _RenderPlane.GetComponent <MeshRenderer> ();

        if (mr == null)
        {
            mr = _RenderPlane.AddComponent <MeshRenderer> ();
        }
        mf.mesh = MeshGenerator.GenerateSphere(1, 40, 40);

        mr.material             = Mat;
        transform.localPosition = new Vector3(0, 0, 0);
        transform.localRotation = Quaternion.identity;
        transform.localScale    = new Vector3(Scaler, Scaler, Scaler);
    }
 public Texture GetEyeTexture(EyeName e)
 {
     if (m_Texture != null && m_Texture.PlayerTexture!=null) {
         return m_Texture.PlayerTexture [(int)e];
     }
     return null;
 }
Ejemplo n.º 3
0
    public override void CreateMesh(EyeName eye)
    {
        Eye = eye;
        MeshRenderer mr = GetComponent <MeshRenderer> ();

        if (mr == null)
        {
            _internalCreateMesh(eye);
        }
        else
        {
            CameraPostRenderer r = DisplayCamera.GetComponent <CameraPostRenderer>();
            if (r == null)
            {
                r = DisplayCamera.gameObject.AddComponent <CameraPostRenderer>();
            }
            r.AddRenderer(this);
            _RenderPlane = gameObject;
            mr.material  = Mat;
        }

        /*if (eye == EyeName.LeftEye)
         *      _RenderPlane.transform.localPosition = new Vector3 (-0.03f, 0, 0);
         * else
         *      _RenderPlane.transform.localPosition = new Vector3 (0.03f, 0, 0);*/
    }
Ejemplo n.º 4
0
 public Material GetMaterial(EyeName eye)
 {
     if (_camRenderer [(int)eye] != null)
     {
         return(_camRenderer [(int)eye].Mat);
     }
     return(null);
 }
 public Rect GetEyeTextureCoords(EyeName e)
 {
     if (isStereo) {
         if (e == EyeName.LeftEye)
             return new Rect (0, 0, 0.5f, 1);
         return new Rect (0.5f, 0, 0.5f, 1);
     }else
         return new Rect (0, 0, 1, 1);
 }
Ejemplo n.º 6
0
    public Texture GetTexture(EyeName e)
    {
        if (_eyes.Length == 0)
        {
            return(NullTexture);
        }
        if (_type == OutputType.Mono || _type == OutputType.Omni || _eyes.Length == 1)
        {
            return(_eyes [0]);
        }

        return(_eyes [(int)e]);
    }
Ejemplo n.º 7
0
    public override void CreateMesh(EyeName eye)
    {
        Eye            = eye;
        Image.material = Mat;

        CameraPostRenderer r = DisplayCamera.GetComponent <CameraPostRenderer>();

        if (r == null)
        {
            r = DisplayCamera.gameObject.AddComponent <CameraPostRenderer>();
        }
        r.AddRenderer(this);
        _RenderPlane = gameObject;
        Enable();
    }
Ejemplo n.º 8
0
    public override void CreateMesh(EyeName eye)
    {
        Eye = eye;

        CameraPostRenderer r = DisplayCamera.GetComponent <CameraPostRenderer>();

        if (r == null)
        {
            r = DisplayCamera.gameObject.AddComponent <CameraPostRenderer>();
        }
        r.AddRenderer(this);
        _RenderPlane = gameObject;

        Receiver.OnFrameBlitted += OnImageArrived;
    }
 public void CreateMesh(EyeName eye )
 {
     Eye = eye;
     MeshRenderer mr = GetComponent<MeshRenderer> ();
     if (mr == null) {
         _internalCreateMesh (eye);
     } else {
         CameraPostRenderer r=DisplayCamera.GetComponent<CameraPostRenderer>();
         if(r==null)
         {
             r=DisplayCamera.gameObject.AddComponent<CameraPostRenderer>();
         }
         r.AddRenderer(this);
         _RenderPlane=gameObject;
         mr.material = Mat;
     }
 }
Ejemplo n.º 10
0
    public override void CreateMesh(EyeName eye)
    {
        Eye = eye;
        MeshRenderer mr = GetComponent <MeshRenderer> ();

        if (mr == null)
        {
            _internalCreateMesh(eye);
        }
        else
        {
            CameraPostRenderer r = DisplayCamera.GetComponent <CameraPostRenderer>();
            if (r == null)
            {
                r = DisplayCamera.gameObject.AddComponent <CameraPostRenderer>();
            }
            r.AddRenderer(this);
            _RenderPlane = gameObject;
            mr.material  = Mat;
        }
    }
Ejemplo n.º 11
0
    public override void CreateMesh(EyeName eye)
    {
        Eye = eye;
        MeshRenderer mr = GetComponent <MeshRenderer> ();

        if (mr == null)
        {
            mr = _internalCreateMesh(eye);
        }

        if (mr != null)
        {
            mr.material = Mat;
        }

        _postRenderer = DisplayCamera.GetComponent <CameraPostRenderer>();
        if (_postRenderer == null)
        {
            _postRenderer = DisplayCamera.gameObject.AddComponent <CameraPostRenderer>();
        }
        _postRenderer.AddRenderer(this);
        Enable();
    }
Ejemplo n.º 12
0
    void _InitCameraRenderers()
    {
        if (_camsInited)
        {
            return;
        }
        Debug.Log("Creating Renderers");
        EyeName[] eyes = new EyeName[] { EyeName.LeftEye, EyeName.RightEye };
        //TelubeeCameraRenderer[] Targets = new TelubeeCameraRenderer[]{TargetEyeRight,TargetEyeLeft};
        ICameraRenderMesh[] Targets = new ICameraRenderMesh[] { TargetEyeLeft, TargetEyeRight };

        float[] camsOffset = new float[] { -0.03f, 0.03f };
        //	if (OculusCamera != null)
        {
            Camera mainCam;

            Camera[]    cams    = new Camera[2];
            Transform[] Anchors = new Transform[2];
            if (OculusCamera != null)
            {
                cams [0]    = OculusCamera.leftEyeAnchor.GetComponent <Camera>();
                cams [1]    = OculusCamera.rightEyeAnchor.GetComponent <Camera>();
                mainCam     = OculusCamera.centerEyeAnchor.GetComponent <Camera> ();
                Anchors [0] = OculusCamera.centerEyeAnchor;
                Anchors [1] = OculusCamera.centerEyeAnchor;

                cams [0].cullingMask = (cams [0].cullingMask & ~(1 << LayerMask.NameToLayer("RightEye"))) | 1 << LayerMask.NameToLayer("LeftEye");
                cams [1].cullingMask = (cams [1].cullingMask & ~(1 << LayerMask.NameToLayer("LeftEye"))) | 1 << LayerMask.NameToLayer("RightEye");
            }
            else
            {
                cams [0] = Camera.main;
                cams [1] = Camera.main;
                mainCam  = Camera.main;

                Anchors [0] = Camera.main.transform;
                Anchors [1] = Camera.main.transform;
            }


            //_postRenderer=mainCam.GetComponent<CameraPostRenderer>();
            if (_postRenderer == null)
            {
                _postRenderer = mainCam.gameObject.AddComponent <CameraPostRenderer>();
            }
            _postRenderer.AddRenderer(this);

            //	Vector2[] pixelShift = new Vector2[] { output.Configuration.PixelShiftRight,output.Configuration.PixelShiftLeft};
            for (int i = 0; i < cams.Length; ++i)
            {
                //int i = (int)eyes[c];
                cams[i].backgroundColor = new Color(cams[i].backgroundColor.r, cams[i].backgroundColor.g, cams[i].backgroundColor.b, 1);


                //	CreateMesh ((EyeName)i);
                //	RicohThetaRenderMesh r = Targets[i] as RicohThetaRenderMesh;
                ICameraRenderMesh r = null;

                //Check camera type used.
                if (Output.Configuration.CameraType == CameraConfigurations.ECameraType.WebCamera)
                {
                    //Create A webcamera type renderer
                    r = Targets[i];
                    if (r == null)
                    {
                        if (Output.Configuration.streamCodec == CameraConfigurations.EStreamCodec.Ovrvision)
                        {
                            r = cams [i].gameObject.AddComponent <OVRVisionRenderMesh> ();
                        }
                        //	else if(Output.Configuration.streamCodec==CameraConfigurations.EStreamCodec.EyegazeRaw)
                        //		r = cams [i].gameObject.AddComponent<EyegazeWebcameraRenderMesh> ();//Eyegaze
                        else
                        {
                            r = cams [i].gameObject.AddComponent <WebcameraRenderMesh> ();
                        }
                    }
                }
                else
                {
                    r = Targets[i];
                    if (r == null)
                    {
                        r = cams [i].gameObject.AddComponent <RicohThetaRenderMesh> ();
                    }
                }
                r.Mat           = Object.Instantiate(TargetMaterial);
                r.DisplayCamera = cams[i];
                r.Src           = this;

                //r.CreateMesh(eyes[c]);
                r.CreateMesh(eyes[i]);

                _camRenderer[i] = r;

                if (eyes[i] == EyeName.RightEye)
                {
                    r._RenderPlane.layer = LayerMask.NameToLayer("RightEye");
                }
                else
                {
                    r._RenderPlane.layer = LayerMask.NameToLayer("LeftEye");
                }
                if (Targets[i] == null)
                {
                    _camRendererParents [i] = new GameObject(this.name + "_" + eyes[i].ToString());
                    //_camRendererParents[i].transform.parent=Anchors[i].transform;
                    _camRendererParents[i].transform.localRotation = Quaternion.Euler(Output.Configuration.OffsetAngle);
                    _camRendererParents[i].transform.position      = Anchors[i].transform.position;             //Vector3.zero;
                    var attachment = _camRendererParents[i].AddComponent <CameraTransformAttachment>();
                    attachment.attachedAnchor = Anchors [i].transform;

                    _camRendererParents [i].transform.parent = transform;

                    attachment.renderer = this;

                    r._RenderPlane.transform.parent        = _camRendererParents[i].transform;
                    r._RenderPlane.transform.localRotation = Quaternion.identity;
                    r._RenderPlane.transform.localPosition = new Vector3(camsOffset[i], 0, 0);


                    r.transform.localRotation = Quaternion.identity;
                    r.transform.localPosition = Vector3.zero;
                }
            }
        }

        //	_camRenderer[0].CreateMesh(EyeName.LeftEye);
        //	_camRenderer[1].CreateMesh(EyeName.RightEye);

        if (OnCameraRendererCreated != null)
        {
            OnCameraRendererCreated(this, _camRenderer);
        }

        _camsInited = true;
    }
 public Texture GetEyeTexture(EyeName e)
 {
     if (e == EyeName.LeftEye)
         return _LeftCam;
     return _RightCam;
 }
Ejemplo n.º 14
0
    protected override MeshRenderer _internalCreateMesh(EyeName eye)
    {
        int i = (int)eye;

        if (_RenderPlane == null)
        {
            _RenderPlane = new GameObject("EyesRenderPlane_" + eye.ToString());
        }
        MeshFilter mf = _RenderPlane.GetComponent <MeshFilter> ();

        if (mf == null)
        {
            mf = _RenderPlane.AddComponent <MeshFilter> ();
        }
        MeshRenderer mr = _RenderPlane.GetComponent <MeshRenderer> ();

        if (mr == null)
        {
            mr = _RenderPlane.AddComponent <MeshRenderer> ();
        }

        mr.material      = Mat;
        mf.mesh.vertices = new Vector3[] {
            new Vector3(-1, -1, 1),
            new Vector3(1, -1, 1),
            new Vector3(1, 1, 1),
            new Vector3(-1, 1, 1)
        };
        Rect r = new Rect(0, 0, 1, 1);     // CamSource.GetEyeTextureCoords (eye);

        Vector2[] uv = new Vector2[] {
            new Vector2(r.x, r.y),
            new Vector2(r.x + r.width, r.y),
            new Vector2(r.x + r.width, r.y + r.height),
            new Vector2(r.x, r.y + r.height),
        };
        Matrix4x4 rotMat = Matrix4x4.identity;

        if (Src.Output.Configuration.Rotation[i] == CameraConfigurations.ECameraRotation.Flipped)
        {
            rotMat = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, 180), Vector3.one);
        }
        else if (Src.Output.Configuration.Rotation[i] == CameraConfigurations.ECameraRotation.CW)
        {
            rotMat = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, 90), Vector3.one);
        }
        else if (Src.Output.Configuration.Rotation[i] == CameraConfigurations.ECameraRotation.CCW)
        {
            rotMat = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, -90), Vector3.one);
        }
        for (int v = 0; v < 4; ++v)
        {
            Vector3 res = rotMat * (2 * uv[v] - Vector2.one);
            uv[v] = (new Vector2(res.x, res.y) + Vector2.one) * 0.5f;     //Vector2.one-uv[v];
            if (Src.Output.Configuration.FlipXAxis)
            {
                uv[v].x = 1 - uv[v].x;
            }
            if (Src.Output.Configuration.FlipYAxis)
            {
                uv[v].y = 1 - uv[v].y;
            }
            //	uv[v].y=1-uv[v].y;
        }
        mf.mesh.uv        = uv;
        mf.mesh.triangles = new int[]
        {
            0, 2, 1, 0, 3, 2
        };

        _RenderPlane.transform.localPosition = new Vector3(0, 0, 0);
        if (Eye == EyeName.LeftEye)
        {
            _RenderPlane.transform.localPosition = new Vector3(-0.032f, 0, 0);
        }
        else
        {
            _RenderPlane.transform.localPosition = new Vector3(0.032f, 0, 0);
        }
        _RenderPlane.transform.localRotation = Quaternion.identity;

        return(mr);
    }
Ejemplo n.º 15
0
 protected virtual MeshRenderer _internalCreateMesh(EyeName eye)
 {
     _RenderPlane = gameObject;
     return(null);
 }
Ejemplo n.º 16
0
 public abstract void CreateMesh(EyeName eye);
 public Rect GetEyeTextureCoords(EyeName e)
 {
     return new Rect (0, 0, 1, 1);
 }
    void _internalCreateMesh(EyeName eye)
    {
        int i = (int)eye;
        if(_RenderPlane==null)
            _RenderPlane = new GameObject("EyesRenderPlane_"+eye.ToString());
        MeshFilter mf = _RenderPlane.GetComponent<MeshFilter> ();
        if (mf == null) {
            mf = _RenderPlane.AddComponent<MeshFilter> ();
        }
        MeshRenderer mr = _RenderPlane.GetComponent<MeshRenderer> ();
        if (mr == null) {
            mr = _RenderPlane.AddComponent<MeshRenderer> ();
        }

        mr.material = Mat;
        mf.mesh.vertices = new Vector3[]{
            new Vector3( 1,-1,0),
            new Vector3(-1,-1,0),
            new Vector3(-1, 1,0),
            new Vector3( 1, 1,0)
        };
        Rect r = CamSource.GetEyeTextureCoords (eye);
        Vector2[] uv = new Vector2[]{
            new Vector2(r.x,r.y),
            new Vector2(r.x+r.width,r.y),
            new Vector2(r.x+r.width,r.y+r.height),
            new Vector2(r.x,r.y+r.height),
        };
        Matrix4x4 rotMat = Matrix4x4.identity;
        if (Src.Configuration.CamSettings.Rotation [i] == CameraConfigurations.ECameraRotation.Flipped) {
            rotMat = Matrix4x4.TRS (Vector3.zero, Quaternion.Euler (0, 0, 180), Vector3.one);
        } else if (Src.Configuration.CamSettings.Rotation [i] == CameraConfigurations.ECameraRotation.CW) {
            rotMat = Matrix4x4.TRS (Vector3.zero, Quaternion.Euler (0, 0, 90), Vector3.one);
        } else if (Src.Configuration.CamSettings.Rotation [i] == CameraConfigurations.ECameraRotation.CCW) {
            rotMat = Matrix4x4.TRS (Vector3.zero, Quaternion.Euler (0, 0, -90), Vector3.one);
        }
        for(int v=0;v<4;++v)
        {
            Vector3 res=rotMat*(2*uv[v]-Vector2.one);
            uv[v]=(new Vector2(res.x,res.y)+Vector2.one)*0.5f;//Vector2.one-uv[v];
            if(Src.Configuration.CamSettings.FlipXAxis)
            {
                uv[v].x=1-uv[v].x;
            }
        }
        mf.mesh.uv = uv;
        mf.mesh.triangles = new int[]
        {
            0,2,1,0,3,2
        };

        transform.localPosition =new Vector3 (0, 0, 1);
        transform.localRotation =Quaternion.identity;
    }
 public Vector2 GetEyeScalingFactor(EyeName e)
 {
     return Vector2.one;
 }
Ejemplo n.º 20
0
    void Init()
    {
        CameraType = Settings.Instance.RobotSettings.ReadValue ("Camera", "Source", CameraType.ToString ())=="Local"?CameraSourceType.Local:CameraSourceType.Remote;
        if(CameraType==CameraSourceType.Local)
        {
            LocalWebcameraSource c;
            _cameraSource = (c=new LocalWebcameraSource());
            c.LeftInputCamera = Settings.Instance.RobotSettings.ReadValue ("Camera", "Left", 0);
            c.RightInputCamera = Settings.Instance.RobotSettings.ReadValue ("Camera", "Right", 1);
            c.Init();
        }else
        {
            MultipleNetworkCameraSource c;
            _cameraSource = (c=new MultipleNetworkCameraSource());
            c.StreamsCount=2;
            c.TargetNode=gameObject;
            c.Init();
        }

        if (AudioSupport) {
            _audioPlayer = new GstMultipleNetworkAudioPlayer ();
            _audioStreamer = gameObject.AddComponent<GstNetworkAudioStreamer> ();
            _audioStreamer.SetChannels(1);
            _audioStreamer.CreateStream();
        }

        EyeName[] eyes = new EyeName[]{EyeName.RightEye,EyeName.LeftEye};
        TelubeeCameraRenderer[] Targets = new TelubeeCameraRenderer[]{TargetEyeRight,TargetEyeLeft};
        if (OculusCamera != null)
        {
            Camera[] cams = new Camera[] { OculusCamera.rightEyeCamera, OculusCamera.leftEyeCamera };
        //	Vector2[] pixelShift = new Vector2[] { Configuration.CamSettings.PixelShiftRight,Configuration.CamSettings.PixelShiftLeft};
            for (int c = 0; c < cams.Length; ++c)
            {
                int i = (int)eyes[c];
                cams[i].backgroundColor=Color.black;

            //	CreateMesh ((EyeName)i);
                TelubeeCameraRenderer r = Targets[i];
                if(r==null)
                    r=cams[i].gameObject.AddComponent<TelubeeCameraRenderer>();
                r.Mat = Object.Instantiate(TargetMaterial);
                r.DisplayCamera=cams[i];
                r.Src = this;
                r.CamSource = _cameraSource;

                r.CreateMesh(eyes[c]);

                _camRenderer[i]=r;

                if (i == 0)
                {
                    r._RenderPlane.layer=LayerMask.NameToLayer("RightEye");
                }
                else
                {
                    r._RenderPlane.layer=LayerMask.NameToLayer("LeftEye");
                }
                if(Targets[i]==null)
                {
                    r._RenderPlane.transform.parent = cams[i].transform;
                    r._RenderPlane.transform.localRotation=Quaternion.identity;
                    r._RenderPlane.transform.localPosition=new Vector3(0,0,1);
                }
            }
        }

        _videoValues=new NetValueObject();
        if (ParameterController != null)
            ParameterController.TargetValueObject = _videoValues;
    }
 public Texture GetEyeTexture(EyeName e)
 {
     if (m_Texture == null || m_Texture.PlayerTexture == null)
         return null;
     return m_Texture.PlayerTexture[0];
 }
 public Vector2 GetEyeScalingFactor(EyeName e)
 {
     if (isStereo)
         return new Vector2 (0.5f, 1);
     return Vector2.one;
 }