Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Raúl

#1
General (Antiguo) / Duda con los Co-Rutinas
Julio 03, 2018, 12:03:12 PM
Buenos días!
 
Estoy desarrollando una aplicación que descarga de un servidor modelos 3D para luego cargarlos en la escena. Para la parte de la descarga he conseguido hacerlo de manera "asincrona".
 
Sin embargo, a la hora de cargar los objetos pese a meter toda la ejecución de la carga de objetos dentro de una co-rutina tanto en el editor como en el dispositivo, la ejecución del programa se "detiene" 3 o 4 segundos hasta que la carga finaliza. Hay alguna forma de evitar esos 3,4 segundos?
 

private void addModel(string path, StepContent model)
    {
            StartCoroutine(LoadObjets(path, model));
}
IEnumerator LoadObjets(string path, StepContent model)
    {
   // Aqui va todo el codigo de la carga.
        yield return null;
    }

 
 
 
Un saludo y Gracias!
#2
General (Antiguo) / Girar un objeto via Script
Abril 23, 2018, 11:49:58 AM
Buenos dias,
 
estoy trabajando en una aplicación en la que descargo los componentes transform de un gameObject  e intento aplicarselos durante la ejecución, para aplicar la posición no he tenido ningun problema pero para aplicar la rotacion no he sido capaz, el objeto gira pero no con los valores que yo le paso he probado varias formas y ninguna funciona, adjunto la parte del codigo donde lo intento hacer
 

Quaternion rota = new Quaternion(); // defino un quaternion
 xx = siho.rotationX; // los valores los tengo almacenados en un array por eso hago esa asignación
 rota.x = xx;
 yy = siho.rotationY;
 rota.y = yy;
 zz = siho.rotationZ;
 rota.z = zz;
