• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
Hi, where is the link to the blender version of the tool? For Stellaris portrait modding, does it work for both the mesh and the animation?
 
Hi again, I think when I go and use the exporter tool to reexport my mesh, Stellaris can't seem to find/recognize the Skeleton for animated. Does the tool export the skeleton? When I import animation using the tool it works perfectly when I play it and the skeleton is in the scene.

Edit: I had to rebind the skeleton and it works!!!
 
Last edited:
What could go wrong with a mesh that causes the export to fail?
You have lots of duplicated/overlapping vertices and zero-area faces in your mesh, this can happen during modelling but it makes it very "unclean" to export. It seems that the mesh can be exported but the data written to the file will break when you try to import the file again... (it fails half-way through, it only appears green because it fails before the materials are setup)
To fix it you just need to weld your mesh vertices (Edit mesh > Merge (popup box) and use a threshold of 0.001) and then try exporting again. Your mesh goes from 1802 verts and 3481 tris down to 1782 verts, 3473 tris when I clean it up.

I have an issue when I try to merge components of existing models and try to animate them. They are in two separate polysurfaces, the Polysurface1 seems to be animated, while Polysurface2 does not
polySurface2 does not animate correctly because it's skin component was broken at some point during your process. To fix this you will need to delete history on polySurface2 (Edit > Delete by Type > History) and then re-skin the mesh to the skeleton (select polySurface2, Ctrl+select Root, go to Skin > Bind Skin then reset settings on this popup, deselect 'Allow multiple bind poses' and set 'Max influences' to 4). This will do a basic skin but you will need to paint skinweights on polySurface2 (Skin > Paint skin weights (popup box) then select the 'back_mid' bone and click 'Flood' to skin all the verts of polySurface2 to this bone).

where is the link to the blender version of the tool?
There is no link to the Blender version yet, I have 1 animation bug remaining that I would like to fix before uploading it. :) But yes, it will work for mesh and animation modding.
As to your other post, the skeleton will not be exported if it's not bound to a mesh that is being exported.
 
Well the skeleton *was* bound in Blender, and was bound in Maya, and had to be unbind and rebind to export when in Maya when imported from Blender. But now I can export from Blender and work directly in stellaris using Jorodox. Took me a while to figure out how to properly export a .dae file.
 
Really great thanks! I have just fixed the final major bug this week, no excuses left now so hopefully I can test it and release next week. :)
I will make a new post about it and put a download link up.

thanks to you for the work you are doing :)
 
Really great thanks! I have just fixed the final major bug this week, no excuses left now so hopefully I can test it and release next week. :)
I will make a new post about it and put a download link up.
How it goes with the testing?
 
Hey, I'm also running into an error # Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh. I unzipped the compressed folder here: C:\Program Files (x86)\Autodesk\Autodesk Desktop App\scripts\io_pdx_mesh

