(二)开发3dsmax插件导出摄像机运动轨迹数据
基本思路:
a) 查找场景中的摄像机节点
b) 从动画中逐帧获取摄像机位置、方向
c) 进行3dsmax->Unity坐标变换并输出
查找场景中的摄像机节点的方法
a) 遍历场景中节点,寻找类型为摄像机的
//获得场景对象并遍历场景中的节点
//ExpInterface* ei
ei->theScene->EnumTree(...);
//判断节点类型是否是摄像机
//INode *node
ObjectState os = node->EvalWorldState(0);
if (os.obj && os.obj->SuperClassID()==CAMERA_CLASS_ID) {...}
b)导出时手动选中摄像机节点,通过选中节点得到摄像机
//Interface*ip;
ip->GetSelNodeCount();
INode* node = ip->GetSelNode(i);
逐帧获取摄像机位置、方向
//Interface *ip INode * node
TimeValue start=ip->GetAnimRange().Start();
TimeValue end= ip->GetAnimRange().End();
int tickPerFrame = GetTicksPerFrame();
Point3 initLookAtDir(0, 0, -1); //相机默认lookat方向(在相机的local坐标系中)
Point3 initU