Skip to content

Commit

Permalink
new tex/dds converter, new texture replace tool
Browse files Browse the repository at this point in the history
  • Loading branch information
wikid24 committed Nov 27, 2023
1 parent ebe4522 commit 392054a
Show file tree
Hide file tree
Showing 13 changed files with 363 additions and 644 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
auto-install package.py
/ffxiv_mmd_tools_helper/ext/ffxiv-tex-converter
13 changes: 7 additions & 6 deletions ffxiv_mmd_tools_helper/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
bl_info = {
"name": "FFXIV MMD Tools Helper",
"author": "wikid24",
"version": (0, 869),
"version": (0, 870),
"blender": (2, 80, 0),
"location": "View3D > Sidebar > FFXIV MMD Tools Helper",
"description": "Fork of MMDToolsHelper for FFXIV Models & updated Blender to be compatible with 2.8+",
Expand Down Expand Up @@ -31,6 +31,7 @@ def register_wrap(cls):
__bl_classes.append(cls)
return cls


if "bpy" in locals():
if bpy.app.version < (2, 71, 0):
import imp as importlib
Expand Down Expand Up @@ -65,8 +66,7 @@ def register_wrap(cls):
importlib.reload(shaders_colorsetter)
importlib.reload(shaders_mektools)
importlib.reload(shaders)
importlib.reload(toon_textures_to_node_editor_shader)
importlib.reload(toon_modifier)
importlib.reload(tex_converter)
importlib.reload(panels)

else:
Expand Down Expand Up @@ -104,8 +104,7 @@ def register_wrap(cls):
from . import shaders_colorsetter
from . import shaders_mektools
from . import shaders
from . import toon_textures_to_node_editor_shader
from . import toon_modifier
from . import tex_converter
from . import panels

if bpy.app.version < (2, 80, 0):
Expand All @@ -114,11 +113,13 @@ def register_wrap(cls):
logging.basicConfig(format='%(message)s', level=logging.DEBUG)


#register all classes found in python files
def register():
for cls in __bl_classes:
bpy.utils.register_class(cls)
print(__name__, 'registed %d classes'%len(__bl_classes))
print(__name__, 'registered %d classes'%len(__bl_classes))

#unregister all classes found in python files
def unregister():
for cls in reversed(__bl_classes):
bpy.utils.unregister_class(cls)
Expand Down
34 changes: 19 additions & 15 deletions ffxiv_mmd_tools_helper/addon_preferences.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from bpy.types import AddonPreferences
from bpy.props import StringProperty


@register_wrap
class FFXIV_MMDAddonPreferences(bpy.types.AddonPreferences):
bl_idname = __package__
Expand All @@ -13,22 +14,10 @@ class FFXIV_MMDAddonPreferences(bpy.types.AddonPreferences):
name="TexTools 'Saved' Folder",
description=("Directory path to TexTools 'Saved' Folder. This is normally where TexTools saves all model & texture files upon export"),
subtype='DIR_PATH',
)

def draw(self, context):
layout = self.layout
layout.prop(self, "textools_saved_folder")

"""
if not self.textools_saved_folder:
# If the property is not set, set a default value here
user_profile = os.environ.get('USERPROFILE')
if user_profile:
documents_folder = os.path.join(user_profile, 'Documents', 'TexTools', 'Saved')
self.textools_saved_folder = documents_folder
"""
)

# def update_textools_saved_folder(self, context):

def update_textools_saved_folder(self):
if not self.textools_saved_folder:
# If the property is not set, set a default value here
user_profile = os.environ.get('USERPROFILE')
Expand All @@ -43,3 +32,18 @@ def draw(self, context):
else:
# Fallback to a different location if the folder doesn't exist
self.textools_saved_folder = "" # Set your desired fallback path here


def draw(self, context):
#print(bpy.context.preferences.addons.get('ffxiv_mmd_tools_helper').preferences.textools_saved_folder)
if self.textools_saved_folder=='':
self.update_textools_saved_folder()

layout = self.layout
layout.prop(self, "textools_saved_folder")






10 changes: 10 additions & 0 deletions ffxiv_mmd_tools_helper/ext/compiler_instructions.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#1) download all files from https://github.com/emarron/ffxiv-tex-converter
#2) delete folders '.idea','notes'
#3) delete files '.gitignore','README.md','LICENSE'
#4) copy folders/files from C:\Users\%userprofile%\AppData\Local\Programs\Python\Python311\Lib\site-packages to 'ffxiv-tex-converter' folder
# .\kaitaistruct.py
# .\colorama (folder)
# .\tqdm (folder)
#5) rename 'run.py' to '__main__.py'
#6) run this in powershell in ext folder: python -m zipapp ffxiv-tex-converter
# will create a ffxiv-tex-converter.pyz file that can be used
Binary file not shown.
58 changes: 25 additions & 33 deletions ffxiv_mmd_tools_helper/import_ffxiv_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,26 +448,7 @@ def rename_ffxiv_mesh(obj):

