Commit Graph

41 Commits

Author SHA1 Message Date
graham wihlidal
aa0e88a3cc [Nanite-Skinning] Fix up bone indices when there are bone maps that perform bone index remapping
#rb halfdan.ingvarsson, kiaran.ritchie
#jira UE-210664

[CL 32610973 by graham wihlidal in ue5-main branch]
2024-03-29 05:25:22 -04:00
graham wihlidal
48d58b1fd4 [Nanite-Skinning] Initial implementation of Nanite mesh builder and simplifier support for USkeletalMesh
#jira UE-210664
#rb Brian.Karis
#fyi rune.stubbe, halfdan.ingvarsson, jamie.hayes

[CL 32537348 by graham wihlidal in ue5-main branch]
2024-03-27 02:36:48 -04:00
graham wihlidal
327d29d1cd [Backout] - CL32536193
#fyi graham.wihlidal
Original CL Desc
-----------------------------------------------------------------
[Nanite-Skinning] Initial implementation of Nanite mesh builder and simplifier support for USkeletalMesh

#jira UE-210664
#rb Brian.Karis
#fyi rune.stubbe, halfdan.ingvarsson, jamie.hayes

[CL 32536669 by graham wihlidal in ue5-main branch]
2024-03-27 00:04:44 -04:00
graham wihlidal
b5e64fd7ec [Nanite-Skinning] Initial implementation of Nanite mesh builder and simplifier support for USkeletalMesh
#jira UE-210664
#rb Brian.Karis
#fyi rune.stubbe, halfdan.ingvarsson, jamie.hayes

[CL 32536193 by graham wihlidal in ue5-main branch]
2024-03-26 22:53:16 -04:00
graham wihlidal
222d5992e1 Minor code cleanup
#jira none

[CL 32495908 by graham wihlidal in ue5-main branch]
2024-03-26 00:02:49 -04:00
halfdan ingvarsson
168fcbee1a Skeletal Mesh: Change storage of morph target normals to be on vertex instances rather than vertices, to match how the base normals are stored. Add a backward compatibility path for skeletal meshes imported from Alembic files that have manually constructed UMorphTargets to support non-standard normals on the morph targets.
#jira UE-204464
#rb benoit.gadreau
#rnx

[CL 31566631 by halfdan ingvarsson in ue5-main branch]
2024-02-16 11:06:04 -05:00
alexis matte
7ff253d7ab Interchange: Fix skeletal mesh reimport: custom LODs, Alternate skin profiles and Cloth binding are now re-importing properly.
- Also fix the legacy alternate skinning if there is custom LODs in the asset. The alternate skin profiles are not lost anymore

#jira UE-205049 , UE-204958 , FORT-705238
#rb JeanLuc.Corenthin
#rnx

[CL 31335966 by alexis matte in ue5-main branch]
2024-02-09 07:59:04 -05:00
halfdan ingvarsson
b469488f3d Skeletal Mesh: Allow importing alt influence meshes with mismatched bones.
#rb kiaran.ritchie
#jira UE-204814
#rnx

[CL 30869573 by halfdan ingvarsson in ue5-main branch]
2024-01-24 19:44:15 -05:00
halfdan ingvarsson
b692d6e175 Skeletal Mesh: Change the import storage to use FMeshDescription instead of FSkeletalMeshImportData. This includes deprecating the USkeletalMesh::LoadLODImportedData and friends, in lieu of an API more similar to the one on UStaticMesh (GetMeshDescription/CommitMeshDescription/etc).
#jira UE-166343
#rb Alexis.Matte, benoit.gadreau, john.vanderburg

[CL 30711382 by halfdan ingvarsson in ue5-main branch]
2024-01-19 00:37:06 -05:00
halfdan ingvarsson
d9d24a10d6 Skeletal Mesh: Allow creation, use and cooking of arbitrary per-vertex attributes on skeletal meshes.
#jira UE-141809
#rb alexis.matte, josie.yang
#preflight 643f3b0b8d0bcde49c23411f

[CL 25099619 by halfdan ingvarsson in ue5-main branch]
2023-04-18 21:22:54 -04:00
henry falconer
4510b454c4 Allow users to limit the number of bone influences per vertex below what the project supports.
BoneInfluencesLimit can be set on each LOD of an asset. DefaultBoneInfluencesLimit is a per-platform global default that can be set from the project settings.

This allows you to, for example, enable Unlimited Bone Influences on a project while ensuring that meshes don't use more than 8 influences by default, even if they've been imported with more.

#rb alexis.matte,josie.yang
#preflight 6380959cf514e1ded907774d

[CL 23265588 by henry falconer in ue5-main branch]
2022-11-25 08:32:25 -05:00
henrik karlsson
b5b86c796c This change is a strategical submit for a coming change that removes lots of includes in headers that are included by many files. This change contains adding of includes in files that previously got those includes transitively from other inclkudes
#preflight 6355d4940313c24974b2107b
#rb none

[CL 22783162 by henrik karlsson in ue5-main branch]
2022-10-26 12:57:32 -04:00
Alexis Matte
a02efd7bfe Remove original reduction data. Use the source data and the build instead.
#jira UE-123770
#rb richard.talbotwatkin, danny.couture
#rnx
#preflight 614a2277b4b2fb0001a3e833

