ue4 怎么修改骨骼动画_UE4换装系统(合并骨骼模型)
前面那篇UE4換裝系統https://blog.csdn.net/luomogenhaoqi/article/details/88350580,事實上每個身體模型還是各自渲染,現在介紹把每個身體模型合并輸出一個模型,把Lod,材質,網格等合并,性能相對好很多。不過要注意材質是要合并起來的,你的表情的動畫就沒有了。
原則前提:角色骨骼模型換裝原理無非就是把角色模型拆分多個部分,每部份必須使用同一套骨骼。
USkeletalMesh * BodySMC;//作為身體骨骼模型
USkeletalMesh * HeadSMC;//作為頭骨骼模型
USkeletalMesh * HandArmSMC;//作為手臂膀骨骼模型
USkeletalMesh * FootSMC;//作為下半身模型
假如以上模型已經初始化,可使用 LoadObject<USkeletalMesh>( NULL, 資源路徑, NULL, LOAD_None, NULL );
USkeletalMeshComponent* PlayerSMC;//玩家主角模型,假如已經初始化
TArray<USkeletalMesh*> SourceMeshList;//需要合并身體模型,把上面模型都添加到該列表
SourceMeshList.Add( BodySMC);
SourceMeshList.Add( HeadSMC);
SourceMeshList.Add( HandArmSMC);
SourceMeshList.Add( FootSMC );
if ( SourceMeshList.Num() >= 2)//模型數量大于兩個才合并
{
// 創建一個保存最終合成模型 CompositeMesh
USkeletalMesh* CompositeMesh = NewObject<USkeletalMesh>( GetTransientPackage(), NAME_None, RF_Transient );
TArray<FSkelMeshMergeSectionMapping> InForceSectionMapping;
// 創建引擎合并模型實例MeshMergeUtil,參考引擎源碼類SkeletalMeshMerge,里面有具體實現邏輯
FSkeletalMeshMerge MeshMergeUtil( CompositeMesh, SourceMeshList, InForceSectionMapping, 0 );
// 把SourceMeshList合并到CompositeMesh
if (MeshMergeUtil.DoMerge())
{
PlayerSMC->SetSkeletalMesh( nullptr);
PlayerSMC->SetSkeletalMesh( CompositeMesh );//合并成功設置給玩家模型
}
}
---------------------
作者:落寞根號七
總結
以上是生活随笔為你收集整理的ue4 怎么修改骨骼动画_UE4换装系统(合并骨骼模型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: async function_掌握 As
- 下一篇: 三级网络技术_三级网络技术考前选择题—V