Export FBX in Unity
유니티에서 생성한 FBX 파일을 스크립트 코드를 통해 익스포트해야 하는 미션이 주어졌다.
이 fbx파일은 애니메이션을 포함하는 버전인데, 어떻게 진행해야 하는지 알아보자.
char GPT를 통해서 알아보니 유니티에서 제공하는 FBXExporter 클래스가 있다고 한다. (결국 사실이 아님이 들통났다...)
using UnityEditor;
using UnityEngine;
public class FBXExporterScript : MonoBehaviour
{
[MenuItem("Custom/Export FBX With Animation")]
static void ExportFBXWithAnimation()
{
string path = "Assets/ExportedAnimation.fbx"; // Specify the file path and name for the exported FBX file
// Select the GameObject with the animation you want to export
GameObject gameObject = Selection.activeGameObject;
if (gameObject == null)
{
Debug.LogError("Please select a GameObject with animation.");
return;
}
// Create a new FBXExporter instance
var fbxExporter = new FBXExporter();
// Set up the exporter with the GameObject and animation settings
fbxExporter.Init(gameObject, new FBXExportSettings());
// Export the FBX file with animation
fbxExporter.Export(path);
// Destroy the exporter instance
fbxExporter.Dispose();
Debug.Log("FBX export completed: " + path);
}
}
샘플 예제 코드는 위와 같다.
이걸 응용해서 작업해보자.
일단 패키지 매니저를 열고 exporter를 깔아주자.
다음 작업은
https://docs.unity3d.com/Packages/com.unity.formats.fbx@2.0/manual/devguide.html
를 보고 진행해주자.
사실 매우 간단하다.
using UnityEditor.Formats.Fbx.Exporter;
GameObject[] gameObject = new GameObject[1];
gameObject[0] = GameObject.Find("actor1");
if (gameObject == null)
{
Debug.LogError("Please select a GameObject with animation.");
return;
}
// Create a new FBXExporter instance
string path = "Assets/ExportedAnimation.fbx"; // Specify the file path and name for the exported FBX file
ModelExporter.ExportObjects(path, gameObject);
이런식으로 짜주면 끝. 과연 잘 돌아갈까?
이런 에러가 발생한다. 관련 모델로 가서
read/write 항목을 켜주자. 그런다음 다시 실행
설마 이렇게 간단하게 되나?
일단 익스포트가 되긴 하는데 용량이 엄청 크다.
메시의 형상은 잘 출력해주는것으로 확인된다. 애니메이션은 내가 특수한 구조를 사용하기 때문에 내가 원하는 형태의 출력은 되지 않네..
그리고 내가 이 객체에 애니메이션을 주는 방식이 매 프레임마다 관절각을 넣어주는 방식인데, 첫 프레임만 익스포트 된 것으로 확인된다. 어떻게 하면 애니메이션을 다 넣어서 익스포트 할 수 있을까?....
모델 객체에 cli manager 안에 flag를 Play로 바꾼 후에 익스포트 하면 애니메이션이 잘 나올지도 모르겠다는 생각이 들어서 해본다.
음 딱 익스포트한 해당 프레임만 뽑혀져서 나오는 것이 확인된다.
어떻게 하면 애니메이션을 넣어서 익스포트 할 수 있으려나?....