diff --git a/doc/build.md b/doc/build.md index 443eb5796..b3a15af5c 100644 --- a/doc/build.md +++ b/doc/build.md @@ -193,6 +193,9 @@ Run the script with the ```--help``` parameter to see all the possible flags and Unit tests can be run by setting ```--stages=test``` or by simply calling `ctest` directly from the build directory. +# Rebuilding with the latest version of OpenUSD and with a previous version of Maya +Please see [Rebuilding with the latest OpenUSD version and with a previous version of Maya](./rebuildingWithLatestOpenUSDAndPreviousMaya.md) + # Additional Build Instruction ##### Python: diff --git a/doc/rebuildingWithLatestOpenUSDAndPreviousMaya.md b/doc/rebuildingWithLatestOpenUSDAndPreviousMaya.md new file mode 100644 index 000000000..b8fd199eb --- /dev/null +++ b/doc/rebuildingWithLatestOpenUSDAndPreviousMaya.md @@ -0,0 +1,200 @@ +# Building with the latest version of OpenUSD and with a previous version of Maya such as 2024 + +Let's take as an example, you want to rebuild MayaHydra in Maya 2024 and OpenUSD 24.11 under Windows.
+With Maya 2024 the OpenUSD version used by default was 22.11 which was compiled with Python 3.10.8. + +## Rebuilding OpenUSD + +If OpenUSD was not built with the same version of Python as the one used in your Maya version, you need to rebuild it with the suitable Python :
+ +| Maya version | Python version | +|:-------------------------:|:----------------:| +| 2024 | 3.10.8 | +| 2025 | 3.11.4 | +| PR | 3.11.9 | + +So for Maya 2024, we need to rebuild OpenUSD with Python 3.10.8.
+To do so, you need to clone the OpenUSD repository and checkout the version used by MayaUsd and MayaHydra which is [v24.11-MayaUsd-Public](https://github.com/autodesk-forks/USD/tree/v24.11-MayaUsd-Public).
+As an example is given a Windows batch file to rebuild OpenUSD with Python 3.10.8 which is provided by mayapy.exe in the Maya/bin folder:

+But first, you may need to install Python modules for this version of Python if it's not yet installed (this, not only to rebuild OpenUSD but MayaUsd also), they are :
+PyOpenGL==3.1.0, PySide6, jinja2 and pybind11.
+We are assuming that Maya 2024 is installed in its default folder such as C:\Program Files\Autodesk\Maya2024.
+``` +"C:\Program Files\Autodesk\Maya2024\bin\mayapy.exe" -m pip install PyOpenGL==3.1.0 +"C:\Program Files\Autodesk\Maya2024\bin\mayapy.exe" -m pip install PySide6 +"C:\Program Files\Autodesk\Maya2024\bin\mayapy.exe" -m pip install jinja2 +"C:\Program Files\Autodesk\Maya2024\bin\mayapy.exe" -m pip install pybind11 +``` +To rebuild OpenUSD see the following Windows batch file as an example : +
+``` +rem rebuild OpenUSD with Python 3.10.8 for maya 2024 + +rem I had to install in mayapy.exe the modules : PyOpenGL==3.1.0, PySide6 and pybind11. + +set openusd_maya_location=C:/Program^ Files/Autodesk/Maya2024 +set openusd_python_include=%openusd_maya_location%/include/Python310/Python +set openusd_python_exe=%openusd_maya_location%/bin/mayapy.exe +set openusd_python_lib=%openusd_maya_location%/lib/python310.lib + +rem our destination folder for the build +set destination_folder="D:/USD-24.11-Python3.10.8" + +rem rebuylding OpenUSD with Python 3.10.8 in release with debug info configuration, if you want to use release only, please change the build-variant +"%openusd_python_exe%" ".\build_scripts\build_usd.py" "%destination_folder%" ^ + --build-variant=relwithdebuginfo ^ + --build-python-info "%openusd_python_exe%" "%openusd_python_include%" "%openusd_python_lib%" 3.10.8 ^ + --onetbb ^ + --alembic ^ + --openimageio ^ + --no-hdf5 ^ + --no-embree ^ + --materialx ^ + --no-debug-python ^ + --no-tests +``` + +## Rebuilding MayaUsd + +Since MayaHydra is dependent on MayaUsd (through the MayaUsdAPI module), you need to rebuild MayaUsd with the same version of Python and with OpenUSD previously rebuilt.
+To rebuild MayaUsd, you need to clone the MayaUsd repository (see [build.md](./build.md) for more info) and rebuild for Windows with (adjust it to your custom folders) :
+``` +rem Save the current PATH as we are going to modify it +set original_path=%PATH% + +rem OpenUSD 24.11 rebuilt with Python 3.10.8 +set mayausd_pixar_usd_location=D:/USD-24.11-Python3.10.8 + +rem download and install the Maya 2024 devkit in a folder +set mayausd_maya_devkit_location=D:/Autodesk_Maya_2024_DEVKIT_Windows/devkitBase + +rem Maya 2024 location +set mayausd_maya_location=C:/Program^ Files/Autodesk/Maya2024 +set mayausd_python_include=%mayausd_maya_location%/include/Python310/Python +set mayausd_python_exe=%mayausd_maya_location%/bin/mayapy.exe +set mayausd_python_lib=%mayausd_maya_location%/lib/python310.lib + +rem Remove other Python installations from the PATH to avoid conflict +rem As I had Python 3.11 installed. It would also be possible to use a Python virtual environment: https://docs.python.org/3/library/venv.html +set PATH=C:\Program Files\Autodesk\Maya2024\bin;%original_path% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311\Scripts;=% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311;=% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311\=% + +rem Add OpenUSD bon and lib path to the Windows PATH +set PATH=%mayausd_pixar_usd_location%\bin;%mayausd_pixar_usd_location%\lib;%PATH% + +rem Set necessary environment variables for the build process +set PYTHONPATH=C:\Program Files\Autodesk\Maya2024\Python;C:\Program Files\Autodesk\Maya2024\Lib;%mayausd_pixar_usd_location%\lib\python; + +set mayausd_destination=D:/maya-usd-Python3.10.8 + +rem change this to your local version of Qt +set mayausd_qtlocation=D:/GIT/maya/artifactory/Windows/qt/6.5.3/60c0d89 +set mayausd_qtversion=6.5.3 + +rem Output diagnostic information +echo PATH=%PATH% +echo PYTHONPATH=%PYTHONPATH% + +rem Use the mayapy.exe directly for the build process +"%mayausd_python_exe%" build.py "%mayausd_destination%_" ^ + -v=3 ^ + --stages=clean,configure,build,install ^ + --pxrusd-location=%mayausd_pixar_usd_location% ^ + --build-relwithdebug ^ + --maya-location="%mayausd_maya_location%" ^ + --generator="Visual Studio 17 2022" ^ + --devkit-location="%mayausd_maya_devkit_location%" ^ + --materialx ^ + --build-args="-DPYTHON_INCLUDE_DIR=\"%mayausd_python_include%\",-DPython_EXECUTABLE=\"%mayausd_python_exe%\",-DPython3_VERSION=3.10.8,-DPYTHON_LIBRARIES=\"%mayausd_python_lib%\",-DBUILD_WITH_PYTHON_3=ON,-DBUILD_WITH_PYTHON_3_VERSION=3.10,-DBUILD_TESTS=ON,-DBUILD_PXR_PLUGIN=OFF,-DBUILD_AL_PLUGIN=OFF,-DQT_LOCATION=\"%mayausd_qtlocation%\",-DQT_VERSION=%mayausd_qtversion%,-DPython3_ROOT_DIR=\"%mayausd_maya_location%\",-DPython3_FIND_STRATEGY=LOCATION,-DPython3_INCLUDE_DIR=\"%mayausd_python_include%\",-DPython3_LIBRARY=\"%mayausd_python_lib%\"" + +rem Restore the original PATH +set PATH=%original_path% + +rem Unset the Python environment variables +set PYTHONPATH= +``` + +Note :
+In my case, I had an issue when rebuilding MayaUsd which was : https://github.com/PixarAnimationStudios/OpenUSD/issues/3310
+So I removed "OpenGL::GL" from the cmake file :
+D:/USD-24.11-Python3.10.8/cmake/pxrTargets.cmake
+And when rebuilding MayaUsd, I had to manually add the link to "OpenGL32.lib" to the MayaUsd project under Visual Studio in order to link correctly. + + +## Rebuilding MayaHydra + +Now you have OpenUSD and MayaUsd rebuilt with the same version of Python as Maya 2024, you can rebuild MayaHydra.
+Which under Windows can be made through the follow batch file (adjust it to your custom folders):
+``` +rem global options to build MayaHydra + +set mayahydra_verboseLevel=3 + +set maya_hydra_python_version=3.10.8 + +rem MayaUsd +set mayahydra_mayausdlocation=D:/maya-usd-Python3.10.8 + +rem OpenUSD 24.11 rebuilt with Python 3.10.8 +set mayahydra_pxrusdlocation=D:/USD-24.11-Python3.10.8 + +rem this is for release with debug info, change it to release if you want to build in release only +set mayahydra_buildconfig=relwithdebug + +set mayahydra_mayalocation=C:/Program^ Files/Autodesk/Maya2024 +set mayahydra_pythonincludedir=%mayahydra_mayalocation%/include/Python310/Python +set mayahydra_pythonexecutable=%mayahydra_mayalocation%/bin/mayapy.exe +set mayahydra_pythonlib=%mayahydra_mayalocation%/lib/python310.lib + +set mayahydra_generator="Visual Studio 17 2022" +rem set mayahydra_generator="Ninja" you could use ninja if it is available on your system instead of VS2022 + +set mayahydra_mayadevkitlocation=D:/Autodesk_Maya_2024_DEVKIT_Windows/devkitBase +set mayahydra_main_pythonversion=3.10 + +rem change this to your local version of Qt +set mayahydra_qtlocation=D:/GIT/maya/artifactory/Windows/qt/6.5.3/60c0d89 +set mayahydra_qtversion=6.5.3 + +rem Save the current PATH as we are going to modify it +set original_path=%PATH% + +rem Remove other Python installations from the PATH to avoid conflict +rem As I had Python 3.11 installed. It would also be possible to use a Python virtual environment: https://docs.python.org/3/library/venv.html +set PATH=C:\Program Files\Autodesk\Maya2024\bin;%original_path% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311\Scripts;=% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311;=% +set PATH=%PATH:C:\Users\%username%\AppData\Local\Programs\Python\Python311\=% + +rem Add USD library path to the PATH +set PATH=%mayahydra_pxrusdlocation%\bin;%mayahydra_pxrusdlocation%\lib;%PATH% + +rem Set necessary environment variables for the build process +set PYTHONPATH=C:\Program Files\Autodesk\Maya2024\Python;C:\Program Files\Autodesk\Maya2024\Lib;%mayahydra_pxrusdlocation%\lib\python; + +rem Output diagnostic information +echo PATH=%PATH% +echo PYTHONPATH=%PYTHONPATH% + +"%mayahydra_pythonexecutable%" build.py "D:/maya-hydra-build" ^ + -v=%mayahydra_verboseLevel% ^ + --mayausd-location=%mayahydra_mayausdlocation% ^ + --stages=clean,configure,build,install ^ + --pxrusd-location=%mayahydra_pxrusdlocation% ^ + --build-%mayahydra_buildconfig% ^ + --maya-location="%mayahydra_mayalocation%" ^ + --generator=%mayahydra_generator% ^ + --devkit-location=%mayahydra_mayadevkitlocation% ^ + --build-args="-DPYTHON_INCLUDE_DIR=\"%mayahydra_pythonincludedir%\",-DPython_EXECUTABLE=\"%mayahydra_pythonexecutable%\",-DPYTHON_LIBRARIES=\"%mayahydra_pythonlib%\",-DBUILD_WITH_PYTHON_3=ON,-DBUILD_WITH_PYTHON_3_VERSION=%mayahydra_main_pythonversion%,-DBUILD_TESTS=ON,-DBUILD_PXR_PLUGIN=OFF,-DBUILD_AL_PLUGIN=OFF,-DQT_LOCATION=\"%mayahydra_qtlocation%\",-DQT_VERSION=%mayahydra_qtversion%,-DPython3_VERSION=%maya_hydra_python_version% -DPython3_ROOT_DIR=\"%mayahydra_mayalocation%\",-DPython3_FIND_STRATEGY=LOCATION,-DPython3_INCLUDE_DIR=\"%mayahydra_pythonincludedir%\",-DPython3_LIBRARY=\"%mayahydra_pythonlib%\"" + + +rem Restore the original PATH +set PATH=%original_path% + +rem Unset the Python environment variables +set PYTHONPATH= + +``` + diff --git a/lib/mayaHydra/flowViewportAPIExamples/flowViewportAPILocator/mhFlowViewportAPILocator.cpp b/lib/mayaHydra/flowViewportAPIExamples/flowViewportAPILocator/mhFlowViewportAPILocator.cpp index db1d76ef7..6b36aa466 100644 --- a/lib/mayaHydra/flowViewportAPIExamples/flowViewportAPILocator/mhFlowViewportAPILocator.cpp +++ b/lib/mayaHydra/flowViewportAPIExamples/flowViewportAPILocator/mhFlowViewportAPILocator.cpp @@ -422,6 +422,7 @@ class CubeSceneItem : public Ufe::SceneItem // Returns the locator parent of the cube. MhFlowViewportAPILocator* locator() const { return _locator; } +#if (MAYA_API_VERSION >= 20250000) // With Maya 2025 or later // Unimplemented defaults. These should preferably be in UFE. // PPT, 6-Jun-2024. Ufe::Value getMetadata(const std::string& key) const override { return {}; } @@ -430,6 +431,7 @@ class CubeSceneItem : public Ufe::SceneItem Ufe::Value getGroupMetadata(const std::string& group, const std::string& key) const override { return {}; } UndoableCommandPtr setGroupMetadataCmd(const std::string& group, const std::string& key, const Ufe::Value& value) override { return nullptr; } UndoableCommandPtr clearGroupMetadataCmd(const std::string& group, const std::string& key) override { return nullptr; } +#endif private: