我正在hololens项目中。我的老板说,在运行时加载fbx文件(我们使用unity)。 我们的fbx文件在运行时会更改,因此我们必须重新加载它(fbx是3dMAx的更改)。
我尝试了AssetBundle,但是如果没有统一或统一编辑器模式,就无法创建Assetbundle文件。据我所知,只有资源(在“项目”选项卡中)才能将资产插入到资产束中。 如果我可以在没有统一项目的情况下按fbx文件构建Assetbundle文件,那么我可以做到。
总结一下:我需要一种方法,如何在没有统一资源的情况下在运行时加载fbx。 如果我在运行时将fbx资产设置为assetbundle(fbx不属于项目选项卡),则可以。
编辑)
使用trilib资产是最好的方法。 我尝试制作自己的FBX加载器,这太困难了,而且工作量很大。 我认为trilib并不完美,但是最好。
答案 0 :(得分:1)
您可以阅读以下内容:
is-there-an-easy-way-to-import-fbx-files-runtime:
简而言之:不。
Unity不支持在以下位置导入/加载任何模型格式 运行。唯一的例外是AssetBundles。您的选择是 基本上:
使用AssetBundles
找到所需的Unity格式导入器
自己写一个这样的进口商
- 寻找功能请求/自己写信询问UT是否添加了运行时模型加载例程。
how-to-convert-3ds-fbx-model-into-asset-bundle-at-run-time:
是否有将3D模型转换为资产包的工具?还是 可以在运行时转换它们吗?
您不能在运行时 因为每个用于创建Assetbundle的Unity API仅在 仅限编辑器插件的编辑器。
我在许多网站上搜索了这个问题。最后,我建议您可以使用此资产。它不是免费的,但值得。它可以为您节省很多时间。
希望这对您有所帮助。
答案 1 :(得分:1)
您可以考虑将FBX转换为glTF,Unity可以使用UnityGLTF工具在运行时加载它们。
答案 2 :(得分:0)
Unity无法直接加载fbx文件,但可以在运行时加载obj文件,您可以将fbx文件转换为obj文件。
将fbx / dae转换为obj的一种方法是使用Blender命令行,因此您应该安装Blender(支持平台:Linux,Mac,Windows)。 创建此python文件:
import bpy
import sys
for obj in bpy.data.objects:
if (obj.name == "Lamp") | (obj.name == "Camera") | (obj.name == "Cube"):
obj.select = False
else:
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', use_manual_orientation=False, global_scale=1, bake_space_transform=False, use_custom_normals=True, use_image_search=True, use_alpha_decals=False, decal_offset=0, use_anim=True, anim_offset=1, use_custom_props=True, use_custom_props_enum_as_string=True, ignore_leaf_bones=False, force_connect_children=False, automatic_bone_orientation=False, primary_bone_axis='Y', secondary_bone_axis='X', use_prepost_rot=True)
bpy.ops.export_scene.obj(filepath=outputpath, check_existing=False, axis_forward='-Z', axis_up='Y', filter_glob="*.obj;*.mtl", use_selection=True, use_animation=False, use_mesh_modifiers=True, use_mesh_modifiers_render=False, use_edges=True, use_smooth_groups=False, use_smooth_groups_bitflags=False, use_normals=True, use_uvs=True, use_materials=True, use_triangles=False, use_nurbs=False, use_vertex_groups=False, use_blen_objects=True, group_by_object=False, group_by_material=False, keep_vertex_order=False, global_scale=1, path_mode='COPY')
print("finished!")
在shell中运行此文件:
/your blender path/blender --background --python /your python path/convert.py -- /your input path/xxx.fbx /your output path/xxx.obj
最后,使用此插件在运行时加载obj文件: https://assetstore.unity.com/packages/tools/modeling/runtime-obj-importer-49547
有关用于导入和导出文件的Blender命令行的更多信息:https://blender.stackexchange.com/questions/16563/how-can-i-run-blender-from-the-command-line-to-export-and-import-models