C# 如何在Unity运行时加载FBX文件?

C# 如何在Unity运行时加载FBX文件?,c#,unity3d,fbx,C#,Unity3d,Fbx,我正在进行全息镜头项目。我的老板说,在运行时加载fbx文件(我们使用unity)。我们的fbx文件在运行时更改,因此我们必须重新加载它(fbx是从3dMAx更改的) 我尝试了AssetBundle,但如果没有unity或unity编辑器模式,我无法创建AssetBundle文件。据我所知,只有资源(在“项目”选项卡中)可以将资产插入assetbundle。如果我可以通过fbx文件构建Assetbundle文件,而无需unity项目,我可以完成所有工作 总而言之:我需要一种方法来在运行时加载fbx

我正在进行全息镜头项目。我的老板说,在运行时加载fbx文件(我们使用unity)。我们的fbx文件在运行时更改,因此我们必须重新加载它(fbx是从3dMAx更改的)

我尝试了AssetBundle,但如果没有unity或unity编辑器模式,我无法创建AssetBundle文件。据我所知,只有资源(在“项目”选项卡中)可以将资产插入assetbundle。如果我可以通过fbx文件构建Assetbundle文件,而无需unity项目,我可以完成所有工作

总而言之:我需要一种方法来在运行时加载fbx,而不需要unity资源。若我在运行时将fbx资产设置为assetbundle(fbx不属于项目选项卡),那个就可以了


(编辑)


使用trilib资产是最好的方法。我试着做自己的FBX加载器,这太难了,而且是一项艰巨的工作。我认为trilib并不完美,但它是最好的。

您可以阅读以下内容:

:

简言之,没有

Unity不支持同时导入/加载任何模型格式 运行时。唯一的例外是资产绑定。你的选择是 基本上:

  • 使用资产抵押

  • 为Unity查找所需格式的导入程序

  • 你自己写这样一封信

  • 查找功能请求/自己编写一个,询问UT是否添加了运行时模型加载例程

:

是否有将三维模型转换为资产包的工具?还是这样 可以在运行时转换它们吗

您不能在运行时执行此操作 因为创建Assetbundle的每个Unity API仅在 编辑器仅用于编辑器插件

我在很多网站上搜索这个问题。最后,我建议你可以使用这项资产。它不是免费的,而是值得的。它可以为你节省很多时间


希望对您有帮助。

您可以考虑将FBX转换成GLTF,GUTF可以在UNITYGLTF工具的运行时加载。

Unity不能直接加载fbx文件,但可以在运行时加载obj文件,您可以将fbx文件转换为obj文件

  • 使用命令行脚本将fbx转换为obj文件
  • 在Unity运行时加载obj
  • 将fbx/dae转换为obj的一种方法是使用Blender命令行,因此您应该安装Blender(支持平台:Linux、Mac、Windows)。 创建此python文件:

    导入bpy
    导入系统
    对于bpy.data.objects中的obj:
    如果(obj.name==“Lamp”)|(obj.name==“Camera”)|(obj.name==“Cube”):
    obj.select=False
    其他:
    obj.select=True
    argv=sys.argv
    argv=argv[argv.index(“-”)+1:]
    inputpath=argv[0]
    outputpath=argv[1]
    bpy.ops.import_scene.fbx(filepath=inputpath,axis_forward='-Z',axis_up='Y',directory=“”,filter_glob=“*.fbx”,ui_tab='MAIN',使用_手动_方向=False,全局_比例=1,烘焙_空间_变换=False,使用_自定义_法线=True,使用_图像_搜索=True,使用_alpha_贴花=False,贴花偏移=0,使用_动画=True,动画偏移=1,使用_自定义_道具=True,使用_自定义_道具_枚举作为_字符串=True,忽略_叶子_骨骼=False,强制_连接_子对象=False,自动_骨骼定向on=False,主骨骼轴为Y,次骨骼轴为X,使用prepost\u rot=True)
    bpy.ops.export\u scene.obj(filepath=outputpath,check\u existing=False,axis\u forward='-Z',axis\u up='Y',filter\u glob=“*.obj;*.mtl”,使用\u选择=真,使用\u动画=假,使用\u网格\u修改器=真,使用\u网格\u修改器\u渲染=假,使用\u边=真,使用\u平滑\u组=假,使用\u平滑\u组\u位标志=假,使用\u法线=真,使用\u UV=真,使用\u材质=真,使用\u三角形=假,使用\u nurbs顶点=假,使用\u组=假,使用\u blen\u对象=真,按对象分组=假,按材质分组erial=False,保持顶点\顺序=False,全局\比例=1,路径\模式=“复制”)
    打印(“完成!”)
    
    在shell中运行此文件:

    /your blender path/blender--background--python/your python path/convert.py--/your input path/xxx.fbx/your output path/xxx.obj
    
    最后,使用此插件在运行时加载obj文件:


    更多关于Burnter命令行导入和导出文件:

    。您可以使用,但它在不久前就有问题,我最近没有使用它。这是最好的解决方案,您可以简单地将FBX转换成服务器端的No.js C++扩展的GLTF。