Houdini·近期使用小结
01 导入unity
Houdini官网有很齐全的对接各大引擎和ddc的插件,详情参见官方github。官网的版本通常很新,加载到unity中会报错版本不对和找不到Houdini library,版本不用管,根据弹窗提示在左上Houdini切页下修改安装路径为本机安装路径(忘记要不要重启unity了,不行就重启一下吧,再不行就听它的下载对应版本(啊这。
02 曲线工具
装完插件后,Houdini提供了几个demo,有一个是曲线工具,即在unity中可以可视化实时创建曲线。在自制工具中如果需要画曲线也可以通过在导出asset时通过设置实现在unity中使用曲线工具。
具体操作如下:右键创建asset,填完命名路径后会弹出type properties窗口(直接右键选这个也一样)。在Node切页下,修改Editable Nodes,输入想要编辑的节点(右边小按钮可视化选择)即可。
在unity中使用时注意要打开Gizmos
,这样curve editor面板才会出现。
03 添加可调参数
可以在导出的时候直接在Type Properties界面拖参数进去。不过我一般还是会在attri wranggle声明变量然后最后统一拖进参数面板,一是自己看着清楚,二是方便共用变量和写脚本。
04 常用名词
abbr | fullname | 中文 |
---|---|---|
SOPs | Surface OPerations | 表面编辑模组 |
POPs | Particle OPerations | 粒子编辑模组 |
CHOPs | CHannel OPerations | 通道编辑模组 |
COPs | Compositing OPerations | 图像合成模组 |
SHOPs | Shader OPerations | 材质编辑模组 |
VOPs | Vex OPerations | VEX模组 |
Outputs | Render outputs | 渲染输出模块 |
DOPs | Dynamics OPerations | 动力学编辑模组 |
05 编辑锁定的节点内容
官方节点默认是不允许修改的(会显示permission denied),选中节点右键,点击allow edit即可
06 节点变黑
有时候merge之后模型就变黑了。一般是mismatch的报错,因为被merge的对象包含的数据信息不同(可以在spreadsheet中查看),用attridelete
删除多余数据即可。(真的好麻烦)
07 新增tool
官方tool下载后需要在env中添加tool路径。下面是加了俩tool的例子(不过gamedev好多跟sidefx重合的搞得每次打开都报一堆警告)
HOUDINI_PATH = F:\Houdini\GameDevelopmentToolset-Development\GameDevelopmentToolset-Development;F:\Houdini\SideFXLabs-Development\SideFXLabs-Development;&
PATH = F:\Houdini\GameDevelopmentToolset-Development\GameDevelopmentToolset-Development\bin;F:\Houdini\SideFXLabs-Development\SideFXLabs-Development;$PATH
08 C#获取参数
using UnityEngine;
using UnityEngine.UI;
using HoudiniEngineUnity;
using UnityEditor;
public class ParameterControler : MonoBehaviour
{
public GameObject GameObject;
private HEU_HoudiniAsset myAsset;
public float _updateRate = 0.1f;
public Slider mainSlider;
float scale = 1.0f;
public void Start()
{
myAsset = GameObject.GetComponent<HEU_HoudiniAssetRoot>() != null ? GameObject.GetComponent<HEU_HoudiniAssetRoot>()._houdiniAsset : null;
}
private void Update()
{
HEU_ParameterUtility.SetFloat(myAsset, "VeinLength", scale);
myAsset.RequestCook(true, false, true, true);
//HEU_ParameterUtility.SetColor(myAsset, "branch_vtx_color_color", Random.ColorHSV());
}
private void OnGUI()
{
scale = EditorGUI.Slider(new Rect(10, 50, 300, 50), scale, 0, 1); // 0.1f * Mathf.Sin(Time.deltaTime);
}
}
09 Alembic
之前想着Houdini做特效很方便还想着能不能做实时特效——然后发现我果然想多了(啊这…基本上类似布料、液体、、碎片之类的效果还是只能导出动画,大头计算应该没法做实时。Alembic是一种图形学储存方式,可对程序化几何体构建的计算结果进行高效的存储,它可以把动画网格写入硬盘,然后再迅速高效地读取出来。这意味着可以把需要巨大的 CPU 消耗的绑定动画的网格,’烘焙’到一个 Alembic 文件里,然后再加载入拍摄文件中进行着色和灯光设置,这样 CPU 的占用会比较小。。