Compiled blocks

目录

一,编译块 Compiled Block

二,编译循环

三,调用编译块 Invoke

四,Tips and notes


一,编译块 Compiled Block

        在几何体网络内,可将网络的一部分放入编译块(compiled block)内(其内所有节点应是可编译的),可使块行为像一个节点一样;这对网络如何工作强加了许多限制,但也在适当的条件下带来巨大的好处:

  • 主要好处是多线程的for-each loops;在大量独立的piece上运行相同的节点块,编译块会让houdini发布在多个核上;
  • 另一好处是更高效的使用OpenCL;通常,即使一个节点处理几何体(在显卡上),在每节点后几何体也必须复制回主内存(由于其他节点可能会访问它);然而在编译块内,许多基于OpenCL的节点可在处理数据时将数据保留在显卡上,无需将其复制回,从而提高了速度;
  • 在普通网络内,理论上每个阶段会复制其正在处理的几何体;在实践中,有很多优化可使其高效,但这仍然有成本;在编译块内,节点可在同一几何体上原位工作,因为不允许外部引用;这可以为编译块提供额外的加速;

限制

  • 仅可使用可编译的节点;
  • 不可使用stamp()表达式;
  • 不可使用局部变量,每组件表达式,如需对每组件操作需使用基于VEX的节点,如attribute wrangle;
  • 不可使用通过名称引用的内部几何体,如npoints("/obj/sphere1") ,应使用spare inputs替代;可通过路径引用通道值,如ch("../sphere1/tx"),但不能读取几何体,如point表达式;
  • 不可读取直接的输入端口,如point(0, …) or npoints(0),使用spare inputs;
  • 禁用/隐藏的参数不可计算;
  • 不支持for each节点的stop条件; 

编译块不报错也不代表结果正确:

hscript command和python expression,在循环迭代中会烘焙成一个值不会在循环中变化;

//python表达式
hou.node("/obj/geo1/metadata").geometry().attribValue('iteration')

如编译块内有用到不可编译的节点但没有用到,可勾选Delay Incompatible Node Errors Until Cooked(运行时识别);

如一些节点不能被编译而编译失败,可勾选Fallback to Traditional Cook If Compile Fails,退化为常规非编译计算;

  • 错误发生在编译阶段,才可退化执行;
  • 如勾选Delay Incompatible Node Errors Until Cooked(仅在运行时才识别不可编译的节点),无法退化执行;

编译块可以由多个Block End Compile,应设置Primary Path;

二,编译循环

        是把循环放在编译块内,而不是把编译块放在循环内;

        在for-each循环的最高级别循环(最外层循环)的终端节点上,打开Multithread when Compiled参数,告诉houdini将不同循环迭代发布到不同核心上;仅在最外层循环上打开此参数,避免发布任务的激增;

Nesting blocks

使用编译块和循环时,注意在每个块的“边界”处正确封装和嵌套每个块的Begin/End节点;普通cook是有效的,houdini会re-cook每迭代的路径;但编译块内的循环是作为独立的单元被编译的,必须在自己的Begin/End节点内;

Spare inputs

在编译块内的几何体表达式,不能引用节点的直接输入,也不能通过名字引用;不能有任何的动态表达式;任何需要从其他SOP读取数据的SOP,必须在cook前静态地确定,不是在cook期间在确定;

可添加spare input,去指向引用的节点;spare input在编译块运行前会re-cook;

三,调用编译块 Invoke

        运行其他地方定义的编译块,以处理节点的输入,好像被引用的编译块被连入;

在两个方面有用:

  • 可在网络不同的地方复用块功能,不必复制或引用节点;
  • 可创建以资产,其参数接受编译块的引用;

Inputs

  • 可指定许多输入,每个输入可覆盖block begin compile的输入;
  • 输入必须匹配block begin compile的名字,如没有匹配的输入将使用编译块原始的输入;

四,Tips and notes

  • spare input也有用于在wrangle节点内引用外部几何体(超过wrangle节点的四个输入);
  • 在编译块内的打开显示flag,将会非编译cook;必须在block end节点后以编译;
  • 可打开badge以查看节点是否为可编译的;

HoudiniEasyCompileBlock_v0_5_6插件

可轻松为编译循环或节点选择,可创建所有所需的节点且更新所有表达式引用;

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

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

相关文章

jenkins nginx自动化部署 php项目

在当今快速发展的IT领域,自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署(CI/CD)的佼佼者,结合Docker容器技术和PHP编程语言,以及Ansible自动化工具,可以实现高效、可靠的自动…

基于DeepNLP AI Store真人点评和ShowCase分享社区-AI for Image Generator

来源 quora 社区: https://deepnlpaistore.quora.com/ github: https://rockingdingo.github.io/deepnlp/store/image_generator 内容 DeepNLP AI Store 网址:http://www.deepnlp.org/store/image-generator 网站针对图像生成类别 Image Generator下多个AI工具如 …

CS与MSF的权限互相传递/mimikatz抓取windows 2012明文密码

目录 CS和MSF的简单介绍 Metasploit Cobalt Strike 1、CS权限传递到MSF 2、MSF权限传递到CS 3、使用mimikatz抓取明文密码 通过修改注册表用户重新登录后抓取明文密码 今天的任务是两个 一个是CS与MSF的权限互相传递一个是抓取windows2012的明文密码 那就分别来完成 …

云计算基础技术

