MeshLab:
Development page
This page is devoted to some internal
development notes. Given the
linguistic coherency among developers they will be only in
italian. Sorry.
CVS
Al solito mi raccomando di seguire tutte
le solite pratiche del bravo programmatore:
- Fate update ogni volta che vi mettete a lavorare, non
solo del repository di MeshLab, ma anche di quello di VCG
- Fate edit delle cose che iniziate a cambiare,
- Prima di fare edit controllate che non l'abbia in
edit qualcun altro,
- Non lasciate in edit le cose per troppo tempo,
- Non committate mai cose che non compilano o che non
fanno funzionare le cose degli altri,
- Committate spesso (compatibilmente con quanto di cui
sopra).
- Commentate SEMPRE
ogni
vostro commit (in inglese please)
Per una intro generale a cvs e a come accedere ai servizi cvs di sourceforge
leggetevi la lunga introduzione a cvs su:
http://sourceforge.net/cvs/?group_id=149444
Web
Le paginette web di sourceforge sono
tenute anche loro in cvs.
Quindi se fate modifiche fatele sul vostro file system, committatele e
poi a mano fate update tramite ftp.
(in alternativa qualcuno che ha voglia potrebbe settare un task cron
sulla shell di sf che aggiorni la copia in public_html direttamente via
cvs update una volta al giorno). Il comando da dare su shell.sf.net una
volta dentro la dir meshlab/htdocs e'
cvs -d
:pserver:anonymous@cvs1:/cvsroot/meshlab update
Mailing List
C'e' una mailing list su sourceforge cui siete pregati di iscrivervi
tutti:
http://lists.sourceforge.net/lists/listinfo/meshlab-devel
La lista la useremo per tutte le comunicazioni semi-urgenti (e.g.
quelle che uno si aspetta vengano recepite entro un giorno) che
riguardano soprattutto lo sviluppo di MeshLab. Ad esempio per essere
sicuri che tutti sappiano cosa succede nel caso di cambi significativi
di interfacce comuni...
Note di Compilazione
Si assume che
- QT 4.1 sia installato
- il modulo cvs meshlab e quello di vcg siano allo
stesso livello e che il modulo che contiene la vcg lib (modulo cvs
che si chiama vcg) sia in una dir chiamata non vcg ma
sf. (ad es. dovreste avere qualcosa tipo
\doc\sf\vcg\space\point3.h e \doc\meshlab\src\meshlab\meshlab.pro )
- ci sia OpenGL, ovviamente da qualche parte nei path standard del
vostro compilatore dovreste avere include e lib per OpenGL. Di solito
non dovreste far nulla e il compilatore dovrebbe trovare tutto quel che riguarda opengl
(e.g. "< gl/gl.h>" e "< gl/glu.h>") senza chiedere nulla.
- GLUT NON serve per meshlab, ma puo' servire per compilare
gli esempi di lib3ds (che in effetti non servono)
- allo stesso livello di sf e meshlab ci sia una
dir code con dentro una sotto dir lib con dentro i contenuti
delle seguenti librerie open source:
- glew. Dentro ci scompattate il contenuto dei
sorgenti dell'ultima distribuzione di glew (ci deve essere glew.c tra i
file, meshlab per evitare orridi problemi di unicode/debug/dll si ricompila direttamente glew invece di linkarsi la
lib)
- lib3ds-1.2.0 il contenuto dell'ultima distribuzione ufficiale (a seconda
dell'ambiente di sviluppo dovete anche ricompilarvela)
- lib3ds-1.3.0 una copia del cvs di lib3ds acceduto
in cvs anonimous da sourceforge.
- bzip2-1.0.3 il contenuto della distribuzione ufficiale di bzip2.
Sotto win la lib deve essere compilate staticamente, altrimenti vi dovete copiare la dll assieme all'eseguibile del meshlab.
La libreria VCG, pagina ufficiale vcg.sf.net, e'
scaricabile in cvs
anonimo
:pserver:anonymous@vcg.cvs.sourceforge.net:/cvsroot/vcg
Gli esempi di base della libreria li
trovate sotto sf/apps/sample.
Lasciate perdere la roba sotto test.
Guida di stile.
Task
lista incompleta e inaffidabile di possibili sottotask che mi vengono in mente tanto per fissare le idee e fare qualche esempio...
Un-Allocated tasks
- Filtri input per altri formati (wrl)
- parametrizzazione automatica
- Unit testing
Allocated tasks
- Meccanismo creazione automatica del dialogo richiesta di parametri di un filtro,
in base ai parametri stessi (pirosu)
- simplification con tex coord (pirosu)
- Sezioni di mesh (come polyline o come piccole mesh con uno spessore. (andrenucci / editclip)
- Editing stile painting (brush painting sugli attributi dei vertici della mesh) ( gfrei / editpaint )
- Measuring Tape (colombini / edittape),
- trackball smooth: (colombini / integrated)
- zoom interpolato della camera su doppio click
- copy and paste delle trackball/viste
- spinning della trackball
- Rendering usando punti automatico durante interazione quando framerate basso (colombini / integrated)
- Selezioni stile bacchetta magica, o selezione solo delle facce visibili (cerisoli)
- Selection per vertex/face,componenti? (cerisoli)
- compressed wedge normals (volpe santonocito)
- crease cutting and welding (volpe santonocito)
- T-Vertex and inconsistency managing (volpe santonocito)
- Heuristic for folded and flipped triangles (volpe santonocito)
- remove duplicated faces (volpe santonocito filtergeom )
- Shader OpenGL multi passata in un formato piu' diffuso (RenderMonkey?) (giardina, fusco, galilei / rendershader)
- save snapshot come gif animata (leone)
- multi texture switchable (leone / rendertexture )
- Texture Viewer Dialog (con possibilita' di vedere come
la mesh si stende sulla texture e zoom e pan) (leone/decorshowtexture)