1. Home
  2.   Drako
  3.   .NET 用の FileFormat.Drako
FileFormat.Drako for .NET

.NET 用の FileFormat.Drako

 
 

Google Dracoファイルの読み取りと書き込みプロセスを.NET APIを使用して簡素化

軽量のオープンソース.NET APIであるFileFormat.Drakoを使用して、圧縮されたDRCファイルを手軽に編集し、Dracoファイルの変換と自動化を合理化

FileFormat.Drako for .NET は、Draco ファイル処理エクスペリエンスに革命をもたらします。この包括的なガイドでは、軽量のオープンソース .NET API である FileFormat.Drako を活用して、Draco ファイルを簡単に処理する機能とメリットについて詳しく説明します。

Draco は、Google が開発したオープンソースの圧縮ライブラリで、3D 幾何学メッシュと点群の圧縮と解凍に特化しています。 3D グラフィックス ファイルのサイズを大幅に削減することで、Draco は視覚的な品質を維持しながら、より高速な送信を可能にし、ストレージ要件を削減します。 Web ベースやモバイル プラットフォームを含むさまざまな 3D アプリケーションをサポートし、複雑な 3D データを効率的に処理できます。 Draco は、パフォーマンスを最適化し、ユーザー エクスペリエンスを向上させるために、ゲーム、仮想現実、3D ビジュアライゼーションなどの業界で広く使用されています。

FileFormat.Drako は、Draco ファイルをシームレスに読み書きするための強力なソリューションとして登場しました。この軽量のオープンソース .NET API は、Draco 画像の操作を簡素化し、開発者とユーザーに Draco ファイルを簡単に処理するための使いやすいインターフェイスを提供します。

FileFormat.Drako は、Openize License で入手できます。< /p>

主な機能と利点

  • 高い圧縮率: Draco はファイル サイズの大幅な削減を実現し、多くの場合、視覚的な品質を大幅に損なうことなく最大 90% 削減します。このため、帯域幅とストレージが制限されているアプリケーションに最適です。
  • さまざまなデータ タイプのサポート: Draco は、ジオメトリ メッシュや点群などの幅広い 3D データ タイプの圧縮をサポートしています。頂点の位置、色、法線、その他の属性を効率的に処理できます。
  • 高速圧縮と解凍: このライブラリは高速圧縮と解凍を提供するように設計されており、ウェブベースの 3D ビューアや仮想現実体験などのリアルタイム アプリケーションに適しています。リ>
  • オープンソースと無料: ライセンス料がかからず、あらゆるレベルの開発者やユーザーがアクセスできるオープンソース ソリューションのメリットを享受できます。
  • C# アプリケーションとのシームレスな統合:FileFormat.Drako を C# アプリケーションに簡単に統合し、既存のワークフロー内でシームレスな Draco ファイル処理を可能にします。

Previous Next

FileFormat.Drako for .NET を始める方法

FileFormat.Drako はすぐに簡単に使い始めることができます。次の手順に従ってください。

  • InstallFileFormat.Drako: NuGet パッケージ マネージャーまたは .NET CLI を介して FileFormat.Drako パッケージをインストールします。
  • プロジェクトとの統合: C# プロジェクトで FileFormat.Drako ライブラリを参照します。
  • 変換の開始:FileFormat.Drako が提供するシンプルな API を利用して、Draco ファイルの読み取りと書き込みを行います。

FileFormat.Drako for .NET をインストールする推奨方法は、NuGet を使用することです。スムーズにインストールするには、次のコマンドを使用してください。

NuGet 経由で .NET 用の FileFormat.Drako をインストールします

NuGet> Install-PackageFileFormat.Drako 
GitHub から直接ダウンロードすることもできます。

C# で Draco ファイルを DracoMesh に読み取る

このコード スニペットは、Draco ファイルを効率的にロードし、後続の操作のために DracoMesh インスタンスに保存します。

  • File.ReadAllBytesを使用して、「cube.drc」という名前の DRC ファイルを開きます。
  • バイトから 3D メッシュを DracoMeshオブジェクトに読み込みます。

以下のコード スニペットをコピーしてメイン ファイルに貼り付け、プログラムを実行します。

.drc ファイルを DracoMesh インスタンスに読み込みます

 
    byte[] cube = File.ReadAllBytes("cube.drc");
    DracoMesh dm = (DracoMesh)Draco.Decode(cube);

C# で Draco ファイルを読み取り、Wavefront OBJ に書き込む

次のコードは、既存の 3D Draco ファイルを開いて、さらに処理するために obj 形式に書き込む方法を示しています。

  • File.ReadAllBytesを使用して、「input.drc」という名前の Draco ファイルを開きます。
  • Draco メッシュをバイトから DracoMeshオブジェクトに読み込みます。
  • DracoMesh.GetNamedAttributeを使用して位置属性を見つけ、その内容を Span<float>に変更します。
  • OBJ の形式を使用して、コントロール ポイントを出力に書き込みます。
  • DracoMesh.ReadFaceを使用して各面の角を読み取ります。
  • PointAttribute.MappedIndexを使用して、面の角をコントロール ポイントのインデックスにマッピングします。
  • OBJ の形式を使用して出力に面を書き込みます。

以下のコード スニペットをコピーしてメイン ファイルに貼り付け、プログラムを実行します。

.drc ファイルを DracoMesh に読み込み、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());

C# でプログラム的にコントロール ポイント、三角形を Draco ファイルにエンコードする

提供されたコードは、C# を使用して制御点と三角形からプログラムで Draco ファイルを作成し、「output.drc」として保存する方法を示しています。手順の内訳は次のとおりです。

  • DracoMeshインスタンスを作成します。
  • コントロール ポイントを PointAttributeにラップします。
  • PointAttributeDracoMeshに追加します。
  • 三角形のインデックスを追加します。
  • 指定されたエンコード パラメータを使用して DracoEncodeOptionsオブジェクトを作成します。
  • Draco.Encodeを使用してメッシュをバイトにエンコードします。

以下のコード スニペットをコピーしてメイン ファイルに貼り付け、プログラムを実行します。

ベクトルと面を .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 は、直感的な API、包括的な形式のサポート、C# アプリケーションとのシームレスな統合を提供し、開発者とユーザーが同様に Draco ファイルを簡単に管理できるようにします。 draco ファイルを他のファイルに変換する場合でも、レンダリングのために draco をロードする場合でも、FileFormat.Drako はプロセスを簡素化し、あらゆるステップで最適な効率と品質を保証します。

GitHub リポジトリを探索して、このオープン ソース API に貢献、改善提案、強化してください: FileFormat.Drako -for.NET

 日本