
Houdini
文章平均质量分 88
学习Houdini相关知识
YakSue
这个作者很懒,什么都没留下…
展开
-
翻译:《漫威蜘蛛侠 2》:Insomniac Games 程序化内容创作的十年历程
翻译:《漫威蜘蛛侠 2》:Insomniac Games 程序化内容创作的十年历程翻译 2025-05-03 20:08:24 · 94 阅读 · 0 评论 -
观察HoudiniEngine是怎么得到Cook时信息的
官方HoudiniEngine在对HDA进行Cook的时候会有提示框显示Cook信息。本篇目标是了解这个信息(正在Cook哪个节点)是如何得到的。原创 2023-08-06 18:26:24 · 693 阅读 · 0 评论 -
学习在外部Python脚本中运行Houdini的Python接口(hou模块)
学习在外部Python脚本(而非Houdini编辑器内部)使用 hou 。主要参考Houdini官方文档 Command-Line Scripting 中的【Accessing hou from a Regular Python Shell】部分。我将要点记录在下:原创 2023-07-08 11:36:37 · 2127 阅读 · 0 评论 -
Houdini地形数据导入UE的最基本规则
结合官方文档,梳理Houdini地形数据导入UE的最基本规则。原创 2023-04-03 23:33:25 · 2856 阅读 · 1 评论 -
翻译Houdini节点官方文档:HeightField Erode(高度场侵蚀)
该节点使用 “降雨”、“土壤的可侵蚀性” 和 “夹带率(entrainment rate)” 作为变量来模拟侵蚀和沉积物的积累。翻译 2023-03-26 21:47:57 · 2322 阅读 · 0 评论 -
学习从USGS中下载真实世界高度图并导入Houdini
学习从USGS上下载真实世界高度图数据。并尝试导入Houdini。原创 2023-03-11 23:37:01 · 4573 阅读 · 1 评论 -
游戏项目中的程序化生成(PCG):算法之外的问题与问题
用一些算法/工具(特别是Houdini)生成美术内容(特别是大世界场景)所遇到的算法之外的问题(Quesion)与问题(Problem)原创 2023-03-05 21:34:18 · 7431 阅读 · 4 评论 -
简单概括HAPI(Houdini Engine API)所涵盖的功能
依照官方文档中的分类,简单概括一遍所有函数。并结合自己的使用经验,指出其中相对重要的函数。最后概括下一般的使用流程。原创 2022-10-24 22:49:38 · 3641 阅读 · 1 评论 -
实验观察UE中HDA资源与HDA源文件的关系
当在UE中通过HoudiniEngine将一个HDA导入引擎后,就会生成一个HDA资源。然而,这并不是说后续引擎中的使用,就和HDA源文件完全无关了。但也不是说,HDA资源只是包含一个指向HDA源文件的引用。实验发现,二者是一个略显歧义的关系。本篇的目标将通过实验观察,在引擎中使用的HDA,他的定义到底来源于哪。原创 2022-04-29 13:57:01 · 1421 阅读 · 0 评论 -
简单观察HoudiniAssetComponent状态(AssetState)的变化过程
本篇的目标是对 HAC 在各个状态的变化过程有个初步的认知。原创 2022-04-17 16:21:29 · 708 阅读 · 0 评论 -
尝试建立一个可运行HAPI(HoudiniEngine API)的独立C++程序
建立一个可运行HAPI的独立C++程序。(不需要启动UE引擎,但是借用了一些官方插件的代码)原创 2022-03-27 12:27:52 · 2144 阅读 · 0 评论 -
UE的HoudiniEngine插件版本的匹配问题
讨论影响HoudiniEngine插件是否能在UE引擎中正常使用的因素。原创 2022-03-25 21:43:17 · 2944 阅读 · 0 评论 -
观察HoudiniEngine的“通用属性”(Generic UProperty Attributes)的实现逻辑
目标HoudiniEngine会尝试把前缀为unreal_uproperty_的attribute转换为UE中的UProperty。(详见官方文档)本篇的目标是观察这一过程是怎样实现的。0. 准备测试用HDA首先,准备一个可以让这段逻辑出现的HDA。我这里用一条线创建出五个点:随后,用PointWrangle节点来创建一段逐Point执行的vex代码://指定生成点光源Actors@unreal_instance = "PointLight";//光源强度逐渐变强@unreal_upr原创 2022-03-24 00:36:08 · 1162 阅读 · 0 评论 -
尝试在Houdini中做一个能可视化法线数据的着色器
输出世界空间法线到颜色原创 2022-01-16 00:09:32 · 1552 阅读 · 0 评论 -
尝试在Houdini中实现一个能预览可变数目层数的高度场可视化节点(HeightField Visualize)
实现一个能预览可变数目层数的HDA节点原创 2021-12-26 15:16:53 · 1806 阅读 · 4 评论 -
GDC翻译:Far Cry 5 的程序化世界生成(第四部分:总结和Q&A)
8. 计划的变更在这一部分,我想分享一些我们在开发过程中改变的东西。因为事情并不总是按照计划进行,有些想法可能在纸面上很好,但是最终可能并不是那么好。第一个例子是 Biome Painter:因为我们发现,我们可能在一个地方有太多的生态进行混合,调试它们会是一个噩梦。比如下图左边,我们虽然只有三个生态,但已经很难看出来哪些地方是红色的生态了。虽然我们也可以有一种模式,让用户一次只看到一个生态。但是对用户来说,能够同时看到所有画的生态是最好的。实际上最终我们发现,完全不需要Biome的混合就能产翻译 2021-11-13 21:01:40 · 702 阅读 · 0 评论 -
GDC翻译:Far Cry 5 的程序化世界生成(第三部分:7-生态工具(Biome Tool))
下面来看生态工具(Biome Tool)。这个工具的目标是用生物内容填充整个世界。容我说一下,这可能是本次演讲中最大的部分了,有太多的特性需要涵盖。主要是因为自然界有很多微妙之处 ,我们也想复现出很多现象。输入:地形的非生物数据所以,在生态工具中我们第一步是从高度图生成地形,很简单。然后从地形拓扑中,我们生成非生物数据,基本上就是地形的物理特征:其他的比如海拔、经纬度,还有风的方向图。需要注意的是,这里的地形属性会成为大多数生态工具的支柱。输入:其他2D数据然后,我们导入了其他 DUN翻译 2021-11-13 13:43:38 · 913 阅读 · 0 评论 -
GDC翻译:Far Cry 5 的程序化世界生成(第二部分:6-崖壁工具)
下面来看崖壁工具。这个工具的目的是在大型地形表面上生成崖壁几何体,它作为地表之上一个具有更多细节的“皮肤”。总览这部分的演讲内容很大,所以我将给出这部分的总览:以前的技术...翻译 2021-11-10 23:12:16 · 1076 阅读 · 0 评论 -
观察与梳理Houdini的虚幻引擎PivotPainter工具
1.0 与 2.0UE的PivotPainter现在有两版,区别在于2.0版使用贴图来存储信息,而1.0版使用顶点信息包括额外的UV通道。对于1.0和2.0分别有各自的材质函数:Pivot Painter Tool 1.0 Material Functions | Unreal Engine DocumentationPivot Painter Tool 2.0 Material Functions | Unreal Engine Documentation而 Houdini 的 PivotP原创 2021-11-07 23:08:03 · 1707 阅读 · 0 评论 -
学习在Houdini中将PivotPainter(2.0)数据导入给UE
前言UE的PivotPainter现在有两版,区别在于2.0版使用贴图来存储信息,而1.0版使用顶点信息比如顶点色和额外的UV通道。Houdini的工具也是对应了两版,之前的博客《学习在Houdini中将PivotPainter(1.0)数据导入给UE》尝试了1.0版本。本篇将对 2.0 版本进行尝试。主要参考的资源还是 https://www.sidefx.com/tutorials/pivot-painter-version-1-and-2/,时间可以从 9:58 开始。实验1:按次序降落物体这原创 2021-11-07 18:42:33 · 1323 阅读 · 0 评论 -
记录Houdini的PivotPainter2.0工具没有导出贴图的问题
描述当使用 PivotPainter 工具并将格式调换为 2.0 时,发现点击Export按钮后并不能导出贴图。观察问题之后进入 PivotPainter 节点,观察发现有个节点报错。查看信息后,发现似乎是它想要调用 scheduler 的 runOnMainThread函数。对于 PDG 的 scheduler 相关的 python 接口,可以在官方文档 https://www.sidefx.com/docs/houdini/tops/pdg/Scheduler.html 中找到。问题是,在原创 2021-11-07 16:29:01 · 719 阅读 · 0 评论 -
GDC翻译:Far Cry 5 的程序化世界生成(第一部分:1~5)
原视频链接:https://www.gdcvault.com/play/1025215/Procedural-World-Generation-of-FarPPT链接:https://www.gdcvault.com/play/1025557/Procedural-World-Generation-of-Far另一版视频:Procedural World Generation of Ubisoft’s Far Cry 5 | Etienne Carrier | Houdini HIVE Utrecht翻译 2021-11-06 18:58:37 · 1838 阅读 · 0 评论 -
GDC翻译:Ghost Recon Wildlands 中的地形工具与技术
介绍大家好,欢迎来到这里。今天我们将讨论《Ghost Recon Wildlands》中我们创建的地形,以及我们为此创建的工具。首先,先介绍下我们自己。我的名字是Guillaume Werlé。我是一名图形程序员,负责 Ghost Recon Wildlands 的地形技术。我喜欢富有创意的编程。在业余时间我是 demoscene 社区的活跃成员。我的名字是 Benoit Martinez。我是 Lead Artist 和 Technical Art Director。我负责关卡美术团队和PCG翻译 2021-11-06 11:40:19 · 1338 阅读 · 0 评论 -
Houdini的参数预设(Preset)功能
功能Houdini中,可以将节点的参数值存为一种预设:操作点击参数面板的小齿轮按钮,选择Save Preset即可将当前的参数保存为一种预设接下来的窗口可指定预设的名字。而Save Preset To的选项可以指定当前预设存放的位置,可以选择仅让其在当前HIP目录中有用。Tip:根据 官方文档:Save Preset window 所描述,Save Preset To三种选择的意思是:$HIPMakes this preset available to this file.$HO原创 2021-10-20 12:20:33 · 2032 阅读 · 1 评论 -
实验观察Vellum布料的一些重要参数
Jersey:运动衫RainCoat:雨衣tulle with embroidery:绣花薄纱Jeans:牛仔裤Velvet:天鹅绒Silk:丝绸Wool:羊毛Leather:皮革添加名字调整顺序添加参数的类别#要对比的节点们:(以第0个为参照)nodes = [];nodes.append(hou.node("../default"));nodes.append(hou.node("../vellumcloth6"));#Jerseynodes.append(hou.no.原创 2021-10-16 18:28:50 · 5630 阅读 · 2 评论 -
小工具:输出Houdini里节点间参数的差别
需求节点的参数影响了节点的行为。因此对于节点使用者来说,比较节点间参数的差异就可以明白其行为的差异了。然而有些节点的参数数量实在太多,比较其参数间的差异会比较麻烦,在没有工具的情况下只能来回在节点间跳转才能比较出参数的不同。我想,其实可以使用Houdini的Python模块写代码来自动比较并输出不同,这并不麻烦。最后如果能输出更易于阅读的格式(比如csv表格,或Markdown表格语法)会让比较更高效。另外,我还假定了被比较的节点的类型都是一样的,因此这让代码更为简单——只需要按顺序访问参数就行了,原创 2021-10-11 12:41:18 · 1764 阅读 · 0 评论 -
翻译PDG官方教程:一个最简单的特效PDG流程(步骤详细)
在本教程中,你将学习如何创建一个线性 TOP 网络,将几何体与“渲染”和“影像合成”连接在一起,然后将最终所有的帧放入到 MP4 中翻译 2021-10-10 13:13:14 · 2455 阅读 · 0 评论 -
学习在Houdini中将PivotPainter(1.0)数据导入给UE
什么是PivotPainter?思考,如果想实现树木的枝干由于风力影响而交错挥动的效果,并且风力的一些数据是可调整的,那么该怎么做呢?如果不知道 “PivotPainter” 的概念,较为自然的想法是使用骨骼。使用骨骼是可行的。但是对于类似植被的物体,会有大量的枝干,而每个枝干都会需要一根骨骼,这导致了大量的骨骼。其性能会相对较差。而PivotPainter的想法是将类似的信息存到顶点UV或者贴图上,这样每个顶点都知道自己所属几何部分的轴心即pivot位置在哪。随后,在shader中,每个顶点做各原创 2021-10-07 23:00:33 · 1408 阅读 · 0 评论 -
翻译Houdini官方文档:Vellum Constraints 节点
前言Vellum Constraints 有 SOP 和 DOP 两个版本。不过参数内容上几乎一样,只有少许差异。因此我将参数部分相同的部分放在前面,差异部分放在后面。介绍SOP :Vellum Constraints SOP 节点为Vellum解算器从合适的输入几何体创建约束。所有的vellum材质类型,例如布料、头发、软体,都被描述为顶点之间一组显式的约束。用于显示与碰撞的几何体是第一个输入与输出,约束几何体是第二个输入与输出。这两个几何体应该有一一对应的顶点关系,因此大多数Vellum节点通翻译 2021-09-29 19:52:12 · 7023 阅读 · 0 评论 -
实践学习配置HQueue
前言关于HQueue的基本概念,可见上一篇《翻译HoudiniEngine官方文档:HQueue总览》本篇将尝试安装HQueue并做简单测试。主要参考的是官方文档。准备我使用了三台电脑作为测试,分别作为:工作站、服务器、客户端。他们的操作系统都是Windows。三台电脑连接了同一个WiFi,因而在一个局域网中。他们可以通过IP互相ping到对方(关于如何看IP地址和ping可见附录)创建一个共享文件夹(步骤见附录)。由于我没有更多的机器用来做专门的共享文件夹服务器,所有我将共享文件夹放在了工作站原创 2021-09-25 22:07:30 · 1668 阅读 · 2 评论 -
翻译Houdini官方文档:HQueue总览
https://www.sidefx.com/docs/houdini/hqueue/overview.html翻译 2021-09-25 16:26:48 · 972 阅读 · 0 评论 -
翻译官方Vellum教程:Breaking and tearing(破裂撕开)
译者前言教程来源于Houdini官方文档中的https://www.sidefx.com/docs/houdini/vellum/breaking_tearing.html。本篇是对其的实践。步骤上和原文一致,但是原文中有一些步骤并没有说明(比如用颜色来可视化碎片的分配等)。本篇将缺失的步骤补充,并且截图来源于自己的实践。介绍Edge Fracture 工具提供了一个简单的方式来裂开 Planar Patch创建的面片,可以让Vellum模拟布料撕开效果。下面的例子演示了如何撕裂一块简单的布料步翻译 2021-09-24 14:01:19 · 772 阅读 · 0 评论 -
一种在Houdini中让顶点动画循环的简单方法
问题问题的来源是我想导出一个布料的顶点动画,并让他循环播放。但问题是,直接模拟出的结果不能保证在我想导出那一段的首帧与末帧一致,这样动画是不循环的,连续播放会看到明显的跳变。我在这里找到了一种简单又直接的方法:它的思路很简单:让最末几帧逐渐接近首帧(即逐渐插值到首帧)。数学化表示的话,就是设定一个 过渡帧数,则:当前帧到末尾的距离{⩾过渡帧数:原来的形状<过渡帧数:lerp(原来的形状,首帧形状,alpha)当前帧到末尾的距离\begin{cases} \geqslant 过渡帧原创 2021-09-23 18:41:01 · 2975 阅读 · 7 评论 -
学习在Houdini中导出VAT(Vertex Animation Texture)给UE
前言主要参考资料是 VAT 3 | Soft Body | Unreal。不过在效果的复杂度上做了简化,只保留VAT相关的最基本操作。0. 创建测试用动画这里我的动画很简单。首先创建一个Sphere。将 Primitive Type 改为Polygon,将 Frequency 改为10——以便将顶点增多些。然后创建一个 Attribute Wrangle 节点,vex代码为:@P+=@N*flownoise(@P,0.1*@Frame);其功能就是使用 flownoise 这个噪声函数将每原创 2021-09-22 13:40:33 · 8043 阅读 · 2 评论 -
翻译Houdini官方文档:关于动态模拟的十个高级知识
官方文档链接:https://www.sidefx.com/docs/houdini/dyno/top10_advanced.html唯一ID,物体ID,物体名每个物体和数据项都有一个通用唯一ID。这个128位数字在所有机器上的所有模拟中总是唯一的。你可以使用此值来判断在每个时间步共享和/或重新创建数据包的时间。唯一ID 在 Geometry Spreadsheet 中显示为物体和数据项上的属性。每个物体都有一个物体ID。这是一个简单的整数,用于唯一标识此模拟中的物体。与通用唯一ID不同,它在不同的翻译 2021-09-06 19:30:22 · 1130 阅读 · 0 评论 -
翻译Houdini官方文档:关于动态模拟的十个中级知识
官方文档链接:https://www.sidefx.com/docs/houdini/dyno/top10_medium.html物体,数据,解算器模拟由物体 和数据 组成。物体只是数据的容器。 当你在场景中看到一个对象(例如刚体球)时,这是因为该对象附加了几何数据,而 Houdini 会在视窗中绘制和渲染几何数据。从某种意义上说,附加到物体上的数据是任意的:它几乎可以是任何东西。 数据的命名方式和包含的内容是没有限制的。 但只有特定名称和数据类型对解算器 有意义。解算器负责计算物体(刚体、线缆、布翻译 2021-09-06 09:58:30 · 1065 阅读 · 0 评论 -
翻译Houdini官方文档:关于动态模拟的十个初级知识
模拟包括了“物体”、“解算器”、通常还有“力”点击shelf中Create分栏下的Sphere创建一个球体:保持球体选择情况下,点击Rigid bodies分栏下的RBD Hero Object:点击Play按钮:可以看到球体下落了,这是因为它现在是一个模拟物体。当你首次创建一个模拟物体时,Houdini会自动在object层级创建一个模拟网络,并将定义模拟物体行为的节点放在这里。这个节点叫做AutoDopNetwork,它可以在节点编辑器的object层级看到:TMI翻译 2021-09-05 11:46:00 · 1847 阅读 · 0 评论 -
翻译Houdini官方文档:Dynamics(动态模拟网络)
在Houdini中,你使用动态网络来创建模拟仿真。你创建模拟物体 并对其应用一个或多个解算器。Houdini有多种类型的模拟,例如布料、刚体、线缆、流体。还有特别的解算器用来将动态模拟与Houdini的其他部分集成,例如脚本解算器、几何解算器、粒子解算器、Python解算器。最基础的动态模拟的设置可以是一个模拟物体连接着一个解算器,并应用着一个力。动态模拟还可以有约束,可以约束一个物体的位置基于另一个物体的位置。例如,弹簧约束会产生由不可见的弹簧连接着两个物体的效果。约束是关系 的一种。模拟物体还可翻译 2021-09-03 20:59:52 · 821 阅读 · 0 评论 -
尝试Houdini的Maya插件
目标安装并试用Houdini的Maya插件参考官方文档:https://www.sidefx.com/docs/maya/0. 安装据官方文档所说,如果在安装Houdini的时候已经安装了Maya,则勾选 Houdini Engine for Maya 会自动安装Maya插件,它实际上会做两步:1.Extracts the Maya plug-in for all supported Maya versions. This includes the plug-in binary, and var原创 2021-08-09 20:56:43 · 2260 阅读 · 2 评论 -
【GDC翻译】在“Control”中学到的程序化破坏系统的经验
0. 介绍大家好,欢迎来到《从“Control”中学到的程序化破碎的经验》。我的名字是 Johannes Richter,我是 Remedy 的首席特效师。我曾经在电影领域做过十多年的特效美术指导,在2019年进入了游戏领域。对于 Remedy 其实不用过多介绍了,因为它已经很出名了。但对于那些不了解的人,我还是介绍一下吧。我们在芬兰的Espoo。二十多年来,Remedy一直以标志性的叙事驱动的动作游戏而闻名。比如《马克思佩恩》、《马克思佩恩2》、《量子破碎》,当然还有最近的《Contro翻译 2021-07-25 22:23:39 · 582 阅读 · 0 评论