私はhololensプロジェクトにいます。上司によれば、実行時にfbxファイルをロードします(私たちはUnityを使用しています)。 fbxファイルは実行時に変更されるため、再ロードする必要があります(fbxは3dMAxからの変更です)。
AssetBundleを試しましたが、UnityまたはUnityエディターモードがないとAssetbundleファイルを作成できません。私の知る限りでは、([プロジェクト]タブの)リソースのみがアセットをアセットバンドルに挿入できます。 UnityプロジェクトなしでfbxファイルでAssetbundleファイルをビルドできれば、すべてを実行できます。
まとめると、Unityリソースなしで実行時にfbxをロードする方法が必要です。ランタイムでfbxアセットをassetbundleにした場合(fbxはプロジェクトタブに属していません)、問題ありません。
編集)
Trilibアセットを使用するのが最善の方法です。私は自分のFBXローダーを作ってみます。それは難しすぎて、大きな仕事です。 trilibは完璧ではないと思いますが、それが一番です。
あなたはフォローコンテンツを読むことができます:
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は、Editor for Editorプラグインでのみ使用できるため、ランタイム中に行うことはできません。
私はこの質問について多くのウェブサイトを検索します。最後に、このアセットを使用することをお勧めします。無料ではありませんが、価値はあります。時間を大幅に節約できます。
これがお役に立てば幸いです。
FBXをglTFに変換することを検討できます。Unityは、実行時にUnityGLTFツールを使用して読み込むことができます。
Unityはfbxファイルを直接ロードできませんが、実行時にobjファイルをロードできます。fbxファイルをobjファイルに変換できます。
Fbx/daeをobjに変換する1つの方法は、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!")
シェルでこのファイルを実行します。
/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
ファイルをインポートおよびエクスポートするためのブレンダーコマンドラインの詳細: https://blender.stackexchange.com/questions/16563/how-can-i-run-blender-from-the-command-line-to-export -and-import-models