file -f -new;
// untitled //
commandPort -securityWarning -name commandportDefault;
onSetCurrentLayout "Maya Classic";
// Warning: file: C:\Users\nicho\Documents\maya\2019\prefs\filePathEditorRegistryPrefs.mel line 4: filePathEditor: Attribute 'aiImage.filename' is invalid or is not designated 'usedAsFilename'. //
// Warning: file: C:\Users\nicho\Documents\maya\2019\prefs\filePathEditorRegistryPrefs.mel line 5: filePathEditor: Attribute 'aiPhotometricLight.aiFilename' is invalid or is not designated 'usedAsFilename'. //
// Warning: file: C:\Users\nicho\Documents\maya\2019\prefs\filePathEditorRegistryPrefs.mel line 6: filePathEditor: Attribute 'aiStandIn.dso' is invalid or is not designated 'usedAsFilename'. //
// Warning: file: C:\Users\nicho\Documents\maya\2019\prefs\filePathEditorRegistryPrefs.mel line 7: filePathEditor: Attribute 'aiVolume.filename' is invalid or is not designated 'usedAsFilename'. //
// AbcExport v1.0 using Alembic 1.7.5 (built Feb 6 2018 18:28:08)
evalDeferred "shaderBallRendererMenuUpdate";
// Warning: line 1: filePathEditor: Attribute 'aiStandIn.dso' and label 'Standin' have been saved already. //
// Warning: line 1: filePathEditor: Attribute 'aiVolume.filename' and label 'VDB' have been saved already. //
// Warning: line 1: filePathEditor: Attribute 'aiImage.filename' and label 'Image' have been saved already. //
// Warning: line 1: filePathEditor: Attribute 'aiPhotometricLight.aiFilename' and label 'IES' have been saved already. //
import arnold
// Successfully imported python module 'arnold'
import mtoa
// Successfully imported python module 'mtoa'
import mtoa.cmds.registerArnoldRenderer;mtoa.cmds.registerArnoldRenderer.registerArnoldRenderer()
// Successfully registered renderer 'arnold'
updateRenderOverride;
// Warning: file: C:/Program Files/Autodesk/Maya2019/scripts/startup/autoLoadPlugin.mel line 35: Loading plug-in "mtoa" has resulted in changes to the scene that may need to be saved. //
// AbcImport v1.0 using Alembic 1.7.5 (built Feb 6 2018 18:28:08)
updateRendererUI;
updateRendererUI;
import io_pdx_mesh;reload(io_pdx_mesh)
# Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh #
cmdScrollFieldExecuter -e -executeAll scriptEditorPanel1Window|scriptEditorPanel1|formLayout48|formLayout50|paneLayout1|paneLayout2|tabLayout2|formLayout100|cmdScrollFieldExecuter3;
// scriptEditorPanel1Window|scriptEditorPanel1|formLayout48|formLayout50|paneLayout1|paneLayout2|tabLayout2|formLayout100|cmdScrollFieldExecuter3 //
import io_pdx_mesh;reload(io_pdx_mesh)
# Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh #
cmdScrollFieldExecuter -e -execute scriptEditorPanel1Window|scriptEditorPanel1|formLayout48|formLayout50|paneLayout1|paneLayout2|tabLayout2|formLayout100|cmdScrollFieldExecuter3;
// scriptEditorPanel1Window|scriptEditorPanel1|formLayout48|formLayout50|paneLayout1|paneLayout2|tabLayout2|formLayout100|cmdScrollFieldExecuter3 //
import io_pdx_mesh;reload(io_pdx_mesh)
# Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh #
if (!stringArrayContains("buildViewMenu($gMainWindowMenu)",`evalDeferred -list`)){evalDeferred("buildViewMenu($gMainWindowMenu)") -lp;};
updateWorkspacesList;
buildViewMenu($gMainWindowMenu);
removeScriptEditorPanel scriptEditorPanel1;
(u"MEL").replace("\\","/");
# MEL #
(u"Python").replace("\\","/");
# Python #
(u"Python").replace("\\","/");
# Python #
ModObjectsMenu MayaWindow|mainModifyMenu;
PolygonsMeshMenu MayaWindow|mainMeshMenu;
PolygonsBuildMenu MayaWindow|mainEditMeshMenu;
buildSelectMenu MayaWindow|mainSelectMenu;
ModObjectsMenu MayaWindow|mainModifyMenu;
buildSelectMenu MayaWindow|mainSelectMenu;
ModObjectsMenu MayaWindow|mainModifyMenu;
buildSettingsMenu MayaWindow|mainWindowMenu|menuItem602;
buildPreferenceMenu mainOptionsMenu;
buildObjectEdMenu MayaWindow|mainWindowMenu|menuItem597;
buildRelationshipEdMenu MayaWindow|mainWindowMenu|menuItem601;
buildSettingsMenu MayaWindow|mainWindowMenu|menuItem602;
buildRelationshipEdMenu MayaWindow|mainWindowMenu|menuItem601;
buildObjectEdMenu MayaWindow|mainWindowMenu|menuItem597;
rebuildWorkspaceListMenu MayaWindow|mainWindowMenu|menuItem595;
buildModelingEdMenu MayaWindow|mainWindowMenu|menuItem598;
buildAnimationEdMenu MayaWindow|mainWindowMenu|menuItem599;
buildRenderingEdMenu MayaWindow|mainWindowMenu|menuItem600;
buildRelationshipEdMenu MayaWindow|mainWindowMenu|menuItem601;
buildPreferenceMenu mainOptionsMenu;
buildSettingsMenu MayaWindow|mainWindowMenu|menuItem602;
buildObjectEdMenu MayaWindow|mainWindowMenu|menuItem597;
ScriptEditor;
if (`scriptedPanel -q -exists scriptEditorPanel1`) { scriptedPanel -e -tor scriptEditorPanel1; showWindow scriptEditorPanel1Window; selectCurrentExecuterControl; }else { CommandWindow; };
unlocalizedPanelLabel "Script Editor";
// Script Editor //
saveStateScriptEditorPanel scriptEditorPanel1;
addScriptEditorPanel scriptEditorPanel1;
(u"MEL").replace("\\","/");
# MEL #
(u"Python").replace("\\","/");
# Python #
(u"Python").replace("\\","/");
# Python #
(u"MEL").replace("\\","/");
# Result: MEL #
(u"MEL").replace("\\","/");
# Result: MEL #
(u"Python").replace("\\","/");
# Result: Python #
(u"Python").replace("\\","/");
# Result: Python #
(u"Python").replace("\\","/");
# Result: Python #
(u"Python").replace("\\","/");
# Result: Python #
createModelPanelMenu modelPanel1;
createModelPanelMenu modelPanel2;
createModelPanelMenu modelPanel3;
createModelPanelMenu modelPanel4;
createOutlinerPanelMenu outlinerPanel1;
buildPanelPopupMenu scriptEditorPanel1;
selectCurrentExecuterControl;
doDelete;
import ufe; ufe.GlobalSelection.get().empty()
# Result: True #
cmdScrollFieldExecuter -e -execute scriptEditorPanel1Window|scriptEditorPanel1|formLayout101|formLayout103|paneLayout4|paneLayout5|tabLayout4|formLayout105|cmdScrollFieldExecuter5;
// Result: scriptEditorPanel1Window|scriptEditorPanel1|formLayout101|formLayout103|paneLayout4|paneLayout5|tabLayout4|formLayout105|cmdScrollFieldExecuter5 //
import io_pdx_mesh;reload(io_pdx_mesh)
# Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh #
Initialized VP2.0 renderer {
Version : 2016.11.54.12. Feature Level 5.
Adapter : Intel(R) HD Graphics 620
Vendor ID: 32902. Device ID : 22806
Driver : .
API : OpenGL V.4.5.
Max texture size : 16384 * 16384.
Max tex coords : 32
Shader versions supported (Vertex: 5, Geometry: 5, Pixel 5).
Shader compiler profile : (Best card profile)
Active stereo support available : 0
GPU Memory Limit : 1024 MB.
CPU Memory Limit: 7711.22 MB.
MultiDraw consolidation: enabled
}
OpenCL evaluator is attempting to initialize OpenCL.
Detected 1 OpenCL Platforms:
0: Intel(R) Corporation. Intel(R) OpenCL. OpenCL 2.1 .
Supported extensions: cl_intel_dx9_media_sharing cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_fp64 cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
OpenCL evaluator choosing OpenCL platform Intel(R) Corporation.
Choosing OpenCL Device Intel(R) HD Graphics 620. Device Type: GPU Device is available.

