About This File
KotORBlender 1.01 for Blender
What's New in Version 1.01 See changelog
KotORBlender 1.01 for Blender
AUTHORS: Symmetric, Purifier, Ndix UR
ORIGINAL RELEASE: 7/4/2018
A new improved version of KotorBlender to import & export Kotor ASCII MDL files into Blender 2.71 or above. This new version has many new features integrated into KotorBlender, with the help of a python script known as Odyssey Tools developed by Ndix UR, which allows you to edit different properties of the Kotor models in Blender.
- Animation improvements: supports scale animation, supports bezierkey animations. Before, nvb was importing all of the linear keyframes as bezier keyframes (the default), so that was inaccurate. Now linear keyframes are set to linear, and bezier are set to bezier, with the correct control point locations. You can even mix linear and bezier keyframes in a single timeline and it will provide linear-equivalent control points automatically.
- Smooth group export changed to bitflag style, similar to 3dsmax. The whole sharp edge marking thing never really worked for smooth groups before, but with another change to mdlops, it can finally work correctly.
- Room linking for WOK import/export: lets you add a room index to edges in AABB nodes in order to make modules join other modules (part of the walkmesh file). There is a new picker interface that gets added to the 'Properties' bar, and it is implemented as a specifically named vertex color map on the back-end. It looks for a list of 'roomlinks' in the ASCII during import also.
- Import/export PWK/DWK/WOK, with the dummy and mesh support you need to set 'use' points on placeables and doors, and animations on the walkmesh meshes as seen in door models.
- Exports things it does not understand for all node types (before, it only did emitter).
- Fixes a lot of the types to be kotor-specific (lightsaber mesh type, door/placeable) and drops some of the nwn-exclusive stuff (classification Tile, TileFade mesh flag)
- Reads LYT files to automatically place area models, can export them, etc.
- TXI file Import/Export and editing via Odyssey Texture Properties tab.
Installation\Uninstallation\How To Use:
We have included a user manual with the new KotorBlender version, on installing & uninstalling with detailed explanations on the features and functions of KotorBlender. Our KotorBlender user manual should explain what you need to know and how to use KotORBlender's new features.
We are not aware of any bugs. All known bugs were fixed after several tests before release. But since the software is still in it's continuing development stage, please report to us any new bugs you may find at Deadly Stream at: https://deadlystream.com/topic/4548-kotorblender/
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any non-profit purpose, including non-profit commercial applications, and to alter it and redistribute it, subject to the following restrictions:
1. This software is not to be redistributed as part of a 'for-profit' application.
2. The origin of this software must not be misrepresented; you must not claim that you wrote the original software by yourself. If you use this software in a product, an acknowledgment in the product documentation is required.
3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
4. This notice must be included in any original source distribution.
A lot of credit and special thanks goes to Symmetric for creating the NeverBlender script, a Blender importer\exporter originally designed for the NWN 1 models, but it just so happened on the off chance that his early NeverBlender scripts would also import and export some Kotor ASCII models as well. If he had never created NeverBlender, then our work on KotORBlender may have never began. And for giving me some advice about using python's built-in library function to make python coding a little easier, while working on the KotORBlender project in the very beginning. NeverBlender is made by Symmetric and can be found at the NWVault;
Much credit and special thanks goes to Ndix UR, who did all of the modified code work in this version, by offering to take over the second development of KotORBlender. Ndix UR used a later a version of the NeverBlender script and modified a lot of the NVB code for a much improved KotORBlender version. Without his tremendous help and coding skills, I probably would still be trying to improve the old KB version with my limited coding skills. And because of his help and work, the latest KotORBlender script will now do so much more and work with the current API in the latest Blender versions. And in the early days of KB, thanks to Ndix UR for bringing to the KotOR community's attention, about the problem of NeverBlender exporting KotOR models with classifications in all capitalized letters. Even though his overall suggestion was to fix a line in the MDLops code, with a fix code that he provided, this brought out the curiosity of the python novice in me to see if I couldn't also fix the code in NeverBlender, which was the very beginning of creating the first KotORBlender version.
Credit and special thanks also goes to Hunters Run for contacting me with suggestions on fixing some early issues in the first KotorBlender version, while later on supporting and testing my early work at attempting to develop a second KotorBlender version, then later on for supporting and testing Ndix UR's latest work as well. And continuing to give us his advice on ideals and possible solutions to improve KotorBlender.
Credit and special thanks goes to ApanLoon for supporting and testing KotorBlender and continuing to giving us his advice on ideals and possible solutions to improve KotorBlender.
Date: Thu Jun 14 17:53:28 2018 -0700
Bumped version to 1.0.1
Date: Thu Jun 14 17:48:39 2018 -0700
Fixed nvb_props detailed description of nDynamicType/isdynamic property values apparently still a work in progress
Date: Thu Jun 14 17:44:54 2018 -0700
Added TXI file handling windows compatibilities: relative path handling and CRLF usage
Date: Thu Jun 14 17:16:10 2018 -0700
Added nvb_io search for rootDummy of model to export in ancestors of current active object before resorting to search, increased convenience when working with many area models at once
Date: Wed Jun 13 20:06:23 2018 -0700
Fixed nvb_node matching of nodes named with different case during reuse decision, from layout file, or even just within a model for some reason
Date: Wed Jun 13 20:03:43 2018 -0700
Added nvb_utils method to search all object names in case insensitive fashion for finding named objects across different sources that may have very different cases in use
Date: Wed Jun 13 20:00:33 2018 -0700
Added nvb_props detailed description of the nDynamicType/isdynamic property allowed values
Date: Wed Jun 13 18:28:00 2018 -0700
Fixed nvb_mdl layoutposition calculation when exporting area models and user has loaded a full layout (placing area models at their layout position in world space); previous logic performed addition in this case, update uses one or the other of stored layoutposition or non-zero MDL root position
Date: Tue Jun 12 13:47:56 2018 -0700
Fixed nvb_node case where text nodes are missing, as when a user appends an object from a separate blend file
Date: Sun Jun 10 15:50:23 2018 -0700
Fixed skin weights using different case node names, this happens when transferring nodes between different models sometimes
Date: Wed Jun 6 01:00:34 2018 -0700
Fixed animation scale which was not being saved to the rootDummy object upon import, causing it to always be 1.0
Date: Mon Jun 4 21:01:09 2018 -0700
Fixed NULL string in depth texture name default instead of using constant, chunkname initialize to empty string
Date: Mon Jun 4 20:59:51 2018 -0700
Fixed initial value for depth texture name, and removed use of python broken string title case function in matching of emitter render value.
Date: Wed May 23 00:29:26 2018 -0700
Added uv map preservation for aabb nodes (lightmapped grass requirement) and fixed case where model has lightmap in texture slot 2 but no diffuse
Date: Wed May 23 00:27:51 2018 -0700
Added priority export for selected object when numerous odyssey models are in the same scene
Date: Sat Jan 20 23:46:05 2018 -0800
Fixed PWK/DWK node handling and added proper compatibility with kotormax and mdledit style walkmesh files
Date: Mon Jan 15 02:47:52 2018 -0800
Fixed node search object validity test before using in the user-supplied test to keep the tests simpler
Date: Mon Jan 15 02:46:09 2018 -0800
Added proper .ascii extension handling for PWK/DWK
Date: Mon Jan 15 02:44:44 2018 -0800
Props needed for dynamic commit
Date: Tue Jan 9 21:29:20 2018 -0800
Fixed animation nodes getting wrong match values due to partial controller name matching
Date: Tue Jan 9 20:50:44 2018 -0800
Added non-boolean nDynamicType handling, replacing isDynamic which is wrong for us
Date: Tue Jan 2 21:51:05 2018 -0800
Added support for kmax emitter keyed floats that should maybe be ints
Date: Sat Dec 30 11:11:43 2017 -0800
Fixed handling of models with lightmap and no diffuse texture
Date: Fri Nov 17 00:28:44 2017 -0800
Added forced disable of compressed quaternions, something about the current orientation export breaks compressed quaternion support.
Date: Sun Oct 29 13:03:00 2017 -0700
Added version 1.0 string to bl_info, reset from version numbers tracking existing parallel nvb builds.
Date: Sun Oct 29 13:02:12 2017 -0700
Fixed new animation scene when copying nodes was pulling in nvb.rawascii, so we would get the unparsed ascii from geometry nodes on exported animation nodes, which is bad. Now rawascii is cleared on anim scene node copy.
Date: Sun Oct 29 12:59:19 2017 -0700
Fixed orientation bezier keyed animations are known to work in game, but they are going to need a more careful handling than I can give right now. For now, disable export of bezier animations, just exporting them as linear if someone has used bezier keyframes. We already read them as linear always during import, so it is just problematic when people add keyframes because bezier is the default.
Date: Sun Oct 29 12:56:42 2017 -0700
Added nvb_props enums need an explicit none default value, as the empty string seems to not work in some cases.
Date: Mon Oct 16 20:18:32 2017 -0700
Fixed wrong enum value for smoothgroup single setting
Date: Mon Oct 16 20:12:56 2017 -0700
Added mdledit compatibility for area models, roomlinks in the aabb node and layoutposition in the geometry section
Date: Tue Oct 10 23:19:14 2017 -0700
Added use texindices1 on import when present, falling back to face list mapping otherwise
Date: Tue Oct 10 23:18:56 2017 -0700
Added 3 int list parser to nvb_parse
Date: Tue Oct 10 21:43:22 2017 -0700
Added compress_quaternions and headlink support
Date: Tue Oct 10 20:49:48 2017 -0700
Added KB class names in props and kb prefixed operator names
Date: Tue Oct 10 20:46:17 2017 -0700
Added kotorblender strings and kb/nvb exclusive loading logic
Date: Sun Aug 27 00:57:14 2017 -0700
Added classification 0 should be called Other, and add classification 64, called, for now, Flyer
Date: Sun Aug 27 00:42:49 2017 -0700
Fixed node addToScene could be unsafe when a kotor node name was in use in a scene by a non-kotor object of different type, for instance, a mesh named Camera was colliding with the default camera of the same name.
Date: Sat Aug 19 00:23:45 2017 -0700
For some reason, matrix_local is not yielding correct values for some down-tree meshes, return to getAuroraRotFromObject helper usage.
Date: Sat Aug 5 00:28:29 2017 -0700
Added preservation of tverts when image textures are null, important for certain TSL models where the model texture specifications are dropped, relying on 2DA texture definitions instead
Date: Sun Jul 30 00:43:54 2017 -0700
Added vertex colors export.
Date: Sat Jul 29 00:45:16 2017 -0700
Added support for .mdl.ascii file extension
Date: Sun Jul 23 00:39:47 2017 -0700
Added support for unknown classification byte-2, just passthrough, no UI provided at this point.
Date: Wed Jul 12 21:44:41 2017 -0700
Added support for ignorefog, byte 4 of model header.
Date: Wed Jul 12 21:18:56 2017 -0700
Added try/catch for emitter property parsing, needed more broadly but it is a start.
Date: Tue Jun 20 01:26:08 2017 -0700
Added unparseable data support to reference nodes, which apparently exist in k1.
Date: Sun Jun 18 17:07:33 2017 -0700
Fixed syntax error after removing tilefade
Date: Sat Jun 17 20:45:52 2017 -0700
Removed tilefade, nwn-only property for Tile models.
Date: Sat Jun 17 20:02:40 2017 -0700
Removed so-called scaling fix which applies scale to vert positions, breaking lightsaber blade exports (most notably)
Date: Tue Jun 13 22:25:18 2017 -0700
Added lightsaber meshtype for kotormax/mdledit saber blade style
Date: Tue Jun 13 19:40:58 2017 -0700
Added AUTO as default smoothgroup mode, rather than separate which is a niche mode at best. Otherwise single would be the best probably.
Date: Tue Jun 13 19:39:52 2017 -0700
Fixed backgroundGeometry parser mesh data parse, had forgotten that strings are lowercased before reaching the comparison.
Date: Sat Jun 10 01:08:32 2017 -0700
Added half-baked armature creation support, very preliminary and experimental right now.
Date: Fri Jun 9 12:58:32 2017 -0700
Added version bump just to differentiate.
Date: Fri Jun 9 12:58:02 2017 -0700
Fixed tangentspace output as a texture setting requires a texture.
Date: Sun Jun 4 13:42:26 2017 -0700
Removed shininess and specular mesh support, they are not supported by Odyssey engine, nor are they even part of Odyssey engine model format.
Date: Thu Jun 1 23:14:32 2017 -0700
Added 10 missing mesh properties found in the trimesh header data structures, 4 of which are K2:TSL-only. All are merely available in the UI, not animatable and do not control anything in the editor. It is theorized that the UV animation settings could be represented in the editor, perhaps in the future.
Date: Thu Jun 1 01:31:45 2017 -0700
Fixed robustness of animation parsing, now properly handles weird missing data for controller0key oddballs.
Date: Thu Jun 1 01:30:48 2017 -0700
Fixed parenting of importing nodes such that they remain under the correct MDL root dummy.
Date: Wed May 31 00:21:40 2017 -0700
Added emitter controller animation support.
Date: Tue May 30 21:04:01 2017 -0700
Added finished refactoring of animation in preparation for all the emitter controllers.
Date: Thu May 25 01:02:52 2017 -0700
Add first support for emitter properties, taking some parts of kotorblender and nwmax for the effort, animation support is still needing to be done, but a round of anim cleanup is needed first.
Date: Tue May 23 22:21:00 2017 -0700
Fixed nvb_parse f1 which should not tuple the resulting single floats in its lists
Date: Sun May 21 20:55:00 2017 -0700
Added TXI support, odyssey texture properties panel, import/export of TXI on mdl load/save (optionally), and implementation of tangentspace ndoe data. Still plenty of room for improvement but it is an adequate starting point.
Date: Fri May 19 23:17:23 2017 -0700
Added code to allow models to attach to existing rootdummies without moving/reorienting them, etc. needed for layout loading, also added name output to name conflict warning.
Date: Sat May 13 14:27:13 2017 -0700
Added importWalkmesh to glob, previously missed.
Date: Sat May 13 14:25:53 2017 -0700
Fixed upper-casing of classification is better done in title (aka ucfirst) case.
Date: Sat May 13 14:17:26 2017 -0700
Added smoothgroup changes, make it use 3ds style bitflag, multiple-inclusive smoothgroups. blender does not support these very well at all, but it does not support the other kind well either...
Date: Sat May 13 14:06:57 2017 -0700
Added lightmapped flag export previously missed.
Date: Sat May 13 14:06:07 2017 -0700
Added support for roomlinks import/export
Date: Sat May 13 13:37:24 2017 -0700
Added aabb as wok trimesh functionality, impersonate trimesh on export, compute and maintain lytposition translation value to apply at export.
Date: Sat May 13 13:07:09 2017 -0700
Fixed bug preventing walkmesh node starting on first line from being parsed, the header is cute but not required.
Date: Sat May 13 13:05:44 2017 -0700
Added proper material support for trimesh nodes imported as part of walkmesh.
Date: Sat May 13 12:48:31 2017 -0700
Added walkmesh scene import has to move into mdl scene import because there might be dummies that the walkmesh should take over, but those same nodes need to be copied when animations are imported, and both of those imports happen w/in mdl.importToScene. Also adds the walkmesh support to assume control of existing dummies rather than inserting new rootdummies outside the model hierarchy.
Date: Sat May 13 12:30:33 2017 -0700
Added roottype nvb_node object property for tracking what the type of a nodes direct ancestor rootdummy is.
Date: Sat May 13 12:13:21 2017 -0700
Added slight bump to aabb recursion limit for some reason, I think I merged this from somewhere?
Date: Sat May 13 12:10:40 2017 -0700
Fixed frequent parse killing error line in nvb_anim, running requiresUniqueData without testing object existence.
Date: Sat May 13 12:06:21 2017 -0700
Added eventlist handling for animations, the way mdlops used to export them.
Date: Sat May 13 12:02:55 2017 -0700
Added exportNeeded test to anim_node, which ensures that only nodes that should be part of an animation wind up being exported with the animation.
Date: Sat May 13 11:59:04 2017 -0700
Added implementation of bezier keyed animations, new anim_node helper method addKeyframeToCurve handles setting interpolation and control handle positions.
Date: Sat May 13 11:56:19 2017 -0700
Added a measure of sanity to nvb_parse library by pulling all the parse N functions back into a single implementation that takes N as a parameter, retained all the specific N driver methods.
Date: Sat May 13 03:56:13 2017 -0700
Added .7g formatted outputs instead of fixed width 8.7f
Date: Sat May 13 03:51:29 2017 -0700
Added nvb_node light support for negative light colors and initialization of shadow state on import.
Date: Sat May 13 03:48:03 2017 -0700
Added generalized support for unknown content to be passed through for most node types, allowing compiler improvements to be preserved w/o explicit support in blender.
Date: Sat May 13 03:28:42 2017 -0700
Added all caps NULL as in vanilla kotor models.
Date: Sat May 13 03:27:16 2017 -0700
Added kotor model classifications.
Date: Sat May 13 03:17:51 2017 -0700
Added renamed import/export operations, updated package imports.
Date: Sat May 13 03:12:37 2017 -0700
Added obj traversal helpers to nvb_utils.
Date: Sat May 13 03:10:36 2017 -0700
Added Odyssey replacement of Aurora language signaling that some choices are made which will break NWN support.
Date: Sat May 13 03:03:30 2017 -0700
Added minimap render settings for kotor.
Date: Sat May 13 02:59:52 2017 -0700
Added lightmapped mesh support, including bitmap2, texindices1, tverts1, secondary texture settings.
Date: Thu May 11 15:08:53 2017 -0700
Fixed minimap render alpha mode default to transparent from sky
Date: Thu May 11 15:05:22 2017 -0700
Merged changes from neverblender 1.29 that are applicable to Odyssey/KotOR.
Date: Thu May 11 13:17:13 2017 -0700
Merged changes from neverblender 1.25 that are applicable to Odyssey/KotOR.
Date: Wed May 10 19:05:06 2017 -0700
Removed code designed to keep tvert positions unique, which absolutely breaks MDX compatibility requirement.
Date: Wed May 10 19:03:29 2017 -0700
Added maximum rounding to 7 places and consistent output of up to 7 significant figures of precision in node ascii output.
Date: Wed May 10 18:41:09 2017 -0700
Added version to bl_info structure
Date: Wed May 10 18:40:36 2017 -0700
Initial commit of version 1.23a released by Symmetric, obtained from nwnvault.
Version 0.1 (2016-06-12)
With permission granted from Symmetric, used his early version of
NeverBlender 1.11 Python script files to rewrite and fix some of the
code in those files to be specifically tailor-made for importing &
exporting KotOR ASCII MDL files.
Renamed and edited the python files where all the old NeverBlender
references were removed, in order to organize the files better and
in accord with the file name of "kotorblender" for possible future
Fixed the classification problem that was returning the classifications
in all capitalized letters, which at the time was causing all models to
lose their shadows in the game and some models were having unusual
erratic camera behavior during third person view combat mode. Which now
returns the classifications to lower case letters with the first letter
Fixed another issue where the ASCII MDL PC models would not import into
Blender, when converted to ASCII format by either MDLops 6 or 7. All PC
ASCII MDL files should now import into Blender.