Unity3D导入fbx模型(使用脚本批量导入模型)


采坑记录...

最近有需求要将倾斜摄影模型导入到Unity中,由于Unity只支持fbx类型的模型。于是就在想将.osgb类型转化为fbx类型。
经历好一段时间之后才知道FME2018可以支持这两种类型的文件相互转换。于是将模型类型转换好了之后,我发现Unity模型导入也成了
一个问题…(最近才开始学的渣渣)。
后来发现fbx导入Unity有两种方式:

  • 直接将fbx模型放到项目目录下,从project视图中直接拖拽至Hierarchy视图中。
  • 写脚本

第一种方法很简单,并且可以直接实例化模型,即拖即用(神似IPV6 DHCP协议…),当然坏处也是有的。这种方式方便是方便,但是
当我需要导入的fbx模型不止数个的时候问题就来了。这种方法不支持多选,然后群体拖入Hierarchy视图中这种方法。这时候我就比较
头疼了,开始探索第二种方式:写脚本。


刚开始写脚本的时候又是踩了无数坑,一开始网上的教程都比较麻烦。我去GITHUB搜了脚本,搜到一个FBX importer,但更多的是FBX exporter…
无奈那个脚本clone下来了也不会用。只得自己写。后来发现Resources.Load()方法可以直接将fbx文件导入unity,再循环遍历一下文件夹
就实现了fbx模型的批量导入,但是load方法的输入路径参数比较复杂,在这个地方走了好多弯路。要注意Load的参数不能带后缀
我把fbx文件都保存在Assets/Resources/fbx文件夹中,方法如下:

string filename = "fbx/" + file;
UnityEngine.Object obj = Resources.Load(filename);
GameObject go = Instantiate(obj) as GameObject;
go.transform.position = new Vector3(0, 0, 0);

导入后将模型的位置设置为(0, 0, 0)。


得到并处理文件名的代码如下:

// file path like F:\Project\Assets\Resources\fbx\Tile_+001_+004_L22_0003010.fbx
string[] files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
    foreach (string file in files)
    {
        char[] sp1 = { '\\' };
        char[] sp2 = { '.' };
        char[] s3 = { '_' };
        string name_p1 = file.Split('x')[1];
        string name_p2 = name_p1.Split(sp1)[1];
        string name_p3 = name_p2.Split(sp2)[0];
        try
        {
            string flag = name_p3.Split(s3)[3];
            if (flag == "L19")
            {
                Lod1Name.Add(name_p3);
            }
            else if (flag == "L22")
            {
                Lod0Name.Add(name_p3);
            }
            //Debug.Log(flag);
        }
        catch (Exception e)
        {
            //Debug.Log(name_p3);
            Lod2Name.Add(name_p3);
        }
    }

处理完后的文件名就是无后缀的纯文件名,直接使用Resources.Load(filename)就可以动态,批量加载fbx模型了。

这三个连续的判断语句是为了将导入的fbx模型先分类,并Set给不同的Parent,然后直接将Parent的renderer赋给LODGroup实现LOD功能,后续将逐渐完善。

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值