Piero V.

Blender: ruotare la camera col mouse

Continuano i miei esperimenti con Blender.

Una delle mie più grandi domande riguardanti la game mode è: come fare per spostare la telecamera col movimento del mouse?

Beh, mi sono messo ad affrontare questo problema.

Il metodo che io utilizzerei è quello di analizzare il movimento del mouse e quindi di applicarlo alla rotazione.

Per fare ciò è mia intenzione associare uno script python al controller mousemove.

Ecco un prototipo di codice, con i commenti che spiegano cosa fa questo codice:

# Importa le librerie basi: la bge e classi utili da mathutils
import bge
from mathutils import *

# Comincia la funzione main
def main():

    # Prende l'oggetto del controller
    cont = bge.logic.getCurrentController()
    # Prende l'oggetto a cui il controller è applicato
    own = cont.owner
    # Per comodità ci salviamo i globalDict come obj
    obj = bge.logic.globalDict

    # Prendiamo il movimento del mouse
    mousemove=cont.sensors['Mousemove']
    pos=mousemove.position

    # Se è il primo movimento dobbiamo inizializzare i salvataggi dei movimenti
    if not 'mousepos' in obj:
        obj['mousepos']=pos

    # Salviamo il movimento
    obj['oldmousepos']=obj['mousepos']
    obj['mousepos']=pos

    # Troviamo le variazioni
    deltax=obj['mousepos'][0]-obj['oldmousepos'][0]
    deltay=obj['mousepos'][1]-obj['oldmousepos'][1]

    # Creiamo il vettore ed eseguiamo la rotazione lungo l'asse delle z (globale)
    rot=Vector((deltay*0.005, 0.0, -deltax*0.005))
    own.applyRotation(rot, False)

    # Creiamo il vettore ed eseguiamo la rotazione lungo l'asse delle y (locale della camera)
    rot=Vector((-deltay*0.005, 0.0, 0.0))
    own.applyRotation(rot, True)

# Esegue main, ogni volta che il mouse viene mosso
main()

Il risultato è ancora molto primitivo, ma sempre meglio che nulla 😉

In alcuni giochi come i FPS questo movimento è essenziale e andrebbe definito meglio, però questo mi pare già un inizio non malvagio.

Bisognerebbe aggiungere un po’ di controlli per vedere che il mouse non vada fuori dallo schermo e sistemare un po’ i coefficienti della rotazione.

Blender

Mi è venuta voglia di provare altri fronti informatici 😌

Così ho deciso che per un po’ proverò Blender, un fantastico software per la grafica tridimensionale.

L’ho provato poco ma per quello che ho provato è favoloso. È stato capace di stupirmi.

Se raggiungerò buoni risultati vi farò sapere 😉 .

Cosa ho imparato

Giorno 1

Il primo giorno è sempre quello un po’ più complicato, ma con impegno si riesce eccellentemente.

  • Spostare oggetti, ridimensionarli e ruotarli.
  • Spostarmi nell’ambiente di lavoro.
  • Scendere a livello di vertici e lati.
  • La consolle in python è comoda e per certi lavoretti può essere molto utile.
  • L’autocomplete della consolle in python usa CTRL + Spazio. Peccato, sono abituato a usare Tab.
  • Python non è interattivo nella game mode
  • Estrusione

Giorno 2

  • I menu View, Select e Mash offrono molto potenzialità nascoste
  • Il menu proprietà è eccellente, specialmente per chi con la geometria analitica si è abituato a usare le coordinate e non ad andare a occhio
  • Esportare il gioco come runtime