Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Blender 2.80 and later using the same method as mmd_tools #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions mmd_tools_helper/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# VSCode
.vscode/
120 changes: 76 additions & 44 deletions mmd_tools_helper/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,73 +2,105 @@
"name": "MMD tools helper",
"author": "Hogarth-MMD",
"version": (2, 4),
"blender": (2, 79, 0),
"blender": (2, 80, 0),
"location": "View3D > Tool Shelf > MMD Tools Helper",
"description": "various mmd_tools helper scripts",
"warning": "",
"wiki_url": "",
"category": "Object",
}

import bpy
__bl_classes = []
def register_wrap(cls):
#print('%3d'%len(__bl_classes), cls)
#assert(cls not in __bl_classes)
if __make_annotations:
bl_props = {k:v for k, v in cls.__dict__.items() if isinstance(v, __bpy_property)}
if bl_props:
if '__annotations__' not in cls.__dict__:
setattr(cls, '__annotations__', {})
annotations = cls.__dict__['__annotations__']
for k, v in bl_props.items():
#print(' -', k, v)
#assert(v.__class__.__name__ == '_PropertyDeferred' or getattr(v[0], '__module__', None) == 'bpy.props' and isinstance(v[1], dict))
annotations[k] = v
delattr(cls, k)
if hasattr(cls, 'bl_rna'):
__bl_classes.append(cls)
return cls

if "bpy" in locals():
if bpy.app.version < (2, 71, 0):
import imp as importlib
else:
import importlib
importlib.reload(model)
importlib.reload(mmd_view)
importlib.reload(mmd_lamp_setup)
importlib.reload(convert_to_blender_camera)
importlib.reload(background_color_picker)
importlib.reload(boneMaps_renamer)
importlib.reload(replace_bones_renaming)
importlib.reload(armature_diagnostic)
importlib.reload(add_foot_leg_ik)
importlib.reload(add_hand_arm_ik)
importlib.reload(display_panel_groups)
importlib.reload(toon_textures_to_node_editor_shader)
importlib.reload(toon_modifier)
importlib.reload(reverse_japanese_english)
importlib.reload(miscellaneous_tools)
importlib.reload(blender_bone_names_to_japanese_bone_names)
else:
import bpy
import logging

__make_annotations = (bpy.app.version >= (2, 80, 0))
__bpy_property = (bpy.props._PropertyDeferred if hasattr(bpy.props, '_PropertyDeferred') else tuple)
from . import model
from . import mmd_view
from . import mmd_lamp_setup
from . import convert_to_blender_camera
from . import background_color_picker
from . import boneMaps_renamer
from . import replace_bones_renaming
from . import armature_diagnostic
from . import add_foot_leg_ik
from . import add_hand_arm_ik
from . import display_panel_groups
from . import toon_textures_to_node_editor_shader
from . import toon_modifier
from . import reverse_japanese_english
from . import miscellaneous_tools
from . import blender_bone_names_to_japanese_bone_names

if bpy.app.version < (2, 80, 0):
bl_info['blender'] = (2, 70, 0)

logging.basicConfig(format='%(message)s', level=logging.DEBUG)

@register_wrap
class MMDToolsHelperPanel(bpy.types.Panel):
"""Creates the MMD Tools Helper Panel in a VIEW_3D TOOLS tab"""
bl_label = "MMD Tools Helper"
bl_idname = "OBJECT_PT_mmd_tools_helper"
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_region_type = "TOOLS" if bpy.app.version < (2,80,0) else "UI"
bl_category = "mmd_tools_helper"

def draw(self, context):
layout = self.layout
row = layout.row()

from . import model
from . import mmd_view
from . import mmd_lamp_setup
from . import convert_to_blender_camera
from . import background_color_picker
from . import boneMaps_renamer
from . import replace_bones_renaming
from . import armature_diagnostic
from . import add_foot_leg_ik
from . import add_hand_arm_ik
from . import display_panel_groups
from . import toon_textures_to_node_editor_shader
from . import toon_modifier
from . import reverse_japanese_english
from . import miscellaneous_tools
from . import blender_bone_names_to_japanese_bone_names