gameObjectActual.transform.rotation= rota;

 
He comprobado los valores de las variables xx,yy,zz y si que contienen los valores que yo busco pero a la hora de girar el objeto aparecen otros valores :(
 
Un saludo y gracias de antemano!
#3
Buenos días a todos!
 
Os pongo en situación, estoy haciendo una aplicación para HoloLens en la que uso el reconocimiento de imagenes que proporciona Vuforia y la verdad esque funciona bastante bien(siempre y cuando añada la base de datos en unity). Ahora quiero ir un paso mas y poder descargar la base de datos durante la ejecución en las gafas.
 
Una base de datos de Vuforia consiste un dos archivos un tipo dat y un xml que deben colocarse en la ruta /../StreamingAssets/Vuforia/.
 
He creado un empty GameObject en la escene y la he agregado las siguientes scripts
 
LoadXML.cs en la que descargo y guardo la parte del XML
 

public class LoadXML : MonoBehaviour {
 
    public string url = @"AQUI PONGO LA URL DE MI SERVIDOR";
    public string XML;
    public LoaderDataSet lod;
 
    // Use this for initialization
    void Start () {
        StartCoroutine(GetXML());
    }
 
    // Update is called once per frame
    void Update () {
   
}
    IEnumerator GetXML()
    {
        WWW www = new WWW(url);
        yield return www;
        //  var XML = www.text;
        System.IO.File.WriteAllBytes(Application.streamingAssetsPath + "/Vuforia/150.xml", www.bytes);
       
    }
}

 
LoadDat.cs en la que descargo y guardo el DAT
 

public class LoadDat : MonoBehaviour {
 
    public string url = @"AQUI VA LA URl";
    public string dat;
    // Use this for initialization
    void Start () {
        StartCoroutine(GetDAT());
    }

// Update is called once per frame
void Update () {
   
}
    void Awake()
    {
       
    }
    IEnumerator GetDAT()
    {
        WWW www = new WWW(url);
        yield return www;
        System.IO.File.WriteAllBytes(Application.streamingAssetsPath + "/Vuforia/150.dat", www.bytes);
    }
}

 
y finalmente la tercera script LoaderDataSet.cs en la que creo el objecto donde va a ir el reconocimiento le añado todos los componentes necesarios
 

public class LoaderDataSet : MonoBehaviour {
 
    public GameObject augmentationObject = null;  // you can use teapot or other object
    public string dataSetName = "";
    ObjectTracker objectTracker;
    DataSet dataSet;
    int cont = 0;
    public GameObject cosa;
    // Use this for initialization
    void Start () {
        StartCoroutine(ExecuteAfterTime(5));
}

// Update is called once per frame
void Update () {
       
   
}
    public void empezar()
    {
        VuforiaARController.Instance.RegisterVuforiaStartedCallback(LoadDataSet);  
    }
    IEnumerator ExecuteAfterTime(float time)
    {
        yield return new WaitForSeconds(time);
        // Code to execute after the delay
        empezar();
    }
    void LoadDataSet()
    {
        objectTracker = TrackerManager.Instance.GetTracker<ObjectTracker>();
        dataSet = objectTracker.CreateDataSet();
       
//AQUI ES donde creo que falla
        if (dataSet.Load(dataSetName))
        {
            objectTracker.Stop();  // stop tracker so that we can add new dataset
            if (!objectTracker.ActivateDataSet(dataSet))
            {
                // Note: ImageTracker cannot have more than 100 total targets activated
                Debug.Log("<color=yellow>Failed to Activate DataSet: " + dataSetName + "</color>");
            }
            if (!objectTracker.Start())
            {
                Debug.Log("<color=yellow>Tracker Failed to Start.</color>");
            }
            int counter = 0;
            IEnumerable<TrackableBehaviour> tbs = TrackerManager.Instance.GetStateManager().GetTrackableBehaviours();
            foreach (TrackableBehaviour tb in tbs)
            {
                print("1");
                if (tb.name == "New Game Object")
                {
                    // change generic name to include trackable name
                    tb.gameObject.name = ++counter + ":DynamicImageTarget-" + tb.TrackableName;
                    // add additional script components for trackable
                    tb.gameObject.AddComponent<DefaultTrackableEventHandler>();
                    tb.gameObject.AddComponent<TurnOffBehaviour>();
                    if (augmentationObject != null)
                    {
                        // instantiate augmentation object and parent to trackable
                        GameObject augmentation = (GameObject)GameObject.Instantiate(augmentationObject);
                        augmentation.transform.parent = tb.gameObject.transform;
                        augmentation.transform.localPosition = new Vector3(0f, 0f, 0f);
                        augmentation.transform.localRotation = Quaternion.identity;
                        augmentation.transform.localScale = new Vector3(1f, 1f, 1f);
                        augmentation.gameObject.SetActive(true);
                    }
                    else
                    {
                        Debug.Log("<color=yellow>Warning: No augmentation object specified for: " + tb.TrackableName + "</color>");
                    }
                }
            }
        }
        else
        {
            Debug.LogError("<color=yellow>Failed to load dataset: '" + dataSetName + "'</color>");
        }
    }
}

 
En el editor de unity todo funciona correctamente pero en las gafas no, por lo que he podido entender las carpetas que tengo antes de compilar y que tengo despues son diferentes entonces no se de que manera guardar los archivos.
 
Alguna idea?
 
Muchas gracias de antemano!
#4
Buenos días,
 
Estoy desarrollando una aplicación para HoloLens y una de las funcionalidades que debe ofrecer es la de poder sacar una foto y mostrarla en un gameObject, para ello he visto que en la doc de Unity hay un ejemplo de como se hace(https://docs.unity3d.com/2017.2/Documentation/ScriptReference/XR.WSA.WebCam.PhotoCapture.html) me he dispuesto a probarlo para ver como funcionaba y tal.
 
Me he encontrado con el siguiente error en varias partes del codigo PhotoCapture no contiene una definición para ... (falla en varios sitios, CreateAsync, SupportedResolution, etc.)
 
Llevo un par de horas buscando una solucion y no veo a nadie que le haya pasado lo mismo, alguna idea?
 
Un saludo y gracias!!
 
 
 
PD: estoy usando la version de unity 2017.2.0f3
#5
General (Antiguo) / Problema girando un objeto
Diciembre 15, 2017, 11:31:58 AM
Buenos dias,
 
En mi programa tengo una escena compuesta por varios paneles que muestran informacion, lo que quiero es asignar 2 botones a cada uno de los paneles para que cuando se haga click en uno de ellos el panel en cuestion " me mire"
 
La script en cuestion es la siguiente
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity.InputModule;
public class PonerEnPrimerPlano : MonoBehaviour, IInputClickHandler {
    public Transform TargetObject;
    GameObject panel;
   
    public void OnInputClicked(InputClickedEventData eventData)
    {
        panel.transform.LookAt(TargetObject);
        float y = panel.transform.rotation.eulerAngles.y;
        float x = panel.transform.rotation.eulerAngles.x;
        float z = panel.transform.rotation.eulerAngles.z;
        print("Valor de y antes de la asignacion "+y);
        y = y + 180;
        print("Valor de y despues de la asignacion "+ y);
        panel.transform.rotation = new Quaternion(x, y, z, 0);
 
    }
    // Use this for initialization
    void Start () {
        panel = GameObject.Find("MenuImagen");
        rota = new Quaternion(0, 0, 0, 0);
       
    }

// Update is called once per frame
void Update () {
       
    }
}

 
En principio usaba solo el lookAt pero el problema es que el panel me "daba la espalda" es decir solo necesitaba añadirle 180º en el eje y, lo he intentado así pero no ha habido manera.
 
Alguna idea?
 
 
 
Gracias!
#6
General (Antiguo) / Hola todoos!
Noviembre 28, 2017, 09:22:26 AM
Buenos días!!
 
he empezado hace bastante poquito a utilizar unity y ando bastante perdido jaja espero que podais ayudarme y que yo tambien pueda aportar cosillas!
 
Un saludo! y Gracias :)