2009年9月5日土曜日

etc - 進捗

アニメーションのエクスポートが3倍速くなった。
どるどる10秒→3秒くらい。

ただ、その残り3秒のうちの、2.7秒くらいは、Blenderの内部関数の計算時間。
早くするにはBlenderの中身書き換えるしかないレベル。

ちなみに、その内部関数ってのも、Armatureに絞ったのをピンポイントで使ってる。
途中でコメントアウトしてるscene_update_for_newframeすると、さらに遅くなる。
(ただしIKがメッシュ参照してるときは必要…だったような気がする)


for (KeyPoseMap::iterator it = key_pose_map.begin(); it != key_pose_map.end(); ++it)
{
float key = (*it).first;

// do pose
G.scene->r.cfra = (int) (key);
//if (optimize & BLO_WRITEXML_CALC_MESH) {
// CLAMP(G.scene->r.cfra, 1, 300000);
// scene_update_for_newframe(G.scene, (1<<20) - 1);
//}
// この2つが重い↓・・・が仕方ないか。
extract_pose_from_action (pose, action, bsystem_time(arm_obj, G.scene->r.cfra, 0.0));
where_is_pose(arm_obj);

// if channel had the key, append a pose channel
std::vector<bPoseChannel*>& poses = (*it).second;
for (int n = 0, n_size = poses.size(); n < n_size; ++n)
{
bPoseChannel *channel = poses[n];
bActionChannel *action = pose_action_map[channel];
if (!action) continue;
append_bposechannel(bdx_channel_list[n], channel, key);

}
}

0 件のコメント: