Commit Graph

197 Commits

Author SHA1 Message Date
david hill
9c517778ec SkeletalMesh Simplification. Adding the ability to select the original version of an attribute gradient that results in better triangle density for cloth but potentially worse UVs (on by default), or an improved attribute gradient.
This primarily affects 2d meshes that are on a plane that intersects the origin.

#jira UE-193309
#rb alexis.matte

[CL 27632735 by david hill in ue5-main branch]
2023-09-06 09:51:41 -04:00
euan carmichael
75b58903d1 Fix issue where screen size property isn't correctly hidden in skel mesh details customization when driving LOD settings from data asset
#jira UE-193189
#fyi alexis.matte

[CL 27155332 by euan carmichael in ue5-main branch]
2023-08-16 17:14:25 -04:00
halfdan ingvarsson
b1e0ee53b3 Skeletal Mesh: When adding/removing vertex attributes, ensure the asset detail view is synchronized with the LOD info list of vertex attributes. Also fixes other undo issues with Bones to Prioritize, Bones to Remove.
#jira UE-189099, UE-97361
#rnx

[CL 26112841 by halfdan ingvarsson in ue5-main branch]
2023-06-19 22:13:26 -04:00
Luke Thatcher
abbd2f8170 Remove FVertexElementTypeSupportInfo and GVertexElementTypeSupport
- Old unused code path (from 2007!!!, CL 182619).
 - IsSupported() always returns true since nothing ever calls SetSupported().

#rb jeannoe.morissette
#preflight 63c9635d2a6acaf1628c2a67
#jira none

[CL 23774202 by Luke Thatcher in ue5-main branch]
2023-01-19 10:58:35 -05:00
Alexis Matte
33bb511fb0 Fix re-import of skeletalmesh, the PreferredReimportPath should not be test if empty.
Add reimport callback to refresh the UI when we reimport a skeletalmesh

#jira UE-173402
#rb jeanluc.corenthin
#fyi bojan.brankov
#rnx
#preflight 63b8771b68068a8bd63d0b1b

[CL 23601639 by Alexis Matte in ue5-main branch]
2023-01-06 14:46:46 -05:00
Jeremy Moore
229a2ac650 In some places where we use IsGPUSkinCacheAvailable() to determine if a buffer requires an SRV, replace with IsGPUSkinPassThroughSupported().
This covers both SkinCache and MeshDeformer cases.
#preflight 63b44aa11c35d1cbdb2a28fb

[CL 23566664 by Jeremy Moore in ue5-main branch]
2023-01-03 10:47:03 -05: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
kriss gossart
593ffac9c3 Cloth - Deprecate APEX collision from the ClothLODData structure.
#rb Benn.Gallagher
#preflight 63726df2b6636838286d0ccc
#jira none

[CL 23133965 by kriss gossart in ue5-main branch]
2022-11-15 06:25:00 -05:00
Thomas Sarkanen
d9c2b172f7 Skeleton compatibility improvements
Skeleton compatibility is now bi-directional. Specifying a compatible skeleton A -> B now implies B -> A.
Skeleton compatibility is now an editor-only concern. The runtime will attempt to do the 'best it can' via name -> name mappings. Only the editor will prevent assigning incompatible skeletons in (e.g.) asset pickers etc.
Skeleton compatibility checks in editor can now be disabled in the editor preferences (and each asset picker now has a checkbox option in its view settings that allows for quick access to this).

Moves FSkeletonRemapping to its own file (which is now private).
Skeleton remappings are now generated on demand on worker threads just before animation decompression and stored in a registry, guarded by FRWScopeLock for thread-safety.

Fixed some anim BP compiler edge cases where asset references on pins were not getting preloaded correctly, causing skeletons to be erroneously reported as missing.

Exposed the current asset registry filter in SAssetView so that menu extensions can access it (and use it to provide context)

#jira UE-166054
#jira UE-167355
#rb Jurre.deBaare,John.vanderBerg
#preflight 635902602e6690262afa86f9

