unity sigue seguimiento raycast que personaje mover hacer follow español como camara unity3d photo

unity3d - sigue - raycast unity español



¿Puedo tomar una foto en Unity usando la cámara del dispositivo? (6)

No estoy familiarizado con el conjunto de funciones más complejas de Unity3D y tengo curiosidad por saber si tiene la capacidad de tomar una foto y luego manipularla. Específicamente, mi deseo es que el usuario se tome una autofoto y luego haga un seguimiento alrededor de su cara para crear un PNG que luego se mapeará en un modelo.

Sé que la asignación de caras en un modelo es simple, pero me pregunto si necesito escribir la funcionalidad de foto / talla en la aplicación Chrome que abarca, o si todo puede hacerse desde Unity. No necesito un tutorial sobre cómo hacerlo, solo pregunto si es algo que es posible.


Es posible. Te recomiendo que mires la WebCamTexture . Tiene algunas funciones útiles:

  1. GetPixel() : devuelve el color de píxel en las coordenadas (x, y).
  2. GetPixels() - Consigue un bloque de colores de píxeles.
  3. GetPixels32() : devuelve los datos de píxeles en formato sin formato.
  4. MarkNonReadable() : marca la WebCamTexture como ilegible
  5. Pause() - Pausa la cámara.
  6. Play() : inicia la cámara.
  7. Stop() : detiene la cámara.

Hay un complemento disponible para este tipo de funcionalidad llamado Camera Capture Kit - https://www.assetstore.unity3d.com/en/#!/content/56673 y mientras que la funcionalidad proporcionada está orientada a dispositivos móviles, contiene una demostración de cómo puede utilizar WebCamTexture para tomar una imagen fija.



Para aquellos que intentan hacer que la cámara genere imágenes en vivo, así es como logré lograrlo. Primero, edité la respuesta de Bart para que la textura se asignara en Actualización en lugar de solo en Inicio:

void Start() { webCamTexture = new WebCamTexture(); webCamTexture.Play(); } void Update() { GetComponent<RawImage>().texture = webCamTexture; }

Luego adjunté el script a un GameObject con un componente RawImage. Puede crear fácilmente uno haciendo clic con el botón derecho -> UI -> RawImage en la Jerarquía en el Editor de Unity (esto requiere Unity 4.6 y superior). Ejecutarlo debería mostrar una imagen en vivo de la cámara en su vista. A partir de este escrito, Unity 5 admite el uso de cámaras web en la edición personal gratuita de Unity 5.

Espero que esto ayude a cualquiera que esté buscando una buena forma de capturar imágenes en vivo de la cámara en Unity.


Sí tu puedes. Creé el complemento de cámara nativa de Android que puede abrir la cámara de su dispositivo Android, capturar imágenes, grabar videos y guardarlos en la ubicación deseada de su dispositivo con solo unas pocas líneas de código.


Sí, esto es posible. Usted querrá ver la funcionalidad de WebCamTexture .

Crea una WebCamTexture y llama a su función Play() que inicia la cámara. WebCamTexture, como cualquier textura, le permite obtener los píxeles a través de una llamada GetPixels (). Esto le permite tomar una instantánea cuando lo desee y puede guardarla en una Texture2D. Una llamada a EncodeToPNG() y la subsiguiente escritura en un archivo deben EncodeToPNG() allí.

Tenga en cuenta que el siguiente código es una escritura rápida basada en la documentación. No lo he probado. Es posible que tenga que seleccionar un dispositivo correcto si hay más de uno disponible.

using UnityEngine; using System.Collections; using System.IO; public class WebCamPhotoCamera : MonoBehaviour { WebCamTexture webCamTexture; void Start() { webCamTexture = new WebCamTexture(); renderer.material.mainTexture = webCamTexture; webCamTexture.Play(); } void TakePhoto() { // NOTE - you almost certainly have to do this here: yield return new WaitForEndOfFrame(); // it''s a rare case where the Unity doco is pretty clear, // http://docs.unity3d.com/ScriptReference/WaitForEndOfFrame.html // be sure to scroll down to the SECOND long example on that doco page Texture2D photo = new Texture2D(webCamTexture.width, webCamTexture.height); photo.SetPixels(webCamTexture.GetPixels()); photo.Apply(); //Encode to a PNG byte[] bytes = photo.EncodeToPNG(); //Write out the PNG. Of course you have to substitute your_path for something sensible File.WriteAllBytes(your_path + "photo.png", bytes); } }