Pelli ed ossa in DirectX
|
|
- Celia Falcone
- 5 anni fa
- Visualizzazioni
Transcript
1 Informatica Grafica ][ Pelli ed ossa in DirectX Le DirectX supportano i sistemi di ossa e le pelli attraverso una tecnica chiamata Index Vertex Blending. Essa permette di stabilire la posizione di un vertce eseguendo la media pesata di fino a 4 punti. Marco Gribaudo marcog@di.unito.it Nel caso dell', un vertice puo' venire trasforamto da fino a 4 matrici. Vi possono essere fino a 256 matrici di trasformazione diverse, ed ogni vertice ne puo' scegliere fino a 4 diverse. Ogni vertice e' accompagnato da 4 valori interi e tre in virgola mobile. I 4 valori interi indicano quali delle 256 matrici debbano venire utilizzate per trasformare il vertice. blend1 = 0.5 blend1 = 0.5
2 I tre valori in virgola mobile identificano i pesi dei primi tre vertici. Il peso dell'ultimo vertice e' calcolato sottraendo ad 1, i primi tre. La posizione finale del vertice viene determinata eseguendo la media pesata dei vertici ottenuti applicando le quattro matrici di trasformazione ed i pesi associati. Un triangolo puo' quindi essere influenzato da fino a 12 trasformazioni. 0.5 blend1 = = 0.1 Bisogna quindi definire un nuovo tipo di dati che specifichi anche i 3 pesi ed i 4 indici. Private Type SKINVERTEX X As Single 'x Y As Single 'y Z As Single 'z. Blend1 As Single ' Pesi della pelle Blend2 As Single Blend3 As Single Mindices As Long Nx As Single ' coordinate delle normali Ny As Single Nz As Single tu As Single ' coordinate di mappatura tv As Single Type Gli indici vengono "impacchettati" nei 4 byte che compongono un valore intero lungo da 32 bit. Si procede quindi alla definizione di una nuova procedura per creare il vertice: Private Function MakeSkinVertex(ByVal X As Single, ByVal Y As Single, _ ByVal Z As Single, ByVal Nx As Single, _ ByVal Ny As Single, ByVal Nz As Single, _ ByVal U As Single, ByVal V As Single, _ ByVal j1 As Integer, ByVal w1 As Single, _ ByVal j2 As Integer, ByVal w2 As Single, _ ByVal j3 As Integer, ByVal w3 As Single, _ ByVal j4 As Integer, ByVal w4 As Single) As SKINVERTEX Dim m1 As Long Dim m2 As Long Dim m3 As Long Dim m4 As Long m1 = j1: m2 = j2: m3 = j3: m4 = j4 MakeSkinVertex.X = X.Y = Y.Z = Z.Nx = Nx.Ny = Ny.Nz = Nz.tU = U.tV = 1 - V.Blend1 = w1 / (w1 + w2 + w3 + w4).blend2 = w2 / (w1 + w2 + w3 + w4).blend3 = w3 / (w1 + w2 + w3 + w4).mindices = ((m4 * m3) * m2) * m1 Function
3 In essa avviene il controllo che la somma dei pesi faccia effettivamente 1, correggendone i valori qualora questo non fosse vero. In oltre, in essa viene eseguito anche "l'impachettamento" dei valori dei 4 indici. Il fatto di aver aggiunto un nuovo tipo di vertici per le pelli, ci costringe anche a definire un nuovo tipo di dati per memorizzare la geometria della pelle. L'unica differenza rispetto alle Shape e' il fatto che in questo caso vengono utilizzati i vertici pesati. Private Type SkinObject V() As SKINVERTEX I() As Integer Name As String TotV As Long TotI As Long VBuffer As Direct3DVertexBuffer8 '//Stores our Geometry... IBuffer As Direct3DIndexBuffer8 '//Stores our indices Material As D3DMATERIAL8 te As Direct3DTexture8 Type La seconda struttura dati che si deve introdurre e' quella del giunto. In essa vengono memorizzate tutte le caratteristiche che un giunto presenta in piu' rispetto ad un TN. Si definisce il tipo dati Joint: ' Tipi per le ossature Private Type Joint Name As String ' Nome del TN associato jox As Single ' Joint Orient (direziona del Joint) joy As Single joz As Single jomat As D3DMATRIX ' Matrice che contiene la rotazione del joint bindpose As D3DMATRIX ' Matrice che definisce la posa iniziale matid As Integer ' Indice della matrice finale del joint Type
4 Esso contiene le informazioni relative alla direzione del giunto (Joint Orient), ed alla posa di aggancio ( bindpose). Dal momento che le direzioni dei giunti sono costanti, la loro matrice di trasformazione viene calcolata una sola volta, al momento del caricamento e memorizzata nella struttura. Viene poi anche specificato la posizione nell'array di matrici dove verra' memorizzta la matrice dell' contenente la trasformazione relativa al giunto. ' Massimo numero di joint sulla scena Const MAX_JOINT = 512 Dim Jnts(MAX_JOINT) As Joint Dim LastJoint As Integer Si aggiungeranno quindi due array: uno per le definizioni delle pelli e l'altro per i giunti. ' Massimo numero di pelli Const MAX_SKINS = 32 Dim SkinObjs(MAX_SKINS) As SkinObject Dim LastSkinObj As Integer Inoltre si dovra' aggiungere un campo nuovo alla struttura dei TN, che identifichi se esso si riferisca ad una gerarchia o ad un giunto. In essa si memorizzera' il valore -1 per i TN che rappresentano una gerarchia. Si inserira' l'indice dell'elemento dell'array dei giunti, contenente le informazioni addizionali nel caso il TN si riferisca ad un giunto.
5 Si procede quindi con l'inserimento della procedura di caricamento di un sistema di ossa con pelle associata. Utilizzeremo il termine C h a r a c t e r per differenziarlo dalle S c e n e viste in precedenza. La procedura di caricamento e' la seguente: Private Sub LoadCharacter(FileName As String) Dim X, Y, Z, Nx, Ny, Nz, tu, tv As Single Dim w1, w2, w3, w4 As Single Dim j1, j2, j3, j4 As Single Dim I1, I2, I3 As Integer Dim JointInScene As Integer Dim ShapeInScene As Integer Dim TNInScene As Integer Dim CurTN As Integer Dim TextureName As String Dim ShName As String Dim TNName As String Dim ShNum As Integer Dim mattemp As D3DMATRIX Open FileName For Input As #1 Input #1, JointInScene For U = 0 To JointInScene - 1 Jnts(LastJoint) Input #1,.Name Input #1,.joX,.joY,.joZ Input #1,.bindPose.m11,.bindPose.m12,.bindPose.m13,.bindPose.m14 Input #1,.bindPose.m21,.bindPose.m22,.bindPose.m23,.bindPose.m24 Input #1,.bindPose.m31,.bindPose.m32,.bindPose.m33,.bindPose.m34 Input #1,.bindPose.m41,.bindPose.m42,.bindPose.m43,.bindPose.m44 'Inverte la matrice della posa D3DXMatrixInverse.bindPose, 0,.bindPose ' Precalcola la matrice di rotazione per i joint D3DXMatrixIdentity.joMat D3DXMatrixRotationX mattemp,.jox * ( / 180) D3DXMatrixMultiply.joMat,.joMat, mattemp D3DXMatrixRotationY mattemp,.joy * ( / 180) D3DXMatrixMultiply.joMat,.joMat, mattemp D3DXMatrixRotationZ mattemp,.joz * ( / 180) D3DXMatrixMultiply.joMat,.joMat, mattemp.matid = U ' Passa alla shape successiva LastJoint = LastJoint + 1 Input #1, ShapeInScene ' Carica le Shapes For U = 0 To ShapeInScene - 1 SkinObjs(LastSkinObj).TotV = 0.TotI = 0 ' Carica la texture Input #1,.Name Input #1, TextureName 'MsgBox ("[" &.Name & "]<" & TextureName & ">") TextureName <> "" Then Set.te = D3DX.CreateTextureFromFileEx(D3DDevice, _ TextureName, D3DX_DEFAULT, D3DX_DEFAULT, _ 1, 0, D3DFMT_UNKNOWN, _ D3DPOOL_MANAGED, D3DX_FILTER_POINT, _ D3DX_FILTER_POINT, &HFF000000, _ ByVal 0, ByVal 0) ' Imposta il materiale Input #1,.Material.emissive.r,.Material.emissive.g,.Material.emissive.b Input #1,.Material.Ambient.r,.Material.Ambient.g,.Material.Ambient.b Input #1,.Material.diffuse.r,.Material.diffuse.g,.Material.diffuse.b Input #1,.Material.specular.r,.Material.specular.g,.Material.specular.b, _.Material.power ' Carica la geometria Input #1,.TotV,.TotI ReDim.V(.TotV),.I(.TotI) For T = 0 To.TotV - 1 Input #1, X, Y, Z, Nx, Ny, Nz, tu, tv, j1, w1, j2, w2, j3, w3, j4, w4.v(t) = MakeSkinVertex(X, Y, Z, Nx, Ny, Nz, tu, tv, _ j1, w1, j2, w2, j3, w3, j4, w4) For T = 0 To.TotI - 1 Step 3 Input #1, I1, I2, I3.I(T) = I1.I(T + 1) = I2.I(T + 2) = I3 Set.IBuffer = D3DDevice.CreateIndexBuffer(Len(.I(0)) *.TotI, 0, _ D3DFMT_INDEX16, D3DPOOL_DEFAULT) D3DIndexBuffer8SetData.IBuffer, 0, Len(.I(0)) *.TotI, 0,.I(0)
6 Set.VBuffer = D3DDevice.CreateVertexBuffer(Len(.V(0)) *.TotV, 0, _ D3DFVF_XYZB4 Or D3DFVF_LASTBETA_UBYTE4 Or _ D3DFVF_NORMAL Or D3DFVF_TEX1, _ D3DPOOL_DEFAULT) D3DVertexBuffer8SetData.VBuffer, 0, Len(.V(0)) *.TotV, 0,.V(0) ' Passa alla shape successiva LastSkinObj = LastSkinObj + 1 U Input #1, TNInScene For U = 0 To TNInScene - 1 Input #1, TNName Input #1, ShName ShName <> "" Then ShNum = FindSkin(ShName) ShNum = -1 Then MsgBox "Shape not found: " & ShName ShNum = -1 CurTN = CreateTransformNode(ShNum, TNName) Input #1, TrnNds(CurTN).ChildName Input #1, TrnNds(CurTN).BrotherName Input #1, TrnNds(CurTN).tX, TrnNds(CurTN).tY, TrnNds(CurTN).tZ Input #1, TrnNds(CurTN).rX, TrnNds(CurTN).rY, TrnNds(CurTN).rZ Input #1, TrnNds(CurTN).sX, TrnNds(CurTN).sY, TrnNds(CurTN).sZ Input #1, TrnNds(CurTN).pX, TrnNds(CurTN).pY, TrnNds(CurTN).pZ U ' Trasfroma i nomi in indici For U = 0 To TNInScene - 1 TrnNds(U).ChildName <> "" Then TrnNds(U).ChildID = FindTn(TrnNds(U).ChildName) TrnNds(U).ChildID = -1 TrnNds(U).BrotherName <> "" Then TrnNds(U).BrotherID = FindTn(TrnNds(U).BrotherName) TrnNds(U).BrotherID = -1 'Cerca ed assegna il JointID For K = 0 To LastJoint - 1 TrnNds(U).Name = Jnts(K).Name Then TrnNds(U).JointID = K Exit For U Per prima cosa carica le informazioni relative ai giunti (nome, direzione, posa di aggancio) Close #1 Sub Quindi inverte la matrice della posa di aggancio E precalcola la matrice che definisce la direzione dei giunti.
7 Nella creazione dell'i n d e x B u f f e r, si specifica che i vertici in questo caso sono dotati anche di pesi ed indici delle matrici per l'. Quindi si esegue l'aggancio tra i TN ed i giunti, associando al campo JointID la posizione del giunto nell'array. Inoltre bisogna aggiungere la procedura per cercare una pelle nell'apposito array, dal momento che esse sono memorizzate in un punto differente rispetto alle Shape. Infine bisogna aggiungere, nel caso del caricamento dei TN relativi ad una gerarchia, il comando che specifichi che in quel caso essi non hanno nessun giunto associato. Private Function FindSkin(Name As String) For I = 0 To LastSkinObj - 1 SkinObjs(I).Name = Name Then FindSkin = I Exit Function FindSkin = -1 Function La procedura di deve essere cambiata pesnatemente per supportare i Character. Pur mantenendo la sua struttura ricorsiva, essa deve comportarsi in modo leggermente differente a seconda che stia disegnando un nodo di una gerarchia od un giunto. La procedura di diventa la seguente: Private Sub rendernode(matpar As D3DMATRIX, Id As Integer) Dim mattemp As D3DMATRIX Dim matworld As D3DMATRIX TrnNds(Id).BrotherID >= 0 Then ' se c'e almeno un fratello rendernode matpar,.brotherid ' Lo visualizza con la stessa trasformazione ' Imposta le trasformazioni dell'oggetto D3DXMatrixIdentity matworld ' Sposta il pivot D3DXMatrixTranslation mattemp, -.px, -.py, -.pz
8 D3DXMatrixScaling mattemp,.sx,.sy,.sz.sx *.sy *.sz < 0 Then D3DDevice.SetRenderState D3DRS_CULLMODE, _ D3DCULL_CW D3DDevice.SetRenderState D3DRS_CULLMODE, _ D3DCULL_CCW D3DXMatrixRotationX mattemp,.rx * ( / 180) D3DXMatrixRotationY mattemp,.ry * ( / 180) D3DXMatrixRotationZ mattemp,.rz * ( / 180) ' se si tratta di un Joint.JointID >= 0 Then ' Applica la correzione per il Joint Orient D3DXMatrixMultiply matworld, matworld, Jnts(.JointID).joMat D3DXMatrixTranslation mattemp,.tx +.px,.ty +.py,.tz +.pz D3DXMatrixMultiply matworld, matworld, matpar ' concatena le trasforamzioni dei genitori.childid >= 0 Then ' se c'e almeno un figlio rendernode matworld,.childid ' Lo visualizza con la nuova trasformazione ' se si tratta di un Joint.JointID >= 0 Then ' Applica la correzione per la bind Pose D3DXMatrixMultiply matworld, Jnts(.JointID).bindPose, matworld D3DDevice.SetTransform Jnts(.JointID).matID, matworld D3DDevice.SetTransform D3DTS_WORLD, matworld TrnNds(Id).ScObj >= 0 Then TrnNds(Id).JointID < 0 Then SceneObjs(TrnNds(Id).ScObj) ' Definisce il tipo di vertici utilizzati D3DDevice.SetVertexShader D3DFVF_XYZ Or _ D3DFVF_NORMAL Or D3DFVF_TEX1 ' Disattiva il Vertex Belnding D3DDevice.SetRenderState D3DRS_VERTEXBLEND, _ D3DVBF_DISABLE D3DDevice.SetMaterial.Material ' Imposta la texture D3DDevice.SetTexture 0,.te ' Disegna l'oggetto D3DDevice.SetStreamSource 0,.VBuffer, Len(.V(0)) D3DDevice.SetIndices.IBuffer, 0 D3DDevice.DrawIndexedPrimitive D3DPT_TRIANGLELIST, 0,.TotV, 0,.TotI / 3 SkinObjs(TrnNds(Id).ScObj) D3DDevice.SetVertexShader D3DFVF_XYZB4 Or _ D3DFVF_LASTBETA_UBYTE4 Or _ D3DFVF_NORMAL Or D3DFVF_TEX1 D3DDevice.SetRenderState D3DRS_VERTEXBLEND, 3 D3DDevice.SetMaterial.Material ' Imposta la texture D3DDevice.SetTexture 0,.te ' Disegna l'oggetto D3DDevice.SetStreamSource 0,.VBuffer, _ Len(.V(0)) D3DDevice.SetIndices.IBuffer, 0 D3DDevice.DrawIndexedPrimitive D3DPT_TRIANGLELIST, 0, _.TotV, 0,.TotI / 3 Sub Questa nuova versione, qualora si tratti di un giunto, applica anche la trasformazione relativa alla sua direzione. Sempre nel caso dei giunti, inserisce la matrice calcolata nell'array, dopo averla concatenata alla trasformazione inversa alla posa di aggancio.
9 Anche la procedura che disegna le primitive e' stata sdoppiata a seconda che si tratti di una Shape o di una pelle. Il comando che definisce il tipo di vertici e' stato quindi spostato in questa procedura, dal momento che adesso vi sono due tipi di vertici differenti. Nel caso delle pelli, viene abilitato il Vertex Blend, specificando il numero di giunti influenti: si indica il numero di vertici meno uno - 3 in questo caso. Bisogna poi aggiungere, nella fase di inizializzazione della libreria, il seguente comando per abilitare l'index Vertex Blending: Infine, prima di provare l'applicazione, occorre ancora inserire i comandi per caricare il Character. Ed impostare correttamente la posizione della cinepresa
Texture in DirectX. Le Texture in DirectX. Informatica Grafica ][ Le Texture in DirectX. Le Texture in DirectX. Le Texture in DirectX
Informatica Grafica ][ Texture in DirectX Marco Gribaudo marcog@di.unito.it DirectX supporta le texture in numerosi punti della sua Pipeline. In particolare, le DirectX 8, possono supportare fino a 8 texture
Le trasformazioni 3D. Le trasformazioni in 3D. Informatica Grafica ][ Le trasformazioni in 3D. Le trasformazioni in 3D. Le trasformazioni in 3D
Informatica Grafica ][ Le trasformazioni 3D Come abbiamo visto in precedenza, vi sono tre tipi di trasformazioni base in grafica 3D: Traslazione Rotazione Variazione di scala Marco Gribaudo marcog@di.unito.it
BANG! Le Sprite. Le Sprite. Informatica Grafica ][ Le Sprite. Le Sprite. Le Sprite. Le Sprite
Informatica Grafica ][ Marco Gribaudo marcog@di.unito.it Ogni applicazione 3D interattive, ha comunque bisogno di sovrapporre elementi bidimensionali agli elementi 3D. Solitamente questi vengono adoperati
Le mappe normali e di altezza
Informatica Grafica ][ Le mappe normali e di altezza Abbiamo visto come realizzare personaggi ed ambienti virtuali. I mondi visti fino ad adesso erano pero' "piatti": la terza dimensione non era un elemento
La teoria alla base dei sistemi di pelli ed ossa
Informatica Grafica ][ La teoria alla base dei sistemi di pelli ed ossa Marco Gribaudo marcog@di.unito.it Nelle scorse lezioni abbiamo visto come si possono realizzare i sistemi di ossa e le pelli in Maya.
Indici ed introduzione a Maya
Informatica Grafica ][ Indici ed introduzione a Maya Supponiamo di voler disegnare un oggetto a forma di farfalla: Marco Gribaudo marcog@di.unito.it E' costituito da 8 vertici, le cui coordinate sono:
Animazione con le DirectX
Informatica Grafica ][ Animazione con le DirectX Si e' visto come Maya codifichi al suo interno le animazioni, utilizzando chiavi ed interpolazioni. Si e' anche detto che replicare questo comportamento
Primitive 3D. Lo Z-Buffer. Informatica Grafica ][ Lo Z-Buffer. Lo Z-Buffer. Lo Z-Buffer. Lo Z-Buffer
Informatica Grafica ][ Primitive 3D Fino ad ora abbiamo utilizzato solamente triangoli singoli. In questa lezione vedremo come disegnare primitive composte da piu' triangoli. Prima pero' dovremo attivare
Gerarchie e punti Pivot
Informatica Grafica per le arti e punti Pivot Il Rigging Dopo aver prodotto un modello tridimensionale, occorre aggiungervi alcuni speciali controlli per semplificarne l'animazione. Questa fase prende
Un esempio di applicazione: PaperCity
Informatica Grafica ][ Un esempio di applicazione: PaperCity In questa lezione vedremo come utilizzare il codice sviluppato fino ad ora per crerae un semplice videogioco. Tale gioco consistera' nella guida
Cinematica Inversa e pelli
Informatica Avanzata e pelli Marco Gribaudo marcog@di.unito.it L'animazione tramite cinematica diretta e' utile per movimenti "liberi" (in cui non si interagisce con altri oggetti) dei personaggi. Per
Mesh e nodi di trasformazione
Informatica Grafica per le arti Mesh e nodi di trasformazione Come avevamo accennato in precedenza, tutti gli oggetti visualizzati in grafica 3D, si basano sulle posizioni dei loro vertici all'interno
Un esempio di applicazione: Robot Dance
Informatica Grafica ][ Un esempio di applicazione: Robot Dance Robot Dance e' un gioco dove l'utente controlla un Robot ballerino Marco Gribaudo marcog@di.unito.it La prima cosa da fare e' determinare
Modellazione poligonale
Informatica Grafica ][ Modellazione poligonale La tecnica di modellazione poligonale permette di costruire oggetti tridimensionali basati su poligoni. Malgrado gli oggetti poligonali siano spigolosi per
VISUAL BASIC FOR APPLICATION
VISUAL BASIC FOR APPLICATION LA PIATTAFORMA DI SVILUPPO GLI ELEMENTI DI VBA Finestra di progetto: mostra l elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia
Modellazione poligonale in Maya
Informatica Grafica ][ Modellazione poligonale in Maya La tecnica di modellazione poligonale permette di costruire oggetti tridimensionali basati su poligoni. Malgrado gli oggetti poligonali siano spigolosi
Le deformazioni. Animazione di parametri. Informatica Grafica ][ Animazione di parametri: colore. Animazione di parametri: colore
Informatica Grafica ][ Marco Gribaudo marcog@di.unito.it Le deformazioni Animazione di parametri Nelle scorse lezioni abbiamo concentrato la nostra attenzione su come si possano animare le trasformaizoni.
28/02/2014 Copyright V. Moriggia
Informatica per la Finanza 3 Le variabili in VBA Altri I/O 28/02/2014 Copyright 2005-2007 V. Moriggia 1 28/02/2014 3.2 Le variabili in VBA V. Moriggia 1 28/02/2014 3.3 Dichiarazione di variabili in VBA
Algoritmo per l ordinamento di un array
Algoritmo per l ordinamento di un array Spesso si ha la necessità di lavorare con vettori ordinati, cioè si devono mettere gli elementi in ordine alfabetico se sono stringhe o in in ordine di grandezza
Le pelli. Le pelli. Informatica Grafica ][ Le pelli. Le pelli. Le pelli. Le pelli
Informatica Grafica ][ Marco Gribaudo marcog@di.unito.it Una volta creato un sistema di ossa, occorre associarvi una geomteria e stabilire come questa venga deformata. Come accennato in precedenza, una
RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio
RICORSIONE, PUNTATORI E ARRAY Quarto Laboratorio 16 DICEMBRE 2011 SCADENZA TERZA ESERCITAZIONE FUNZIONI RICORSIVE ESERCIZIO Scrivere una funzione ricorsiva che, assegnati due interi N1 ed N2, restituisca
Excel & VBA. Excel e Visual Basic for Application
Excel & VBA Excel e Visual Basic for Application Automazione Excel con VBA incorpora la tecnologia dell automazione (OLE automation) Excel dialoga con VBA attraverso un insieme di comandi detto libreria
Programmazione con il linguaggio LibreOffice Basic
Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software
PROCEDURE E FUNZIONI
VB.NET PROCEDURE E FUNZIONI La sintassi Non sempre le procedure e le funzioni fornite dal Vb.Net bastano a soddisfare le nostre necessità di programmazione, quindi si possono scrivere nuove procedure e
Matlab: Script e Funzioni
Matlab: Script e Funzioni Informatica B Script Cos è uno script (m-file) q Uno script è un file di testo contenente una sequenza di comandi MATLAB non deve contenere caratteri di formattazione (solo testo
Relazione del programma di statistica: Bernoulli Poisson.
Relazione del programma di statistica: Bernoulli Poisson. Vincoli imposti dal problema : Predisporre un programma che, assegnati in input n, p permetta di determinare la distribuzione della variabile casuale
I clip filmato (in Flash)
Informatica Grafica I I clip filmato (in Flash) Gli statement Ogni istruzione di uno script viene chiamata statement. La fine di uno statmenet e' indicata dal simbolo ;. Anche se in ActionScript il ; è
Strumenti per la modellazione poligonale
Informatica Grafica ][ Strumenti per la modellazione poligonale Oltre agli strumenti di taglio ed estrusione visti nella lezione precedente, Maya mette a disposizione numerose altre funzioni per costruire
Costanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
Questa ci consente di assegnare un nome alla macro, la cartella di destinazione e una breve descrizione che potrà servirci da promemoria.
Uso di Excel Esecuzione automatica di procedure Prof. Ettore Limoli Registrazione di MACRO Per automatizzare alcune azioni ripetitive in Excel è possibile attivare la registrazione di MACRO. Inserendo
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.
In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
Modellazione poligonale
Informatica Grafica per le arti Modellazione poligonale Ogni solido rappresentato in un programma di grafica 3D, viene visualizzato mediante un insieme di triangoli. Un insieme di triangoli adiacenti prende
Le texture. Le texture. Informatica Grafica ][ Le texture. Le texture. Le texture. Le texture
Informatica Grafica ][ Come visto nel corso di IG1, le texture peremttono di applicare immagini sulle superfici di oggetti tridimensionali. Nella grafica in tempo reale esse assumono un'importanza ancora
Introduzione al C++ (continua)
Introduzione al C++ (continua) I puntatori Un puntatore è una variabile che contiene un indirizzo di memoria pi_greco 3.141592 pi_greco_ptr indirizzo di 3.141592 & DEREFERENZIAZIONE RIFERIMENTO * se x
Esportare animazioni. Animazioni compatibili. Informatica Grafica ][ Animazioni compatibili. Animazioni compatibili. Animazioni compatibili
Informatica Grafica ][ Esportare animazioni Quando si creano animazioni per essere esportate in un motore di rendering, queste devono essere create con particolari accorgimenti. Il processo di sequenzializzazione
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Esercizio 1: media di numeri reali (uso funzioni e struct)
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le
Parte 1: tipi primitivi e istruzioni C
Parte 1: tipi primitivi e istruzioni C Esercizio 1 Scrivere un programma che stampa la somma di una sequenza di N numeri inseriti dall utente. Esercizio 2 Scrivere un programma che stampa la somma di una
Caratteristiche generali del linguaggio Visual Basic
Caratteristiche generali del linguaggio Visual Basic Per ottenere un aiuto contestuale dall help di Visual Basic sulla sintassi di funzioni o, oppure su proprietà, eventi o metodi, basta selezionare la
Materiali avanzati. Informatica Grafica per le arti. Raytracing. Raytracing. Raytracing. Raytracing. Raytracing
Informatica Grafica per le arti Materiali avanzati Marco Gribaudo marcog@di.unito.it Molti degli oggetti modellabili sono costituiti da superfici trasparenti o riflettenti. I materiali Raytrace permettono
Grafica 3D Interattiva
Informatica Grafica ][ Grafica 3D Interattiva Introduzione La grafica 3D viene utilizzata in prodotti interattivi e non interattivi. Esempi di prodotti non interattivi sono i filmati di animazione e gli
Lezione 3: Le librerie. Trasformazioni ed elaborazioni. Le librerie. Le librerie. Le librerie. Copie e librerie in SVG
Informatica Grafica 2003 Lezione 3: Trasformazioni ed elaborazioni Molti programmi permettono di memorizzare copie degli oggetti utilizzati più di frequente in opportune librerie. In questo modo è possibile
4. I moduli in Access 2000/2003
LIBRERIA WEB 4. I moduli in Access 2000/2003 Il modulo è uno degli oggetti del database di Access e rappresenta un insieme di dichiarazioni e routine scritte con il linguaggio Visual Basic, memorizzate
Montaggio e post-produzione
Informatica Grafica I Montaggio e post-produzione Una volta creata un'animazione, occorre eseguirne il rendering per crearne un filmato. Il procedimento e' simile al rendering di immagini statiche, ma
I Clip Filmato. I marker. Informatica Grafica per le arti. I marker. I marker. I marker. I marker. gotoandplay("inizio");
Informatica Grafica per le arti Marco Gribaudo marcog@di.unito.it Un strumento utile per organizzare il proprio filmato è quello di assegnare nomi a fotogrammi di particolare importanza. I nomi utilizzati
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione
Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
Le luci. Luci. Informatica Grafica ][ Luci. Luci. Luci. Luci
Informatica Grafica ][ Le luci Come visto nel corso di IG1, le luci rivestono un ruolo importantissimo nella grafica 3D. Le DirectX consentono di aggiungere alla scena illuminazioni di vario tipo. Vedremo
VBA Principali Comandi
VBA Principali Comandi Sintassi Significato Esempio Dim As Dichiarazione Dim x As Integer di una variabile Dim , , ,.,
Pose ed Animation Blending
Informatica Grafica ][ Pose ed Animation Blending Per semplificare il compito dell'animatore, MB e Maya permettono di memorizzare alcune posizioni assunte (o movimenti effettuati) frequentemente da un
Relazione del programma di statistica: Curva di Gauss.
'' Relaione di statistica Relaione del programma di statistica: Curva di Gauss. Vincoli imposti dal problema : Calcolare l area di probabilità compresa tra due intervalli(, ), sottostante la curva normale
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
UD 3.2b: Programmazione in Pascal (1)
UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
Esercizi Programmazione I
Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in
Modellazione Poligonale Avanzata
Informatica Grafica I Modellazione Poligonale Avanzata Il (FFD) inserisce un oggetto in una gabbia (a forma di parallelepipedo o di cilindro). Spostando i vertici della gabbia si deforma il solido in esso
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
Relazione del programma di matematica: Goniometria:retta,circonferenza,parabola.
Relazione del programma di matematica: Goniometria:retta,circonferenza,parabola. Vincoli imposti dal problema : Disegnare una retta, una circonferenza, ed una parabola di varie dimensioni, con coordinate
ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998
21 Gennaio 1998 PROVA PRATICA Si scriva un programma C (BASIC per gli studenti di Elementi di Informatica) che: a) Legga da terminale una sequenza di caratteri terminati dal carattere '*' (un carattere
Importazione di Mesh in Unreal
Informatica Grafica ][ Importazione di Mesh in Unreal Come accennato in precedenza, le funzioni di modellazione di UnrealEd permetteno la creazione di stanze e terreni. Gli elementi decorativi di una scena,
Lezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
Esercitazioni di Elementi di Informatica
Esercitazioni di Elementi di Informatica Docente: Prof. Angelo Chianese angelo.chianese@unina.it Tutor: Ing. Antonio Picariello antonio.picariello@unina.it Interpreti e Compilatori Interprete Es. Qbasic
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Introduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi
Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione
Strutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
Il programma è distribuito tramite il file compresso TRASFO.zip contenente i file di programma strutturati in 4 cartelle:
TRASFO V 1.0 Stefano Caldera stefano@geomatica.como.polimi.it M. Grazia Visconti grazia@geomatica.como.polimi.it Il programma è distribuito tramite il file compresso TRASFO.zip contenente i file di programma
Pascal: esempi di programmazione
Pascal: esempi di programmazione Problemi elementari di programmazione.................. 2252 a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Somma tra
Gli ARRAY. Corso di Programmazione Cefi Informatica
VB.NET Gli ARRAY Gli array a una dimensione Gli array, o vettori, sono spazi di memoria in cui vengono immagazzianti in massa più variabili dello stesso tipo, accessibili tramite un indice. Prendiamo un
Basi della programmazione in Java
Basi della programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Reti di Calcolatori Architettura del calcolatore Elementi di Programmazione Esempi di algoritmi e programmi Conversione
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici
Le coordinate di mappatura
Informatica Grafica per le arti Le coordinate di mappatura Per assegnare ad un oggetto tridimensionale una texture 2D, occorre specificare un insieme di coordinate di mappatura. Le coordinate di mappatura
1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.
Esercizi di Matlab L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi. Esempio Consideriamo la matrice A formata da n = righe e m = colonne M = 5 6 7 8. 9 0
Programma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1
Programma... Autoboxing / unboxing Array Classe Rettangolo / classe Quadrato / Gerarchia e ereditarietà. Laboratorio di Programmazione - Esercitazio 1 Unboxing e autoboxing (per la classe Integer) Unboxing
Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
Le problematiche della grafica tridimensionale
Architetture per la grafica 3D Le problematiche della grafica tridimensionale Marco Gribaudo marcog@di.unito.it Per riuscire a comprendere a pieno le motivazioni che hanno determinato le scelte effettuate
Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple
GOCCE D AVA Capitolo 2 Domande a risposte multiple Selezionando una risposta, il bottone corrispondente diventa verde se la risposta è giusta, altrimenti diventa rosso. 2 1. Quale dei seguenti non è un
Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti
Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann
Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione
Programmazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione
Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi
Esercitazione pre 1ma prova in itinere
Esercitazione pre 1ma prova in itinere Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 13 Novembre 2015 Info logistiche 2 Info logistiche Ven 20 Novembre: NO lezione 3 Info logistiche
Lab 13 Strutture e programmi su più file "
Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 13 Strutture e programmi su più file " Lab13 1 n Sia data la struttura Esercizio 1" struct time { int hour, minute,
Sistemi Mobili e Wireless Android - Risorse
Sistemi Mobili e Wireless Android - Risorse Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat stefano.burigat@uniud.it Risorse in Android In Android,
Informatica (CIV) Esercitazione su FORTRAN. Andrea Romanoni
Informatica (CIV) Esercitazione su FORTRAN Andrea Romanoni andrea.romanoni@polimi.it Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano 3 dicembre 2013 Esercizio istogrammi
Formati e compressioni
Sistemi Multimediali Marco Gribaudo marcog@di.unito.it, gribaudo@elet.polimi.it Formati e compressioni Anche se in memoria le immagini vengono quasi sempre memorizzate come una sequenza di colori RGB,
Indirizzamento, lettura e scrittura della memoria
Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2018-2019 Indirizzamento, lettura e scrittura della memoria Turno A Nicola Basilico Dipartimento di Informatica Via Celoria 18-20133
Il sistema operativo
Il sistema operativo Vito Perrone Corso di Informatica A per Gestionali Indice Architettura Gestione dei processi Gestione della memoria centrale Driver Gestione dei file 2 1 Il sistema operativo E uno
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa 16. Array. A. Miola Gennaio
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 16 A. Miola Gennaio 2012 1 Contenuti q Il problema degli studenti da promuovere q q in Java q Uso di array dichiarazione di variabili
ALGORITMI E STRUTTURE DATI
Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura