geometry3Sharp:Unity C#で使えるポリゴン操作ライブラリ

Unityはポリゴンのオブジェクトを扱う割に、意外とポリゴンジオメトリを操作するAPIが貧弱。
でも、ポリゴンジオメトリ操作の有名なライブラリはC++かPythonに偏っており、直接C#で利用できるライブラリは少ない。

そんな中で有力な選択肢になるのがgeometry3Sharpなんだけど、すでにメンテナンスが止まっており、フォークプロジェクト geometry4Sharpの使用が公式に推奨されている。

とはいえ、geometry4Sharpの方はドキュメントや配布(NuGet Packageなど)がまだあまり整備されていないので、しばらくの間はgeometry3Sharpの方が小回りが効いて便利そう。長期プロジェクトへの採用はgeometry4Sharpを前提にした方が良さそうだけど。

geometry3Sharp



ジオメトリ計算のためのオープンソース(Boost-license)のC#ライブラリです。

geometry3SharpはUnityと互換性があります。UnityプロジェクトのScripting Define SymbolsG3_USING_UNITYを設定すれば、g3とUnityのVector型の間を透過的に相互利用できます。(本README最下部の詳細をご覧ください)
このライブラリはC# 4.5向けに開発されていますが、.NET 3.5 Unityランタイムでも一部機能を除いて動作します。

現状、一部unsafeコードが含まれていますが、このコードはごく限られた高速バッファコピー処理でのみ使用されており、safeバージョンが必要な場合は削除できます。(例:Unity Webプレーヤー用など)

NuGet Packageを利用できます。このパッケージはgithubのmaster ブランチからほぼ毎月更新されため、「より」安定しています。
現在、このパッケージには.NET 4.5と.NET Standard 2.0のdllが含まれています。他にご希望がありましたら、メールにてご連絡いただければ追加可能です。

作者のWebサイトでデータ構造の説明チュートリアルが公開されている。
http://www.gradientspace.com/

また、geometry3Sharpを使用して作られたGUIツール COTANGENTがある。



geometry3SharpをUnityで利用するには↓

Unity Interop

geometry3Sharpは、Unityの型との透過的な変換をサポートしています。これを有効にするには、UnityプロジェクトのPlayer Settings > Playerの Scripting Define SymbolsG3_USING_UNITYの定義を追加してください。

有効にすると、以下のようなコードが透過的に機能します。

Vector3 unityVec;
Vector3f g3Vec;
unityVec = g3vec;
g3vec = unityVec;

float型からdouble型への変換は透過的に機能しますが、double型からfloat型への変換には明示的なキャストが必要です。

Vector3d g3vecd;
g3vecd = gameObject.transform.position;
gameObject.transform.position = (Vector3)g3vecd;

この機能は、Vector2、Vector3、Quaterion、Ray、Color、Bounds (w/ AxisAlignedBox3f)で機能します。
これらの変換が等式では機能しないことに注意してください。したがって、Vector3fとVector3を追加するには、一方を明示的にもう一方へキャストする必要があります。

そして後継のフォークプロジェクト geometry4Sharp

geometry4Sharp

ジオメトリ計算のためのオープンソース(Boost-license)のC#ライブラリです。
geometry4Sharpはgeometry3sharpをフォークしたプロジェクトです。

まだNuGetパッケージは利用できません。パッケージはmainブランチから更新される予定です。

仕様はまだほとんどgeometry3Sharpと変わらないようだが、namespaceがg3からg4に変更されてる(笑)

関連記事

ラクガキの立体化 背中の作り込み・手首の移植

OpenGV:画像からカメラの3次元位置・姿勢を推定するライ...

ドットインストールのWordPress入門レッスン

マイケル・ベイの動画の感覚

プロシージャル手法に特化した本が出てるみたい(まだ買わないけ...

Blender 2.8がついに正式リリース!

HerokuでMEAN stack

ラクガキの立体化 モールドの追加

Digital Emily Project:人間の顔をそっく...

OpenGVの用語

ZBrushで仮面ライダー3号を造る ベース編

iOSデバイスのためのフィジカル・コンピューティングツールキ...

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン ...

Raspberry Pi

Google App Engine上のWordPressでA...

粘土をこねるようなスカルプトモデリング

リメイク版ロボコップスーツのメイキング

Quartus II

2012 昨日のクローズアップ現代を見た

Webサイトのワイヤーフレームが作成できるオンラインツール

HD画質の無駄遣い

AR (Augmented Reality)とDR (Dim...

オープンソースのテクスチャマッピングシステム『Ptex』

ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...

SIGGRAPH ASIA 2009で学生ボランティア募集し...

注文してた本が届いた

MythTV:Linuxでテレビの視聴・録画ができるオープン...

Kubric:機械学習用アノテーション付き動画生成パイプライ...

ゴジラ(2014)のメイキング

書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読...

3Dスキャンしたテクスチャから照明を除去するUnityツール...

ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...

ZBrush 4R8 リリース!

昔Mayaでモデリングしたモデルをリファインしてみようか

Raspberry PiのGPIOを操作するPythonライ...

ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...

ZBrushで手首のモデリングをリファイン

VGGT:マルチビュー・フィードフォワード型3Dビジョン基盤...

映画『ジュラシック・ワールド』のVFXメイキング

Seleniumを使ったFXや株の自動取引

CreativeCOW.net

pythonもかじってみようかと

コメント