Meshroomを用いてSfM(写真による3次元測量)を実行し、UI内では点群が確認できるのですが、
この点群の出力形式が.abcファイルとなっており、バイナリファイルのために中に書かれている点群の座標値が取り出せません
.abcファイルはhttps://ja.wikipedia.org/wiki/Alembic のようにBlenderなどのコンピュータ・グラフィックスソフトで採用されている形式のようですが、ファイルの構造などは力不足で調べることができませんでした。
やりたいこと:
.abcファイルを読み込み点群のx,y,zを抽出したい
⇒テキストで書かれたstl形式のようなものなら簡単にできるんですが...
調べた範囲で分かっていること
houdiniというアニメーション作成用のライブラリ?の補助機能として.abcファイルがpythonで読めるようです
⇒https://qiita.com/kit2cuz/items/f1704b3c9205dbb47775
python
1import _alembic_hom_extensions as abc 2 3abcPath = "C:/data/alembicFile.abc" 4 5def expandChild(root,child,objectHierarchy,objectType): 6 objectHierarchy.append(root+child[0]) 7 objectType.append(child[1]) 8 if len(child[2])==0: 9 return 10 else: 11 return expandChild(root+child[0]+"/",child[2][0],objectHierarchy,objectType) 12 13objectHierarchy=[] 14objectType=[] 15childNodes = abc.alembicGetSceneHierarchy(abcPath, "/")[2] 16for eachChildNode in childNodes: 17 expandChild("/",eachChildNode,objectHierarchy,objectType) 18print objectHierarchy 19print objectType
しかしながら、点群を抽出したいだけでhoudiniのライブラリでは大げさすぎると感じていて
よく知らないバイナリ形式のファイルをどのように取り扱えばいいのかノウハウを教えていただきたいです。
あなたの回答
tips
プレビュー