VRMLモデルファイルを読み込む

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;
    }

(了)