UE5基于RumtimeFBXImport插件使用C++加载服务器上fbx文件方法

        UE5的RumtimeFBXImport插件其实只能加载本机的fbx文件,要加载服务器上的fbx文件的话,需要先将该fbx文件下载到本地,然后再使用RumtimeFBXImport插件加载。

        示例文件如下:

#include "Loader/WebLoader.h"
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
#include "HttpModule.h"
#include "Http.h"
#include "FBXImportManager.h"

AWebLoader::AWebLoader(){}

void AWebLoader::BeginPlay()
{
	Super::BeginPlay();

	if (WebFbxPath.Len() > 0)
	{
		LoadFileFromServer(WebFbxPath);
	}
}

void AWebLoader::LoadFileFromServer(const FString& URL)
{
	TSharedRef<IHttpRequest, ESPMode::ThreadSafe> HttpRequest = FHttpModule::Get().CreateRequest();
	HttpRequest->SetURL(URL);
	HttpRequest->SetVerb("GET");
	HttpRequest->OnProcessRequestComplete().BindUObject(this, &AWebLoader::OnFileDownloadComplete);
	HttpRequest->ProcessRequest();
}

void AWebLoader::OnFileDownloadComplete(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
	if (bWasSuccessful && Response.IsValid() && Response->GetResponseCode() == EHttpResponseCodes::Ok)
	{
		FString ProjectRoot = FPaths::Combine(FPaths::ProjectDir(), LocalRelatedPath);
		FString FileName = FPaths::GetCleanFilename(WebFbxPath);
		FString LocalFullPath = FPaths::Combine(ProjectRoot, FileName);

		if (!FFileHelper::SaveArrayToFile(Response->GetContent(), *LocalFullPath))
		{
			UE_LOG(LogTemp, Error, TEXT("File downloaded failed!"));
			return;
		}
		//
		LoadLocalFBX(LocalFullPath);
	}
	else
	{
		UE_LOG(LogTemp, Error, TEXT("File download failed."));
	}
}

void AWebLoader::LoadLocalFBX(FString LocalFullPath)
{
	if (!FBXImportManager)
	{
		FBXImportManager = GetWorld()->SpawnActor<AFBXImportManager>();
	}

	FBXImportManager->InitializeFBXLoad();
	FBXImportManager->ImportFBXFile(LocalFullPath, FVector::UpVector, BaseMaterial, EFBXCollisionType::MeshCollision);
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FBX(Filmbox)是一种用于3D模型和动画交换的文件格式。要解析FBX文件,以下是一种简单的方法: 1. 导入库:首先,你需要使用支持FBX文件的库或软件开发工具包(SDK),如FBX SDK或Assimp。这些库将提供你需要解析和处理FBX文件的功能。 2. 打开文件使用库中提供的函数,打开FBX文件。这将加载文件的内容以供后续操作使用。 3. 访问节点和属性:FBX文件是基于节点和属性组成的层次结构。使用库提供的函数,你可以遍历所有的节点和属性。这些节点和属性包含了模型的各种信息,如几何形状、材质、动画等。 4. 提取数据:根据你的需求,从节点和属性中提取所需的数据。例如,你可以获取模型的顶点坐标、法线、纹理坐标等信息。如果文件包含动画,你还可以提取关键帧、骨骼绑定等动画相关的数据。 5. 进一步处理:一旦你提取了所需的数据,你可以根据你的需求进行进一步的处理。例如,你可以将模型数据渲染到屏幕上,或者将动画应用于角色模型。 需要注意的是,解析FBX文件可能会涉及到较复杂的算法和数据结构。同时,不同版本的FBX文件可能有所不同,因此你可能需要根据文件的版本做出相应的适配。 总结起来,要解析FBX文件,你可以使用专门的库或SDK,打开文件并访问节点和属性来提取所需的数据,然后根据你的需求进行进一步的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值