Any help is appreciated. :)
 
Hey, I'm also running into an error # Error: ImportError: file <maya console> line 1: No module named io_pdx_mesh. I unzipped the compressed folder here: C:\Program Files (x86)\Autodesk\Autodesk Desktop App\scripts\io_pdx_mesh

Any help is appreciated.

You unzipped to the wrong place... Maya can't load scripts from "Autodesk Desktop App".
Please unzip so your folder is here:
"C:\Users\nicho\Documents\maya\scripts\io_pdx_mesh"

How it goes with the testing?
Found some issues resulting from my last fix, didn't get change to take a good look yet. Hoping to have some free time this weekend. :)
 
Yeah any news? I am having issues with Collada files with Jorodox and a more straight forward solution would be great.
 
The only real news is that I ran out of motivation to fix the last couple animation bugs... aside from a few people (most of whom have already tested the Blender plugin for me) it didn't feel like there was a huge amount of interest, so I had less incentive to work on it.

Maybe I should just release it as it is and detail the main bug to see how many people use it.

@Sid Meier I did solve the issue you were having with portraits already though, made it so you can re-order the meshes manually in Blender. :D
Capture.PNG
 
Nice @ross-g ! Though I did find a work around, in the .dae exporter in blender you can tick "export in alphabetical order" and then just need to rename the meshes to be Bottom-to-Up ordering.

