2011-02-04 23 views
6

È disponibile una libreria (.dll) disponibile in .Net o disponibile come libreria di terze parti.Libreria per la generazione di mesh in .Net?

Quali forniscono le seguenti funzionalità?

Abbiamo appena Aggiungiamo come input nuvola di punti o punti nello spazio 3D (con X, Y e Z coordinare)

Ed esso esposizione oggetto 3D in ViewPort3D. I mezzi generano automaticamente MESH da Point Cloud e ci danno l'output come oggetto 3D in ViewPort3D.

Nota: Considerare oggetto sarebbe oggetto Convex.

Grazie ..........

risposta

5

Ho recentemente sono chiesto la stessa cosa e arrivai alla conclusione che OpenTK è facile da usare per questo. Penso che dia accesso più o meno diretto all'API OpenGL e non richieda molte dipendenze.

Questo è un po 'copy'n'paste da my own question and answer, che è il risultato di aver provato molte librerie diverse negli ultimi giorni con l'obiettivo di creare una nuvola di punti in base ai dati che ricevo dal mio Kinect.

Non fornisce un output a ViewPort3D, ma dai miei test è stato molto più veloce rispetto all'utilizzo di WPF. Non ero in grado di visualizzare (e aggiornare) una nuvola di punti 640x480 in WPF a una velocità accettabile.

È relativamente facile da capire. Per iniziare, sono necessarie poche (e comprensibili) righe di codice. Non tiene gli oggetti per me, quindi sono libero di cambiare qualsiasi cosa per ogni passaggio, il che è ottimo perché sto lavorando principalmente con puntatori non sicuri alla memoria.

È ovviamente difficile combinare la velocità con la facilità d'uso. La velocità richiede di parlare direttamente con l'API 3D mentre la facilità d'uso richiede l'astrazione. Pertanto questo deve essere considerato un API di livello inferiore rispetto ad alcuni degli altri che ho provato. Se volessi fare un'animazione di personaggi prefabbricati, XNA sarebbe probabilmente una scelta migliore, ma per i point cloud questo sembra molto promettente finora (4-5 ore di hacking).

Alcuni codice di esempio:

private void Render() 
{ 
    // Every frame 
    GL.Begin(BeginMode.Points); 
    GL.MatrixMode(MatrixMode.Modelview); 
    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); 
    GL.LoadMatrix(ref cameraMatrix); 

    GL.Begin(BeginMode.Points); 

    // Here I can add lots of points. I add 200k without any big problem. 
    // It seems these points could have been passed in as an array pointer too, 
    // but I'll look at that later. 
    GL.Vertex3(x2, y2, z2); 

    GL.End(); 
    glControl.SwapBuffers(); 
} 
Problemi correlati