Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-04-2012, 17:00   #1
-NaNo-
Junior Member
 
L'Avatar di -NaNo-
 
Iscritto dal: Apr 2012
Messaggi: 5
[C OpenGl] Problema con posizionamento del punto di vista

Innanzitutto buongiorno, sono un nuovo utente, appena registratomi su questo meraviglioso forum.

Ora veniamo al problema in oggetto al topic:
Sto facendo un progetto di OpenGl, in linguaggio C, brevemente il progetto chiede di ricevere in input una mappa (immagine in formato .tga), dove a pixel colorati corrispondono vari elementi (semafori, lampioni, palazzi).
Il programma genera quindi una mappa tridimensionale, navigabile con tastiera e mouse.

Fino a qui tutto ok, la mappa viene creata correttamente e riesco a muovermi dentro ad essa senza problemi.
Il mio problema però è che la telecamera non è dove voglio che sia all'inizio della navigazione.
In dettaglio, sulla mappa è presente un pixel verde, che identifica l posizione di partenza, in cui posizionare la telecamera ad inizio esecuzione. Sulla mappa 3d disegno senza problemi il pixel nella posizione corretta, ma ho un problema nel posizionarci sopra la mia telecamera. In pratica, se uso gli stessi valori di x e z che ho usato per posizionare il pixel in una glTranslate, la telecamera viene messa molto distante dalla mappa. Sembra quasi che le coordinate che uso per creare/disegnare la mappa non siano le stesse che uso per spostarmi...
Questo è il codice che uso per posizionare la mia telecamera:
Codice:
for(long i=0; i!=n_pixel*3; i+=3) {
		rosso=*(puntatore+i);
		verde=*(puntatore+i+1);
		blu=*(puntatore+i+2);
	if((rosso==0)&&(verde==255)&&(blu==0)){ //Se leggo un pixel verde imposto la telecamera
		xpos=(float)righe;
		zpos=(float)colonne;
		}
	colonne++;
	if(colonne==base){
		colonne=0;
		righe++;
		}
  }
...


...
glTranslated(-xpos, 0,-zpos);
...
Il pezzo di codice che mi disegna il pixel verde è:
Codice:
for(long i=0; i!=n_pixel*3; i+=3) {
		
		rosso=*(puntatore+i);
		verde=*(puntatore+i+1);
		blu=*(puntatore+i+2);
		
		if((rosso==0)&&(verde==255)&&(blu==0)) { //Se leggo un pixel verde imposto la telecamera
			glColor3f(0,1,0);
			glBegin(GL_POLYGON);
			glVertex3f (righe-0.5, 0, colonne-0.5);
			glVertex3f (righe+0.5, 0, colonne-0.5);
			glVertex3f (righe+0.5, 0, colonne+0.5);
			glVertex3f (righe-0.5, 0, colonne+0.5);		
			glEnd();
			glColor3f(1,1,1);
		}
		colonne++;
		if(colonne==base){
			colonne=0;
			righe++;
		}
	}
La funzione glTranslate che uso per impostare la posizione è la stessa che uso per gestire il movimento della camera con la tastiera.

Qualcuno mi può spiegare quale sia il mio problema?

Grazie in anticipo a tutti!
__________________
Forever servant of my lord,
by choice and not submission...

Ultima modifica di -NaNo- : 25-05-2012 alle 14:23. Motivo: Corretta la doppia negazione.
-NaNo- è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2012, 13:41   #2
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Bisognerebbe vedere di più per capire, comunque: provato a posizionare il viewPoint con la funzione gluLookAt()?

gluLookAt(OsservatoreX, OsservatoreY, OsservatoreZ, PuntoOsservatoX, ,PuntoOsservatoY, PuntoOsservatoZ, NormaleX,NormaleY,NormaleZ).

