Houdini To Niagara 插件
目录
安装
介绍
参考:https://www.sidefx.com/docs/houdini/unreal/niagara.html
将Houdini粒子烘焙到hbjson文件,从文件可被Niagara使用;此插件会在UE添加一种额外资产(Houdini Point Assets),其中包含houdini导出的各种点属性;
安装
将D:\software\Houdini\Houdini 20.5.487\engine\unreal\5.4(houdini安装目录)文件夹下的HoudiniNiagara复制到UE安装目录下的Plugins文件夹内或复制到工程项目内的Plugins文件夹内;最后打开UE并在Edit/Pugins内激活HoudiniNiagara插件;
介绍
| Module | Desciption |
| Init Houdini Point Cache | 发射器生成组,该模块跟踪spawning info并确保每个发射器唯一点ID; |
| Spawn Particles from Houdini Point Cache | 发射器更新组,该模块读取Hou点缓存并基于相对Emitter.LoopedAge生成粒子; |
| Sample Spawned Houdini Point Cache | 粒子生成组,该模块读取Hou点缓存并设置默认属性;
然后可在直接设置 |
| Sample Houdini Point Cache | 粒子更新组,该模块读取Hou点缓存并更新默认属性; |
Sample模块将尝试从Houdini点缓存中读取以下属性,如不存在,则设置为0:
| Particles.Houdini.Position | P |
| Particles.Houdini.Normal | N |
| Particles.Lifetime | life |
| Particles.Houdini.Color | Cd |
| Particles.Houdini.Alpha | Alpha |
| Particles.Houdini.Impulse | impulse |
| Particles.Houdini.Force | force |
| Particles.Houdini.Type | type |
| Particles.Houdini.Velocity | v |
| Particles.Houdini.Pscale | pscale |
| Particles.Houdini.Orient | orient |
自定义属性,可通过自定义模块读取;
Houdini Point Cache Asset
Labs Niagara ROP,可生成.hbjson、.hjson、.hcsv(支持float、vector、int);首选.hbjson格式(此文件更小,导入速度更快),.hjson文件较大且慢但可使用文本编辑器打开以检查内容,.hcsv已弃用;
插件现可支持超过2GB的大型点缓存文件,由于Niagara限制,最大值仍限制在32位(必须小于2,147,483,647);如想导入大型数据,可拆分为多个点缓存文件;
如导出vector或tuple,则将被展开,如P将变为P.x、P.y、P.z;
Houdini-Niagara Data Interface
通过Data Interface数据接口Houdini Point Cache Info,来访问点缓存数据;
从Houdini点缓存资源获取属性的所有函数都需要:
- Houdini Point Cache Info,Point Cache Asset文件;
- PointID,唯一的粒子ID,通常为Particles.Houdini.NID;
- SampleIndex,索引整数值(使用Get Sample Indexes for Point at TimeorGet Last Sample Index获取);
- Time,当前发射器时间,通常为Emitter.LoopedAge;
| Function | Description |
| Get Sample Indexes for Point at Time | 返回点在给定时间的sample index; |
| Get Last Sample Index at Time | 返回last sample index; |
| Get Point IDs to Spawn at Time | 返回点的count、point IDs,参考Spawn Particles From Houdini Point Cache; |
| Get Number Of Attributes | 返回属性数量; |
| Get Number Of Points | 返回点数量; |
| Get Float Value | 返回给定sample index和attribute index的float值; |
| Get Float Value by String | 返回给定sample index和attribute名的float值; |
| Get Point Type | 返回给定点在出生时的整数type值; |
| Get Color | 返回给定sample index的color; |
| Get Position | 返回给定sample index的position; |
| Get Velocity | 返回给定sample index的velocity; |
| Get Impulse | 返回给定sample index的impulse; |
| Get Normal | 返回给定sample index的Normal; |
| Get Point Life | 返回给定点生成时的life值; |
| Get Time | 返回给定sample index的time; |
| Get Position and Time | 返回给定sample index的position和time; |
| Get Point Type at Time | 返回给定点在给定时间的整数type值; |
| Get Point Color at Time | 返回给定点在给定时间的线性插值color; |
| Get Point Impulse at Time | 返回给定点在给定时间的线性插值impulse; |
| Get Point Alpha at Time | 返回给定点在给定时间的线性插值Alpha; |
| Get Point Life at Time | 返回给定点在给定时间的剩余寿命; |
| Get Point Normal at Time | 返回给定点在给定时间的线性插值normal ; |
| Get Point Position at Time | 返回给定点在给定时间的线性插值position; |
| Get Point Velocity at Time | 返回给定点在给定时间的线性插值velocity; |
| Get Vector Value | 返回给定sample index和属性索引的vector; |
| Get Vector Value Ex | 返回给定sample index和属性索引的vector; DoSwap表示是否将向量从Hou的坐标系转换为Unreal的坐标系; |
| Get Vector4 Value | 返回给定sample index和属性索引的vector4; |
| Get Quat Value | 返回给定sample index和属性索引的Quat; |
| Get Vector Value by String | 返回给定sample index和属性名的vector; |
| Get Vector Value Ex by String | 返回给定sample index和属性名的vector; DoSwap表示是否将向量从Hou的坐标系转换为Unreal的坐标系; |
| Get Vector4 Value by String | 返回给定sample index和属性名的vector4; |
| Get Quat Value by String | 返回给定sample index和属性名的Quat; |
| Get Point Vector Value at Time | 返回给定点在给定时间指定属性索引的线性插值vector; |
| Get Point Vector Value at Time Ex | 返回给定点在给定时间指定属性索引的线性插值vector; |
| Get Point Vector4 Value at Time | 返回给定点在给定时间指定属性索引的线性插值vector4; |
| Get Point Quat Value at Time | 返回给定点在给定时间指定属性索引的线性插值quaterion; |
| Get Point Value at Time by String | 返回给定点在给定时间指定属性名的线性插值float值; DoSwap表示是否将向量从Hou的坐标系转换为Unreal的坐标系; |
| Get Point Vector Value at Time by String | 返回给定点在给定时间指定属性名的线性插值vetor; DoSwap表示是否将向量从Hou的坐标系转换为Unreal的坐标系; |
| Get Point Vector Value at Time Ex by String | 返回给定点在给定时间指定属性名的线性插值vetor; |
| Get Point Vector4 Value at Time by String | 返回给定点在给定时间指定属性名的线性插值vetor4; |
| Get Point Quat Value at Time by String | 返回给定点在给定时间指定属性名的线性插值quaterion; |
