[Release] NX3 import/export plugin for blender

08/24/2013 17:58 glandu2#1
BTRFdom plugin features

I release now a version which seems to be complete, here are the features supported by this plugin for this version:
  • Mesh using triangles as faces
  • Duplicate vertices handling
  • Materials and texture filename (you must manage your texture image yourself, it's not included in the nx3 file)
  • Texture UV coords
  • Bones transformations including rotation (dae was not supporting rotation...)
  • Meshes without armature with meshes with armatures (bones)
  • Import/export of file using multiple material ID and multiple textures per material ID

What is not supported at this time:
  • Skeletal animations (but the model and vertices location & weight related to bones can be modified as animation data is not in nx3 files but in a naf file)
  • Matrix based animations (even modifying it's static mesh is not possible as these animation is in the nx3 file)
  • Export of meshes/armature which origin is not (0,0,0)

So with this plugin, you can edit simple files, not big structure or some mobs. But if you encounter a file that an error different from these posted here, you can post it too so I will be able to manage them correctly in later versions

How to install it

So to install the plugin, use the same architecture as the blender arch, if you have Blender x86 you must use the x86 version of the plugin. (no matter if you're running a x86 or x64 version of windows). For Blender x64 use the x64 version of the plugin.

You can't mix x86 and x64, it will throw an error if you try that.

So to install it:
  • Copy the io_scene_btrf folder in x.xx/scripts/addons where x.xx is the version of blender and is in the same folder as blender.exe
  • Open blender
  • Go to menu: "File->User preferences"
  • Choose the tab "Addons" in the new opened window (with title: Blender User Preferences)
  • Search for "Rappelz NX3 Format"
  • tick the checkbox at the right of the line with "Import-Export: Rappelz NX3 Format"
  • Click on the "Save As Default" button at the bottom left of the window

How to open a nx3 file

To open a NX3 file:
  • Go to menu: "File->Import->Rappelz NX3 (.nx3)"
  • Select your nx3 file then click on the button "Import NX3"

To have textures in blender, the texture must be in the same folder as the NX3 file. And blender may have problem when rendering DDS textures in the realtime 3D view (but the real texture is correct. You can still choose to convert the texture to another format like png and change the texture filename extension using a hex editor the nx3 file)

So here an example of a exported custom mesh (which was created by Gr4ph0s):
[Only registered and activated users can see links. Click Here To Register...]

The same char but moving, the sword follow the hand (the sword is bound to the hand using a bone)
[Only registered and activated users can see links. Click Here To Register...]

I attached the binary dll with the plugin for blender, if one of the zip does not work, try the other one. You can also compile it using the [Only registered and activated users can see links. Click Here To Register...]

1handaxe_smallaxe.zip contains 1handaxe_smallaxe.nx3 & .dds which are the one rappelz read, and 1handaxe_smallaxe_tga.nx3 and tga which are the same files but using a tga texture which blender can correctly read.

To find out how to have a exportable mesh with bones, import an existing one to see the layout in the outliner.

Armature and bones

Basically, you should just have a mesh object in a armature object.
See more here: [Only registered and activated users can see links. Click Here To Register...]

Assign an object to an armature to have bones


Important notes

Textures

Textures must be available to rappelz by either injecting them in data.00x or putting it in resources folder with the name hashed. The texture format MUST be DDS. If blender does not handle well the DDS texture, you can convert it to another format like TGA or PNG, but remember to convert it back to DDS before exporting the final model. Rappelz won't accept other files than DDS, and will show the weapon untextured in that case.

Use triangles, not quads for faces
Before exporting to nx3, you must have only triangles.
You can do that by selecting your object, then go into Edit mode.
Then select all vertices (with A shortcut) and triangulates all faces (with CTRL + T shortcut or in the menu Mesh -> Faces -> Triangulates Faces)

Assign weight to all vertices

Select your weapon, go to weight mode.
click on "Vertex selection masking for painting" (3rd button on the right of the mode combobox with "Vertex Paint" in it, it a cube with a vertex at the upper left of the cube)

At the left panel (hide/unhide it with the T key), set the Weight to 1 (under "Multi-Paint")

Then select all vertex by pressing "A" key while having the mouse in the 3D view. Vertices should all be yellow. If vertices are already yellow, press 2 times A to be sure to select all of them, even hidden ones. Then press SHIFT + K (or go to menu "Weights -> Set Weights")

This will set all vertex weight to 1 even hidden ones.

Incorrect position in-game (like weapon not in hands of the char), or how to set the origin of an object properly

You must set the origin to 0 for bones to work properly. You can do that by selecting your weapon (in object mode), then press CTRL + A while having the mouse in the 3D view. Then select Location. Do the same for Scale and Rotation.

Updates

Updated files are on github: [Only registered and activated users can see links. Click Here To Register...]
You can download import_btrf.py and export_btrf.py and replace the old one. This will update scripts.

I bumped the version to 1.2 and the new zip files contain up to date plugin. The DLL and tml files are moved to the directory where .py files are.

The 1.3 version allow to import more files, files that contain several meshes are supported (like betrayal) and texture/materials are correctly mapped. It use now blender 2.68 (else you will have not well mapped textures). Export of multiple objects is supported (even if not all have bones).

For any bug report, please go here: [Only registered and activated users can see links. Click Here To Register...]
This way, anyone will be able to see if it's bug was already corrected or is already noticed there.
If you don't want a github account, then post here
08/24/2013 18:16 DeMeTR#2
nice man ... you the best
08/24/2013 18:46 gr4ph0s#3
My dagger become an axe/sword... Sad story :'(

XD as I say you gg and thanks :)
08/24/2013 19:19 DeMeTR#4
why when always I want to export tell me error
08/24/2013 19:23 darkm125#5
gr4ph0s Nice job :o and thanks for sharing.
08/24/2013 19:49 TheOnlyOneRaskim#6
I think this is the first time im writing this but, awesome. And thanks alot for this Release. ;)
08/24/2013 20:19 glandu2#7
Quote:
Originally Posted by TheOnlyOneRaskim View Post
I think this is the first time im writing this but, awesome. And thanks alot for this Release. ;)
xD, well, if this rare, then thanks x) Btw thanks all, maybe someone will create a R8 full stuff :o
We discused shortly about that with Gr4ph0s, and encountered some not bad models like these:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Unfortunatly, the later which is a summoned bow in skyrim cannot be rendered in Rappelz as this bow use special effects than Rappelz seems to not support (or at least, my plugin don't support effects at this time, but I am sure we can do something almost like this bow using effects like enhanced stuffs (+20 for example))

Some nx3 file have duplicate faces (oh well, thanks GALA to duplicate things even faces in meshes) and caused the importer to fail.

I fixed that there [Only registered and activated users can see links. Click Here To Register...]
You can download the fixed import_btrf.py file here: [Only registered and activated users can see links. Click Here To Register...]
(right click on this link then download target or so else your browser will probably open this file as text)

Just replace the import_btrf.py file you have in io_scene_btrf folder with this one and restart any Blender instance using the btrf plugin.
08/24/2013 20:28 XavierDeFawks#8
When i import the betrayal model i get mostly bones with like 1 peice of armor. :x
08/24/2013 20:34 glandu2#9
the model is probably split, for asf_body_deco_roma.nx3 it's the case, body, hands, head, feet have different nx3 files.

The models are then connected using bones, and a NAF file probably describe animations using these bone.

So a model that use animation can be modified, but the bones must keep the same meaning as before (as they will be animated). The way bones are rotated/located in blender might not be the actual in-game position (the animation might define completely unrelated positions).

Betrayal cannot be changed to a non-human like model because of it's bones (or you must do tricks to behave as you want...)
08/24/2013 20:36 XavierDeFawks#10
Quote:
Originally Posted by glandu2 View Post
the model is probably splited, for asf_body_deco_roma.nx3 it's the case, body, hands, head, feet have different nx3 files.
Makes sense except that when i convert to dae it shows the whole model just textures r messed up :x
08/24/2013 20:56 glandu2#11
Your image is too small to read something, but there is nothing but the bones in your screenshot ?
08/24/2013 20:58 darkm125#12
glandu for me not work my weapon and gray and no modify.
08/24/2013 21:07 XavierDeFawks#13
Quote:
Originally Posted by glandu2 View Post
Your image is too small to read something, but there is nothing but the bones in your screenshot ?
Give me a minute and i will take larger screenshots of both import and dae.

Edit:

Imported
[Only registered and activated users can see links. Click Here To Register...]

DAE Convert
[Only registered and activated users can see links. Click Here To Register...]
08/24/2013 21:24 glandu2#14
Quote:
Originally Posted by darkm125 View Post
glandu for me not work my weapon and gray and no modify.
It's the export which didn't work ?

In that case:

To export a weapon mesh you must prepare it before exporting:
  • When you have your mesh in blender, import an existing rappelz weapon (ideally the one you want to replace)
  • Then delete the rappelz's weapon mesh data (select it then press delete key while having the mouse in the 3d viewport)
  • Move your object on the armature (the root of the rappelz's mesh) to set it's parent
  • Select "Armature deform with empty groups"
  • Then select your object and enter weight paint mode
  • Select the vertex group of the bone to which you will associate vertices
  • Paint vertices which must be moved with the bone
  • Repeat for other vertex groups
  • Select your object, then press CTRL+A then click on Location, then repress CTRL+A and click on Rotation & Scale

I will try to improve this using image and update the original post with that as it's not trivial (especially true for ones who never used Blender before)
08/24/2013 21:30 darkm125#15
Thanks glandu i try it tomorrow