[CL 22878911 by Thomas Sarkanen in ue5-main branch]
2022-11-01 06:25:59 -04:00
henrik karlsson
4a5e13525d Fixed non-unity non-pch compile errors
#preflight skipped
#rb none

[CL 22788359 by henrik karlsson in ue5-main branch]
2022-10-26 16:22:34 -04:00
Jurre deBaare
67babaec16 ANIM-RT truncation fixes - Persona
#jira UE-166635
#rb Jaime.Cifuentes, Thomas.Sarkanen
#preflight 63513298047f3570addbcffe

[CL 22653074 by Jurre deBaare in ue5-main branch]
2022-10-20 07:59:06 -04:00
alexis matte
fe35eb697a Interchange:
- Skeletal mesh is now import using the skeletalmesh compile system to make sure all properties are locked and will stall another thread trying to access them.
---- This fix multiple crash if a viewer display the skeletal mesh and use some properties.
- Remove animation pipeline ensure(no skeleton) if we import with force static mesh and there is some translated animation node
- Fix crash when importing static mesh and the get mesh payload return an empty mesh description
- Reimport of skeletalmesh is not calling anymore postedit change if we reimport with interchange, interchange will call it in a post edit step.
---- This fix multiple crash if a viewer display the bones of the re-import skeletal mesh.
General:
- Reimport handler now have a reimport async version so the caller can control if a reimport is done asynchronously or synchronously

#jira UE-166986
#rb danny.couture , jeanluc.corenthin
#rnx
#lockdown jeanmichel.dignard
#preflight 634f61fdec03b54e9cdfe0bf

[CL 22634973 by alexis matte in ue5-main branch]
2022-10-19 15:15:54 -04:00
halfdan ingvarsson
e2210cb024 Support for 16-bit skin weights on the skelmesh.
The main change is that FSoftSkinVertex, used by FSkeletalMeshLODModel, in now stores weights as 16-bit after conversion from the import data. This increases the size of each FSoftSkinVertex from 144 bytes to 160 bytes (about 10% increase). By default render meshes still use 8-bit skin weights, with weights downshifted from the 16-bit modeling data, so no change in GPU memory consumption there. However, the vertex buffer will automatically return a 16-bit skin weights when requested from the GPU side (e.g. for CPU skinning and viewing tangents).

This change in the model data and vertex buffer CPU-side query, resulted in many changes throughout the codebase and will have an effect on licensees who are actively reading from and writing to these two storage locations.

The GPU skin cache shader has had one more permutation added when not using unlimited skin weights. The vertex factory is not affected.

#jira UE-164386
#rb alexis.matte, josie.yang
#preflight 632c0c5ab4515b7e22b4804d

[CL 22215219 by halfdan ingvarsson in ue5-main branch]
2022-09-27 19:48:05 -04:00
serge bernier
f540d59aa7 Expose PerQualityLevelsMinLod Set/Get to blueprints. Can also set the Default value if user input a value >= 0.
#rb josh.Adams

[CL 21929847 by serge bernier in ue5-main branch]
2022-09-09 18:17:10 -04:00
Robb Surridge
0a5a02c5b2 Coding standard fixes: gender-inclusive language
#jira UE-156429
#preflight 62b32e826a25ba6ae52f94bd
#rb jason.walter

[CL 20795375 by Robb Surridge in ue5-main branch]
2022-06-23 11:14:07 -04:00
Benn Gallagher
8757cb3641 Physics interface cleanup.
* Removed deprecated or dead code paths
* Simplified build system setup for physics support
* Deprecated build system flags and unsupported macros

#jira none
#rb Chris.Caulfield, Kriss.Gossart
#preflight 62963ec0fe779f23c8ea0c5e

[CL 20450744 by Benn Gallagher in ue5-main branch]
2022-06-01 06:59:18 -04:00
robert manuszewski
d1443992e1 Deprecating ANY_PACKAGE.
This change consists of multiple changes:

