<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi,<div><br></div><div>This is my first post, I have been trying to fix the issues of the official FBX plugin in Blender 2.72, and I have a few good news to you :-)</div><div><br></div><div>Solution one:</div><div><br></div><div>Open this python script (Mac)</div><div><br></div><div>/Applications/Blender/blender.app/Contents/Resources/2.72/scripts/addons/io_scene_fbx/import_fbx.py</div><div><br></div><div>Replace the line of</div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">ebo.tail = Vector((0.0, 1.0, 0.0)) * max(bsize, 1e-3)</div></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">With</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><div style="margin: 0px;">ebo.tail = Vector((0.0, 1e-3, 0.0))</div></div><div><br></div><div>The boring long bones will appear as small points, you can change armature’s display mode to ’Stick’ mode, the joints will display as small yellow cubes, you may easily select and operate the joints now.</div><div><br></div><div>Solution Two:</div><div><br></div><div>I have written a piece of python script to fix the directions of the imported bones, the script works, but has small issue to be fixed.</div><div><br></div><div>Here is the script:</div><div>———————————————————————————————————</div><div><div>import bpy</div><div><div>from mathutils import Matrix, Vector</div><div>bpy.ops.object.mode_set(mode='EDIT', toggle=False)</div><div>for arm in bpy.data.armatures:</div><div>    for bone in arm.edit_bones:</div><div>        # no child</div><div>        if len(bone.children) == 0:</div><div>            # ignore single joint</div><div>            if bone.parent is not None:</div><div>                trivial_length = (bone.head - bone.parent.head).magnitude * 1e-1</div><div>                # toward Y, trivial length</div><div>                bone.tail = bone.head + Vector((0.0, trivial_length, 0.0))</div><div>        # one child</div><div>        elif len(bone.children) == 1:</div><div>            bone.tail = bone.children[0].head</div><div>        # more children</div><div>        else:</div><div>            # use the average distance to its children as its length</div><div>            average_length = 0.0</div><div>            for child in bone.children:</div><div>                average_length = average_length + (bone.head - child.head).magnitude</div><div>            average_length = average_length / len(bone.children)</div><div>            # toward Y, average length</div><div>            bone.tail = bone.head + Vector((0.0, average_length, 0.0))</div><div>bpy.ops.object.mode_set(mode='OBJECT', toggle=False)</div></div><div>———————————————————————————————————</div></div><div><br></div><div>To run the script, you must select the armature in OBJECT mode, then switch to the script window, paste and run it.</div><div><br></div><div>You may find that the directions of all bones have been fixed immediately, but a few bones may rolled slightly.</div><div><br></div><div>The issue is that, when the position of the bone tail changes, the matrix of the bone will changes slightly, this will cause the bone roll slightly.</div><div><br></div><div>If there exists a way to lock the matrix of a bone when changing the position of its tail, the issue will be fixed.</div><div><br></div><div>Can we just change the position of the bone tail while don’t change anything else?</div><div><br></div><div>Art</div><div><br></div></body></html>