2013-09-29 13 views
6

Attualmente sto lavorando ad una app mobile Augmented Reality con Unity3D. La performance è influenzata dalla qualità dell'immagine.Come chiedere alla webcam di mettere a fuoco automaticamente con Unity3D

C'è un modo per chiedere alla webcam di mettere a fuoco automaticamente con Unity3D?

+0

Ciao flyzhao, l'hai fatto con successo? Hai forzato la webcam o la fotocamera del dispositivo a mettere a fuoco da dentro Unity? – Joshua

+1

@Joshua Non ci sto lavorando adesso. Ma puoi trovare alcuni plugin nativi per Android da un punto di vendita. Potrebbe risolvere questo problema. Inoltre, penso che la risposta di kao sia buona. Sarebbe il metodo migliore, se conosci qualche conoscenza nativa su Android. – flyzhao

risposta

6

Per quanto ne so non è possibile in puro Unity3D.

Tuttavia, se lo si sta sviluppando su Android, è possibile scrivere un plugin in java, che imposta l'autofocus e chiamarlo da Unity3D.

public void enableAutofocus() { 
    camera = camera.open(); 
    Camera.Parameters parameters = camera.getParameters(); 
    List<String> focusModes = parameters.getSupportedFocusModes(); 
    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
    } 
    camera.setParameters(parameters); 
} 

E poi, è necessario chiamare la classe da Unity3D:

public class ExampleClass : MonoBehaviour { 
    void Start() { 
     AndroidJavaObject jo = new AndroidJavaObject("com.mypackage.Autofocus"); 
     jo.Call("enableAutofocus"); 
    } 
} 

è possibile trovare ulteriori informazioni sulla creazione di plug-in Java per Unity3D here.

+0

Ciao Kao, sei sicuro che sia possibile? Hai provato tu stesso? Il mio non sembra funzionare ... – Joshua

+0

Puoi aiutarmi a riscrivere questo snippet per il nuovo 'camera2'? Sono davvero confuso ... Ho solo bisogno del metodo 'enableAutofocus' per aprire la fotocamera e impostare il fuoco. Grazie – Joshua

Problemi correlati