Houdini19 命令行启动环境配置

news2024/10/6 18:31:59

        在自动化流程中,通常都是从外部命令行启动 Houdini,而不是在软件里进行烘培和输出。完全体是通过类似 Jenkins 等自动化工具来启动 Houdini 自动生成流程。

        我使用的 Houdini 版本为 19.5.640,对应的 Python 版本为 3.9 。

1、配置开发环境

        Houdini 支持使用 Python,从外部调用 Houdini 的功能。当然,我们需要使用 Houdini 的 Python 环境,而不能用我们自己的(存在版本问题),所以还需要配置 Python 环境。在 Visual Studio 中配置方法如下:

  1. 打开 解决方案资源管理器,右键 Python 环境,选择 添加环境;

  2. 在窗口中选择 现有环境,然后再文件夹中找到 Houdini 的 Python3.9 的文件夹路径;

  3. 之后点击添加,然后在 解决方案资源管理器 中右键刚才添加的环境,选择 激活环境 即可:

2、初始化 Houdini

        我主要参考的以下教程:

学习在外部Python脚本中运行Houdini的Python接口(hou模块)_YakSue的博客-CSDN博客学习在外部Python脚本(而非Houdini编辑器内部)使用 hou 。主要参考Houdini官方文档 Command-Line Scripting 中的【Accessing hou from a Regular Python Shell】部分。我将要点记录在下:https://blog.csdn.net/u013412391/article/details/131609298        如果你的电脑上直接运行很顺利,那么恭喜。如果失败了,以下是我踩过的一些坑,可以参考:

2.1、_hou 模块丢失

        DLL load failed while importing _hou: 找不到指定的模块。

        我试了很多方案,各种改环境变量都不行,最后还是代码强行加入才起效果(注意路径要改成自己电脑上的路径,注意使用正斜杠):

    def InitHoudiniNode():
         mIsHasAttr = hasattr(os,"add_dll_directory");
         if(mIsHasAttr):
            os.add_dll_directory("D:/Program Files/Side Effects Software/Houdini 19.5.640/bin");            
         sys.path.append("D:/Program Files/Side Effects Software/Houdini 19.5.640/houdini/python3.9libs");
         import hou;

2.2、tractor.api.author 异常

        初始化 Houdini 的时候遇到报错:No module named 'tractor'

        这个 tractor 不是公用库里的那个 tractor 而是皮克斯出的一个叫 RenderMan 的软件里面的 Python库,可以联动 Houdini ,可以看这个作为简介:

皮克斯发布了牛叉的RenderMan 24,已支持主流软件 - 哔哩哔哩最近,著名的皮克斯工作室Pixar发布了产品级渲染器RenderMan的新版本,RenderMan 24渲染器,现在这渲染器的免费非商业版现已推出了,在皮克斯官网上已经可以下载了(renderman.pixar.com/intro)。非商业版和商业版的区别就是有些许功能不能用而已,其他功能没啥区别。最新非商用版的RenderMan 24与以前版本的非商业RenderMan一样,可用于个人项目、研究和工具开发,包括商业插件和资产的开发。非商用版输出是没有水印的,但皮克斯非常推荐用户自行在作品中添加icon-default.png?t=N7T8https://www.bilibili.com/read/cv12064984/        Houdini 看来是默认使用了这个 RenderMan,那么解决方案有2个,一种是我们可以自己下载安装 RenderMan 并引用他的库,正如 Houdini 的代码里所写:

        RenderMan 的官方网站(下载需要注册,注册需要科学上网):

RenderMan 25 DocumentationElemental © Disney/Pixaricon-default.png?t=N7T8https://rmanwiki.pixar.com/display/REN25        但是这个确实太麻烦了,而且我的需求只是外部启动 Houdini ,并直接运行其中的节点,并不需要使用 RenderMan,本来就不需要渲染出东西。所以采用了更暴力的方法:

        我把这个导入 tractor 的地方直接注释了,然后大家就当无事发生过,导入 hou 就完全正常了。经测试注释之后也没有什么问题,Houdini 也能正常使用。

3、安装其他库

        当然我们做 Python 应用程序还需要导入其他库,可能 Houdini 内部的 Python39 并不完全包含,这个时候就需要我们自己安装。可以通过命令行,或者其他什么方式管理 Python 的各种包,但是不得不说,确实容易翻车。作为宇宙第一 IDE Vitrual Studio ,有一个简便的方法:

  1. 还是打开 解决方案资源管理器,右键当前环境,选择 管理 Python 程序包:

  2. 我们在这个搜索栏里输入需要的包,然后 VS 就能自动帮我们安装/卸载了。

4、Houdini!启动!

        首先我们要先建立一个测试工程,我这里建立了一个简单的 Terrain 场景工程,里面的结构也很简单,就是一个高度场加一个噪声。

        之后我们将此文件进行保存,保存为 TerrainTest.hip (如果你保存的后缀名不是 hip 结尾,而是 hipnc 这种,说明你没有充值,使用的个人版。hipnc 是否能读取成功没有试过,不过建议充值或者偷偷破解)。

        之后我们将路径填好(我用的绝对路径),调用 Houdini 的方法进行节点获取和读取:

    def OpenHipFile(filePath : str):
        import hou;
        hou.hipFile.load(filePath);
        print("加载到工程文件:"+hou.hipFile.basename());
        node=hou.node("/obj/BaseTerrain");

        #这里只把子节点全部打印出来        
        print("\n定位到节点:"+ str( node));
        print("打印子节点:");
        for subNode in node.children():
            print(subNode);        
        print("子节点打印完成!\n");

        执行结果如下:

        与原工程对比,执行结果正确。

参考文档

        本文档附带的学习工程:魔术师Dix / Houdini自动化研究 · GitCode

        官方文档:

Command-Line Scriptingicon-default.png?t=N7T8https://www.sidefx.com/docs/houdini/hom/commandline.html        一些网络教程:

外部python调用houdini python_python 获取houdini程序_不是小黄书的本子的博客-CSDN博客前言:作为自动化项目的一部分,需要外部python调用houdini python的hou模块。在测试这部分时,总是遇到 _hou 模块缺失的问题。下面附上解决方案。(win10,houdini19.0.427,VS Code,Python3.7.8(houdini自带的是3.7.4,暂不确定别的版本是否可行))1.添加环境:path:C:\Program Files\Side Effects Software\Houdini 19.0.427\binpath:C:\Program Fi_python 获取houdini程序https://blog.csdn.net/kraka/article/details/121459947python执行cmd命令行_【houdini】命令行cmd执行houdini的两种方式(hscript/hython)_weixin_39543647的博客-CSDN博客环境变量需要提前设置好更方便,这里使用的是houdni18cmd执行的方式:hscriptmread D:/Houdini_project/cmd_python/cmd_python.hiprender-V/out/mantra1#hscript下想运行python命令的话:#python -c "hou.node('/obj/sphere_object1/sphere1').par..._pdg python houdinihttps://blog.csdn.net/weixin_39543647/article/details/111294793

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1005105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…

挖到宝了!这个中文版SiteGPT竟然有那么多好处

如今数字时代蓬勃发展,信息非常丰富,但个性化互动和量身定制的反馈却相对匮乏。个性化AI工具的出现可以说是打破了窘境。随着人工智能(AI)技术的快速发展,定制AI问答机器人成为了越来越多企业和组织的热门选择。这些智…

Zabbix监控部署项目

为什么选择Zabbix Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 面试常问 你用过哪些监控软件 zabbix …

linux的应用线程同步与驱动同步机制

同步机制 在 Linux 应用程序和内核中的驱动程序中,有一些常见的同步机制用于实现线程或进程之间的同步和数据访问保护。下面是它们的一些主要机制: Linux 应用程序中的同步机制: 互斥锁(Mutex):用于保护共…

233062C++QTday5

实现一个图形类(Shape),包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle),继承自图形类,包含私有属性:半…

【ArcGIS Pro二次开发】(67):处理面要素空洞

这个一个简单的小功能。 有些面要素可能会存在空洞,这个工具的目的就是获取面要素的空洞,或者去除空洞获取要素的边界。 这个功能其实在之前做拓扑功能的时候就已经有了,这次只是单独把它提取出来。因为有时候会单独用到这个功能。 一、要实…

圆形旋转特效原理及pygame实现

具体效果: 视频教程链接: https://www.bilibili.com/video/BV1ou411F7a2/ 介绍 本文介绍了如何实现一个围绕鼠标旋转的文字效果如何实现,有什么用途,以及pygame的代码实现。 实现代码: import pygame import math…

