2013-10-23 10 views
5

Sto utilizzando QGLWidget per disegnare oggetti 3D, l'input per il mio programma sono le facce delle forme.QGLWidget - Sezione trasversale di oggetti cavi 3-D

Significa che quando voglio disegnare un cubo, ho ottenuto una lista di 6 elementi ognuno dei quali rappresenta un volto e ogni faccia contiene 4 punti, (x, y, z) per ogni punto.

Il disegno è terminato, ma sto cercando di implementare una funzione di sezione trasversale, finora la forma del risultato dopo che la sezione trasversale è un oggetto cavo, Come posso ottenere i risultati della sezione trasversale come se le forme non fossero scavate ?

+1

quindi si desidera ritagliare una parte dell'oggetto e riempire il vuoto interno con una faccia –

+0

maniaco del blocco: sì. –

risposta

9

OpenGL non conosce "oggetti". Non sa "solido" o "vuoto". Tutti i OpenGL sanno essere punti, linee e triangoli. Se vuoi che il tuo oggetto appaia solido, dovrai calcolare la geometria dell'oggetto tagliato, risultante in una nuova mesh, che utilizzerai come dati di input per il disegno.

Il processo di ritaglio è parte di un insieme di operazioni noto come "operazioni geometriche booleane" coniato anche "geometria solida costruttiva". Se sei Google per questo, troverai molte informazioni.

2

Credo che quello che stai cercando di ottenere è un po 'di boolean operation su 2 oggetti geometrici. A tale scopo, in Boost è disponibile una libreria di geometria perfetta e è necessario uno di questi algoritmi: diff o intersection. Considerati gli esempi, è facile modificarli per la vostra specifica struttura di oggetti.

Problemi correlati