Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System.IO;
- using System.Linq;
- public class frame : MonoBehaviour {
- public string folderFrame = "Frame";
- public string folderCSV = "C:/Users/JMonda/Desktop/New Unity Project/CSV/train_labels.csv";
- public int frameRate = 1;
- public int enabled = 1;
- public GameObject arma2;
- public GameObject arma4;
- public Camera camara1;
- public Camera camara2;
- public Camera camara3;
- public Camera camara4;
- void Start() {
- //Time.captureFramerate = frameRate;
- System.IO.Directory.CreateDirectory(folderFrame);
- }
- void Update()
- {
- getCoordenadas(arma2);
- getCoordenadas(arma4);
- }
- private void getCoordenadas(GameObject objects){
- //Guardo los frame
- string path = string.Format("{0}/{1:D04}.png", folderFrame, Time.frameCount);
- string name = string.Format("{0:D04}.png", Time.frameCount);
- ScreenCapture.CaptureScreenshot(path);
- //Obtengo las propiedades de las armas
- Renderer meshRenderer = objects.GetComponent<Renderer>();
- //Creo un cubo en la posicion central de la pistola y con el tamaño de la pistola
- /*GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
- cube.transform.position = meshRenderer.bounds.center;
- cube.transform.localScale = meshRenderer.bounds.size;*/
- //Obtengo los 8 puntos
- Vector3 a = new Vector3(
- meshRenderer.bounds.center[0] - (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] - (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] - (meshRenderer.bounds.size[2]/2));
- Vector3 b = new Vector3(
- meshRenderer.bounds.center[0] - (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] - (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] + (meshRenderer.bounds.size[2]/2));
- Vector3 c = new Vector3(
- meshRenderer.bounds.center[0] - (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] + (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] - (meshRenderer.bounds.size[2]/2));
- Vector3 d = new Vector3(
- meshRenderer.bounds.center[0] - (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] + (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] + (meshRenderer.bounds.size[2]/2));
- Vector3 e = new Vector3(
- meshRenderer.bounds.center[0] + (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] + (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] + (meshRenderer.bounds.size[2]/2));
- Vector3 f = new Vector3(
- meshRenderer.bounds.center[0] + (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] + (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] - (meshRenderer.bounds.size[2]/2));
- Vector3 g = new Vector3(
- meshRenderer.bounds.center[0] + (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] - (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] - (meshRenderer.bounds.size[2]/2));
- Vector3 h = new Vector3(
- meshRenderer.bounds.center[0] + (meshRenderer.bounds.size[0]/2),
- meshRenderer.bounds.center[1] - (meshRenderer.bounds.size[1]/2),
- meshRenderer.bounds.center[2] + (meshRenderer.bounds.size[2]/2));
- //Los obtengo en la coordenada 2D
- Vector3 coorA = new Vector3(),coorB = new Vector3(),coorC = new Vector3(),coorD = new Vector3(),coorE = new Vector3(),coorF = new Vector3(),coorG = new Vector3(),coorH = new Vector3();
- if(camara1.enabled == true){
- coorA = camara1.WorldToScreenPoint(a);
- coorB = camara1.WorldToScreenPoint(b);
- coorC = camara1.WorldToScreenPoint(c);
- coorD = camara1.WorldToScreenPoint(d);
- coorE = camara1.WorldToScreenPoint(e);
- coorF = camara1.WorldToScreenPoint(f);
- coorG = camara1.WorldToScreenPoint(g);
- coorH = camara1.WorldToScreenPoint(h);
- }else if(camara2.enabled == true){
- coorA = camara2.WorldToScreenPoint(a);
- coorB = camara2.WorldToScreenPoint(b);
- coorC = camara2.WorldToScreenPoint(c);
- coorD = camara2.WorldToScreenPoint(d);
- coorE = camara2.WorldToScreenPoint(e);
- coorF = camara2.WorldToScreenPoint(f);
- coorG = camara2.WorldToScreenPoint(g);
- coorH = camara2.WorldToScreenPoint(h);
- }else if(camara3.enabled == true){
- coorA = camara3.WorldToScreenPoint(a);
- coorB = camara3.WorldToScreenPoint(b);
- coorC = camara3.WorldToScreenPoint(c);
- coorD = camara3.WorldToScreenPoint(d);
- coorE = camara3.WorldToScreenPoint(e);
- coorF = camara3.WorldToScreenPoint(f);
- coorG = camara3.WorldToScreenPoint(g);
- coorH = camara3.WorldToScreenPoint(h);
- }else if(camara4.enabled == true){
- coorA = camara4.WorldToScreenPoint(a);
- coorB = camara4.WorldToScreenPoint(b);
- coorC = camara4.WorldToScreenPoint(c);
- coorD = camara4.WorldToScreenPoint(d);
- coorE = camara4.WorldToScreenPoint(e);
- coorF = camara4.WorldToScreenPoint(f);
- coorG = camara4.WorldToScreenPoint(g);
- coorH = camara4.WorldToScreenPoint(h);
- }
- //Lista con todos los puntos para posteriormente obtener xmin,xmax,ymin,ymax
- List<Vector3> myList = new List<Vector3>();
- myList.Add(coorA);
- myList.Add(coorB);
- myList.Add(coorC);
- myList.Add(coorD);
- myList.Add(coorE);
- myList.Add(coorF);
- myList.Add(coorG);
- myList.Add(coorH);
- int xMin = (int) myList.Min(x => x.x);
- int xMax = (int) myList.Max(x => x.x);
- int yMin = (int) myList.Min(x => x.y);
- int yMax = (int) myList.Max(x => x.y);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement