zoukankan      html  css  js  c++  java
  • Cortex-VFX 开发环境安装及配置说明

    这是2011年测试cortrex的一些总结,现在已经不研究这项目了,仅供参考。
    (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重新编译。
     
    我的一个毛发测试示例:
    http://www.cnblogs.com/litiecheng/
  • 相关阅读:
    由DBCursor的“can't switch cursor access methods”异常引发的思考
    在Java中使用元组类型的利器
    Linux命令行如何返回上一次的目录
    Linux下通过crontab命令来实现定时任务
    Spark任务踩到的坑
    Hadoop HDFS命令学习笔记
    Spark RDD学习笔记
    HBase的基本操作
    一张图5分钟熟悉MarkDown的基本语法
    C#跨线程操作控件的最简单实现探究
  • 原文地址:https://www.cnblogs.com/litiecheng/p/3369990.html
Copyright © 2011-2022 走看看