Core:
- Deprecation of ANY_PACKAGE macro. Added ANY_PACKAGE_DEPRECATED macro which can still be used for backwards compatibility purposes (only used in CoreUObject)
- Deprecation of StaticFindObjectFast* functions that take bAnyPackage parameter
- Added UStruct::GetStructPathName function that returns FTopLevelAssetPath representing the path name (package + object FName, super quick compared to UObject::GetPathName) + wrapper UClass::GetClassPathName to make it look better when used with UClasses
- Added (Static)FindFirstObject* functions that find a first object given its Name (no Outer). These functions are used in places I consider valid to do global UObject (UClass) lookups like parsing command line parameters / checking for unique object names
- Added static UClass::TryFindType function which serves a similar purpose as FindFirstObject however it's going to throw a warning (with a callstack / maybe ensure in the future?) if short class name is provided. This function is used  in places that used to use short class names but now should have been converted to use path names to catch any potential regressions and or edge cases I missed.
- Added static UClass::TryConvertShortNameToPathName utility function
- Added static UClass::TryFixShortClassNameExportPath utility function
- Object text export paths will now also include class path (Texture2D'/Game/Textures/Grass.Grass' -> /Script/Engine.Texture2D'/Game/Textures/Grass.Grass')
- All places that manually generated object export paths for objects will now use FObjectPropertyBase::GetExportPath
- Added a new startup test that checks for short type names in UClass/FProperty MetaData values

AssetRegistry:
- Deprecated any member variables (FAssetData / FARFilter) or functions that use FNames to represent class names and replaced them with FTopLevelAssetPath
- Added new member variables and new function overloads that use FTopLevelAssetPath to represent class names
- This also applies to a few other modules' APIs to match AssetRegistry changes

Everything else:
- Updated code that used ANY_PACKAGE (depending on the use case) to use FindObject(nullptr, PathToObject), UClass::TryFindType (used when path name is expected, warns if it's a short name) or FindFirstObject (usually for finding types based on user input but there's been a few legitimate use cases not related to user input)
- Updated code that used AssetRegistry API to use FTopLevelAssetPaths and USomeClass::StaticClass()->GetClassPathName() instead of GetFName()
- Updated meta data and hardcoded FindObject(ANY_PACKAGE, "EEnumNameOrClassName") calls to use path names

#jira UE-99463
#rb many.people
[FYI] Marcus.Wassmer
#preflight 629248ec2256738f75de9b32

#codereviewnumbers 20320742, 20320791, 20320799, 20320756, 20320809, 20320830, 20320840, 20320846, 20320851, 20320863, 20320780, 20320765, 20320876, 20320786

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20430220 via CL 20433854 via CL 20435474 via CL 20435484
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)

[CL 20448496 by robert manuszewski in ue5-main branch]
2022-06-01 03:46:59 -04:00
Lauren Barnes
6248f8d412 Replacing legacy EditorStyle calls with AppStyle
#preflight 6272a74d2f6d177be3c6fdda
#rb Matt.Kuhlenschmidt

#ROBOMERGE-OWNER: Lauren.Barnes
#ROBOMERGE-AUTHOR: lauren.barnes
#ROBOMERGE-SOURCE: CL 20057269 via CL 20070159 via CL 20072035 via CL 20072203
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
#ROBOMERGE-CONFLICT from-shelf

[CL 20105363 by Lauren Barnes in ue5-main branch]
2022-05-09 13:12:28 -04:00
thomas sarkanen
e832a0d616 Correctly tag custom rows in anim sequence and skeletal mesh details customizations
#rb Jurre.deBaare
#preflight 6246d295323cb7b9911fe6cb

#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 19586446 via CL 19586824 via CL 19586833 via CL 19586842
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v938-19570697)

[CL 19587520 by thomas sarkanen in ue5-main branch]
2022-04-01 09:41:25 -04:00
serge bernier
a558eda684 Add support for QualityLevelMinLod in SkeletalMesh.
-add clear minlod conversion data
 -add QualityLevelMinLOD tags for static meshes
 -fix qualityLevel property customization OnAddEntry and OnRemoveEntry slate event

#rb [at]jack.porter,[at]jian.ru
#test consoles, pc, mobile (results FNTEST-66031)

