Unityはポリゴンのオブジェクトを扱う割に、意外とポリゴンジオメトリを操作するAPIが貧弱。
でも、ポリゴンジオメトリ操作の有名なライブラリはC++かPythonに偏っており、直接C#で利用できるライブラリは少ない。
そんな中で有力な選択肢になるのがgeometry3Sharpなんだけど、すでにメンテナンスが止まっており、フォークプロジェクト geometry4Sharpの使用が公式に推奨されている。
とはいえ、geometry4Sharpの方はドキュメントや配布(NuGet Packageなど)がまだあまり整備されていないので、しばらくの間はgeometry3Sharpの方が小回りが効いて便利そう。長期プロジェクトへの採用はgeometry4Sharpを前提にした方が良さそうだけど。
geometry3Sharp
ジオメトリ計算のためのオープンソース(Boost-license)のC#ライブラリです。
geometry3SharpはUnityと互換性があります。UnityプロジェクトのScripting Define SymbolsにG3_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 Symbolsに
G3_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でアヴァン・ガメラを作ってみる 下アゴと頭部を作...
iPhone x ロボットハッカソン~RomoのiPhone...
ラクガキの立体化 目標設定
OpenGVの用語
ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手...
SIGGRAPH ASIA 2009で学生ボランティア募集し...
Python拡張モジュールのWindows用インストーラー配...
ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整
世界一下品なクマと世界一紳士なクマ
3DCG Meetup #4に行ってきた
hloc:SuperGlueで精度を向上させたSfM・Vis...
OpenCVでiPhone6sのカメラをキャリブレーションす...
Oculus Goを購入!
ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...
UnityでTweenアニメーションを実装できる3種類の無料...
素敵なパーティクル
WordPressプラグインによるサイトマップの自動生成
レンダラ制作はOpenGL とか DirectX を使わなく...
OpenCVでカメラ画像から自己位置認識 (Visual O...
ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...
フォトンの放射から格納までを可視化した動画
BlenderのRigifyでリギング
映画『ブレードランナー 2049』のVFX
Windows10でPyTorchをインストールしてVSCo...
Unreal Engine Tokyo MeetUp!へ行っ...
Google App EngineでWordPress
CGWORLD CHANNEL 第21回ニコ生配信は『シン・...
SIGGRAPH Asia
第20回 文化庁メディア芸術祭『3DCG表現と特撮の時代』
Amazon EC2ログイン用の秘密鍵を無くした場合の対処方...
TVML (TV program Making langua...
フルCGのウルトラマン!?
ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を...
オープンソースのプリント基板設計ツール『KiCad』
Mayaのレンダリング アトリビュート
ZBrushのUV MasterでUV展開
ラクガキの立体化 反省
Physically Based Rendering
機械学習手法『Random Forest』
映画『シン・仮面ライダー』 メイキング情報まとめ
MetaHumanの頭部をBlenderで編集できるアドオン
Raspberry Pi 2を買いました
コメント