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()); }
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); }
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); } } } } }