import imp
imp.reload(model)
imp.reload(mmd_view)
imp.reload(mmd_lamp_setup)
imp.reload(convert_to_blender_camera)
imp.reload(background_color_picker)
imp.reload(boneMaps_renamer)
imp.reload(replace_bones_renaming)
imp.reload(armature_diagnostic)
imp.reload(add_foot_leg_ik)
imp.reload(add_hand_arm_ik)
imp.reload(display_panel_groups)
imp.reload(toon_textures_to_node_editor_shader)
imp.reload(toon_modifier)
imp.reload(reverse_japanese_english)
imp.reload(miscellaneous_tools)
imp.reload(blender_bone_names_to_japanese_bone_names)



def register():
bpy.utils.register_module(__name__)

for cls in __bl_classes:
bpy.utils.register_class(cls)
print(__name__, 'registed %d classes'%len(__bl_classes))

def unregister():
bpy.utils.unregister_module(__name__)
for cls in reversed(__bl_classes):
bpy.utils.unregister_class(cls)


if __name__ == "__main__":
register()
register()
20 changes: 5 additions & 15 deletions mmd_tools_helper/add_foot_leg_ik.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import bpy
import math

from . import register_wrap
from . import model

# def armature_diagnostic():
Expand Down Expand Up @@ -32,12 +34,13 @@
# if b in bpy.context.active_object.data.bones.keys():
# print('This armature appears to already have IK bones. This bone seems to be an IK bone:', '\n', b)

@register_wrap
class Add_MMD_foot_leg_IK_Panel(bpy.types.Panel):
"""Add foot and leg IK bones and constraints to MMD model"""
bl_idname = "OBJECT_PT_mmd_add_foot_leg_ik"
bl_label = "Add foot leg IK to MMD model"
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_region_type = "TOOLS" if bpy.app.version < (2,80,0) else "UI"
bl_category = "mmd_tools_helper"

def draw(self, context):
Expand Down Expand Up @@ -372,7 +375,7 @@ def main(context):

bpy.context.active_object.data.draw_type = 'OCTAHEDRAL'


@register_wrap
class Add_MMD_foot_leg_IK(bpy.types.Operator):
"""Add foot and leg IK bones and constraints to MMD model"""
bl_idname = "object.add_foot_leg_ik"
Expand All @@ -386,16 +389,3 @@ def execute(self, context):
clear_IK(context)
main(context)
return {'FINISHED'}

def register():
bpy.utils.register_class(Add_MMD_foot_leg_IK)
bpy.utils.register_class(Add_MMD_foot_leg_IK_Panel)


def unregister():
bpy.utils.unregister_class(Add_MMD_foot_leg_IK)
bpy.utils.unregister_class(Add_MMD_foot_leg_IK_Panel)


if __name__ == "__main__":
register()
20 changes: 5 additions & 15 deletions mmd_tools_helper/add_hand_arm_ik.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import bpy
import math

from . import register_wrap
from . import model

@register_wrap
class Add_MMD_Hand_Arm_IK_Panel(bpy.types.Panel):
"""Add hand and arm IK bones and constraints to active MMD model"""
bl_idname = "OBJECT_PT_mmd_add_hand_arm_ik"
bl_label = "Add Hand Arm IK to MMD model"
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_region_type = "TOOLS" if bpy.app.version < (2,80,0) else "UI"
bl_category = "mmd_tools_helper"

def draw(self, context):
Expand Down Expand Up @@ -294,7 +297,7 @@ def main(context):
bpy.context.active_object.pose.bones["middle1_IK_R_t"].bone_group = bpy.context.active_object.pose.bone_groups['IK']



@register_wrap
class Add_MMD_Hand_Arm_IK(bpy.types.Operator):
"""Add hand and arm IK bones and constraints to active MMD model"""
bl_idname = "object.add_hand_arm_ik"
Expand All @@ -308,16 +311,3 @@ def execute(self, context):
clear_IK(context)
main(context)
return {'FINISHED'}

def register():
bpy.utils.register_class(Add_MMD_Hand_Arm_IK)
bpy.utils.register_class(Add_MMD_Hand_Arm_IK_Panel)


def unregister():
bpy.utils.unregister_class(Add_MMD_Hand_Arm_IK)
bpy.utils.unregister_class(Add_MMD_Hand_Arm_IK_Panel)


if __name__ == "__main__":
register()
Loading