概述软件包的定义来自文件(package.py),位于每个包安装的根目录下。比如包的存储位置为/packages/inhouse,则包”foo-1.0.0”的定义文件路径是:/packages/inhouse/foo/1.0.0/package.py
这里是一个定义文件的例子:
1234567891011121314151617181920212223name = 'sequence'version = '2.1.2'description = 'Sequence detection library.'authors = ['ajohns']tools = [ 'lsq', 'cpq']requires = [ 'python-2.6+<3', 'argparse']def commands(): env.PATH.append("{root}/bin" ...
概述rez的包可以包含不同的变体(variant),可以把它看作同一个包版本的不同变种。每个变体都有一个或多个相对于当前包不同的依赖关系。
假定一个场景来说明变体的使用:
有一个maya插件my_maya_plugin,公司有两个maya版本分别为2016-sp2和2017。如果你的插件已经编译,而你需要在每个不同的maya版本中构建它。(即使源代码是相同的)这个时候就可以使用变体来创建插件版本,像这样来定义插件的package文件:
123456789101112name = "my_maya_plugin"version = "1.0.0"requires = [ "openexr-2.2"]variants = [ ["maya-2016.sp2"], ["maya-2017"]]
当构建这个插件的时候,会根据当前maya版本选择相应的变体。(在给定的配置环境中,只会使用包的一种变体)每个变体条目都有一个依赖列表,与requires列表里的没有什么不同。第一个变 ...
概述于2.71.0版本中引入。
临时包(Ephemeral Packages)是对不存在的包的请求。包名称以.开头,和其它的软件包请求类似,可以作为变体列表的一部分来请求,或者直接用rez-env命令进行请求。下面是一个例子:
12345678910111213]$ rez-env .foo-1You are now in a rez-configured environment.resolved by ajohns@turtle, on Tue Dec 22 08:17:00 2020, using Rez v2.70.0requested packages:.foo-1 (ephemeral)~platform==linux (implicit)~arch==x86_64 (implicit)~os==Ubuntu-16.04 (implicit)resolved packages:.foo-1 (ephemeral)
在解析过程中,临时包会其它软件包一样工作,但是它不会和实际软件包相关联,也不会运行执行任何配置。一个版本范围交集的例 ...
概述当使用rez-env创建解析环境时,实际上是创建了一个称为context的东西。一个context存储的信息包括:
初始程序包请求列表
被选择的变体列表
一个直观显示解析的图表
context不存储解析到的程序包副本,而是为每个包存储一种句柄,它提供了足够的信息来知道从哪里获取完整的包定义和内容。
context本身非常小,以json格式存储在一个rxt文件中。当你使用rez-env时,它实际在磁盘上创建了一个临时的context文件,直到shell退出时这个文件就会被删除。
123456789101112131415161718]$ rez-env foo bahYou are now in a rez-configured environment.resolved by ajohns@14jun01.methodstudios.com, on Wed Oct 22 12:44:00 2014,using Rez v2.0.rc1.10requested packages:foobahresolved packages:eek-2.6 /packages/inhouse/ ...
概述Bundle是一个包含context文件和程序包仓库的目录。
context中的所有包都在存储库中,这使得bundle是可移动和独立的。通过命令创建一个bundle:
12345]$ rez-env foo -o foo.rxt]$ rez-bundle foo.rxt ./mybundle# example of running a command from the bundled context]$ rez-env -i ./mybundle/context.rxt -- foo-tool
通过API创建bundle:
12345from rez.bundle_context import bundle_contextfrom rez.resolved_context import ResolvedContextc = ResolvedContext(["python-3+", "foo-1.2+<2"])bundle_context(c, "./mybundle")
结构一个bundle的层级结构:
1 ...
概述假设你希望为你的用户提供一些不同的工具,尽管这些工具需要在不同的环境中运行。
例如你希望工作室的艺术家能够从命令行运行maya和nuke,而不需要考虑它们的环境。
为了达到这样的需求,你会创建两个context:maya.rxt和nuke.rxt。
首先运行maya:
1]$ rez-env --input maya.rxt -- maya
然后你可以将这个命令包装在一个脚本中,而这个脚本被称为maya:
12#!/bin/bashrez-env --input maya.rxt -- maya $*
现在,你把它放在$PATH里,并对nuke也是同样的做法。
那么这个是你的用户就可以从输入maya这个命令来运行这些应用程序,而不需要直到这背后发生来什么。简而言之,这就是suites的意义,可以理解为包装,包含一组context以及运行工具的脚本。
rez-suite命令同样还是上述的例子,这里使用rez-suite工具来完成。
首先我们创建一个suite,命令将在当前工作目录下创建一个名为mysuite的文件夹。
1]$ rez-suite --create mysuite
...
概述rez包可以使用rez-build工具来构建和本地安装。这个工具有以下操作:
遍历一个包的变体
构建环境
在此环境中运行构建系统
每一个构建都来自构建的目录路径。(通常是构建的子目录或构建下的变体特定子目录)例如一个包含两个基本python变体的程序包:
12345+- package.py+- CMakeLists.txt (or other build file)+-build +-python-2.6 # build dir for python-2.6 variant +-python-2.7 # build dir for python-2.6 variant
在构建过程中,当前目录被视为构建路径。
构建环境构建环境是一个rez解析环境,它的需求列表是这样构造的:
首先使用程序包require列表
然后添加程序包的build_require列表。其它包的build_requires也会被使用
再然后追加程序包的private_build_requires
最后,如果包有变体,则追加变体的需求
构建时会创建一系列环境变量(REZ_BUILD_开头),在这里 ...
概述包可以从一个库复制到另一个库,就像这样。使用命令:
]$ rez-cp --dest-path /svr/packages2 my_pkg-1.2.3
使用API:
12345678910111213141516171819>>> from rez.package_copy import copy_package>>> from rez.packages import get_latest_package>>>>>> p = get_latest_package("python")>>> pPackage(FileSystemPackageResource({'location': '/home/ajohns/packages', 'name': 'python', 'repository_type': 'filesystem', 'v ...
概述软件包缓存(Package Caching)是一个将包复制到本地磁盘加快运行环境的功能。
比如你发布的包通常是在共享服务器上,那么运行python进程时,就会从共享存储上获取所有源码。缓存的意义在于将这些内容复制到本地,节省访问网络的时间成本。
启用缓存软件包缓存功能不是默认启用的。要启用它,需要配置cache_packages_path来指定缓存的路径。
你也可以细致的控制哪些包是需要被缓存的,只需要在它的定义文件(package.py)设置cachable = True 。我们需要单独控制哪些包是可以被缓存的,因为某些编译后的包无法支持重定向(即缓存到本地会丢失作用)。
还有一些配置会在包没有设置cachable=True的情况下缓存包。比如dedefault_cachable,default_cachable_per_package 和default_cachable_per_repository。
Notes:你也可以使用rez-env --no-pkg-caching来禁用包缓存。
验证当你解析一个环境后,可以通过rez-context输出的右侧栏中看到缓存标签,查看哪些 ...
视图布局还原布局的配置文件位置:
C:\Users\lingyun\Documents\houdini18.0\desktop
Houdini预设配置文件:
C:\Users\lingyun\Documents\houdini18.0
GUI设置
快捷键为 Ctrl + ,
可以设置图标大小,时间滑块大小,全局元素大小等(重启软件后生效)
课程里给了一个推荐的设置:
界面颜色设置
布局操作三角符号:布局向指定的方向全屏填充
单击中间竖排点:交换左右的布局
按住alt键点击竖排点:将左右布局切换为上下布局(反之)
在标签,鼠标右键也可以切换当前界面:
视图操作从上到下分别为,相机视角预览,区域渲染和侦测工具。
鼠标左键:旋转
鼠标中键:平移
鼠标右键:缩放
如果在物体编辑状态下,想要对透视图相机进行操作。需要按住空格键+鼠标左中右键。
这里说下侦测工具,可以右键选择侦测primitive元素,可以看到面的number编号。
这三个按钮是物体选择模式(选择元素过滤),从上到下分别为:物体集,元素集,动力学集。
对于元素的选择操作:
按住A+鼠标左键进行连带选择
按住A+鼠标中键选 ...