Orbitare la camera attorno ad un punto

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Orbitare la camera attorno ad un punto

Messaggio da guidox »

Salve ragazzi, oggi avrei bisogno di una mano seria, avrei bisogno di capire come cavolo si può fare a far orbitare la camera attorno un punto in 3d, per capirci come quando premi ctrl mentre usi lo strumento "orbita" su google sketchup.
Praticamente quello che voglio è una camera che si trova ad un fissa direzione dal punto che voglio fissare e che può anche cambiare angolazione in base alla rotazione successive che uno gli fa fare...
Invece di un codice già fatto(che spero di non ottenere) sarei più interessato alla teoria che devo utilizzare ;)
Immagine

Immagine

Avatar utente
aironenero
GMI Guru
Messaggi: 2612
Iscritto il: 02/05/2012, 14:56
Specialità: Unity 3D
Uso: GM:Studio 1.4 Pro
Località: Ispica
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da aironenero »

dovresti segnarti un punto attorno a dove devi orbitare, quindi quando ruoti la camera rimani alla stessa distanza dal punto, ma ti sposti.
può esserti d'aiuto: http://stackoverflow.com/questions/2160 ... mouse-drag
Unity Developer
Immagine
Immagine

Avatar utente
mac12
Membro d'elite
Messaggi: 1124
Iscritto il: 18/09/2012, 17:32
Specialità: programmazione
Uso: GameMaker 8.1
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da mac12 »

Non uso sketchup percui non posso essere sicuro di che cosa intendi, ma se ho capito bene cosa vuoi fare basta usare le funzioni lengthdir_x,y,z(questa funzione non esiste, ma esite uno script apposta) e una variabile(ad es. direction) per la direzione "normale" e un'altra(ad es. zdirection) per la direzione z.
Quindi ti basta posizionare la camera a:
x=punto_x+lengthdir_x(distanza,direction)
y=punto_y+lengthdir_y(distanza,direction)
z=punto_z+lengthdir_z(distanza,zdirection)

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da Tizzio »

ma orbitare a sfera (anche a testa in giu) ?
oppure solo in orizzontale con un po' di inclinazione (limitata a -90 / 90)

Avatar utente
aironenero
GMI Guru
Messaggi: 2612
Iscritto il: 02/05/2012, 14:56
Specialità: Unity 3D
Uso: GM:Studio 1.4 Pro
Località: Ispica
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da aironenero »

Tizzio ha scritto:ma orbitare a sfera (anche a testa in giu) ?
oppure solo in orizzontale con un po' di inclinazione (limitata a -90 / 90)
lui intende ruotare liberamente attorno ad un punto prefissato.
Unity Developer
Immagine
Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da Jak »

Codice: Seleziona tutto

d3d_set_projection(xfrom,yfrom,zfrom,xto,yto,zto,xup,yup,zup)
Funzione semplicissima per avere la telecamera in un punto che guarda verso un'altro punto e che in teoria dovresti avere usato millemila volte. Per dargli un movimento a sfera basta calcolare la posizione usando i classicissimi seno e coseno ed aggiungere i valori "to" ai valori "from". Userai quindi due variabili di direzione anzichè una sola.
Se vuoi usare la famosa "terza rotazione"(come quando negli FPS ti sporgi nell'angolino e la camera si inclina) devi usare i valori "up" allo stesso modo, essendo un vettore di direzione dovrai usare nuovamente seno e coseno per calcolarlo.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da guidox »

Tizzio ha scritto:ma orbitare a sfera (anche a testa in giu) ?
oppure solo in orizzontale con un po' di inclinazione (limitata a -90 / 90)
Si esatto tizzio, sei l'unico che forse ha capito cosa intendo :P
Scusate ma stavo di fretta, ora provo a spiegarmi al meglio con un esempio:
Immagine
1-2) trascino il mouse verso sinistra
2-3) trascino il mouse verso il basso
3-4) trascino il mouse verso destra

In questo esempio ho fatto solo spostamenti di 90° sullo stesso piano, ma ovviamente io vorrei renderli possibili tutti.
Se ben capite in questo modo potrei ritrovarmi a fissare il mio punto dalle stesse coordinate ma con inclinazione diversa, quello che io voglio fare è rendere raggiungibile ogni visualizzazione possibile dell'oggetto, sempre a distanza fissa.

Spero di essere stato chiaro :oops:
Immagine

Immagine

Avatar utente
aironenero
GMI Guru
Messaggi: 2612
Iscritto il: 02/05/2012, 14:56
Specialità: Unity 3D
Uso: GM:Studio 1.4 Pro
Località: Ispica
Contatta:

Re: Orbitare la camera attorno ad un punto

Messaggio da aironenero »

vuoi ruotare attorno ad un punto, ma poter anche ruotare la tua camera sui suoi assi?
Unity Developer
Immagine
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti