diff --git a/.gitignore b/.gitignore index 84890cb..757f861 100644 --- a/.gitignore +++ b/.gitignore @@ -445,7 +445,8 @@ PyProjects/source/vcpkg_installed/ PyProjects/venv37/ PyProjects/venv39/ PyProjects/.venvs/ +/pypi/* temp.cpp *.exp *.max -*.mb +*.mb \ No newline at end of file diff --git a/PYProjects/skin_plus_plus/__init__.py b/PYProjects/skin_plus_plus/__init__.py index 01aded5..809975c 100644 --- a/PYProjects/skin_plus_plus/__init__.py +++ b/PYProjects/skin_plus_plus/__init__.py @@ -50,7 +50,7 @@ def __get_skin_plus_plus_py(python_version: str, debug: bool = False): return skin_plus_plus_py -def __get_dcc_backend(dcc:str, version: str, api:str): +def __get_dcc_backend(dcc: str, version: str, api: str): current_directory = pathlib.Path(__file__).parent sub_module_name = f"skin_plus_plus_{api}_{version}" sub_module_path = current_directory / f"dccs/{dcc}" / sub_module_name diff --git a/PYProjects/skin_plus_plus/__init__.pyi b/PYProjects/skin_plus_plus/__init__.pyi index c4eefbe..2d832ff 100644 --- a/PYProjects/skin_plus_plus/__init__.pyi +++ b/PYProjects/skin_plus_plus/__init__.pyi @@ -1,7 +1,6 @@ -import numpy as np -import numpy.typing as np_typing -import typing + +from . import skin_plus_plus_py from .core import FileType as _FileType from .core import export_skin_data as _export_skin_data from .core import import_skin_data as _import_skin_data @@ -26,50 +25,9 @@ The name of the current DCC. """ -class SkinData: - """ - Class containing data for a given skin object. - - --- - - This class is a wrapped c++ struct exposed to Python with Pybind11. - - # Note: It cannot be extended! - - --- - - Attributes: - ----------- - - `bone_names`: The names of the bones in the skin object. - - `bone_ids`: The ids of each influence assigned to each vertext. - These are used to map to the bone names. - - `weights`: The weights of each influence assigned to each vertext. - - `positions`: The positions of each vertex. - """ - - bone_names: list[str] - bone_ids: np_typing.NDArray[np.int64] - weights: np_typing.NDArray[np.float32] - positions: np_typing.NDArray[np.float32] - - @typing.overload - def __init__(self): - ... - - @typing.overload - def __init__( - self, - names: tuple[str, ...], - bone_ids: tuple[tuple[int, ...], ...], - weights: tuple[tuple[float, ...], ...], - positions: tuple[tuple[float, float, float], ...], - ): - ... - - -def get_skin_data(mesh_name: str) -> SkinData: +def get_skin_data(mesh_name: str) -> skin_plus_plus_py.SkinData: ... -def set_skin_weights(mesh_name: str, skin_data: SkinData) -> bool: +def set_skin_weights(mesh_name: str, skin_data: skin_plus_plus_py.SkinData) -> bool: ... diff --git a/PYProjects/skin_plus_plus/dccs/max/skin_plus_plus_pymxs_2024/skin_plus_plus_pymxs.pyd b/PYProjects/skin_plus_plus/dccs/max/skin_plus_plus_pymxs_2024/skin_plus_plus_pymxs.pyd new file mode 100644 index 0000000..ee8e97f Binary files /dev/null and b/PYProjects/skin_plus_plus/dccs/max/skin_plus_plus_pymxs_2024/skin_plus_plus_pymxs.pyd differ diff --git a/PYProjects/skin_plus_plus/py/310/skin_plus_plus_py.pyd b/PYProjects/skin_plus_plus/py/310/skin_plus_plus_py.pyd new file mode 100644 index 0000000..2661cbc Binary files /dev/null and b/PYProjects/skin_plus_plus/py/310/skin_plus_plus_py.pyd differ diff --git a/PYProjects/skin_plus_plus/skin_plus_plus_py.pyi b/PYProjects/skin_plus_plus/skin_plus_plus_py.pyi new file mode 100644 index 0000000..442068b --- /dev/null +++ b/PYProjects/skin_plus_plus/skin_plus_plus_py.pyi @@ -0,0 +1,44 @@ +import numpy as np +import numpy.typing as np_typing +import typing + + +class SkinData: + """ + Class containing data for a given skin object. + + --- + + This class is a wrapped c++ struct exposed to Python with Pybind11. + + # Note: It cannot be extended! + + --- + + Attributes: + ----------- + - `bone_names`: The names of the bones in the skin object. + - `bone_ids`: The ids of each influence assigned to each vertext. + These are used to map to the bone names. + - `weights`: The weights of each influence assigned to each vertext. + - `positions`: The positions of each vertex. + """ + + bone_names: list[str] + bone_ids: np_typing.NDArray[np.int64] + weights: np_typing.NDArray[np.float32] + positions: np_typing.NDArray[np.float32] + + @typing.overload + def __init__(self): + ... + + @typing.overload + def __init__( + self, + names: tuple[str, ...], + bone_ids: tuple[tuple[int, ...], ...], + weights: tuple[tuple[float, ...], ...], + positions: tuple[tuple[float, float, float], ...], + ): + ... diff --git a/PYProjects/source/.sln.ps1 b/PYProjects/source/.sln.ps1 index de4ea78..5182885 100644 --- a/PYProjects/source/.sln.ps1 +++ b/PYProjects/source/.sln.ps1 @@ -4,11 +4,14 @@ $Env:THIRD_PARTY_FMT = (Resolve-Path -Path "..\3rdParty\fmt-10.1.1") $Env:ADSK_MAYA_SDK_2022 = "C:\Program Files\Autodesk\Maya2022\devkit\devkitBase" $Env:ADSK_MAYA_SDK_2023 = "C:\Program Files\Autodesk\Maya2023\devkit\devkitBase" +$Env:ADSK_MAYA_SDK_2024 = "C:\Program Files\Autodesk\Maya2024\devkit\devkitBase" $Env:PYBIND11_37 = (Resolve-Path -Path "..\.venvs\py379\Lib\site-packages\pybind11") $Env:PYBIND11_39 = (Resolve-Path -Path "..\.venvs\py397\Lib\site-packages\pybind11") +$Env:PYBIND11_310 = (Resolve-Path -Path "..\.venvs\py3108\Lib\site-packages\pybind11") $Env:PYTHON_37 = (Resolve-Path -Path "C:\Users\Sheaky\.pyenv\pyenv-win\versions\3.7.9") $Env:PYTHON_39 = (Resolve-Path -Path "C:\Users\Sheaky\.pyenv\pyenv-win\versions\3.9.7") +$Env:PYTHON_310 = (Resolve-Path -Path "C:\Users\Sheaky\.pyenv\pyenv-win\versions\3.10.8") .\skin_plus_plus.sln diff --git a/PYProjects/source/skin_plus_plus.sln b/PYProjects/source/skin_plus_plus.sln index 6b69ea5..bc25008 100644 --- a/PYProjects/source/skin_plus_plus.sln +++ b/PYProjects/source/skin_plus_plus.sln @@ -22,6 +22,7 @@ Global 2022-Release|x64 = 2022-Release|x64 2023-Debug|x64 = 2023-Debug|x64 2023-Release|x64 = 2023-Release|x64 + 2024-Release|x64 = 2024-Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2021-Release|x64.ActiveCfg = 2021-Release|x64 @@ -34,6 +35,8 @@ Global {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2023-Debug|x64.Build.0 = 2023-Debug|x64 {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2023-Release|x64.ActiveCfg = 2023-Release|x64 {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2023-Release|x64.Build.0 = 2023-Release|x64 + {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2024-Release|x64.ActiveCfg = 2024-Release|x64 + {7BF5EA8D-2105-425A-967C-590AD47EC6CB}.2024-Release|x64.Build.0 = 2024-Release|x64 {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2021-Release|x64.ActiveCfg = 2021-Release|x64 {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2021-Release|x64.Build.0 = 2021-Release|x64 {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2022-Debug|x64.ActiveCfg = 2022-Debug|x64 @@ -44,6 +47,8 @@ Global {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2023-Debug|x64.Build.0 = 2023-Debug|x64 {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2023-Release|x64.ActiveCfg = 2023-Release|x64 {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2023-Release|x64.Build.0 = 2023-Release|x64 + {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2024-Release|x64.ActiveCfg = 2024-Release|x64 + {6A977F79-6449-4D2F-8B5F-9363A19F5046}.2024-Release|x64.Build.0 = 2024-Release|x64 {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2021-Release|x64.ActiveCfg = 2021-Release|x64 {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2022-Debug|x64.ActiveCfg = 2022-Debug|x64 {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2022-Debug|x64.Build.0 = 2022-Debug|x64 @@ -53,6 +58,7 @@ Global {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2023-Debug|x64.Build.0 = 2023-Debug|x64 {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2023-Release|x64.ActiveCfg = 2023-Release|x64 {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2023-Release|x64.Build.0 = 2023-Release|x64 + {1A82B795-46D9-40C8-9AE2-4C4D2D71BBFD}.2024-Release|x64.ActiveCfg = 2024-Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PYProjects/source/skin_plus_plus_py/skin_plus_plus_py.vcxproj b/PYProjects/source/skin_plus_plus_py/skin_plus_plus_py.vcxproj index 808a4d8..9061f46 100644 --- a/PYProjects/source/skin_plus_plus_py/skin_plus_plus_py.vcxproj +++ b/PYProjects/source/skin_plus_plus_py/skin_plus_plus_py.vcxproj @@ -1,6 +1,10 @@  + + 2024-Release + x64 + 2023-Debug x64 @@ -64,6 +68,14 @@ Unicode x64 + + DynamicLibrary + false + v142 + false + Unicode + x64 + @@ -84,6 +96,9 @@ + + + true .pyd @@ -114,6 +129,12 @@ $(SolutionDir)..\..\PYProjects\skin_plus_plus\py\39\ $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir)headers;$(PYTHON_39)\include;$(PYBIND11_39)\include;$(IncludePath) + + false + .pyd + $(SolutionDir)..\..\PYProjects\skin_plus_plus\py\310\ + $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir)headers;$(PYTHON_310)\include;$(PYBIND11_310)\include;$(IncludePath) + true false @@ -146,6 +167,42 @@ $(PYTHON_37)\libs;%(AdditionalLibraryDirectories) + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + %(AdditionalIncludeDirectories) + + + Console + true + true + true + $(PYTHON_37)\libs;%(AdditionalLibraryDirectories) + $(OutDir)$(TargetName)$(TargetExt) + $(OutDir)obj\$(TargetName).pdb + $(OutDir)obj\$(TargetName).pgd + $(OutDir)obj\$(TargetName).lib + UseLinkTimeCodeGeneration + + + $(OutDir)obj\$(TargetName).xml + + + $(OutDir)obj\$(TargetName).bsc + + + + + + + Copy compiled files into correct python module structure + + Level3 @@ -202,7 +259,7 @@ $(PYTHON_39)\libs;%(AdditionalLibraryDirectories) - + Level3 true @@ -211,32 +268,16 @@ NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true %(AdditionalIncludeDirectories) + stdcpp17 + stdc17 Console true true true - $(PYTHON_37)\libs;%(AdditionalLibraryDirectories) - $(OutDir)$(TargetName)$(TargetExt) - $(OutDir)obj\$(TargetName).pdb - $(OutDir)obj\$(TargetName).pgd - $(OutDir)obj\$(TargetName).lib - UseLinkTimeCodeGeneration + $(PYTHON_310)\libs;%(AdditionalLibraryDirectories) - - $(OutDir)obj\$(TargetName).xml - - - $(OutDir)obj\$(TargetName).bsc - - - - - - - Copy compiled files into correct python module structure - diff --git a/PYProjects/source/skin_plus_plus_pymaya/skin_plus_plus_pymaya.vcxproj b/PYProjects/source/skin_plus_plus_pymaya/skin_plus_plus_pymaya.vcxproj index fd913eb..6919944 100644 --- a/PYProjects/source/skin_plus_plus_pymaya/skin_plus_plus_pymaya.vcxproj +++ b/PYProjects/source/skin_plus_plus_pymaya/skin_plus_plus_pymaya.vcxproj @@ -21,6 +21,10 @@ 2023-Release x64 + + 2024-Release + x64 + @@ -70,6 +74,14 @@ Unicode x64 + + DynamicLibrary + false + v142 + false + Unicode + x64 + @@ -88,6 +100,9 @@ + + + @@ -121,6 +136,13 @@ $(ADSK_MAYA_SDK_2023)\lib;$(PYTHON_39)\libs;$(LibraryPath) $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\maya\$(ProjectName)_2023\ + + false + .pyd + $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir);$(ProjectDir)..\skin_plus_plus_py\headers;$(ADSK_MAYA_SDK_2023)\include;$(PYTHON_39)\include;$(PYBIND11_39)\include;$(IncludePath) + $(ADSK_MAYA_SDK_2023)\lib;$(PYTHON_39)\libs;$(LibraryPath) + $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\maya\$(ProjectName)_2024\ + true .pyd @@ -203,6 +225,23 @@ OpenMaya.lib;OpenMayaAnim.lib;Foundation.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;%(AdditionalDependencies) + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + OpenMaya.lib;OpenMayaAnim.lib;Foundation.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;%(AdditionalDependencies) + + Level3 diff --git a/PYProjects/source/skin_plus_plus_pymxs/skin_plus_plus_pymxs.vcxproj b/PYProjects/source/skin_plus_plus_pymxs/skin_plus_plus_pymxs.vcxproj index cd518f3..ae65dc4 100644 --- a/PYProjects/source/skin_plus_plus_pymxs/skin_plus_plus_pymxs.vcxproj +++ b/PYProjects/source/skin_plus_plus_pymxs/skin_plus_plus_pymxs.vcxproj @@ -21,6 +21,10 @@ 2023-Release x64 + + 2024-Release + x64 + @@ -66,6 +70,14 @@ Unicode x64 + + DynamicLibrary + false + v142 + false + Unicode + x64 + @@ -86,6 +98,9 @@ + + + true $(ProjectName) @@ -102,6 +117,12 @@ $(PYTHON_39)\libs;$(ADSK_3DSMAX_SDK_2023)\lib\x64\Release;$(LibraryPath) $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\max\$(ProjectName)_debug_2023 + + false + .pyd + $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir)..\skin_plus_plus_py\headers;$(ProjectDir)headers;$(ADSK_3DSMAX_SDK_2022)\include;$(ADSK_3DSMAX_SDK_2022)\include\geom;$(PYTHON_37)\include;$(PYBIND11_37)\include;$(IncludePath) + $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\max\$(ProjectName)_2021 + false .pyd @@ -116,11 +137,12 @@ $(PYTHON_39)\libs;$(ADSK_3DSMAX_SDK_2023)\lib\x64\Release;$(LibraryPath) $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\max\$(ProjectName)_2023 - + false .pyd - $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir)..\skin_plus_plus_py\headers;$(ProjectDir)headers;$(ADSK_3DSMAX_SDK_2022)\include;$(ADSK_3DSMAX_SDK_2022)\include\geom;$(PYTHON_37)\include;$(PYBIND11_37)\include;$(IncludePath) - $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\max\$(ProjectName)_2021 + $(THIRD_PARTY_EIGEN);$(THIRD_PARTY_FMT)\include;$(ProjectDir)\headers;$(ProjectDir)..\skin_plus_plus_py\headers;$(ADSK_3DSMAX_SDK_2024)\include;$(ADSK_3DSMAX_SDK_2024)\include\geom;$(PYTHON_310)\include;$(PYBIND11_310)\include;$(IncludePath) + $(PYTHON_310)\libs;$(ADSK_3DSMAX_SDK_2024)\lib\x64\Release;$(LibraryPath) + $(SolutionDir)..\..\PYProjects\skin_plus_plus\dccs\max\$(ProjectName)_2024\ true @@ -161,6 +183,27 @@ bmm.lib;core.lib;geom.lib;gfx.lib;mesh.lib;maxutil.lib;maxscrpt.lib;gup.lib;paramblk2.lib;%(AdditionalDependencies) + + + Level4 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(ProjectDir)..\skin_plus_plus_py\headers;C:\Program Files\Autodesk\3ds Max 2021 SDK\maxsdk\include;$(PYTHON_37)\include;$(ProjectDir)headers;%(AdditionalIncludeDirectories) + $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0;%(AdditionalUsingDirectories) + true + + + Console + true + true + true + C:\Program Files\Autodesk\3ds Max 2021 SDK\maxsdk\lib\x64\Release\;C:\Program Files\Python37\libs;%(AdditionalLibraryDirectories) + bmm.lib;core.lib;geom.lib;gfx.lib;mesh.lib;maxutil.lib;maxscrpt.lib;gup.lib;paramblk2.lib;%(AdditionalDependencies) + + Level4 @@ -202,7 +245,7 @@ bmm.lib;core.lib;geom.lib;gfx.lib;mesh.lib;maxutil.lib;maxscrpt.lib;gup.lib;paramblk2.lib;%(AdditionalDependencies) - + Level4 true @@ -210,7 +253,7 @@ true NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true - $(ProjectDir)..\skin_plus_plus_py\headers;C:\Program Files\Autodesk\3ds Max 2021 SDK\maxsdk\include;$(PYTHON_37)\include;$(ProjectDir)headers;%(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0;%(AdditionalUsingDirectories) true @@ -219,7 +262,7 @@ true true true - C:\Program Files\Autodesk\3ds Max 2021 SDK\maxsdk\lib\x64\Release\;C:\Program Files\Python37\libs;%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) bmm.lib;core.lib;geom.lib;gfx.lib;mesh.lib;maxutil.lib;maxscrpt.lib;gup.lib;paramblk2.lib;%(AdditionalDependencies) @@ -248,13 +291,9 @@ $(OutDir)obj\$(TargetName).lib $(OutDir)obj\$(TargetName).pdb - - - - - - - - + + stdcpp17 + Speed + \ No newline at end of file