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に変更されてる(笑)


スポンサーリンク

関連記事

ZBrushで手首のモデリングをリファイン
オープンソースのロボットアプリケーションフレームワーク『ROS (Robot Operating S...
iOSデバイスと接続して連携するガジェットの開発方法
3Dグラフィックスの入門書
手を動かしながら学ぶデータマイニング
Google App EngineでWordPress
Windows Server 2008にAutodesk Maya 2009をインストール
ラクガキの立体化 背中の作り込み・手首の移植
ラクガキの立体化 目標設定
ZBrush キャラクター&クリーチャー
3DCG Meetup #4に行ってきた
Autodesk CompositeとAutodesk MatchMoverが無料
ZBrushのZmodelerとDynamic Subdivisionを学ぶ
OpenGVの用語
ZBrushのUV MasterでUV展開
『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイクダウン
映画『シン・ウルトラマン』 メイキング記事まとめ
Mitsuba 3:オープンソースの研究向けレンダラ
顔のモデリング
デザインのリファイン再び
SONY製のニューラルネットワークライブラリ『NNabla』
OpenCV
OpenVDB:3Dボリュームデータ処理ライブラリ
『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ
Unity MonoBehaviourクラスのオーバーライド関数が呼び出される順番
顔追跡による擬似3D表示『Dynamic Perspective』
Maya API Reference
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』
Mayaでリアルな布の質感を作るチュートリアル
単純に遊びに行くのはだめなのか?
3Dスキャンしたテクスチャから照明を除去するUnityツール『De Lighting tool』
このブログのデザインに飽きてきた
ZBrushで作った3Dモデルを立体視で確認できるVRアプリを作る
WordPressプラグインの作り方
写真から3Dメッシュの生成・編集ができる無料ツール『Autodesk Memento』
MFnDataとMFnAttribute
OpenCVのバージョン3が正式リリースされたぞ
ZBrushでアヴァン・ガメラを作ってみる 甲羅のバランス調整
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
Digital Emily Project:人間の顔をそっくりそのままCGで復元する
OpenCV3.3.0でsfmモジュールのビルドに成功!
ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始める

コメント