Commit graph

79 commits

Author SHA1 Message Date
Marcus Minhorst
9b0f5d9b0d Fixes sign-compare warnings 2025-07-18 21:11:50 -03:00
Boondorl
c6825a9881 Added ViewModelFOV field for models
Allows manually setting FOV for models instead of scaling from 90 degrees. Positive values are exact FOVs while negative FOVs are scalars from 90. SCALEWEAPONFOV does not work with exact values since it automatically scales based on FOV.
2025-06-13 14:04:08 -03:00
Ricardo Luís Vaz Silva
0532a298d2 fix MDL_USEROTATIONCENTER 2025-05-11 01:12:55 -03:00
Ricardo Luís Vaz Silva
385033e999 fix CalcModelFrame/SetBone/GetBone/SetAnimation not grabbing smf from modeldata for decoupled anims 2025-05-10 18:24:16 -03:00
Ricardo Luís Vaz Silva
9e2b1f9c4c
Bone Getters Part 2/3, plus fixed warnings for MSVC
* add getters for frame poses

* fix missing joint in GetJointPose

* clean up models_iqm.cpp

* clean up usage of I_GetTimeFrac, split out matrix calculation into its own function

* clean up SetModelBoneRotationInternal

* clean up a few float <-> double and unsigned <-> signed warnings

* fix more warnings

* further clean up warnings

* split mode ObjectToWorldMatrix stuff

* initial work on bone getters, matrix hell

