예제 #1
0
    void Start()
    {
        kfMarkRoot       = new GameObject().transform;
        kfConnectionRoot = new GameObject().transform;
        mpConnectionRoot = lineMesh.create().transform;
        mpConnectionRoot.SetParent(transform);
        kfConnectionRoot.SetParent(transform);
        kfMarkRoot.SetParent(transform);
        lineMesh trajObj = lineMesh.create();

        kfTrajRoot = trajObj.transform;
        kfTrajRoot.SetParent(transform);
        for (int i = 0; i < KFList.Count; i++)
        {
            camModel mark = camModel.create(KFList[i].pos,
                                            KFList[i].right,
                                            KFList[i].forward,
                                            KFList[i].up,
                                            KFList[i].id, listId);
            mark.ChangeColor(KFList[i].color);
            mark.transform.SetParent(kfMarkRoot);
            if (i != 0)
            {
                trajObj.addLine(KFList [i - 1].pos, KFList [i].pos);
            }
        }
        trajObj.createMesh();
        //ShowTraj (false, new Color32());
    }
예제 #2
0
    public static camModel create(Vector3 pos, Vector3 right, Vector3 forward, Vector3 up, int id, int _listId)
    {
        GameObject obj = new GameObject();

        obj.name = "coorMarkCam";

        if (forward.sqrMagnitude <= 0.01)
        {
            obj.AddComponent <MeshFilter> ().mesh = meshBox;
        }
        else
        {
            obj.AddComponent <MeshFilter> ().mesh = mesh;
            Matrix4x4 temp = new Matrix4x4();
            temp.SetColumn(0, new Vector4(right.x, right.y, right.z, 0));
            temp.SetColumn(1, new Vector4(up.x, up.y, up.z, 0));
            temp.SetColumn(2, new Vector4(forward.x, forward.y, forward.z, 0));
            temp.SetColumn(3, new Vector4(0, 0, 0, 1));
            Quaternion quat = util.QuaternionFromMatrix(temp);
            obj.transform.eulerAngles = quat.eulerAngles;
        }

        Shader mShader = Resources.Load("pointShader") as Shader;

        obj.AddComponent <MeshRenderer> ().material.shader = mShader;

        obj.transform.position = pos;
        camModel    mark     = obj.AddComponent <camModel> ();
        BoxCollider collider = obj.AddComponent <BoxCollider> ();

        collider.center = new Vector3(0, 0, 0.0f);
        collider.size   = new Vector3(0.6f, 0.6f, 0.6f);
        mark.keyFrameId = id;
        mark.listId     = _listId;


        return(mark);
    }
예제 #3
0
    void Update()
    {
        if (IsOnUI())
        {
            return;
        }
        float scroll = Input.GetAxis("Mouse ScrollWheel");

        if (scroll != 0)
        {
            scroll = scroll * zoomSpeed * sens;
            moveForward(scroll);
        }

        if (Input.GetMouseButton(2))
        {
            float panD_X = -Input.GetAxis("Mouse X") * sens * panSpeed;
            float panD_Y = -Input.GetAxis("Mouse Y") * sens * panSpeed;
            panX(panD_X);
            panY(panD_Y);
        }

        if (Input.GetMouseButton(0))
        {
            float panD_X = -Input.GetAxis("Mouse X") * sens * rotSpeed;
            float panD_Y = -Input.GetAxis("Mouse Y") * sens * rotSpeed;
            transform.eulerAngles += new Vector3(panD_Y, -panD_X, 0);
        }

        if (Input.GetMouseButtonDown(1))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            isHit = Physics.Raycast(ray, out hit);
        }

        if (Input.GetMouseButton(1))
        {
            if (isHit)
            {
                float panD_X = Input.GetAxis("Mouse X") * sens * rotSpeed;
                float panD_Y = Input.GetAxis("Mouse Y") * sens * rotSpeed;
                transform.RotateAround(hit.point, new Vector3(0.0f, 1.0f, 0.0f), panD_X);
                transform.RotateAround(hit.point, transform.right, -panD_Y);
                transform.LookAt(hit.point);
            }
        }

        if (Input.GetMouseButtonUp(1))
        {
            isHit = false;
        }

        if (Input.GetKey(KeyCode.W))
        {
            float amount = Time.deltaTime * zoomSpeed * sens * 2;
            moveForward(amount);
        }

        if (Input.GetKey(KeyCode.S))
        {
            float amount = Time.deltaTime * zoomSpeed * sens * 2;
            moveForward(-amount);
        }

        if (Input.GetKey(KeyCode.A))
        {
            float amount = -Time.deltaTime * panSpeed * sens * 2;
            panX(amount);
        }

        if (Input.GetKey(KeyCode.D))
        {
            float amount = Time.deltaTime * panSpeed * sens * 2;
            panX(amount);
        }

        if (Input.GetKey(KeyCode.Q))
        {
            float amount = Time.deltaTime * panSpeed * sens * 2;
            panY(amount);
        }

        if (Input.GetKey(KeyCode.E))
        {
            float amount = -Time.deltaTime * panSpeed * sens * 2;
            panY(amount);
        }

        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.collider.gameObject)
                {
                    camModel camObj = hit.collider.gameObject.GetComponent <camModel> ();
                    if (camObj != null)
                    {
                        ChannelInfo item = ChannelInfo.getChannel(camObj.listId);
                        item.ShowKFInfo(camObj.keyFrameId);
                        item.ShowKFConnect(camObj.keyFrameId);
                        item.ShowMPConnect(camObj.keyFrameId);
                    }
                }
            }
        }
    }