Guest Posted November 6, 2021 I got pretty excited when I read it, but I'm probably missing something to get the whole picture. There's two issues at work here, right? One is smoothing groups, which get screwed once you convert the binary. The other is rerigging, because Obsidian. So at least working with the model in KotorBlender for the same game would be safe shading-wise, because of the binary importer/exporter, but then one of the issues listed as of yet is the lack of smoothing groups support. Now, since you need to rerig the model to port it right, you'd still need to compile it with MDLEdit or MDLOps, because of the differing supermodels, which affect animations. So what is the "export for TSL" checkbox for exactly? And of course, as for head models, you modding wizards work your magic by making manual adjustments with the model editor. Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 6, 2021 Quote So what is the "export for TSL" checkbox for exactly? Number of things, including swapping some function pointers and appending additional data to mesh headers. This has everything to do with model format and almost nothing to do with its contents. i.e. you cannot target K1 supermodels from K2 models without some modification of the bone structure. This is by design, and I have no intention to automate these modifications at the moment. Quote So at least working with the model in KotorBlender for the same game would be safe shading-wise, because of the binary importer/exporter, but then one of the issues listed as of yet is the lack of smoothing groups support. Smoothing groups is a 3ds Max concept to influence vertex normal calculation. MDL knows nothing of smoothing groups and so does Odyssey engine. What I meant by lack of smoothing groups is that in version 3.0 of KotorBlender, original normals are not preserved, and shading might get screwed. However, I have since implemented import & export of original normals and will soon release an update. 1 Quote Share this post Link to post Share on other sites
DarthParametric 3,785 Posted November 6, 2021 26 minutes ago, La Ingobernable said: I got pretty excited when I read it, but I'm probably missing something to get the whole picture. The only significant workflow change is that you'll be able to drop MDLEdit and the ASCII to/from conversion. Everything else will remain the same. Once the importing of vanilla normals is implemented, that will solve some shading problems that can happen currently due to the smoothing group approach. But it won't fundamentally change anything about how handling models works. 1 Quote Share this post Link to post Share on other sites
Guest Posted November 6, 2021 So then that's great, since you'll no longer need to compromise or sacrifice shading when tweaking models. But how would you replace supermodels without MDLEdit? Quote Share this post Link to post Share on other sites
DarthParametric 3,785 Posted November 6, 2021 There's a rollout for the OdysseyBase where you can edit the supermodel, the same as in KMax. Blender's way of doing things is just a lot more clunky and obtuse. 1 Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 6, 2021 Published version 3.1 of the add-on with import & export of original normals, support for saber meshes and optimized export. 1 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted November 8, 2021 Excellent work. Is there a way to auto smooth models in game? Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 9, 2021 14 hours ago, Hunters Run said: Is there a way to auto smooth models in game? I've just realized that I don't fully understand how normals work in Blender under the hood, and that results on export are most likely incorrect. Will have to investigate this some more. UPDATE: False alarm. Current approach works, although exported normals a tiny bit different from original values, most likely due to precision error. To answer your question, in order to export an "auto smoothed" model, you tick Export Custom Normals checkbox on export and ensure that Custom Split Normals Data is set under Object Data Properties -> Geometry. When "Import Normals" checkbox is ticked on import, Custom Split Normals Data and Auto Smooth are set automatically. 1 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted November 9, 2021 My problem may arise from the fact that I am using a completely custom model. To illustrate the problem: No Custom Split Normals and Export Custom Normals is unchecked: Custom Split Normals and Export Custom Normals is checked: same model in blender with Custom Split Normals: Same model with sharp edges shown: 1 Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 9, 2021 Don't see the diff in the first two pictures. This is what I think is going on: Sharp Edges and Auto Smooth are a display-only thing in Blender. These affect how split normals (vertex normal per polygon) are calculated, but do not result in new geometry. Because split normals are not supported by MDL, what current approach does is it calculates vertex normal as an average of its split normals, effectively cancelling them out, unless all split normals are pointing in a single (imported) direction. What you need to do instead, with custom meshes, is to add Edge Split modifier to your mesh and apply that prior to export (KB doesn't automatically apply modifiers on export, regression on my part). Edge Split generates new geometry based on sharp edges and angles between edges, which is exactly what we need. With Edge Split you no longer need Auto Smooth, Custom Split Normals or Export Custom Normals. P.S. Since you're also using quads, make sure to download KB 3.1.1 (or later) - it fixes export of quads UV. 1 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted November 9, 2021 That did it thank you. I was already using 3.1.1 so no worries there. Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 10, 2021 Published version 3.2.0. Thank you guys for asking and making me look at things more thoroughly. I've fixed some custom meshes related issues, particularly modifiers not being applied on export. More importantly, I've added an option to merge duplicate vertices and mark sharp edges, which is a similar feature to smoothing groups in Max. This is important because KotOR models have a LOT of duplicate vertices, which is exactly how smoothing groups work - they create additional geometry where surface needs not to be smooth. Same result can be achieved with sharp edges and Edge Split modifier in Blender. Some example screenshots: New Import Options Normals Algorithm = None (normals are ignored) Notice sharp edges on the head, despite normals not being imported. That is because of duplicate vertices. Normals Algorithm = Custom (MDL normals are used as is) Notice how smooth edges on the left arm are. There are duplicate vertices there, but custom normals make them look smooth. Normals Algorithm = Sharp Edges, Sharp Edge Angle = 10 degrees (duplicate vertices are merged and sharp edges are marked) Notice how edges on the head are still sharp, despite duplicate vertices being merged. That is the result of these edges being marked as sharp. Unfortunately, edges on the left arm were not marked as sharp, because we could not merge duplicate vertices there - they have different UV coordinates. This happens on more than one model - maybe I'd need to improve the algorithm in the future. 1 1 Quote Share this post Link to post Share on other sites
Guest Posted November 10, 2021 This update output is God tier! Get that "Import Armatures" thing fixed and we're golden. But feel free to take a break! Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 10, 2021 Reworked armature support in version 3.2.1. Tried exporting armature keyframes directly, but this solution ended up being too complex and slow. So this is how editing animations currently works (and is very likely to stay that way, since I'm satisfied with the result): Import model with "Import Animations" ticked Select animation under Object Properties -> Odyssey Animations and press Play button to focus on it Position bone objects, insert/remove keyframes, etc. Set current frame to frame 0 or exactly 5 frames left from any animation. That is the Rest Pose Press Rebuild Armature. This step is entirely optional, but useful if you want to test your animation with the skinmesh Export model with "Export Animations" ticked 1 1 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted November 11, 2021 Is there currently a way to only import animations without geometry? This is useful for adding animations to models without them. Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 11, 2021 13 hours ago, Hunters Run said: Is there currently a way to only import animations without geometry? In 3.3.0 now you can. You can even add supermodel animations on top of head models and they will look ok. I have also finally fixed precision issues with export of custom normals. Exported models now look exactly as they were imported, and MDLedit no longer raises a warning. Overall, I did some testing and this version seems to be pretty robust. I'm tempted to say it's final for now. 1 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted November 12, 2021 I was experiencing a traceback error when trying to export an item model. After some research this is because the placeable classification did not exist. Instead there are two door classifications. I just want to check that this wasn't by design. Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 12, 2021 2 hours ago, Hunters Run said: I just want to check that this wasn't by design. Was a bug, fixed it in the repo. Doesn't feel good spamming DS with all the minor versions, so I guess I'll wait until more bugfixes are accumulated. 1 Quote Share this post Link to post Share on other sites
seedhartha 116 Posted November 14, 2021 Released 3.4.0 with this and a couple of other fixes, but most importantly I have reworked the UI. It now fits Blender 2.8 style alot better. Here are some screenshots: 3 1 Quote Share this post Link to post Share on other sites
CarthOnasty 214 Posted January 13, 2022 Yooooo, this looks amazing! My only questions thus far... how does it handle smoothgroups? I've always had edit it gmax to fix the smoothgroups and then import into Blender. Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted January 13, 2022 (edited) I believe that question is answered a couple of posts up. Edit: I just reopened an issue. I'd appreciate if you would look at it when you have the time. Edited February 13, 2022 by Hunters Run Quote Share this post Link to post Share on other sites
DarthDrija 16 Posted April 3, 2022 Sorry for my ignorance, but just a simple question, in the "Kotor Model Node" there's a "dirt" option for TSL only. What does it do and how can I apply it? Quote Share this post Link to post Share on other sites
DarthParametric 3,785 Posted April 3, 2022 It enables a procedural dirt effect over the selected mesh when rendered in-game. You should be careful when enabling it. It's not compatible with envmaps if I recall correctly. To enable it, simply tick the checkbox. 2 Quote Share this post Link to post Share on other sites
Hunters Run 57 Posted April 6, 2022 Out of curiosity, what does it mean when a walkmesh is degenerate? Quote Share this post Link to post Share on other sites
AmanoJyaku 184 Posted April 6, 2022 3 hours ago, Hunters Run said: Out of curiosity, what does it mean when a walkmesh is degenerate? A degenerate has no ethics or morals. 😁 It means there's a problem with the geometry: Edges with no length. Faces with no areas (faces on a point or thin faces). Face corners with no area. https://docs.blender.org/manual/en/latest/modeling/meshes/editing/mesh/cleanup.html Quote Share this post Link to post Share on other sites