初识Java 8-1 接口和抽象类

目录 抽象类和抽象方法 接口定义 默认方法 多重继承 接口中的静态方法 作为接口的Instrument 本笔记参考自: 《On Java 中文版》 接口和抽象类提供了一种更加结构化的方式分离接口和实现。 抽象类和抽象方法 抽象类,其介于普通类和接口之间。在构…

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例使用教学+宝塔建站 — 运行Python脚本(保姆级)

目录 文章目录 目录前言一、创建云耀云服务器L实例1、打开购买页面2、找到系统镜像3、进入系统控制台4、重置服务器密码 二、安装宝塔面板1.打开在线安装工具2.复制公网IP3.完成在线安装4.安装完成(记住账密信息)五.开放安全组 三、使用服务器总结 前言 …

Linux系统编程(一):文件 I/O

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. UNIX 基础知识 1.1 UNIX 体系结构(下图所示) 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境,通常…

4.linux的RPM和YUM

一、RPM 1.rpm包的管理 1.1介绍 Linux互联网下载包,类似于windows的setup.exe 1.2rpm简单查询已安装的rpm rpm -qa | grep xxx 当前linux有没有安装火狐 rpm -qa | grep fox 1.3rpm包的格式 一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.…

学习记忆——方法篇——连锁拍照、情景故事和逻辑故事法

三大方法速记这些内容 1、连锁拍照法速记重要事件 2、情景故事速记速记购物信息 3、逻辑故事法速记客户档案 一、连锁拍照法速记重要事件 例:女朋友在出差之前嘱咐男朋友几件事 1、把房间收拾干净,最重要的是要把书架整理了,垃圾倒了 2、记…

软件设计师_计算机组成与体系结构

计算机组成与体系结构 文章目录 1.1 数据的表示1.1.1 进制的转换1.1.2 原码 反码 补码 移码1.1.3 浮点数运算 1.2 计算机结构1.3 Flynn分类法1.4 CISC和RISC1.5 流水线技术1.6 存储系统1.7 总线系统1.8 可靠性1.9 校验码 1.1 数据的表示 1.1.1 进制的转换 R进制转十进制 --&g…

Linux:keepalived + ipvsadm

介绍 Linux:keepalived 双热备份(基础备份web)_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/132815057?spm1001.2014.3001.5501 环境 一台 centos7 keepalived ipvsadm (主…

技术架构图是什么?和业务架构图的区别是什么?

技术架构图是什么? ​技术架构图是一种图形化工具,用于呈现软件、系统或应用程序的技术层面设计和结构。它展示了系统的各种技术组件、模块、服务以及它们之间的关系和交互方式。技术架构图关注系统内部的技术实现细节,以及各个技术组件之…

SpringBoot项目--电脑商城【显示勾选的购物车数据】

1.持久层[Mapper] 1.规划SQL语句 用户在购物车列表页中通过随机勾选相关的商品,在点击“结算”按钮后,跳转到结算页面,在这个页面中需要展示用户在上个页面所勾选的购物车对应的数据,列表的展示,而展示的内容还是在于…

OpenCV学习笔记(6)_由例程学习高斯图像金字塔和拉普拉斯金字塔

1 图像金字塔 图像金字塔是图像多尺度表达的一种。 尺度,顾名思义,可以理解为图像的尺寸和分辨率。处理图像时,经常对源图像的尺寸进行缩放变换,进而变换为适合我们后续处理的大小的目标图像。这个对尺寸进行放大缩小的变换过程…

Python的get请求报错Error: Unexpected status code 400

一句话导读: 最近在做研发效能提升的事情,其中有一块就是要对项目管理相关数据做统计,我们使用的是ones做的项目管理,ones本身带的那些报表满足不了我们的需求,就想着看这些数据是不是能自己拿出来做统计,有…

代码随想录--数组--长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s 7, nums [2,3,1,2,4,3]输出:2…

华为3面已过,面议薪资要价10K,面试官说我不尊重华为?

在不知道一个公司的普遍薪资水平的时候,很多面试者不敢盲目的开价,但就因为这样可能使得面试官怀疑你的能力。一位网友就在网上诉说了自己的经历,男子是一位测试员,已经有九年的工作经历了,能力自己觉得还不错。 因为…