业界龙头皮克斯倡导的新格式USD,是下一代场景缓存系统,具有可协同可维护可跟踪等减少工作流程的新特性,同时USD文件载入快体积小,可以全面代替abc缓存格式。然而既然皮克斯是技术流的公司,他们的文档理解起来有些困难,所以直接提供下载最新版Houdini支持的USD插件。
如果有Houdini其他版本的USD插件需求,可以看后述的编译教程。
USD格式官方文档页面:https://graphics.pixar.com/usd/docs/Introduction-to-USD.html
Houdini 17.0 459版USD插件下载地址:
百度网盘下载 提取码:8cet
安装方法:
解压后将Houdini_USD文件夹放到任意路径,编辑houdini.env文件,加入一行HOUDINI_PATH = “存放路径/Houdini_USD;&”即可。
编译方法:
首先需要安装一些软件,称为Microsoft Visual Studio 2017 Community,还有CMake。这些在国内网站都不难获得。注意安装Visual Studio时勾选所有C++ add ons附加选项。
现在开始编译过程。我们需要把houdini toolkit文件夹放到比如“C:\Program Files\Side Effects Software\Houdini 17.0.459\toolkit” 的位置,例子中放到W:\dev\toolkit。我们需要设定一批环境变量来确保一切正常工作。
我们来设置下环境变量并填上路径变量。注意这是用户变量,不是系统变量。建立变量名称CMAKE_PREFIX_PATH,并填入cmake的路径。
现在,我们添加用户路径变量。编辑刚添加的CMAKE_PREFIX_PATH,填入cmake的路径位置。
我们继续。在usd_houdini_plugins根目录,也就是例子的W:\dev\toolkit\usd_houdini_plugins\下创建文件夹 “build” 。根目录下有一个 “CMakeLists.txt” 文件。默认输出路径是把一切文件都dump到C:\Users\YourName\Documents\houdini17.0\ ,这个设定太傻缺了,很多要做Houdini USD插件编译的人都会卡在这一步。你可以保持默认,当然也可以自定义路径,按照下面的方法。
从if起直到endif全部删除,替换成你想要输出的路径。
下面是改好的例子,干净整洁的houdini/pipeline工具设置方式。
下面要添加一行让DSO识别你自定义的路径,在括号结束前加入INSTDIR pathto\上一步添加的路径\dso。
这是范例使用的Cmakelists代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | # Minimum version of CMake required cmake_minimum_required( VERSION 3.6 ) project( usd_houdini_plugins ) set( library_name OP_gusd ) # CMAKE_PREFIX_PATH must contain the path to the toolkit/cmake subdirectory of # the Houdini installation. See the "Compiling with CMake" section of the HDK # documentation for more details, which describes several options for # specifying this path. list( APPEND CMAKE_PREFIX_PATH "$ENV{HFS}/toolkit/cmake" ) find_package( Houdini REQUIRED ) #----------------------------------------- set(H_INSTDIR W:\\Pipeline\\Houdini_USD ) MESSAGE( "Installing to ${H_INSTDIR}" ) # Add .so which contains plugins for Object, ROP and SOPs add_library( ${library_name} SHARED OBJ_usdcamera.cpp OBJ_usdcamera.h ROP_usdoutput.cpp ROP_usdoutput.h SOP_usdimport.cpp SOP_usdimport.h SOP_usdunpack.cpp SOP_usdunpack.h OP_Utils.cpp OP_Utils.h plugin.cpp ) if ( _houdini_platform_linux ) # Link against Houdini libraries (including USD) if ( DEFINED ENV{HOUDINI_HDK_LINK_GUSD} ) target_link_libraries( ${library_name} Houdini # Standard Houdini librarys ${_houdini_hfs_root}/dsolib/libgusd.so ) else () target_link_libraries( ${library_name} Houdini # Standard Houdini librarys ) endif () elseif( _houdini_platform_osx ) # Link against Houdini libraries (including USD) target_link_libraries( ${library_name} Houdini # Standard Houdini librarys ${_houdini_hfs_root}/../Libraries/libpxr_usd_ms.dylib ${_houdini_hfs_root}/../Libraries/libhboost_python-mt.dylib ${_houdini_hfs_root}/../Libraries/libtbb.dylib ${_houdini_hfs_root}/Frameworks/Python.framework/Versions/Current/lib/libpython2.7.dylib ) elseif( _houdini_platform_win ) # Link against Houdini libraries (including USD) target_link_libraries( ${library_name} Houdini # Standard Houdini librarys ${_houdini_hfs_root}/custom/houdini/dsolib/libgusd.lib ${_houdini_hfs_root}/custom/houdini/dsolib/libpxr_usd_ms.lib ${_houdini_hfs_root}/custom/houdini/dsolib/hboost_python-mt.lib ${_houdini_hfs_root}/python27/libs/python27.lib ) endif() # Configure several common target properties (such as output directory) houdini_configure_target( ${library_name} INSTDIR W:\\Pipeline\\Houdini_USD\\dso) install( DIRECTORY help DESTINATION ${H_INSTDIR} ) install( FILES ROP_usdcoalesce.otl ROP_usdlayer.otl ROP_usdreference.otl SOP_camerafrustum.otl SOP_usdbindproxy.otl SOP_usdexportattributes.hda SOP_usdinstanceprototypes.hda SOP_usdretime.hda DESTINATION ${H_INSTDIR}/otls ) install( FILES ROP_usdcoalesce.py ROP_usdlayer.py ROP_usdreference.py DESTINATION ${H_INSTDIR}/soho/python2.7 ) install( FILES UsdImport.pypanel DESTINATION ${H_INSTDIR}/python_panels ) install( FILES obj/pixar-usdcamera.py DESTINATION ${H_INSTDIR}/scripts/obj ) install( FILES icons/pxh_gusdIcon.png DESTINATION ${H_INSTDIR}/config/Icons ) |
现在打开命令行并用CD命令移动目录到之前我们建立的build文件夹。按例子你的路径应该在W:\dev\toolkit\usd_houdini_plugins\build> 。这里我们要做一些破解工作。
运行
1 | cmake -G “Visual Studio 15 2017 Win64” ../ |
然后等待奇迹发生。下面是整个枯燥过程的gif截图。
现在去干别的,等待编译完成。双击“usd_houdini_plugins.sln”文件,会启动Visual Studio,我们即将完工!
我们所有要作的只需要选择右边的“install”然后将状态从“debug”改为 “release”,然后在 “install” 上右键选择“build”。
一旦编译完成,你会在输出窗口看到一些牛比的提示。如果一切如期运行的话,之前创建的文件夹中就会出现USD插件的所有文件了。