Gestire video 3D

Mi dispiace ma ho già letto di gente che ha provato con scarsi risultati.
Per quanto riguarda il world clock ho un po di esperienza, a lavoro uso complesse schede audio che devono essere sincronizzate da un macchinario apposito ( master clock ).
Io pensavo di usare appunto la frequenza della scheda video come master clock cosi che anche il plughin per VLC ( in fase di progettazione ( non da me XD ) ) possa sincronizzarsi alla stessa frequenza e alternare i fotogrammi.
Percui diciamo che è esenziale che si sincronizi corettamente con la frequenza di agiornamento video.

Andrebbe sincronizzato in continuazione in effetti...
Anch'io sono per la strada del segnale di VSYNC della VGA, viene una cosa molto migliore

Si anche io ma non ho possibilita di ottenerlo :frowning: il programmino che ho critto qui su teoricamente lo prende da li, ma sono convinto che ai vostri occhi esperti ho scritto il peggio codice del mondo.
Ma proprio non ce modo di otenerlo anche dalla porta usb?

Dimenticavo, il V-sync è generato in hardware dalla scheda video, non importa se poi è collegata al monitor tramite VGA (analogica) oppure in digitale tramite VDI/HDMI, il segnale è ottenibili in software tramite le apposite API, molti giochi prevedono il V-sync come opzione per sincronizzare la generazione dei frame con la visualizzazione sul monitor.
In tutti i casi non è possibile in nessun modo ottenere il V-sync sulla USB in modo fedele perché la USB ha le sue latenze (non costanti e possono arrivare a svariate decine di ms), non sono trascurabili per questo genere di applicazione.
Per non parlare delle latenze software, un normale programma è soggetto a rallentamenti e fermi in funzione di quello che fa il pc, solo questo è più che sufficiente per impedire la perfetta sincronizzazione con gli occhiali, ovviamente c'è un modo per ovviare a questa cosa, però tocca essere molto bravi a scrivere software per pc e avere un'ottima conoscenza di Windows/Linux.

