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

Alembic官网

Alembic to Unity

Alembic Unity DOC

教程(有很多啦都差不多)

之前想着Houdini做特效很方便还想着能不能做实时特效——然后发现我果然想多了(啊这…基本上类似布料、液体、、碎片之类的效果还是只能导出动画,大头计算应该没法做实时。Alembic是一种图形学储存方式,可对程序化几何体构建的计算结果进行高效的存储,它可以把动画网格写入硬盘,然后再迅速高效地读取出来。这意味着可以把需要巨大的 CPU 消耗的绑定动画的网格,’烘焙’到一个 Alembic 文件里,然后再加载入拍摄文件中进行着色和灯光设置,这样 CPU 的占用会比较小。。

常用内置变量

Geometry attributes

脚本收集