I do have one remaining snag technically two but one is the big one; I'm not 100% confirmed that this is the issue but it seems related.

If I want to have a portrait with clothes and hair also animated; presumably they need to be three separate meshes in Blender exported to the same .dae files converted via jorodox to a .mesh; then in the .gfx file in hopefully the correct order give them the correct shaders and then selectors work (if there is a way to have a SINGLE mesh use multiple shaders for each material I'd LOVE to know!).

However if I have an single armature and a single animation; blender seems to export a separate animation per mesh; in jorodox this shows up as three same-named embedded animations, "root_pose_matrix" and each one covers a DIFFERENT subset of bones affected the different exported meshes, i.e one you select might be the body mesh bones and the front hair mesh bones; the other might be body mesh bones only, and the last the back hair mesh bones and body mesh; but never BOTH the hair meshes (if two).

If I export as a Hair Mesh and Body Mesh as TWO meshes; then the Y ordering issue crops up and either the hair completely blocks the body mesh and vice versa; though the hair animates mostly fine (some weird seams show up, might be related to using rigidbody physics to animate the hair).

However, with THREE meshes, whichever embedded animation I pick, it seems to distort one of the meshes, even worse the front hair mesh seems always completely crazy in the Three-Mesh setup (though fine in the Two-Mesh setup), I tried exporting a Single Mesh version Hair+Body and using its single embedded animation with a Three Mesh setup but this didn't work resulting in distorted animations (which I find strange as the rigging should be based on vertices that should be unchanged by the setup of the meshes but wtf).

Crossposting: Here's a screenshot, three "Armature_Root_pose_matrix" embedded animations because despite having one armature, each mesh that's rigged to it has it's own animation when exported to .dae.



And I think this is now a problem if I want a Hair mesh or Clothes mesh to be animated; because I can only select one anim and so far it seems like this may mean the other rigged meshes might not have animations or distorted animations.

I'd highly appreciate if you released your plugin and I'd give it a try and let you know what works or doesn't work. If you have a kofi or something I'd even be willing to pay you to complete development. :) I kinda am invested in trying to complete my mod as I spent money to commission artists for it, so I'm willing in order to finally get this done and not learn Maya; which is not a stable environment for me.
 
Please, please, please, release your Blender plugin. If you can finish it great but even if you release it with some bugs your work deserves to be out there. Giving people the ability to mod paradox games without having to use Maya, that would be something.

And I need this to motivate myself to finally finish my Andromeda Ascendant model for stellaris.

Andromeda_Test_Render.png

So I too would be willing to donate some $$ to the cause, if that helps motive you to release and or continue to develop this.

@ross-g , you and your hard work are valued, don't ever think different.
 
Same. I've been months being frustrated trying to work around Maya. No doubt there's at least dozens of other hopeful modders who hit the same brick walls and stop work on their mods because its just too difficult to work around. And Jorodox hasn't updated in 4 years officially; I downloaded the experimental branch (7 months old) and couldn't figure out how to compile it.
 
Speaking of making a pull request, @ross-g can you also put up instructions as to how to compile the github version and to load it as a plugin? I tried but I couldn't get it to work.