テーマ:今日の理系(394)
カテゴリ:理系
前回は.plyファイルの中身をメモったので 今回は実際にplyファイルを読み込んで見ることに
http://graphics.stanford.edu/data/3Dscanrep/#bunny からモデルデータはダウンロードできます 言語はなんでもそこまで苦労しないと思いますが、 C++だとスペース区切りでsplitしてくれる関数がないのでちょっと面倒でした 多分Javaだともっと楽に書けるはず
以下は実際にModelクラスをC++で作った際の読み込みメソッド 読み込み失敗ならfalse, 成功したらtrueを返すようにしています stringとかifstream使ってるのでC++用です bool Model::readModel(std::string filename){ if(!ifs.is_open()){ 簡単に解説するなら、 まず最初にelementと書かれた部分まで読み込み続ける その次がvertexなら頂点数が次にあるはずなのでそれを格納、faceなら面数なので、それも記録 それでend_headerまで続ける 次はデータ部分なので、まず頂点数の数だけ行読み込み 順番にx,y,z座標を格納 ここではVertexという構造体を作って、それをstd::vectorにどんどん入れていってます 最初にmallocしてやればstd::vectorじゃなくて普通の動的配列でも大丈夫なはず。
その次は面なのですが、最初の3というのは特に無意味でいらないので捨ててます これもFace構造体にどんどん入れていく感じで
結果 頂点座標を持ったVertex構造体の配列:verticesと 頂点IDを持ったFace構造体の配列:faces ができます 最後に念のため、頂点数と面数がヘッダの指示通りか確認 OKならtrueを返してモデル読み込み終了
お気に入りの記事を「いいね!」で応援しよう
最終更新日
2012.10.09 08:25:12
コメント(0) | コメントを書く
[理系] カテゴリの最新記事
|
|