Ho dato una scorsa al codice di color_curvature. Ho alcune osservazioni:
1) Cosi' com'e' non va ci sono sistuazioni deterministiche di
malfunzionamento, ad es
- carica colored.ply, applica smoothing, applica gaussian curvature,
viene tutto blu...
Inoltre c'e' sicuramente un errore (di indice) nel modo in cui calcoli
le vornoi area.
Un dubbio a cosa ti serve la assert HasFFTopology?
Penso che forse sia necessario fare un po' di ordine;
Si dovrebbe separare il calcolo dei valori di curvatura (da memorizzare
in parte in strutture accessorie e poi alla fine nella qualita) dal
calcolo dei colori (che dovrebbe essere fatta a partire dalla qualita').
La classe curvatura dovrebbe avere un metodo ComputeHK
e 4 funzioni:
MapGaussianCurvatureIntoQuality
MapRMSCurvatureIntoQuality, ecc.
I dati HK dovrebbero essere tenuti in una struttura CurvData (o qualche
altro nome) e resi dati temporanei per vertice usando esattamente lo
stesso meccanismo dell'uso di dati temporanei che puoi vedere nel caso
dello smooting laplaciano. (complex/trimesh/smooth.h) (e.g.
1) dichiari un oggetto di tipo
SimpleTempData<MESH_TYPE::VertContainer, tuaclassedatiaccessori> >
TD(m.vert);
2) inizializzi tale struttura con un oggetto accessorio vuoto.
TD.Start( tuaclassedatiaccessori() );
3) Accedi ad i dati accessori collegati ad ogni vertice vi semplicemente
facendo
TD[*vi]
4) alla fine (quando non ti servono piu' i dati accessori) fai
TD.Stop();
Quindi in sintesi:
1) Classe curvatura che calcola HK e poi da questa mappa in quality
2) mappaggio qualita' colore fatto a parte
3) mappaggio qualita' colore ripetibile con un dialogo. cioe' aggiungi
un paio di filtri
- colorize by equalized quality
- colorize by quality...
che invece apre un dialogo dove sono mostrati il max e il min dei
valori di qualita' e permette di scegliere come fare il mapping dei colori
A questo punto avendo nella qualita' un valore significativo si puo'
pensare anche una decoration 'Show quality histogram' (che pero' tocca a
qualcun altro...)
Fatto cio' si ri-controlla un po' meglio come e perche' viene tutto
uguale...
saluti
p.
--
Paolo Cignoni http://vcg.isti.cnr.it/~cignoni
ISTI - CNR
Via Moruzzi 1,
56124 Pisa
ITALY
|