darklightgames / io_scene_psk_psa Goto Github PK
View Code? Open in Web Editor NEWA Blender extension for importing and exporting Unreal PSK and PSA files
License: GNU General Public License v3.0
A Blender extension for importing and exporting Unreal PSK and PSA files
License: GNU General Public License v3.0
Hello, I'm trying to export a model to Unreal Engine 2.5 (UT2004) and the bones don't move, the mesh does move though. And that got me wondering, for what version of Unreal Engine is this meant?
Sometimes it is important to disambiguate action names if multiple rigs share the same action name. Being able to prefix the action names can help with this.
Files exported from Hogwarts Legacy have two new data sections: MRPHINFO
AND MRPHDATA
.
It's unclear what these are. I need to track down people who are able to do a bit of research for me on what these do and provide sample files to work with.
Does it now support importing additive animation?
As the title suggests, unless I am doing something wrong the ability to import PSA does not work, however I can export to PSA no issue I cannot import any PSA onto my selected armature. as the option in the menus does not exist. Looking to hopefully hear back on this soon.
Blender: 3.4
io_scene_psk_psa: 5.0.5
Testing out some files from MK1, character Ashrah, imported the body mesh .psk from the Template Mesh folder which was successful but when I import the .psa from the Anim folder, it says 'no sequences selected'
I tried the same using the older plugin from Befzz and the .psa was imported but it mutated the mesh so I decided to try this newer version but it couldn't even import the .psa
Here are the files: https://drive.google.com/drive/folders/1RmVG6A9KuSNyjfK4W50lTvx839RCxRpE?usp=drive_link
Thanks for your help
Hey, I just wanted to ask if you would consider adding support for these chunks;
People using this add-on for UE1 animations have to do a lot of manual "frame counting" and and physically type out the frame ranges for animations after combining all of their animations into one mega-animation. This workflow is horrible, of course, and could easily be automated.
For the PSA exporter, add an option to switch to "UE1 mode", where the sequences are automatically concatenated together, and write a sidecar file of all the UE1 #exec
commands, like below (full sample file also attached):
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=Idle STARTFRAME=1 NUMFRAMES=240 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=TriggerPull STARTFRAME=241 NUMFRAMES=1 RATE=60 //GROUP=Firing
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=HipFire STARTFRAME=241 NUMFRAMES=9 RATE=60 //GROUP=Firing
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=HIPtoIS STARTFRAME=250 NUMFRAMES=14 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=ISIdle STARTFRAME=263 NUMFRAMES=240 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=ISFire STARTFRAME=503 NUMFRAMES=9 RATE=60 //GROUP=Firing
The PSK format has a number of hard limits (eg. 65536 wedges max etc.) that aren't respected by the exporter. The exporter will happily export a broken PSK if the wedge limit is exceeded.
An error should be displayed if the resultant PSK would violate any of the limits.
A proper export currently requires the user to manually clear all pose transforms before exporting. Not ideal!
Some PSKs have duplicate faces (i.e., a face with the same 3 vertices as another face), and Blender does not allow this for technical reasons, so our addon discards them as "degenerate faces". However, duplicate faces does not necessarily mean redundant data, since the wedge info (material, UV etc.) can be different for each of the twin faces.
The cleanest and simplest solution is probably to be put these duplicated faces on a separate mesh. The only issue is that the shading will not be consistent because the new geometry would be isolated from its surrounding geometry.
People using this add-on for UE1 animations have to do a lot of manual "frame counting" and and physically type out the frame ranges for animations after combining all of their animations into one mega-animation. This workflow is horrible, of course, and could easily be automated.
For the PSA exporter, add an option to switch to "UE1 mode", where the sequences are automatically concatenated together, and write a sidecar file of all the UE1 #exec
commands, like below (full sample file also attached):
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=Idle STARTFRAME=1 NUMFRAMES=240 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=TriggerPull STARTFRAME=241 NUMFRAMES=1 RATE=60 //GROUP=Firing
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=HipFire STARTFRAME=241 NUMFRAMES=9 RATE=60 //GROUP=Firing
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=HIPtoIS STARTFRAME=250 NUMFRAMES=14 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=ISIdle STARTFRAME=263 NUMFRAMES=240 RATE=60 //GROUP=Idle
#exec ANIM SEQUENCE ANIM=AKs74uAnim SEQ=ISFire STARTFRAME=503 NUMFRAMES=9 RATE=60 //GROUP=Firing
Hello Colin,
I seem to be having issues installing this into 2.83. It does not show up in my addons folder?
Can you please advise? I tried installing the io_export_psk_psa-master.zip file, but it seems to be not showing up in the addons screen nor does the init file.
Thanks.
The next issue compare the import of the newest DarklightGames addon versus Beffz's one
The largest one is from Darklight. Making the model be import with it's natural size in comparation to Beffz's addon
A huge difference.
The pruporse of this issue it's to show any other internaunt the comparation of these two addons in terms of size
Unreal's units are centimeters (cm), while Blender's are meters (m) by default. The addon currently doesn't convert from cm to m making the models import at a much higher (exactly 100x) scale.
The plugin is not in the list of installed, although I followed the instructions and saw a message about the successful completion of the installation. Can you please tell me what to do? :(
I'm wondering if it's possible to port/recreate ActorX for blender, and if not, then copy over some of the options/features used for export.
Source code: github ActorX
It's under a BSD-3 Clause License.
Sample
Import in blender > export from blender > import in udk
has something broken in between.
I downloaded the latest 4.2.0 2022-11-25 release, io_scene_pks_psa-master-4.2.0.zip
https://github.com/DarklightGames/io_scene_psk_psa/releases/tag/4.2.0
Importing it to Blender works fine, and psk shows up for import, and psk and psa shows up for export. But psa doesn't show up for import.
Currently trying to import animations for Befzz's version is bugged. This looks promising, and the psk importer works great. But it can't import psa, at least not by default.
Or at least, I suppose that's the only special thing about this mesh that may cause a "must have one armature modifier" error.
Is there a way of converting more than one .psk/.psa at the same time?
I have dozens of .psk, and wanter convert them "at the same time" ... I heard of using python scripting in blender, but I didn't managed to get it working
Python: Traceback (most recent call last):
File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\io_scene_psk_psa\psk\importer.py", line 320, in execute
psk = read_psk(self.filepath)
File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.4\scripts\addons\io_scene_psk_psa\psk\reader.py", line 49, in read_psk
raise RuntimeError(f'Unrecognized section "{section.name} at position {15:fp.tell()}"')
ValueError: Invalid format specifier
So I attempted to import a PSA Sequence into Blender, and I was greeted with "no sequence selected" instead, Not sure if this is because I did something wrong. I had the skeleton selected and everything!
Actions with zero users will be discarded upon saving, which very much kind of sucks.
Give the user the ability to freeze the imported actions by assigning a fake-user or by stashing it in the NLA stack as a non-contributing track.
When I import the batman beyond suit from Arkham City and try to import animations the import psa doesn't show up is this normal?
Hi. After exporting my modified mesh it looks weird, after import it back it looks too small in comparation to the retail model. The images go in this way (left to right)
Preview in blender from my modified model, preview in MilkShape 3D (exported), preview in MilkShape 3D (Retail) then there are two comparations, where the most small is the exported with your addon (Blue wireframes in MilkShape 3D are supposed to be bones, the skeleton in general. Apparently if it is small and where the root bone is like the retail who have it where the arm start is correct).
Hope this can be patched or be told if something I'm doing wrong.
Thanks in advance
Uzublecker
This is more of a compatibility bug than it is a bug with the exporter itself.
If a bone has a name that is not properly serializable by the UT engine, the bone will be present, but will not properly animate. This is likely because the bone names are being serialized as name
types within the engine, which only allow ASCII alphanumeric, spaces, and underscore characters.
There are a couple of solutions here:
I'm leaning heavily towards the first solution, since it results in less "magic" and surprises for bone names when it comes to hooking things up in code. I'm not sure if this is a problem with UE3, but I would assume it has the same issue.
The PSK format assumes a single bone as the root, but it is possible in Blender to have multiple root bones in an armature. Our exporter simply soldiers through this and incorrectly parents all secondary root bones to the first bone in the armature, resulting in incorrectly parented bones that screw up all of the animations.
The solution here should be to strictly enforce the single-root-bone rule. In future, we can automatically insert one into the PSK and PSA upon export so that the user isn't inconvenienced by the limitation of the format.
After importing the PSK model and selecting its armature, there is no choice to import PSA in File>import, I tried in blender 2,9,3 and 3,3
used io_scene_psk_psa-master-4.3.0.zip
I am currently using the blender 3.6 version.
The .pskx file is imported via your add-on and extracted as a .psk file, but the file is not created.
The add-on has been updated to the latest version of 5.0.3.
Trying to export a 53K tri object, with 30K verts, results in a broken 40K vert, 52K model, with tons of artifacts and bits of the mesh missing.
Model in question:
https://www.moddb.com/games/unreal-tournament-2004/addons/high-poly-scorpion
https://sketchfab.com/3d-models/free-scorpion-ut2004-finished-9c337d0da10f49629877a0631a39c99e
I'm able to export it using ActorX (in 3dsmax) without any issues by unticking bake smoothing groups.
Hello! Is it possible to add a function to add the first frame of the animation (BasePose) to the frames of the additive animation? There are two blending modes for additive animations: LocalSpace and MeshSpace. This could be a very useful feature for many. Blend mode difference: https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/AimOffset/
So I'm not experiencing this issue with Befzz's importer. But whenever I import something with this addon using File > Import > PSK I get a model which is 100 times bigger than it should be like it's 196m tall instead of 1.96m and I need to bring it down to normal scale for lighting. This would be fine because I can just scale down the model, but also the bones are really small. I don't know if that's related to the scaling issue but it is very difficult to select the bones which makes hard to use the model in general. But honestly very nice work on maintaining this add on thank you for all your effort!
não consigo importar o arquivo para dentro do blender, ele fica invisivel na aba de ativação, mas dentro da pasta "Addons" ele está la importado e completo.
Google Translate:
I can't import the file into Blender, it is invisible in the activation tab, but inside the "Addons" folder it is imported and complete.
PSK imported with 1 warning(s)
Discarded 561 degenerate face(s).
Hi. Just a note. Had no issues with 3.4, but unlike what the readme says, 2.83 is not quite supported. The psa interface is broken in earlier versions, causing no 'import' button to appear:
Traceback (most recent call last):
File "io_scene_psk_psa/psa/importer.py", line 558, in draw
col = layout.column(heading='')
TypeError: UILayout.column(): was called with invalid keyword argument(s) (heading), expected (align)
The current action list has the following deficiencies:
The user could select the actions they want to act upon and then push them down into a separate "staging" list. This would make it much clearer which animations are going to be acted upon.
The filtering functionality is great, but the user still has to go and manually tick the boxes of the actions they want to act on. It would be great if there was an option to push all the actions currently visible down to the staging list. This would make filtering much more powerful.
A compatibility report should be displayed on the PSA Import panel, detailing how many matching or mismatching bones there are.
Something I've noticed is that despite the smoothing being exported correctly as seen in the noesis screen snip below -
UnrealEd just ignores it and makes it's own smoothing for the model.
ActorX has an option that might be relevant to this issue - baking the smoothing groups when exporting. It basically splits the model along sharp edges (with the obvious drawback being more verts).
https://docs.unrealengine.com/udk/Two/ActorXMaxTutorial.html#Bake%20Smoothing%20Groups
Edit: Only lights show off the smoothing (and the camera doesn't factor into it)
The order of the materials upon PSK is undefined when exporting multiple meshes. This is because the exporter builds the material list from whatever objects happen to be selected, in an order that is unknown.
The solution here is to have a materials panel in the PSK export that allows the user to rearrange the order. This ordering should be saved if possible so that subsequent exports don't have to repeatedly re-order the materials.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.