云计算基础技术概览 计算类产品主要提供算力,支持业务运行,例如网站、办公软件、数据分析等计算能力,目前典型的产品主要是虚拟化和容器,在公有云上的云主机本质也是虚拟机。网络类产品主要满足资源的网络连通性和隔离&#xff0c…

软考初级网络管理员__软件单选题

1.如下图所示,在IE“Intemet选项”对话框的()选项卡中可指定电子邮件程序。 常规 内容 高级 程序 2.在Excel的A1单元格中输入函数“ROUND(1/3,3)”,按回车键之后,A1中的值为()。 1 1/3 0.34 0.333 3.在输入Word文档过程中,为了防止意…

Pinia的基本用法

Pinia的安装和引入 1.安装Pinia npm install pinia2. 在vue项目的main.js文件中引入pinia import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const app createApp(App)app.use(pinia) app.mount(#ap…

日志打印中对容器(包括多级容器)的通用输出

在日志打印中,往往有打印一个数组、集合等容器中的每个元素的需求,这些容器甚至可能嵌套起来,如果每个地方都用for循环打印,将会特别麻烦。基于这种需求,作者尝试实现一个通用的打印函数SeqToStr(),将容器序…

线上民族传统服饰商城

摘 要 随着互联网的不断发展和普及,电子商务成为了人们生活中不可或缺的一部分。传统的线下购物方式逐渐被线上购物所取代,人们越来越习惯在互联网上购物。而民族传统服饰作为我国丰富多样的民族文化的重要组成部分,具有独特的艺术价值和商业…

unity VR Interaction Framework 创建新手势

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、新建物体,并添加必要组件二、添加抓取点三、查看手势的可视化样式四、制作新的手势1.点击编辑2.根据需求调节手指关节3.保存手势4. 使用创建的手势5.运行 总结 前言…

远程过程调用协议gRPC及在go环境下的使用

1. 远程过程调用协议 1.1 定义 远程过程调用(Remote Procedure Call,PRC是一种进程间通信技术,它使得程序可以像调用本地函数一样调用远程服务器上的函数。RPC 屏蔽了底层的通信细节,让开发者能够更专注于业务逻辑,而无需关心网络…

无源电压继电器 JDY-1210AW 导轨安装 约瑟JOSEF

系列型号: JDY-1002AW电压继电器;JDY-1002B电压继电器; JDY-1110AW电压继电器;JDY-1110B电压继电器; JDY-1220AW电压继电器;JDY-1220B电压继电器; JDY-1100AW电压继电器;JDY-110…

服务器数据恢复—用raid6阵列磁盘组建raid5阵列如何恢复原raid数据?

服务器存储数据恢复环境: 华为OceanStor 5800存储,该存储中有一组由10块硬盘组建的raid6磁盘阵列,供企业内部使用,服务器安装linux操作系统EXT3文件系统,划分2个lun。 服务器存储故障: 管理员发现存储中rai…

JavaScript的学习之dom的查询(一)

一、获得元素 通过document对象调用&#xff1a; getElementById()&#xff1a;通过id属性获取一个元素节点对象getElementsByTagName()&#xff1a;通过标签名获取一组元素节点对象getElementsByName()&#xff1a;通过name属性来获取一组元素节点对象 核心学习代码 <scrip…

记录一次即将出现的钓鱼新方式

钓鱼通常是内网渗透过程中的最为常见的入口方式&#xff0c;但是随着蓝队人员溯源反制思路开阔&#xff0c;入侵排查能力提升&#xff0c;钓鱼也越来越困难&#xff0c;这里就记一种不同寻常的钓鱼方式。 pip install 的执行流程&#xff1a; 先获取到远端的服务器地址 url 比…

单目标应用:基于吸血水蛭优化器(Blood-Sucking Leech Optimizer,BSLO)的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献&#xff1a; [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、吸血水蛭优化器求解微电网 2.1算法简介 吸血水蛭优化器&#xff08;B…

【Java Web】Tomcat服务器

目录 一、Tomcat是什么 二、Tomcat安装 三、Tomcat相关目录 四、Web项目标准目录结构规范 五、Tomcat项目部署方式 六、IDEA关联本地Tomcat 七、HTTP协议 7.1 http的交互方式 7.1.1 http长连接和短连接 7.1.2 http1.1缓存机制 7.2 http数据报文格式 八、常见响应状态码 一、Tom…

印刷企业数字工厂管理系统如何保障产品质量

一、引言 随着信息技术的迅猛发展&#xff0c;印刷行业也迎来了数字化转型的浪潮。数字工厂管理系统作为这一转型的核心工具&#xff0c;不仅在提高生产效率、优化资源配置方面发挥了重要作用&#xff0c;更在保障产品质量上扮演着关键角色。本文将深入探讨印刷企业数字工厂管…

浏览器扩展V3开发系列之 chrome.contextMenus 右键菜单的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.contextMenus 允许开发者向浏览器的右键菜单添加自定义项。 在使用 chrome.contextMenus 之前…

本地读取classNames txt文件

通过本地读取classNames,来减少程序修改代码,提高了程序的拓展性和自定义化。 步骤: 1、输入本地路径,分割字符串。 2、将className按顺序放入vector容器中。 3、将vector赋值给classNmaes;获取classNames.size(),赋值给CLASSES;这样,类别个数和类别都已经赋值完成。…

Python | Leetcode Python题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; class Solution:def rightSideView(self, root: TreeNode) -> List[int]:rightmost_value_at_depth dict() # 深度为索引&#xff0c;存放节点的值max_depth -1stack [(root, 0)]while stack:node, depth stack.pop()if node is not…