BodyItem::load を使って VRML モデルファイルを読み込むことができるが、プロジェクトファイルにすでにそのモデルが存在する場合、同じモデルが二つ出てきてしまう。
この状態でプロジェクトをセーブして、またChoreonoid を起動すると、今度は三つのモデルが現れる。
これを回避するには、RootItem::findItem メソッドで、モデルが存在しないことを確認すれば良い。
以下は、名前 name を持つモデルが存在しない場合、ファイル wrlhrpfile からモデルを読み込む関数 getItem の例。
BodyItem *
getItem(string name, string wrlhrpfile)
{
// ルートアイテムをチェック
BodyItem * item = RootItem::instance()->findItem8 (name);
if (item == NULL) {
// なければ登録
item = new BodyItem();
if (item->load(wrlhrpfile, "OpenHRP-VRML-MODEL")) {
mout << "load: " << wrlhrpfile << endl;
RootItem::mainInstance()->addChildItem(item);
ItemTreeView::mainInstance()->checkItem(item, true);
}
}
return item;
}
(了)