这是2011年测试cortrex的一些总结,现在已经不研究这项目了,仅供参考。
(cortex-vfx是国外的一个影视动画的特效开发包 https://code.google.com/p/cortex-vfx/)
(cortex-vfx是国外的一个影视动画的特效开发包 https://code.google.com/p/cortex-vfx/)
热身准备:
linux平台可以选择ubuntu,也可以选择centOS.
需要先安装些必要的库:建议先用系统的软件安装与卸载功能来查看下这些库是否已经安装,没有安装的需要去官网下载源码编译安装
ubuntu 的新立得很强大对应源码包不再列举,在安装centos系统时,要选择软件开发工作站模式安装,库比较全
库 centos6.0对应 源码包
tbb tbb22_20090809oss_src.tgz
boost boost_1_42_0.tar.bz2
OpenEXR ...
tiff tiff-3.9.4.tar.gz
jpeg ...
png ...
glew glew-1.7.0.tgz
glut glut-3.7.tar.gz
freetype2
####
第三方软件的支持好需要事先安装好软件并在scons的配置文件中制定好路径
3delight
maya
houdini
nuke
这些都是可选择性的安装或者不安装,也可在编译完cortex内核后分别安装编译
关于软件编译安装;linux的软件大部分都可以通过查看软件自身所带的README INSTALL 等安装说明来进行安装
大概的步骤就是:
./configure 配置 默认的安装路径为/usr/local
make 编译
make install 安装,需要sudo权限
cortex编译工具scons说明:
cortex的工程编译是用scons来执行的,检查系统是否已经安装了scons, 没有的需要下载编译安装。scons需要一个名字为SConstruct
的配置文件,它所在位置是cortex的主目录下,通过gvim或者gedit等文本编辑器打开进行配置。
#编译器及编译环境
linux的软件编译器是gcc,检查好系统是否满足了所需的编译器的环境。
ubuntu下可以通过新立得安装 build essential,或者通过命令执行安装:sudo apt-get install build-essential
centos 下应该已经装好了相应的编译器gcc
SConstruct的配置说明 ******START*********
此文件的语法属于python的语法范畴
注意如果你已经安装了houdini的话 需要在开始部分,在import完一坨模块之后,定义一个os的houdini变量
#add houdini path
os.environ.setdefault("HFS","/opt/hfs11.1.22")
接下来就是检查各库的include路径和lib路径要和你安装的相一致。
比如说适当修改下面的黑体部分:
注:如果是系统已经安装好了的软件,那么它的库的存放位置 ,ubuntu的默认为 /usr/lib , centOs 的为 /usr/lib64
# TBB options
o.Add(
"TBB_INCLUDE_PATH",
"The path to the tbb include directory.",
"/usr/local/include/tbb",
)
o.Add(
"TBB_LIB_PATH",
"The path to the tbb library directory.",
"/usr/local/lib",
)
#关于boost部分的修改,注意黑体部分:
# Boost options
o.Add(
"BOOST_INCLUDE_PATH",
"The path to the boost include directory.",
"/usr/local/include/",
)
o.Add(
"BOOST_LIB_PATH",
"The path to the boost library directory.",
"/usr/local/lib",
)
o.Add(
"BOOST_LIB_SUFFIX",
"The suffix appended to the names of the boost libraries. You can modify this "
"to link against the debug versions of the libraries, or to link against "
"unversioned libraries.",
"-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}",要把此处设置成空,
不要再进行版本的检查,否则会报错提示找不到相应的版本库
)
#你可以修改下面的黑体部分,用来改变编译完安装的lib库的位置,注意ubuntu下,动态库默认的搜索路径为 /usr/lib , /lib. CentOS则为 /lib64,/usr/lib64.
# General path options
o.Add(
"CPPPATH",
"A colon separated list of paths to search for headers on.",
"/usr/include",这个是安装了一个头文件的副本到系统路径下
)
o.Add(
"LIBPATH",
"A colon separated list of paths to search for libraries on.",
"/usr/lib",这个是系统需要搜索的动态库的位置,一般情况下,ubuntu设置成 /usr/lib , centOs设置成/lib64
)
#注意修改关于opengl部分,
###sudo gedit cortex/SConstruct
try :
o.Add(
BoolVariable( "WITH_GL", "Set this to build the IECoreGL library.", False ),
)
False改成True
#如果已经安装了houdini,那么做以下修改,此改动仅针对houdini11.1.22版本,其他也可能凑效
在SConstruct中找到如下部分,按下面添加修改CXXFLAGS
###########################################################################################
# Build, install and test the coreHoudini library and bindings
###########################################################################################
houdiniEnvSets = {
"IECORE_NAME" : "IECoreHoudini",
"CXXFLAGS" : [
"$HOUDINI_CXX_FLAGS", "-DMAKING_DSO", "-DNEED_SPECIALIZATION_STORAGE"
],
}
添加黑体部分如下
houdiniEnvSets = {
"IECORE_NAME" : "IECoreHoudini",
"CXXFLAGS" : [
"$HOUDINI_CXX_FLAGS", "-DMAKING_DSO", "-DNEED_SPECIALIZATION_STORAGE","-DDLLEXPORT= ",
"-DVERSION="10.0.554"","-D_GNU_SOURCE","-DLINUX","-DAMD64","-m64","-fPIC","-DSIZEOF_VOID_P=8",
"-DSESI_LITTLE_ENDIAN","-DENABLE_THREADS","-DUSE_PTHREADS","-D_REENTRANT","-D_FILE_OFFSET_BITS=64"
],
}
##
并且还要修改下houdini提供的api中的部分头文件,如下操作
##1
UT_NTStreamUtil.h
$sudo cp /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h.bak #先备份
$sudo gedit /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h
修改
#include <strstream.h>
为
#include <strstream>
##2
GB_GenericData.h
$sudo cp /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h.bak #先备份
$sudo gedit /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h
修改
L258 #define STATIC_INLINE_SPECIALIZATION static inline
为
L258#define STATIC_INLINE_SPECIALIZATION inline
#####################
如果已经安装了maya,仅做如下修改,把安装路径替换掉黑体部分即可
# Maya options
o.Add(
"MAYA_ROOT",
"The path to the root of the maya installation.",
"/usr/autodesk/maya",
)
#如果安装了3delight, Scontruct配置下renderman部分,也可以是prman的安装
# Renderman options
o.Add(
"RMAN_ROOT",
"The directory in which your RenderMan renderer is installed.",
"/usr/local/3delight-9.0.84/Linux-x86_64/",
)
##############
************END*************
##############
##关于cortex的procedural要在3deligth中渲染那么
cortex/src/rmanProcedural/python/Procedural.cpp 必须要编译正确,源代码此文件不能正确的编译出动态库,需要修改如下:
$sudo gedit cortex/src/rmanProcedural/python/Procedural.cpp
###############
#include "boost/python.hpp"
#include <dlfcn.h>//添加此行
#include <iostream>
#include "ri.h"
#if defined(_WIN32)
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT
#endif
using namespace std;
using namespace boost::python;
/// We use a static instance of this struct to initialise python when the dso is first loaded.
struct PythonInitialiser
{
PythonInitialiser()
{
// start python
dlopen( "libpython2.6.so", RTLD_LAZY | RTLD_GLOBAL); ///添加此行
Py_Initialize();
PyEval_InitThreads();
try
{
mainModule = object( handle<>( borrowed( PyImport_AddModule( "__main__" ) ) ) );
mainModuleNamespace = mainModule.attr( "__dict__" );
#################################################
开始编译
#IECore
cortex内核部分的编译及安装:
我的习惯是把cortex6.0源码包放到 /opt 下面,
命名为cortex,然后进入/opt/cortex目录,执行命令 ls 查看一下目录结构
src 是用来存放源代码的,include头文件包,lib是存放编译完成生成的动态库的,python是用来存放生成的python模块的,mel是存放脚本的, rsl是
renderman材质的头文件,glsl是opengl的头文件及材质的,contrib是存放houdini的源码,test是用来测试的python脚本的,SConstruct是配置文件
在配置好SConstruct文件后开始进行编译,你可以先不配置3delight,maya,houdini等软件的目录,单独编译 IEcore
执行命令如下:
$ sudo scons
编译开始,首先scons会根据配置文件所提供的依赖库的include,lib的路径进行检查是否存在,如果关键依赖库不存在则停止,你就要检查下路径是否正确
如果依赖库没有问题,scons就开始进行编译。
如果编译没有问题那么继续执行
$sudo scons install
这步scons会把生成的动态库安装到指定的路径下面,包括lib动态库和对应的python模块,还会把头文件包copy到指定路径下,还会在指定路径下比如
/usr 下安装houdini,maya,rmanProcedural等文件夹,里面有生成相应的插件脚本图标之类,只要把对应的文件copy到软件所需要的路径即可,
测试:在终端执行python,进入python控制台执行命令
import IECore 回车
不报错的话 恭喜 成功了~
#IECoreRI
如果配置文件中写了rendreman的安装路径3delight或者prman ,那么会生成相应的动态库和python模块
libIECoreRI.so
_IECoreRI.so(python)
#IECoreMaya
如果配置文件中写了maya的安装路径 ,那么会生成相应的动态库和python模块,及插件,在/usr下生成maya文件夹
libIECoreMaya.so
_IECoreMaya.so(python)
执行如下命令:
$sudo cp -r /usr/maya/mel/* /usr/autodesk/maya/scripts
$sudo cp /usr/maya/icons/* /usr/autodesk/maya/icons
$sudo cp /usr/maya/plugins/* /usr/autodesk/maya/bin/plug-ins
还要copy生成的python模块到maya的python的lib库下,命令
$sudo cp -r /opt/cortex/python/* /usr/autodesk/maya/lib/python2.6/site-packages/
测试:
打开maya,加载ieCore.so插件,查看是否能够正确加载。
打开脚本编辑器python面板输入
import IECore
import IECoreMaya
查看是否能正确导入
ex: 关于tbb的错误,一般情况下是maya的tbb库与系统的库冲突导致的,因为我们编译cortex时是用的系统的tbb库编译的,解决
办法,备份maya的tbb库 ,然后把系统的tbb库copy到maya的库下面
#IECoreHoudini
如果配置文件中写了rendreman的安装路径3delight或者prman ,那么会生成相应的动态库和python模块
libIECoreHoudini.so
_IECoreHoudini.so
拷贝/usr/houdini/下面文件夹内的文件到houdini的安装目录下对应的文件夹内
#cortex的环境变量
用户主目录下的隐藏文件.bashrc 是该用户的配置文件,一些软件的环境变量的设置都在此文件中。设置完成后,必须重启终端才能生效。
ops和procedural的配置,执行命令
$cd 进入用户主目录
$gedit .bashrc
添加如下语句
#procedural
export IECORE_PROCEDURAL_PATHS=~/procedurals
#ops
export IECORE_OP_PATHS=~/ops
下面给出了我的.bashrc添加的内容供参考:
#############.bashrc
#3delight
export DELIGHT=/usr/local/3delight-9.0.84/Linux-x86_64
source /usr/local/3delight-9.0.84/.3delight_bash
#houdini
#export HFS=/opt/hfs11.1.22
source /opt/hfs11.1.22/houdini_setup_bash
#PATH
export PATH=$PATH:/opt/hfs11.1.22/bin:/opt/massive/bin
#procedural
export IECORE_PROCEDURAL_PATHS=~/procedurals
#ops
export IECORE_OP_PATHS=~/ops
#massive
export MSERVER=ltc
export MASSIVE_HOME=/opt/massive
#cor hair
export HAIR_MODIFIER_PATHS=~/modifiers/hair
#python
export PYTHONPATH=/opt/MsvTools
####
###############################
3delight的安装配置
###############################
按照README or INSTALL or 帮助文件 安装好,并在.bashrc文件中做了变量的声明,如上。设置完重启终端
在终端输入render按TAB 如果能自动补齐为 renderdl的话 则说明变量成功声明。
在安装目录下的maya的文件夹内存放着3deligth for maya的插件
把生成的 /usr/rmanProcedurals/iePython.so 拷贝到3deligth的安装路径下的lib目录,这是就可以渲染cortex的procedural的东东了
测试:打开maya,加载ieCore.so和3delightformaya2011的插件,从cortex菜单创建一个procedural的物体 sphereProcedural 然后从3deligth菜单
创建一个fulllayer,设置save选项为save rib ,然后点render. 这样就保存了一个含有cortex procedural的rib场景文件,在终端用renderdl进行渲染
执行命令
$renderdl ~/maya/projects/default/3delight/untitled/rib/untitled_fullRenderPass.rib
如果渲染成功,则cortex和maya,3delight的工作环境便搭建好了。
#######################
关于centOS安装maya的破解说明
#######################
首先先把所需要的rpm包准备好:
安装
sudo rpm -i adlmapps-1.3.34-0.x86_64.rpm adlmflexnetclient-1.3.34-0.x86_64.rpm adlmflexnetserver-1.3.34-0.x86_64.rpm Maya2011_0_64-2011.0-372.x86_64.rpm Maya2011_0-docs_en_US_64-2011-88.x86_64.rpm
1 ./crack
2 gvim dummy.c
然后编辑dummy.c里的内容,
int main (void)
{
return 0;
}
然后保存,
运行命令gcc dummy.c 如果顺利会生成一个a.out文件
复制a.out到/usr/bin/rpm
命令:sudo cp a.out /usr/rpm 之前要备份好rpm, sudo mv rpm rpm.bak
3.运行setup
命令./setup
安装序列号要填serial:666-42943644 product key :657C1。
只选择adlm3个包 和maya ,maya的文档包安装即可
接着给maya搞个临时文件夹,给与权限。命令:
sudo mkdir /usr/tmp
sudo chmod 777 /usr/tmp
4.把/bin下的rpm.bak还原
$ sudo mv /bin/rpm.bak /bin/rpm
5.运行maya, 会提示缺少libXp.so 的错误,运行Add/Remove SoftWare 安装liXp的开发包就行了。
再罗嗦几句
#############
关于C++的数据类型 数组array 封装到python 对应的类型
#############
需要安装PyUblas 库和numpy 模块, 下载安装PyUblas-2011.1.tar.gz, numpy可以通过新立得(ubuntu), Add/Remove SoftWare(centos)来获得。
pyublas安装完成后copy它的头文件包到/usr/include下 再把对应的python的模块包放到python的lib下的site-packages或者dist-packages下。
如果想在maya中的python也能使用 怎把pyublas的python模块包也放到对应的路径下。
在编译pyublas时,会遇到一个找不到libboost_python库的错误,但是库已经存在 只不过是名字不一样,所以到库所在位置建立一个 编译所要的库的软连接即可
使用时
import pyublas
import numpy
#############
关于centOS的nvidia官方显卡驱动的安装
#############
默认centos下nvidia卡的驱动是民间写的,貌似没有硬件加速,所以安装完maya的时候会发现旋转视窗的时候很慢的原因。
下载与机器显卡相对应的官方驱动
执行以下命令:
$sudo gedit /etc/modprobe.d/blacklist.conf
加入一行 blacklist nouveau 屏蔽掉默认的驱动
重新建立initramfsimage文件,执行
$ sudo mv /boot/initramfs-$(uname-r).img /boot/initramfs-$(uname -r).img.bak
$ sudo dracut -v/boot/initramfs-$(uname -r).img $(uname -r)
修改开机启动模式
$sudo gedit /etc/inittab
5表示图形模式 3表示文本模式,把 id:5:initdefault: 里面的5改成3
重新启动
$reboot
在系统进入文本模式后,安装官方的驱动
$sudo sh NVIDIA-x-xx-.run
安装完后,再改回启动图形模式
$sudo gedit /etc/inittab
把 id:3:initdefault: 里面的3改成5
重启reboot
注意linux每次升级内核,都要对initramfsimage重新编译。
linux平台可以选择ubuntu,也可以选择centOS.
需要先安装些必要的库:建议先用系统的软件安装与卸载功能来查看下这些库是否已经安装,没有安装的需要去官网下载源码编译安装
ubuntu 的新立得很强大对应源码包不再列举,在安装centos系统时,要选择软件开发工作站模式安装,库比较全
库 centos6.0对应 源码包
tbb tbb22_20090809oss_src.tgz
boost boost_1_42_0.tar.bz2
OpenEXR ...
tiff tiff-3.9.4.tar.gz
jpeg ...
png ...
glew glew-1.7.0.tgz
glut glut-3.7.tar.gz
freetype2
####
第三方软件的支持好需要事先安装好软件并在scons的配置文件中制定好路径
3delight
maya
houdini
nuke
这些都是可选择性的安装或者不安装,也可在编译完cortex内核后分别安装编译
关于软件编译安装;linux的软件大部分都可以通过查看软件自身所带的README INSTALL 等安装说明来进行安装
大概的步骤就是:
./configure 配置 默认的安装路径为/usr/local
make 编译
make install 安装,需要sudo权限
cortex编译工具scons说明:
cortex的工程编译是用scons来执行的,检查系统是否已经安装了scons, 没有的需要下载编译安装。scons需要一个名字为SConstruct
的配置文件,它所在位置是cortex的主目录下,通过gvim或者gedit等文本编辑器打开进行配置。
#编译器及编译环境
linux的软件编译器是gcc,检查好系统是否满足了所需的编译器的环境。
ubuntu下可以通过新立得安装 build essential,或者通过命令执行安装:sudo apt-get install build-essential
centos 下应该已经装好了相应的编译器gcc
SConstruct的配置说明 ******START*********
此文件的语法属于python的语法范畴
注意如果你已经安装了houdini的话 需要在开始部分,在import完一坨模块之后,定义一个os的houdini变量
#add houdini path
os.environ.setdefault("HFS","/opt/hfs11.1.22")
接下来就是检查各库的include路径和lib路径要和你安装的相一致。
比如说适当修改下面的黑体部分:
注:如果是系统已经安装好了的软件,那么它的库的存放位置 ,ubuntu的默认为 /usr/lib , centOs 的为 /usr/lib64
# TBB options
o.Add(
"TBB_INCLUDE_PATH",
"The path to the tbb include directory.",
"/usr/local/include/tbb",
)
o.Add(
"TBB_LIB_PATH",
"The path to the tbb library directory.",
"/usr/local/lib",
)
#关于boost部分的修改,注意黑体部分:
# Boost options
o.Add(
"BOOST_INCLUDE_PATH",
"The path to the boost include directory.",
"/usr/local/include/",
)
o.Add(
"BOOST_LIB_PATH",
"The path to the boost library directory.",
"/usr/local/lib",
)
o.Add(
"BOOST_LIB_SUFFIX",
"The suffix appended to the names of the boost libraries. You can modify this "
"to link against the debug versions of the libraries, or to link against "
"unversioned libraries.",
"-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}",要把此处设置成空,
不要再进行版本的检查,否则会报错提示找不到相应的版本库
)
#你可以修改下面的黑体部分,用来改变编译完安装的lib库的位置,注意ubuntu下,动态库默认的搜索路径为 /usr/lib , /lib. CentOS则为 /lib64,/usr/lib64.
# General path options
o.Add(
"CPPPATH",
"A colon separated list of paths to search for headers on.",
"/usr/include",这个是安装了一个头文件的副本到系统路径下
)
o.Add(
"LIBPATH",
"A colon separated list of paths to search for libraries on.",
"/usr/lib",这个是系统需要搜索的动态库的位置,一般情况下,ubuntu设置成 /usr/lib , centOs设置成/lib64
)
#注意修改关于opengl部分,
###sudo gedit cortex/SConstruct
try :
o.Add(
BoolVariable( "WITH_GL", "Set this to build the IECoreGL library.", False ),
)
False改成True
#如果已经安装了houdini,那么做以下修改,此改动仅针对houdini11.1.22版本,其他也可能凑效
在SConstruct中找到如下部分,按下面添加修改CXXFLAGS
###########################################################################################
# Build, install and test the coreHoudini library and bindings
###########################################################################################
houdiniEnvSets = {
"IECORE_NAME" : "IECoreHoudini",
"CXXFLAGS" : [
"$HOUDINI_CXX_FLAGS", "-DMAKING_DSO", "-DNEED_SPECIALIZATION_STORAGE"
],
}
添加黑体部分如下
houdiniEnvSets = {
"IECORE_NAME" : "IECoreHoudini",
"CXXFLAGS" : [
"$HOUDINI_CXX_FLAGS", "-DMAKING_DSO", "-DNEED_SPECIALIZATION_STORAGE","-DDLLEXPORT= ",
"-DVERSION="10.0.554"","-D_GNU_SOURCE","-DLINUX","-DAMD64","-m64","-fPIC","-DSIZEOF_VOID_P=8",
"-DSESI_LITTLE_ENDIAN","-DENABLE_THREADS","-DUSE_PTHREADS","-D_REENTRANT","-D_FILE_OFFSET_BITS=64"
],
}
##
并且还要修改下houdini提供的api中的部分头文件,如下操作
##1
UT_NTStreamUtil.h
$sudo cp /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h.bak #先备份
$sudo gedit /opt/hfs11.1.22/toolkit/include/UT/UT_NTStreamUtil.h
修改
#include <strstream.h>
为
#include <strstream>
##2
GB_GenericData.h
$sudo cp /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h.bak #先备份
$sudo gedit /opt/hfs11.1.22/toolkit/include/GB/GB_GenericData.h
修改
L258 #define STATIC_INLINE_SPECIALIZATION static inline
为
L258#define STATIC_INLINE_SPECIALIZATION inline
#####################
如果已经安装了maya,仅做如下修改,把安装路径替换掉黑体部分即可
# Maya options
o.Add(
"MAYA_ROOT",
"The path to the root of the maya installation.",
"/usr/autodesk/maya",
)
#如果安装了3delight, Scontruct配置下renderman部分,也可以是prman的安装
# Renderman options
o.Add(
"RMAN_ROOT",
"The directory in which your RenderMan renderer is installed.",
"/usr/local/3delight-9.0.84/Linux-x86_64/",
)
##############
************END*************
##############
##关于cortex的procedural要在3deligth中渲染那么
cortex/src/rmanProcedural/python/Procedural.cpp 必须要编译正确,源代码此文件不能正确的编译出动态库,需要修改如下:
$sudo gedit cortex/src/rmanProcedural/python/Procedural.cpp
###############
#include "boost/python.hpp"
#include <dlfcn.h>//添加此行
#include <iostream>
#include "ri.h"
#if defined(_WIN32)
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT
#endif
using namespace std;
using namespace boost::python;
/// We use a static instance of this struct to initialise python when the dso is first loaded.
struct PythonInitialiser
{
PythonInitialiser()
{
// start python
dlopen( "libpython2.6.so", RTLD_LAZY | RTLD_GLOBAL); ///添加此行
Py_Initialize();
PyEval_InitThreads();
try
{
mainModule = object( handle<>( borrowed( PyImport_AddModule( "__main__" ) ) ) );
mainModuleNamespace = mainModule.attr( "__dict__" );
#################################################
开始编译
#IECore
cortex内核部分的编译及安装:
我的习惯是把cortex6.0源码包放到 /opt 下面,
命名为cortex,然后进入/opt/cortex目录,执行命令 ls 查看一下目录结构
src 是用来存放源代码的,include头文件包,lib是存放编译完成生成的动态库的,python是用来存放生成的python模块的,mel是存放脚本的, rsl是
renderman材质的头文件,glsl是opengl的头文件及材质的,contrib是存放houdini的源码,test是用来测试的python脚本的,SConstruct是配置文件
在配置好SConstruct文件后开始进行编译,你可以先不配置3delight,maya,houdini等软件的目录,单独编译 IEcore
执行命令如下:
$ sudo scons
编译开始,首先scons会根据配置文件所提供的依赖库的include,lib的路径进行检查是否存在,如果关键依赖库不存在则停止,你就要检查下路径是否正确
如果依赖库没有问题,scons就开始进行编译。
如果编译没有问题那么继续执行
$sudo scons install
这步scons会把生成的动态库安装到指定的路径下面,包括lib动态库和对应的python模块,还会把头文件包copy到指定路径下,还会在指定路径下比如
/usr 下安装houdini,maya,rmanProcedural等文件夹,里面有生成相应的插件脚本图标之类,只要把对应的文件copy到软件所需要的路径即可,
测试:在终端执行python,进入python控制台执行命令
import IECore 回车
不报错的话 恭喜 成功了~
#IECoreRI
如果配置文件中写了rendreman的安装路径3delight或者prman ,那么会生成相应的动态库和python模块
libIECoreRI.so
_IECoreRI.so(python)
#IECoreMaya
如果配置文件中写了maya的安装路径 ,那么会生成相应的动态库和python模块,及插件,在/usr下生成maya文件夹
libIECoreMaya.so
_IECoreMaya.so(python)
执行如下命令:
$sudo cp -r /usr/maya/mel/* /usr/autodesk/maya/scripts
$sudo cp /usr/maya/icons/* /usr/autodesk/maya/icons
$sudo cp /usr/maya/plugins/* /usr/autodesk/maya/bin/plug-ins
还要copy生成的python模块到maya的python的lib库下,命令
$sudo cp -r /opt/cortex/python/* /usr/autodesk/maya/lib/python2.6/site-packages/
测试:
打开maya,加载ieCore.so插件,查看是否能够正确加载。
打开脚本编辑器python面板输入
import IECore
import IECoreMaya
查看是否能正确导入
ex: 关于tbb的错误,一般情况下是maya的tbb库与系统的库冲突导致的,因为我们编译cortex时是用的系统的tbb库编译的,解决
办法,备份maya的tbb库 ,然后把系统的tbb库copy到maya的库下面
#IECoreHoudini
如果配置文件中写了rendreman的安装路径3delight或者prman ,那么会生成相应的动态库和python模块
libIECoreHoudini.so
_IECoreHoudini.so
拷贝/usr/houdini/下面文件夹内的文件到houdini的安装目录下对应的文件夹内
#cortex的环境变量
用户主目录下的隐藏文件.bashrc 是该用户的配置文件,一些软件的环境变量的设置都在此文件中。设置完成后,必须重启终端才能生效。
ops和procedural的配置,执行命令
$cd 进入用户主目录
$gedit .bashrc
添加如下语句
#procedural
export IECORE_PROCEDURAL_PATHS=~/procedurals
#ops
export IECORE_OP_PATHS=~/ops
下面给出了我的.bashrc添加的内容供参考:
#############.bashrc
#3delight
export DELIGHT=/usr/local/3delight-9.0.84/Linux-x86_64
source /usr/local/3delight-9.0.84/.3delight_bash
#houdini
#export HFS=/opt/hfs11.1.22
source /opt/hfs11.1.22/houdini_setup_bash
#PATH
export PATH=$PATH:/opt/hfs11.1.22/bin:/opt/massive/bin
#procedural
export IECORE_PROCEDURAL_PATHS=~/procedurals
#ops
export IECORE_OP_PATHS=~/ops
#massive
export MSERVER=ltc
export MASSIVE_HOME=/opt/massive
#cor hair
export HAIR_MODIFIER_PATHS=~/modifiers/hair
#python
export PYTHONPATH=/opt/MsvTools
####
###############################
3delight的安装配置
###############################
按照README or INSTALL or 帮助文件 安装好,并在.bashrc文件中做了变量的声明,如上。设置完重启终端
在终端输入render按TAB 如果能自动补齐为 renderdl的话 则说明变量成功声明。
在安装目录下的maya的文件夹内存放着3deligth for maya的插件
把生成的 /usr/rmanProcedurals/iePython.so 拷贝到3deligth的安装路径下的lib目录,这是就可以渲染cortex的procedural的东东了
测试:打开maya,加载ieCore.so和3delightformaya2011的插件,从cortex菜单创建一个procedural的物体 sphereProcedural 然后从3deligth菜单
创建一个fulllayer,设置save选项为save rib ,然后点render. 这样就保存了一个含有cortex procedural的rib场景文件,在终端用renderdl进行渲染
执行命令
$renderdl ~/maya/projects/default/3delight/untitled/rib/untitled_fullRenderPass.rib
如果渲染成功,则cortex和maya,3delight的工作环境便搭建好了。
#######################
关于centOS安装maya的破解说明
#######################
首先先把所需要的rpm包准备好:
安装
sudo rpm -i adlmapps-1.3.34-0.x86_64.rpm adlmflexnetclient-1.3.34-0.x86_64.rpm adlmflexnetserver-1.3.34-0.x86_64.rpm Maya2011_0_64-2011.0-372.x86_64.rpm Maya2011_0-docs_en_US_64-2011-88.x86_64.rpm
1 ./crack
2 gvim dummy.c
然后编辑dummy.c里的内容,
int main (void)
{
return 0;
}
然后保存,
运行命令gcc dummy.c 如果顺利会生成一个a.out文件
复制a.out到/usr/bin/rpm
命令:sudo cp a.out /usr/rpm 之前要备份好rpm, sudo mv rpm rpm.bak
3.运行setup
命令./setup
安装序列号要填serial:666-42943644 product key :657C1。
只选择adlm3个包 和maya ,maya的文档包安装即可
接着给maya搞个临时文件夹,给与权限。命令:
sudo mkdir /usr/tmp
sudo chmod 777 /usr/tmp
4.把/bin下的rpm.bak还原
$ sudo mv /bin/rpm.bak /bin/rpm
5.运行maya, 会提示缺少libXp.so 的错误,运行Add/Remove SoftWare 安装liXp的开发包就行了。
再罗嗦几句
#############
关于C++的数据类型 数组array 封装到python 对应的类型
#############
需要安装PyUblas 库和numpy 模块, 下载安装PyUblas-2011.1.tar.gz, numpy可以通过新立得(ubuntu), Add/Remove SoftWare(centos)来获得。
pyublas安装完成后copy它的头文件包到/usr/include下 再把对应的python的模块包放到python的lib下的site-packages或者dist-packages下。
如果想在maya中的python也能使用 怎把pyublas的python模块包也放到对应的路径下。
在编译pyublas时,会遇到一个找不到libboost_python库的错误,但是库已经存在 只不过是名字不一样,所以到库所在位置建立一个 编译所要的库的软连接即可
使用时
import pyublas
import numpy
#############
关于centOS的nvidia官方显卡驱动的安装
#############
默认centos下nvidia卡的驱动是民间写的,貌似没有硬件加速,所以安装完maya的时候会发现旋转视窗的时候很慢的原因。
下载与机器显卡相对应的官方驱动
执行以下命令:
$sudo gedit /etc/modprobe.d/blacklist.conf
加入一行 blacklist nouveau 屏蔽掉默认的驱动
重新建立initramfsimage文件,执行
$ sudo mv /boot/initramfs-$(uname-r).img /boot/initramfs-$(uname -r).img.bak
$ sudo dracut -v/boot/initramfs-$(uname -r).img $(uname -r)
修改开机启动模式
$sudo gedit /etc/inittab
5表示图形模式 3表示文本模式,把 id:5:initdefault: 里面的5改成3
重新启动
$reboot
在系统进入文本模式后,安装官方的驱动
$sudo sh NVIDIA-x-xx-.run
安装完后,再改回启动图形模式
$sudo gedit /etc/inittab
把 id:3:initdefault: 里面的3改成5
重启reboot
注意linux每次升级内核,都要对initramfsimage重新编译。
我的一个毛发测试示例: