« カテゴリアーカイブにメニュー追加 | メイン | メジャーバージョンアップを検討中 »

2005年03月08日

Teaspire 開発日誌:: マップデータを差し替える

    

以前Xファイルとして作ってもらったマップデータをLAMPについているコンバーターで変換して、LAMPで読めるようにした。
シーンビューアーで見てみると、問題なく読み込めている様子。
で、これをチュートリアルのやつに読み込ませようとするが、よくわからない。
とりあえず、フレームワークのloadSceneを参考にして、新しいシーンへ読み込ませ、SceneNodeをもともとあるシーンにつなげてみるが表示されず。
いろいろと調べるがよくわからない。
で、demoのソースを追ってみることにした。
すると、シーンをシーンノードに読み込ませ、そのシーンノードをもともとあるシーンへつなげているようだ。ああそうか、シーングラフだった。
ソースコードは次のような感じ。

SceneNode *scnNode = scene_->getSceneNodeManager()->createSceneNode("floor");
scene_->getRootNode()->addSceneNode(scnNode);
TextSceneLoader* loader = new TextSceneLoader();
loader->load("Yuka_m01_FIX.tsn", scene_, scnNode);
delete loader;

これで、scene_にYuka_m01_FIXが追加される。
で、もともとあった床のノードだけを次のようにして削除。

SceneNode *yuka;
yuka = scene_->getSceneNodeManager()->search("Yuka");
scene_->getRootNode()->removeSceneNode( yuka );

が、初めYuka_m01_FIXの中にも"Yuka"と言うモデルとメッシュがあり、なぜか読み込めず悩んだ。
シーンノードは削除しているはずなのに・・・
LAMPは致命的エラーで落ちるだけと言う不親切さ。
結局、Yuka_m01_FIXの中の"Yuka"をリネームしたらうまく読み込めた。
どうやら名前が競合していたようだ。
それぐらいわかるように停止してくれよ・・・
たぶん、シーンノードを削除してもメッシュデータなどは残るので、それらの名前が競合していたのだろう。

これで、床の入れ替えに成功した。
でも、作ってもらった床は凹凸があるので、めり込みまくり。
次は当たりだなぁ。
なんか、これも専用フォーマットあるっぽいけど・・・
Maya以外からLAMPを使おうとしたら大変だなぁ。
まあ、Mayaがあってもいろいろと大変な気はかなりするけど。
ソースをかなり読まないといけないし。



投稿者 Takenori : 2005年03月08日 07:54




comments powered by Disqus
Total : Today : Yesterday : なかのひと