Ad esempio, se l'osservatore sta in [xpos,ypos,zpos], osserva l'origine degli assi [0.0,0.0,0.0] e il piano su cui giace è orizzontale (quindi normale diretta verso l'alto, [0.0,1.0,0.0]), potresti usare:

gluLookAt(xpos,ypos,zpos,0.0,0.0,0.0,0.0,1.0,0.0);
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2012, 13:37   #3
-NaNo-
Junior Member
 
L'Avatar di -NaNo-
 
Iscritto dal: Apr 2012
Messaggi: 5
Usando la gluLookAt la metterei al posto della translate, quindi andrebbe a darmi problemi al sistema di spostamento della telecamera... Ho provato a fare in modo che la gluLookAt venga eseguita solo una volta, nel momento in cui viene letta la mappa la prima volta, usando una variabile booleana ed un if, ma non sembra funzionare.

Sinceramente non riesco a capire quale sia il problema, sembra un problema di proporzioni degli indici, nel primo for li vede con una certa "scala" e nel secondo con un'altra...
__________________
Forever servant of my lord,
by choice and not submission...
-NaNo- è offline   Rispondi citando il messaggio o parte di esso
Old 18-05-2012, 13:17   #4
-NaNo-
Junior Member
 
L'Avatar di -NaNo-
 
Iscritto dal: Apr 2012
Messaggi: 5
Non avendo ancora risolto uppo il thread...
Ho provato ogni soluzione che mi è venuta in mente, ma ancora non sono riuscito a risolvere... Se volete il codice completo mandatemi un pm che ve lo mando...
__________________
Forever servant of my lord,
by choice and not submission...
-NaNo- è offline   Rispondi citando il messaggio o parte di esso
Old 20-05-2012, 18:09   #5
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Sei sicuro che prima del glTranslate il sistema di coordinate non sia già stato spostato da qualche codice precedente?

Prova a mettere un glLoadIdentity() subito prima del glTranslate.
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2012, 13:00   #6
-NaNo-
Junior Member
 
L'Avatar di -NaNo-
 
Iscritto dal: Apr 2012
Messaggi: 5
Il sistema di coordinate è a posto, anche perchè la LoadIdentity la faccio già subito prima...
__________________
Forever servant of my lord,
by choice and not submission...
-NaNo- è offline   Rispondi citando il messaggio o parte di esso
Old 21-05-2012, 18:14   #7
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Ho notato solo ora: perchè neghi "righe" e "colonne" prima di assegnarle a xpos e zpos?

Codice:
xpos=(float)-righe;
zpos=(float)-colonne;
Se è perchè devi traslare la visuale nel senso opposto, allora non devi negare (ovvero, ri-negare) le variabili nella glTranslate.

Magari può essere questo?
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 14:22   #8
-NaNo-
Junior Member
 
L'Avatar di -NaNo-
 
Iscritto dal: Apr 2012
Messaggi: 5
:/ Piccolo errore che poi ho corretto nella versione successiva, qui mi sono dimenticato di metterlo a posto... Non è nemmeno quello, sono rimaste negate 2 volte perchè nei vari tentativi per trovare una soluzione avevo provato a negarle 2 volte...
__________________
Forever servant of my lord,
by choice and not submission...
-NaNo- è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 17:24   #9
Z80Fan
Senior Member
 
L'Avatar di Z80Fan
 
Iscritto dal: Sep 2009
Messaggi: 638
Allora non so proprio quale sia il problema. :/

Il codice postato sembra totalmente corretto, il problema dev'essere da qualche altra parte...
__________________
| Il mio "OS" (thread su HWU) | |
Z80Fan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Ecovacs presenta la gamma 2026: paviment...
Efficienza energetica fino a 2.000 volte...
Lenovo 360: il programma di canale dell'...
Appena 10.000 qubit per rompere la critt...
Analisi dei transistor durante il funzio...
Attacco informatico a Booking.com: espos...
A quattro mesi dal divieto dei social ne...
NVIDIA GeForce RTX 5060 e 5060 Ti: in ar...
Rebellions, Arm e SK Telecom, nuova alle...
Modernizzazione delle app: Red Hat OpenS...
Nel mirino di Google c'è il back ...
PRAGMATA in bundle con GeForce RTX 5000:...
Le novità MOVA per il 2026: robot e impi...
Windows, stop all'attivazione telefonica...
ASUS porta la serie TUF nel formato Mini...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v