(the matrix/vec3 multiplications are probably wrong af, just gotta add more stuff 'till i can test it)

* clean up matrix math

* GetBone/TransformByBone

* fix GetBoneFramePose

* fix ObjectToWorldMatrix

* fix missing array resize

* raw matrix getters (for use with gutamatics/etc)

* reverse matrix mult order

* replace GetBoneLength/GetBoneDir with GetBoneBaseTRS

* fix GetBonePosition, remove GetBoneWorldMatrix as it's useless

* GetBonePosition

* deduplicate code

* rename GetBonePosition to GetBoneBasePosition to avoid confusion

* GetBoneBaseRotation

* GetBonePosition helper function

* forgot include_offsets
2025-05-09 17:06:16 -03:00
Ricardo Luís Vaz Silva
3780c5910a
Bone Manip part 1 - bone setters
* split frame info calculation from RenderFrameModels

* clean up fvec4 being used as quat in iqms

* initial work on bone setting

* implement bone setters

* clean up FindModelFrame

* refactor model overrides into its own function

* refactor frame rendering into RenderModelFrame

* split frame processing into ProcessModelFrame

* refactor BoneOverride in preparation for translation/scale overrides

* clean up macros

* SetBoneTranslation/SetBoneScaling

* GetBoneOffset

* fix compilation on linux/mac (fuck you MSVC)

* fix typo 😅

* make sure bone overrides are cleared on model switches, add ClearBoneOffsets to clear them manually

* bone info getters

* fix joint lengths, add joint dirs

* serialize bone overrides

* fix bone dir return type

* GetBoneIndex/GetBoneCount

* helper functions for working with non-quat angles

* add mode enum, add more helper functions

* fix up formatting
2025-05-01 10:15:46 -03:00
Ricardo Luís Vaz Silva
7eaab2691b fix out-of-bounds array access (again) 2025-02-08 17:55:51 -03:00
Ricardo Luís Vaz Silva
a872097da1 fix out-of-bounds array access 2025-02-04 18:08:30 -03:00
Ricardo Luís Vaz Silva
eb7c99b34a more misc animation fixes 2025-02-04 18:08:30 -03:00
Ricardo Luís Vaz Silva
3d2f9e06ed remove bone component cache to decrease memory consumption
caching this is entirely unnecessary, as it changes every frame
2025-01-27 17:04:46 -03:00
Rachael Alexanderson
f3b0c3ac5e
- Roll back filesystem changes. These were causing instabilities in the master branch that were interfering with development. 2025-01-04 11:27:21 -05:00
Christoph Oelckers
634a646c2d take namespace enum out of namespace and added CheckNumForAnyName and CheckNumForFullNameInFile to clarify the meaning of CheckNumForFullName.
This is to take some renaming noise out of the upcoming refactoring.
2024-11-24 17:59:16 +01:00
Ricardo Luís Vaz Silva
326480cb31 Fix typo 2024-09-25 18:57:05 -03:00
Ricardo Luís Vaz Silva
712dd1133d Fix typo 2024-09-17 14:14:23 -03:00
Ricardo Luís Vaz Silva
79dacdf1b7 Properly fix double interpolation for IQM models 2024-09-13 17:05:22 -03:00
Ricardo Luís Vaz Silva
1429e22441 rework interpolation to allow for precalculated frames 2024-09-13 17:05:22 -03:00
Ricardo Luís Vaz Silva
17d7006d72 replace naive interpolation logic with more exact logic 2024-09-13 12:17:09 -03:00
Ricardo Luís Vaz Silva
0caa036a96 fix compilation 2024-07-09 12:25:28 -03:00
Ricardo Luís Vaz Silva
7ddd4ec245 handle freeze in decoupled animations 2024-07-09 12:25:28 -03:00
nashmuhandes
2e4bf697b8 Add X, Y and Z offsets for VOXELDEF. Needed for voxelized weapons which would typically be very large and take up the majority of the 256x256x256 canvas, therefore making precise positioning of the models relative to the screen pretty much impossible without tweakable offsets. 2024-06-21 08:17:54 -03:00
Ricardo Luís Vaz Silva
9af3d54a19 Fix Decoupled Animation Crash, Interpolation Bugs, Simplify Interpolation code 2024-04-17 21:38:27 -03:00
Ricardo Luís Vaz Silva
7c93cfa97b Decoupled Animation fixes and improvements
* fixes looping that uses `loopFrame`
* adds `endFrame`
* adds `SAF_NOOVERRIDE`
* fixes crash on SetAnimation if a BaseFrame isn't defined
2024-04-16 20:27:44 -03:00
Ricardo Luís Vaz Silva
ce479e09ff Fix A_ChangeModel serialization
I overlooked this part on my first A_ChangeModel fix
2024-03-17 18:07:50 -03:00
Ricardo Luís Vaz Silva
0092aa0772 Fix crash with DecoupledModels flag defined but no actual model 2024-03-15 21:08:59 +01:00
Christoph Oelckers
520b960ca5 Reverted the path node system
Code reviews were unfavorable so better nix it before it finds wider use.
2024-03-15 20:24:39 +01:00
Ricardo Luís Vaz Silva
341c1bbede Fix crash with DecoupledModels flag defined but no actual model 2024-03-14 18:52:04 -03:00
Ricardo Luís Vaz Silva
98e6330eaa allow modeldef flags to be overriden 2024-01-16 10:27:08 -05:00
Ricardo Luís Vaz Silva
5d5e7ca042 Decoupled IQM Model Animations 2023-11-20 22:08:33 -05:00
Ricardo Luís Vaz Silva
1a8dfd2dfa ActorModelData cleanup in preparation for decoupled model animations 2023-11-20 22:08:33 -05:00
Christoph Oelckers
c5c822ea75 use FTranslationID in the model code. 2023-11-09 23:04:11 +01:00
Christoph Oelckers
8c5eb2c807 use FTranslationID in all places where strict type checking is needed.
This means all properties in serializable classes now use this wrapper type. The backend hasn't been changed yet
2023-11-09 23:04:10 +01:00
Rachael Alexanderson
6d1ebf5f27 - allow FORCEBACKCULLFACES to work with hud models 2023-10-25 10:57:48 -04:00
Rachael Alexanderson
bac12948e5 - add forcecullbackfaces in modeldef 2023-10-14 14:37:40 -04:00
Christoph Oelckers
81fb9a26b2 - backend update from Raze.
* add QualifiedName to VMFunction and allocate these static names from the class data memory arena instead of using FStrings.
* null pointer type checks in the VM added to avoid crash on bad codegen.
2023-07-22 09:55:49 +02:00
Ricardo Luís Vaz Silva
0e438f10f3 fix CMDL_HideModel 2023-06-26 00:36:36 -04:00
Ricardo Luís Vaz Silva
61d68eb2d6 Rewrite changed model rendering code, and change how model skins are handled 2023-06-26 00:36:36 -04:00
Ricardo Luís Vaz Silva
b55ffdbfd3 major A_ChangeModel cleanup 2023-06-26 00:36:36 -04:00
Ricardo Luís Vaz Silva
46d36cf5c7 add BobWeapon3D 2022-12-09 21:49:38 +01:00
9ad7b8a048 Look up named frames using the Animation ID (if any). 2022-12-03 23:30:59 +01:00
b002d5b8ec Fix crash if Animation is not explicitly assigned in MODELDEF. 2022-11-25 00:37:38 +01:00
eab675c0cb Make model stretch fix opt-in with a flag. 2022-11-22 17:58:32 +01:00
0509d3a4e7 Fix incorrect pixelratio handling on rotated models. 2022-11-22 07:44:22 +01:00
Christoph Oelckers
4ebcff8573 - remaining changes for moving bone data to the backend 2022-11-06 10:59:33 +01:00
crashmahoney
0ca868d93f Fix HUD models not drawing if MODELDEF has been changed with A_ChangeModel 2022-11-01 11:48:16 +01:00
Shiny Metagross
f7c3615d3b IQM Refactor Milestone
- Removed bone manipulation code
- Implemented an index in calculateBones to optimize multi-armature actors
- Moved the bone storage object's creation to RenderModels so that the armature array can be sized there
2022-10-31 11:34:55 +01:00
Shiny Metagross
3f3cc5bbc3 IQM Refactor start
- Refactored IQM and calculateBones to process TRS at runtime which resolves some of the faulty animations with large rotations. Will also make bone manipulations much easier to do
2022-10-31 11:34:55 +01:00
Christoph Oelckers
5a52f61096 - fixed: R_LoadVoxelDef did not fully initialize the voxel descriptor it creates. 2022-10-20 20:23:35 +02:00
nashmuhandes
8394de00ca Fixed: voxel models pitch/roll properties weren't initialized correctly 2022-10-20 08:05:14 -04:00
Shiny Metagross
7722784de6 Voxels did not have an animationID causing a crash
- Needed to assign -1 to the first index of animations for voxels or a crash occurs
2022-10-19 22:48:57 +02:00
Shiny Metagross
6564adf310 Fixed a couple bugs
- MODELSAREATTACHMENTS was basically being applied anyways
- Fixed a crash related to using an animation that never had the vertex buffer drawn because it was never used as a model
2022-10-19 22:48:57 +02:00