[CL 17587301 by Alexis Matte in ue5-main branch]
2021-09-21 16:04:32 -04:00
Josie Yang
a62f714a51 Morph target engine modifications for 3rd party plugin
#fyi alexis.matte, brian.white, christopher.waters, mihnea.balta, rolando.caloca, will.damon, halfdan.ingvarsson, kevin.ortegren

[CL 17444191 by Josie Yang in ue5-main branch]
2021-09-07 09:55:32 -04:00
alexis matte
b3c7cf086a Fix a collect garbage issue when loading skeletalmesh DDC. The repro step are simple but not repro easily, The issue happen when we load a map which load all asset and then unload the current map which trig a GC. At this point its possible all async SK cache not done.
#rb danny.couture
#preflight 6101a2cf0bf6fc0001387791


#ROBOMERGE-SOURCE: CL 16986908
#ROBOMERGE-BOT: (v838-16927207)

[CL 16987928 by alexis matte in ue5-main branch]
2021-07-28 17:22:22 -04:00
Andrew Davidson
3ddc3a4da3 Merge up from //UE5/Dev-LargeWorldCoordinates
#rb none

[CL 16211417 by Andrew Davidson in ue5-main branch]
2021-05-05 15:07:25 -04:00
Marc Audy
0cbbc781ca Merge UE5/Release-Engine-Staging @ 15740152 to UE5/Main
This represents UE4/Main @ 15709114

[CL 15740605 by Marc Audy in ue5-main branch]
2021-03-18 15:20:03 -04:00
danny couture
6929adbfaa Skeletal Mesh Async Compilation Framework (Phase 1)
Phase 1 adds the async compilation without introducing any higher-level awareness.
  This step provides the biggest performance improvements by allowing skeletal mesh to be compiled in
  multiple threads but stalls are expected to occur before the level has finished loading as soon as
  properties of skeletal meshes are accessed by the game-thread.

  - Make skeletal mesh reduction and renderdata building thread-safe where needed
  - Add protection on all USkeletalMesh accessors so the game-thread can wait on data still being built if needed
  - Modify both PostLoad and Build to be async when the feature is enabled
  - Make FRawSkeletalMeshBulkData::LoadRawMesh thread-safe
  - Fix some PropertyChangedEvent name comparison to use strongly typed GET_MEMBER_NAME_CHECKED
  - Add an experimental setting options to enable the feature (disabled by default for now)

DEBUGGING
 - Can be forcibly enabled/disabled through command-line via -asyncskeletalmeshcompilation=[off, on, paused]
 - Can pause skeletal mesh compilation using Editor.AsyncSkeletalMeshCompilation = 2 or -asyncskeletalmeshcompilation=paused
 - Can manually resume a specified amount of paused compilation using Editor.AsyncSkeletalMeshCompilationResume [Num]
 - Can forcibly wait on all compilation using Editor.AsyncSkeletalMeshCompilationFlushAll

BENCHMARKS
  Tested on AMD TR 3970X with 256GB RAM
  - 6m50s to 2m58s for loading P_Construct with a local-only DDC that doesn't contains any prebuilt skeletal mesh
  - 3m10s to 39s for importing 299 SK with the Interchange framework

TESTS
 - Opened all 5769 SK from FortniteGame to exercise all legacy conversion code paths
 - Opened all 102 SK from QAGame
 - Opened P_Construct, Apollo_Terrain, LumenTest, P_World
 - Imported 299 SK with and without Interchange activated
 - Ensure no new regression introduced in any of the 70 SK related tests from EngineTest
 - Run all FBX import test in EngineTest
 - Cook / Run ShooterGame Client

#rb Alexis.Matte

[CL 15452895 by danny couture in ue5-main branch]
2021-02-18 11:19:19 -04:00
Alexis Matte
cb0bb41e64 If migration is not able to reconnect a skeletalmesh skeleton, the engine will crash when loading the skeletalmesh and the user will not be able to re-assign the proper skeleton.
#jira none
#rb laurent.delayen

[CL 15397499 by Alexis Matte in ue5-main branch]
2021-02-12 10:15:20 -04:00
danny couture
4797b6f721 Add Insights tag in Skeleton Simplifier
#rb Alexis.Matte

[CL 14815856 by danny couture in ue5-main branch]
2020-11-26 10:04:22 -04:00
Alexis Matte
73d83c6a38 To protect the skeletalmesh when using async operations like build or re-import we deprecate all public member variables of USkeletalMesh class and create the necessary getter and setter. Those member will stay public but will be move to private in a future release.
Adding a public member to USkeletalMesh class is now prohibed since it can break asynchronous operations that will be added next to this submit.

#rb danny.couture
#jira UEENT-3936
#rnx

[CL 14812920 by Alexis Matte in ue5-main branch]
2020-11-25 11:17:08 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
alexis matte
c6e54bec17 Fix custom LOD workflow, the insert LOD into the base mesh function was not updated to work with the skeletalmesh refactor
#rb Benoit.deschenes
#jira UE-89848

#ROBOMERGE-SOURCE: CL 11825745 in //UE4/Release-4.25/... via CL 11825831
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)

[CL 11825857 by alexis matte in Main branch]
2020-03-02 11:26:42 -05:00
alexis matte
fe12264686 when building skeletalmesh, force the tangent and normal options to true if the source data do not have the tangents or normals data.
#jira UE-89567
#rb none

#ROBOMERGE-SOURCE: CL 11635503 in //UE4/Release-4.25/... via CL 11635506
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v655-11596533)

[CL 11635517 by alexis matte in Main branch]
2020-02-26 12:40:59 -05:00