#ROBOMERGE-OWNER: serge.bernier
#ROBOMERGE-AUTHOR: serge.bernier
#ROBOMERGE-SOURCE: CL 19129732 via CL 19131639 via CL 19133087 via CL 19134011 via CL 19137049
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19155608 by serge bernier in ue5-main branch]
2022-02-25 15:46:30 -05:00
Alexis Matte
e9e162a4fc Make sure old imported skeletalmesh (pre 4.24) have a "Regenerate" button verify the ddc key against the current state. This will ensure user apply there changes before quiting the persona editor.
#jira none
#rb rob.krajcarski
#rnx
#preflight 621688c537178b0175b49685
#preflight 62168e14c152c67496eb3efe

[CL 19098283 by Alexis Matte in ue5-main branch]
2022-02-23 14:46:38 -05:00
kriss gossart
095e4de8c1 Cloth - Update tooltip on the delete cloth asset button.
#rb trivial
#preflight 62153a11141b500e17ec654c
#jira none
#fyi Tim.Brakensiek

[CL 19085906 by kriss gossart in ue5-main branch]
2022-02-23 05:10:03 -05:00
jian ru
88cdba5964 Add a NoRefStreamingLODBias setting for static and skeletal meshes. As the name suggests, it is a LOD bias that is only applied when a mesh doesn't have any component reference. The setting can be found in the static and skeletal mesh editors under the LOD Settings section. The default value is -1 which means using the value of r.Streaming.DefaultNoRefLODBias. If it is greater than or equal to 0, then the specified value will be used. The setting is implemented as a per quality level variable so users can specify different values for different quality levels. Users select what quality levels to use by setting r.Streaming.NoRefLODBiasQualityLevel under the ViewDistanceQuality sections in platform scalability ini files. For example, adding r.Streaming.NoRefLODBiasQualityLevel=0 and r.Streaming.NoRefLODBiasQualityLevel=1 to [ViewDistanceQuality[at]0] and [ViewDistanceQuality[at]1], respectively, in WindowsClientEngine.ini will make low and medium no-ref LOD biases selectable at runtime and they will be changed accordingly when changing view distance qualities. Since no value is specified for view distance quality 2 and up, the default no-ref LOD bias will be used. Note that this is the default value of the NoRefStreamingLODBias setting on a specific mesh. It is not r.Streaming.DefaultNoRefLODBias. The default value will be automatically set to the value of the lowest selected quality level. In the above example, if NoRefStreamingLODBias is 2 for low and 1 for medium, the default will be 2. If this is not desired, it is advised to explicitly specify the desired quality levels for all view distance qualities.
[FYI] bryce.lumpkin

#ROBOMERGE-OWNER: jian.ru
#ROBOMERGE-AUTHOR: jian.ru
#ROBOMERGE-SOURCE: CL 18501525 via CL 18501528 via CL 18501554 via CL 18501558 via CL 18505821 via CL 18505838
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18505843 by jian ru in ue5-release-engine-test branch]
2022-01-04 00:07:26 -05:00
alexis matte
c7fa5eb100 Add section to prioritize sharing the prioritize weight value. This will allow to reduce less a particular section.
#rb david.hill

#ROBOMERGE-AUTHOR: alexis.matte
#ROBOMERGE-SOURCE: CL 18418769 via CL 18418788 via CL 18418808 via CL 18435056 via CL 18437373
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18437648 by alexis matte in ue5-release-engine-test branch]
2021-12-10 20:57:51 -05:00
alexis matte
4ef550e3a2 [Backout] - CL18299908
[FYI] Alexis.Matte
Original CL Desc
-----------------------------------------------------------------
Add section to prioritize sharing the prioritize weight value. This will allow to reduce less a particular section.
#rb david.hill

#ROBOMERGE-AUTHOR: alexis.matte
#ROBOMERGE-SOURCE: CL 18303911 via CL 18303917 via CL 18303919 via CL 18304027 via CL 18304034
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18304035 by alexis matte in ue5-release-engine-test branch]
2021-11-27 12:40:45 -05:00