def main(context):



if bpy.context.scene.selected_ffxiv_test_model == "import_nala":
#bpy.context.view_layer.objects.active = model.findArmature(bpy.context.active_object)
filepath='C:\\Users\\wikid\\OneDrive\\Documents\\TexTools\\Saved\\FullModel\\Nala V3\\Nala V3.fbx'
import_ffxiv_model(context,filepath)

elif bpy.context.scene.selected_ffxiv_test_model == "import_nala_deluxe":
#bpy.context.view_layer.objects.active = model.findArmature(bpy.context.active_object)
filepath='C:\\Users\\wikid\\OneDrive\\Documents\\TexTools\\Saved\\FullModel\\Nala V3\\Nala V3.fbx'
import_ffxiv_model(context,filepath)
miscellaneous_tools.fix_object_axis()
bones_renamer.main(context)
miscellaneous_tools.correct_root_center()
miscellaneous_tools.correct_groove()
miscellaneous_tools.correct_waist()
miscellaneous_tools.correct_waist_cancel()
add_foot_leg_ik.main(context)
else:
import_ffxiv_model(context,get_test_model_file_path(bpy.context.scene.selected_ffxiv_test_model))
import_ffxiv_model(context,get_test_model_file_path(bpy.context.scene.selected_ffxiv_test_model))


from bpy_extras.io_utils import ImportHelper
Expand Down Expand Up @@ -531,30 +512,41 @@ def execute(self, context):


@register_wrap
class SelectTexToolsModelFolder(bpy.types.Operator):
class SelectTexToolsSavedFolder(bpy.types.Operator,ImportHelper):
"""User can select the folder for materials"""
bl_idname = "ffxiv_mmd.select_textools_model_folder"
bl_label = "Select TexTools Model Folder"
bl_idname = "ffxiv_mmd.select_textools_saved_folder"
bl_label = "Accept"
bl_options = {'REGISTER', 'UNDO'}

# Filter folders only
filename_ext = ""
filter_folder = True
filter_file = False
filter_glob: bpy.props.StringProperty(default="", options={'HIDDEN'})



bpy.types.Scene.textools_saved_folder = bpy.props.StringProperty(
name="TexTools 'Saved' Folder"
, description="Folder where FFXIV TexTools stores it's texture files"
, default=''
, maxlen=0, options={'ANIMATABLE'}, subtype='DIR_PATH', update=None, get=None, set=None)
, maxlen=0, update=None, get=None, set=None)

#@classmethod
#def poll(cls, context):
# return context.active_object is not None and context.active_object.type == 'MESH'
def invoke(self, context, event):

self.filepath = context.scene.textools_saved_folder

context.window_manager.fileselect_add(self)
return {'RUNNING_MODAL'}


def execute(self, context):
#self.textools_model_folder = context.preferences.addons['ffxiv_mmd_tools_helper'].preferences.textools_saved_folder.title()
context.scene.textools_saved_folder = bpy.path.abspath(self.filepath)

#addon_prefs_textools_folder = context.preferences.addons['ffxiv_mmd_tools_helper'].preferences.textools_saved_folder
#print(addon_prefs_textools_folder)

# Use the default folder from the addon preferences
#default_folder = addon_prefs_textools_folder


context.scene.textools_saved_folder = bpy.path.abspath(context.scene.textools_saved_folder)
folder_path = context.scene.textools_saved_folder
print(folder_path)
return {'FINISHED'}

3 changes: 1 addition & 2 deletions ffxiv_mmd_tools_helper/miscellaneous_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,9 +324,8 @@ def main(context):
reset_selected_bone_positions(context,armature)







@register_wrap
Expand Down
13 changes: 7 additions & 6 deletions ffxiv_mmd_tools_helper/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,7 @@ def findArmature(obj):

if bpy.context.mode == 'OBJECT':
if obj.hide == True:
obj.hide = False


obj.hide = False

if obj.type == 'ARMATURE':
arm = obj
Expand All @@ -67,14 +65,16 @@ def findArmature(obj):
if obj.parent.type == 'ARMATURE':
#obj.mmd_root.show_armature = True
arm = obj.parent
arm.hide = False
if arm.hide == True:
arm.hide = False
return arm
else:
for child in obj.parent.children:
if child.type == 'ARMATURE':
#child.mmd_root.show_armature = True
arm = child
arm.hide = False
if arm.hide == True:
arm.hide = False
return arm
if obj.parent.parent is not None:
if obj.parent.parent.type == 'ARMATURE':
Expand All @@ -87,7 +87,8 @@ def findArmature(obj):
for child in obj.parent.parent.children:
if child.type == 'ARMATURE':
arm = child
arm.hide = False
if arm.hide == True:
arm.hide = False
#child.mmd_root.show_armature = True
return arm
if hasattr(obj, "mmd_type"):
Expand Down
Loading

0 comments on commit 392054a

Please sign in to comment.