comunque ti dico per esperienza (possessore di un nvidia 3d vision kit con schermo samsung syncmaster 2233) che se gli schermi per il 3D partono da 100Hz e che se uno schermo normale oscilla tra i 60 e i 75Hz il motivo è che se scendi sotto i 50Hz per occhio ti si affatica la vista e ti provoca un gran mal di testa dopo anche una sola ora (indifferentemente dalla profondità che dai all'immagine stereoscopica).

se proprio vuoi fare un 3D in casa per un portatile utilizza una cosa chiamata barriera di parallasse che almeno non ti rovini gli occhi.

se però vuoi continuare devi usare una porta esterna, non credo che il tuo pc non abbia nemmeno una HDMI o DVI o VGA. Certo se fossi in grado di gestire le directx come nulla potresti farlo via software ma già il tempo necessario per comunicare via seriale e credo andresti out of sync
inoltre abilitare il v-sync riduce le prestazioni del gioco/programma

Ok ho più o meno capito quello che vuoi dire, mi domando se a questo punto una soluzione potrebbe essere che il plughin stesso si sincronizzi con gli occhiali ( è il plughin che alterna i 2 fotogrammi del formato Side-by-Side 3D )
ma cosi mi vengono in mente molti altri problemi.
Chi sta provando a farmi il plughin non sa nemmeno se farlo in c++ o in java ( stavamo giusto ragionandoci ora ) e non abbiamo la più pallida idea di come interfacciarlo con arduino.
Il plughin lo stiamo pensando per VLC.

però tocca essere molto bravi a scrivere software per pc e avere un'ottima conoscenza di Windows/Linux.

E anche di DirectX o similare secondo me :wink:

Chi sta provando a farmi il plughin non sa nemmeno se farlo in c++ o in java ( stavamo giusto ragionandoci ora ) e non abbiamo la più pallida idea di come interfacciarlo con arduino.

Se vuoi avere una chance per il plugin devi andare su C++ e NON si deve interfacciare con Arduino che il segnale lo deve prendere direttamente dalla VGA

comunque ti dico per esperienza (possessore di un nvidia 3d vision kit con schermo samsung syncmaster 2233) che se gli schermi per il 3D partono da 100Hz e che se uno schermo normale oscilla tra i 60 e i 75Hz il motivo è che se scendi sotto i 50Hz per occhio ti si affatica la vista e ti provoca un gran mal di testa dopo anche una sola ora (indifferentemente dalla profondità che dai all'immagine stereoscopica).

Io ho visto usare con un discreto successo anche con la frequenza di 60 Hz.
In ogni caso se avessi un ipotetica shcedavideo che arriva fino a 120 l'intero dispositivo si adaterebbe alla nuovo frequenza.
Il progetto e pensato solo per la visualizazioni di video.

flz47655:
E anche di DirectX o similare secondo me :wink:

Domanda stupida cosa intendete per DirectX ?

o meglio ancora le openGL, così fai win, linux e mac :slight_smile:

Ok ho letto quello che riguarda il DirectX, è molto bella come cosa ma decisamente troppo complessa secondo me.
ora non mi rimane che riordinare le idee.
In ogni caso vorrei realizzare un programma su arduino per prendere il clock dal vsinc della presa vga ( lasciando per ora perdere la porta usb ) per poi mandarlo ai vari occhiali, cosi almeno potrò effettuare maggiori test.
Il dubbio che mi rimane ora è se riuscirò a creare il tanto agoniato plughin e nel caso riuscire a sincronizzarlo .

PROPOSITI FUTURI:
Spero di riuscire ad ottenere almeno un risultato accettabile e speriamo che il progetto prenda piede in maniera da poter essere sempre più sviluppato.

INTANTO:
Secondo voi questo codice va bene ? o si potrebbe quasi sicuramente renderlo più snello e veloce?

int VGAclock=0;
int SINCswic=0;

void setup(){
  
  pinMode ( 13, OUTPUT );  // il pin 13 e 12 servono per comandare gli occhiali tramite cavo non IR
  pinMode ( 12, OUTPUT );
  pinMode (8, INPUT);     // da qui faccio entrare il segnale di clock VGA
  pinMode (9, INPUT);     // interruttore per girare la fase
}

void loop() {
  VGAclock=digitalRead(8);
  SINCswic=digitalRead(9);
  
  if(VGAclock==HIGH , SINCswic==LOW ){
   digitalWrite(13,HIGH);
   digitalWrite(12,LOW);
  }
  else{
   digitalWrite(13,LOW);
   digitalWrite(12,HIGH);
  }
  
  if(VGAclock==HIGH , SINCswic==HIGH  ){
   digitalWrite(13,LOW);
   digitalWrite(12,HIGH);
  }
  else{
   digitalWrite(13,HIGH);
   digitalWrite(12,LOW);
  }

}

lesto:
o meglio ancora le openGL, così fai win, linux e mac :slight_smile:

Facile dire openGL ma in questo caso non si avrebbe qualcosa di molto portabile a meno di non scrivere codice specifico per le tre piattaforme, il VSYNC con la scheda video non è inclusa nelle specifiche principali ed è delegata alla piattaforma

Ciao

ah, non sapevo questo particolare, mi aspettavo che invece ci fosse un qualcosa.

@mango: direi che può andare bene, ma se usi le macro guadagni microsecondi preziosi, vedi Ready, Set, Oscillate! The Fastest Way to Change Arduino Pins « The Mind of Bill Porter

Ok recuperato pc con porta VGA, ora mi metto a provare a creare il circuito e a tampinare per vedere come sistamare la parte in c++ per vlc.

Leggiti le specifiche VGA prima di agganciarti alla porta. La massa deve essere in comune con Arduino.

Ciao

Si si lo so, è che non riesco a trovare la tensione di uscita del Vsync per capire se devo amplificarlo un pelo oppure no.

VSYNC se non ricordo male è a 5v quindi non serve amplificazione

OK il progetto sta andando avanti anche in C++ con questa libreria da assemblase SoC 2011/Stereoscopic Video - VideoLAN Wiki
se qualcuno fosse interressato a darmi una mano anche con questa parte questo è il link.
Ora ho anche bisogno di racogliere un pò di segnali IR dai vari tv per poterli copiare in arduino.
E anche qui ho bisogno della vostra mano, se potete intercettare i segnali con IRrecord e poi comunicarmi il codice e il modello del tv ve ne sarei grato :smiley:

esiste già una libreria arduino con i codici dei produttori più famosi, la IReciver mi pare, quindi la trovi e dal codice "rubi" i codici