Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync #1

Merged
merged 76 commits into from
Aug 21, 2021
Merged

sync #1

merged 76 commits into from
Aug 21, 2021

Conversation

theFoof
Copy link
Owner

@theFoof theFoof commented Aug 21, 2021

No description provided.

- reading and handling UE4 bone retargeting modes, storing in CAnimSet
- replaced "Anim Rotation Only" with "Retargeting Mode"
- initial code for handling bone retargeting while playing SkeletalMesh animation
- storing ReferenceSkeleton in psa file during export
- added TMap::Find()
- added CVec3 x/y/z fields in addition to referencing by component index
- added CQuat methods FromTwoVectors() and RotateVector()
Modern materials could have lots of parameters, so doing case-sensitive comparison instead of case-insensitive to reduce CPU cost of parameter analysis.
Mainly, the code now drops UAnimSequence tracks which are not animated: previous code used ReferenceSkeleton bone position instead, but it didn't work with animations which uses retargeting, i.e. retarget source bone position might differ from the ReferenceSkeleton one.
Reused the code from FReferenceSkeleton serializer
- added TEMP_SHOW_BONES for retargeting debugging
- renamed CSkelMeshInstance::RetargetingMode to RetargetingModeOverride
- some code cleanup
- also updated README.md with PR #195
- Supporting negative Rate in CAnimSequence itself and for PlayAnim() function (e.g. playing positive-rate animation with negative rate)
- Renamed some CSkelMeshInstance::CAnimChan fields for better match their purpose
- Replaced "Time" display in skeletal mesh viewer with "Frame"
There was a possibility to produce a buffer with byteLength 0 in a case bone has no animation tracks. Now bones with no tracks are skipped from glTF output.
- for bHyperlink, color escape codes weren't properly skipped
- GDumpTexts will skip hyperlink escape codes
- renamed some local variables
Moved code from GlWindow.cpp, renamed local variables etc.
- Separated part of DrawTextAnchor() to CheckHyperlink()
- Added DrawText3DH() - a hyperlink version of DrawText3D()
- regognizing the bone which should be highlighted in DrawSkeleton(), storing in HighlightBoneIndex
- highlighting the bone line
- in "show influences" mode, changing the mesh appearance to show the single bone's influences
It might be useful for additive animation support later
Improved output, showing more information, added a possibility to show/select the highlighted bone.
When bone is not able to be processed with OrientAndScale retarget mode, its transform was reverted to the skeleton's transform. Now its rotation is also reverted.
No functionality changes, just changed code structure
Just reused similar the fix from UnAnim4.cpp
- added orange and grey colors
- changed default text color to white (previous one was cyan due to incorrect RGB macro use)
- using enum instead of "int" in instance class and viewer code
- highlighting retargeted bones in SHOW_ANIM mode with orange color, and bind-pose bones with grey one
- clicking at "retargeting" label in skeletal mesh viewer toggles between enabled/disabled state (bypassing "rotation only" mode)
Previous code used current bone's scale, new code only applies parent bones.
See issue #183 for details. Probably this is a temporary workaround, because the problem happens only with PROP_DROP variadic macro.
- See notes in oodle/README.md for build details
- Build logic is in libs/oodle/oodle.project
- Available for Win32/Win64/Linux64/macOS (no Linux32 support)
- Forced to use static CRT + non-MSVCRT.dll on Windows because OLDCRT can't handle oodle library dependencies
- Removed ooz support
- Fixed typo in README.md (see #214)
Folders with index larger than 64k didn't show in UI
There was an optimization made before, however it broke umodel command line with "class name" parameter because argv[] is definitely not allocated with appStrdupPool().
The primary optimization here is to use FastNameComparer helper, and it should be enough, so using stricmp() for class name comparison shouldn't hit performance.
- Separated FindTypeForProperty()
- Added 'int InGame' parameter for multi-version support
- 'ParentInfo' structure now has a possibility to "patch" type declaration for newer engine versions
- Added code comments
Changed LINKFLAGS += -NODEFAULTLIB:libcmt to -NODEFAULTLIB:msvcrt
libcmt is used from umodel, msvcrt from oodle.
- Added configurations (Win32|Win64, Release|Debug)
- Passing configuration parameters to tasks.json and launch.json
- Separated common configuration parameters to settings.json
- Moved most of the code to functions
- Added DebugPrint stuff
- FindSingleFileTarget() is now passing parameters to a perl script using command line
- build.sh: added --exe <filename> option to override automatically generated umodel executable file name
- test.sh: generating executable name in the same way as build.sh does, so script will launch the correct executable file]
- Visual Studio project: forcing umodel.exe file name for all configurations, as launch.vs.json seems doesn't have a possibility to override it
- SDL2.dll is no longer copied next to umodel.exe, it is picked up from libs during development, using delay-loading tech
- package_win32.sh script builds Win32 and Win64 targets and packages executables alongside with SDL2 dlls
- Separated SDL2 logic from common.project to SDL2.project
- Replaced appMilliseconds implementation from SDL_GetTicks to GetTickCount, so running in command line mode will no longer require SDL2.dll
Example:
- pak1.pak: file.uasset (15 kb)
- pak2.pak: file.uasset (0 bytes)

While scanning the game directory, the file from pak2 will replace previously loaded entry from pak1, with zero file length, what will make package inaccessible. Now, avoiding registraction of null files.
$project was initialized before GetBuildNumber, so function didn't work
Crashed on psa export when animation sequence has no tracks
@theFoof theFoof merged commit 77cc022 into theFoof:master Aug 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants