スポンサーリンク

Blender Pythonでxyz出力してC++で読み込む

Blender側

import bpy

msh = bpy.context.active_object

fname = 'C:/test/' + msh.name + '.xyz'

with open(fname, 'w') as myf:
    for vt in msh.data.vertices:
        print(vt.co[0],vt.co[1],vt.co[2] ,file=myf ) #頂点座標出力

C++側

//! @brief separator区切りの実数の一覧を読み込む
//! @details xyzフォーマットは正式な規格として存在しないらしいので、ある程度の柔軟性を持たせる
//! @param [out] ret 結果を格納する配列の配列
//! @param [in] filename ファイル名
//! @param [in] separator 区切り文字
//! @return なし
template<typename scalar_t>
void read_xyz(std::vector<std::vector<scalar_t> >& ret,const char* filename, const char separator) {

  std::ifstream ifs(filename);

  std::string str;
  while (std::getline(ifs, str)) {

    std::stringstream line{ str };

    std::string value;

    std::vector<scalar_t> tmp;

    while (getline(line, value, separator)){
      tmp.push_back(std::atof(value.c_str()));
    }
    ret.push_back(tmp);

  }

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: