FileFormat.Drako per .NET
Semplifica il processo di lettura e scrittura dei file Google Draco utilizzando l'API .NET
Modifica senza sforzo i file DRC compressi con FileFormat.Drako, un'API .NET leggera e open-source che semplifica la conversione e l'automazione dei file Draco
FileFormat.Drako per .NET rivoluziona la tua esperienza di elaborazione dei file Draco. In questa guida completa, approfondiamo le funzionalità e i vantaggi derivanti dall'utilizzo diFileFormat.Drako, una leggera API .NET open source, per gestire facilmente i file Draco.
Draco è una libreria di compressione open source sviluppata da Google specializzata nella compressione e decompressione di mesh geometriche 3D e nuvole di punti. Riducendo significativamente la dimensione dei file grafici 3D, Draco consente una trasmissione più rapida e riduce i requisiti di archiviazione mantenendo la qualità visiva. Supporta varie applicazioni 3D, comprese piattaforme mobili e basate sul Web, garantendo una gestione efficiente di dati 3D complessi. Draco è ampiamente utilizzato in settori quali i giochi, la realtà virtuale e la visualizzazione 3D per ottimizzare le prestazioni e migliorare l'esperienza dell'utente.
FileFormat.Drako emerge come una potente soluzione per leggere e scrivere senza problemi file Draco. Questa leggera API .NET open source semplifica le operazioni sulle immagini Draco, offrendo agli sviluppatori e agli utenti un'interfaccia intuitiva per gestire i file Draco senza sforzo.
FileFormat.Drako è disponibile sotto Licenza Openize.< /p>
Caratteristiche e vantaggi principali- Rapporti di compressione elevati: Draco ottiene una significativa riduzione delle dimensioni dei file, spesso riducendoli fino al 90% senza una notevole perdita di qualità visiva. Ciò lo rende ideale per le applicazioni in cui la larghezza di banda e lo spazio di archiviazione sono limitati.
- Supporto per vari tipi di dati: Draco supporta la compressione per un'ampia gamma di tipi di dati 3D, incluse mesh geometriche e nuvole di punti. Può gestire le posizioni dei vertici, i colori, le normali e altri attributi in modo efficiente.
- Compressione e decompressione rapida: la libreria è progettata per offrire compressione e decompressione ad alta velocità, rendendola adatta per applicazioni in tempo reale come visualizzatori 3D basati sul Web ed esperienze di realtà virtuale.
- Open Source e gratuito: goditi i vantaggi di una soluzione open source senza costi di licenza, rendendola accessibile a sviluppatori e utenti di tutti i livelli.
- Integrazione perfetta con le applicazioni C#: integra facilmenteFileFormat.Drako nelle tue applicazioni C#, consentendo una gestione perfetta dei file Draco all'interno dei flussi di lavoro esistenti.
- Rapporti di compressione elevati: Draco ottiene una significativa riduzione delle dimensioni dei file, spesso riducendoli fino al 90% senza una notevole perdita di qualità visiva. Ciò lo rende ideale per le applicazioni in cui la larghezza di banda e lo spazio di archiviazione sono limitati.
- Supporto per vari tipi di dati: Draco supporta la compressione per un'ampia gamma di tipi di dati 3D, incluse mesh geometriche e nuvole di punti. Può gestire le posizioni dei vertici, i colori, le normali e altri attributi in modo efficiente.
- Compressione e decompressione rapida: la libreria è progettata per offrire compressione e decompressione ad alta velocità, rendendola adatta per applicazioni in tempo reale come visualizzatori 3D basati sul Web ed esperienze di realtà virtuale.
- Open Source e gratuito: goditi i vantaggi di una soluzione open source senza costi di licenza, rendendola accessibile a sviluppatori e utenti di tutti i livelli.
- Integrazione perfetta con le applicazioni C#: integra facilmenteFileFormat.Drako nelle tue applicazioni C#, consentendo una gestione perfetta dei file Draco all'interno dei flussi di lavoro esistenti.
Come iniziare con FileFormat.Drako per .NET
Iniziare con FileFormat.Drako è semplice e veloce. Segui semplicemente questi passaggi:
- InstallFileFormat.Drako: installa il pacchetto FileFormat.Drako tramite NuGet Package Manager o .NET CLI.
- Integrazione con il tuo progetto: fai riferimento alla libreria FileFormat.Drako nel tuo progetto C#.
- Avvia la conversione: utilizza la semplice API fornita da FileFormat.Drako per leggere e scrivere file Draco.
Il modo consigliato per installareFileFormat.Drako per .NET è utilizzare NuGet. Utilizza il seguente comando per un'installazione fluida.
InstallFileFormat.Drako per .NET tramite NuGet
NuGet> Install-PackageFileFormat.Drako
Puoi anche scaricarlo direttamente da GitHub.Leggi il file Draco in DracoMesh in C#
Questo frammento di codice carica in modo efficiente un file Draco e lo archivia in un'istanza DracoMesh per le operazioni successive.
- Apri il file DRC denominato "cube.drc" utilizzando
File.ReadAllBytes
. - Carica la mesh 3D dai byte in un oggetto
DracoMesh
.
Copia e incolla lo snippet di codice sottostante nel file principale ed esegui il programma.
Leggi il file .drc nell'istanza DracoMesh
byte[] cube = File.ReadAllBytes("cube.drc");
DracoMesh dm = (DracoMesh)Draco.Decode(cube);
Leggi il file Draco e scrivi su Wavefront OBJ in C#
Il codice seguente illustra come aprire un file Draco 3D esistente e scrivere nel formato obj per un'ulteriore elaborazione:
- Apri il file Draco denominato "input.drc" utilizzando
File.ReadAllBytes
. - Carica la mesh Draco dai byte in un oggetto
DracoMesh
. - Trova l'attributo position utilizzando
DracoMesh.GetNamedAttribute
e trasforma il suo contenuto inSpan<float>
. - Scrivi punti di controllo sull'output utilizzando il formato OBJ.
- Leggi gli angoli di ogni faccia utilizzando
DracoMesh.ReadFace
- Mappa gli angoli della faccia sull'indice dei punti di controllo utilizzando
PointAttribute.MappedIndex
. - Scrivi i volti nell'output utilizzando il formato OBJ.
Copia e incolla lo snippet di codice sottostante nel file principale ed esegui il programma.
Leggi il file .drc su DracoMesh ed esportalo su wavefront obj
//load draco file
var bytes = File.ReadAllBytes("input.drc");
var mesh = Draco.Decode(bytes) as DracoMesh;
if (mesh == null)
throw new InvalidDataException("Input file is not a valid draco file.");
var attrPos = mesh.GetNamedAttribute(AttributeType.Position);
var points = MemoryMarshal.Cast(attrPos.Buffer.AsSpan());
var sb = new StringBuilder();
for (int i = 0; i < points.Length; i += 3)
{
sb.AppendLine($"v {points[i]} {points[i + 1]} {points[i + 2]}");
}
Span face = stackalloc int[3];
for (int i = 0; i < mesh.NumFaces; i++)
{
mesh.ReadFace(i, face);
var a = attrPos.MappedIndex(face[0]) + 1;
var b = attrPos.MappedIndex(face[1]) + 1;
var c = attrPos.MappedIndex(face[2]) + 1;
sb.AppendLine($"f {a} {b} {c}");
}
File.WriteAllText("output.obj", sb.ToString());
Codifica punti di controllo e triangoli nel file Draco in modo programmatico in C#
Il codice fornito dimostra come creare a livello di codice un file Draco da punti di controllo e triangoli e salvarlo come "output.drc" utilizzando C#. Ecco una ripartizione dei passaggi:
- Crea un'istanza
DracoMesh
. - Avvolgi i punti di controllo in
PointAttribute
. - Aggiungi
PointAttribute
aDracoMesh
. - Aggiungi gli indici dei triangoli.
- Crea un oggetto
DracoEncodeOptions
con i parametri di codifica specificati. - Codifica la mesh in byte utilizzando
Draco.Encode
.
Copia e incolla lo snippet di codice sottostante nel file principale ed esegui il programma.
Codifica vettori e volti nel file .drc
Vector3[] controlPoints = new Vector3[]
{
new Vector3( -5, 0, 5.0f),
new Vector3( 5, 0, 5.0f),
new Vector3( 5, 10, 5.0f),
new Vector3( -5, 10, 5.0f),
new Vector3( -5, 0, -5.0f),
new Vector3( 5, 0, -5.0f),
new Vector3( 5, 10, -5.0f),
new Vector3( -5, 10, -5.0f)
};
int[] indices = new int[]
{
0,1,2, 0, 2, 3, // Front face (Z+)
1,5,6, 1, 6, 2, // Right side (X+)
5,4,7, 5, 7, 6, // Back face (Z-)
4,0,3, 4, 3, 7, // Left side (X-)
0,4,5, 0, 5, 1, // Bottom face (Y-)
3,2,6, 3, 6, 7 // Top face (Y+)
};
var mesh = new DracoMesh();
//construct an attribute for position, with type float[3],
var attrPos = PointAttribute.Wrap(AttributeType.Position, controlPoints);
mesh.AddAttribute(attrPos);
//add triangle indices
mesh.Indices.AddRange(indices);
//number of the control points, it's required for the encoder to produce correct result.
mesh.NumPoints = 8;
//You can also use following methods to deduplicate the attributes to reduce the file size
//mesh.DeduplicateAttributeValues();
//mesh.DeduplicatePointIds();
var opt = new DracoEncodeOptions();
var drcBytes = Draco.Encode(mesh, opt);
File.WriteAllBytes("output.drc", drcBytes);
FileFormat.Drako offre un'API intuitiva, supporto completo dei formati e integrazione perfetta con le applicazioni C#, consentendo sia agli sviluppatori che agli utenti di gestire facilmente i file Draco. Che tu stia convertendo file draco in altri file o caricando draco per il rendering, FileFormat.Drako semplifica il processo, garantendo efficienza e qualità ottimali in ogni passaggio.
Esplora il nostro repository GitHub per contribuire, suggerire miglioramenti e potenziare questa API open source: FileFormat.Drako -for-.NET