您需要 登录 才可以下载或查看,没有账号?注册
x
本期内容 再开始之前我们简单了解下PDG的概念 PDG是Houdini 17最新发布的功能,它将各模块的环节转化成可以操作的流程图,通过TOP类的节点分配任务,从而进行流程化的管理、测试、并行计算。例如分布式渲染,机器学习等。
对开发游戏而言,最重要的一个工作就是流程管理。通常,Houdini会输出HDA资源,我们可以通过PDG将繁多、复杂的HDA资源进行模块化,流程化管理,而且流程和模块完全都是动态的,可以实时改变的。
这几年Houdini在开放世界游戏制作流程中起到的巨大作用,无论是Height Filed地形,还是程序化植被、道路等等,这些程序化生成的数据通过Houdini Engine,在游戏引擎中都以HDA的形式存在,而PDG最大的意义便是将这些HDA资源统一调度管理,并形成一条完整的闭源。
图片来源:Unite Shanghai 2019 Keynote主题演讲 上图的右侧是我们传统的在 Houdini 里面做的资源,传统的流程节点。右侧可以制作地形的映射、侵蚀、种树、道路,一个个节点都是在右边的模块做完。
此后,有一个的箭头指向 PDG。我们会把右侧每一个模块的内容,在 PDG 的节点里进行调度,把它们关联起来,形成一个流程。这个流程可以动态的修改,如果哪个流程不好,可以直接删除,也可以动态的添加,如果有修改的东西都可以实时向里面添加。
来到我们的PDG菜单包含内容都是我们之前做好的HDA: 地形尺寸与精度
网格组成
散布点云,如果你对外观不满意可以通过数值修改获得不同的外观
好!进入我们今天内容 在上期我们制作好了基本地形,今天我们要分布一些山石和植被、道具。 因此我们使用分割节点heightfield_tilesplit我们将地形分为多块所以这里我们有一块
为什么要分割这是因为后面要在PDG网格中使用,因为这个地形很大我们将其分为多个在游戏引擎中运行,我们选择一块地形放置我们岩石,我们添加一块高度字段控制我们地形多边形
接下来制作我们悬崖坡度位置遮罩
分散排列:scale调整0.01
在节点设置中我们有方向模式:调整对齐方向和随机旋转
下面放松形状为100将会有更多随机性
导入我们的模型fbx,然后合并到一起
接下来我们新建一个随机属性节点链接到我们地形散布的节点,设置参数
新建拷贝模型到散布的点,我们可以看到方向一致
接下来我们先禁用缩放
设置下对齐方式回到scatteralign1
有些模型角度错误这时候我们就需要做一下角度偏移,偏移后我们模型缺口都朝山峰内侧
开启一个与y轴混合这样更贴合我们地形,侧面看更像是岩石悬崖注意关闭随机缩放
接下来我们将与地形合并,我想做的就是将悬崖投射到地形上,新建项目节点 heightfield_project1将地形与模型混合可以看到我们悬崖信息
将混合后的地形插入合并节点这样我们山石与地形就有一个比较好的衔接,同时我们还可以模糊下映射的地形
新建一个随机缩放节点设定缩放比例随机大小
快捷键 L 自动排列节点 shift+l 选择节点部分排列
shift+S 改变节点连线
线上加点 按住alt点击线 shift+R 翻转连线
Shift+C 打包节点快捷键 接下来我们制作悬崖区域的蒙版,这个区域我们还可以放置小碎石或者草
继续散布节点,我们暂时用球体代替
可以看见有些球特别大这是不对的我们新建重新采样进行修改
这很酷,这一部分我们主要管制分散在场景中的模型和道具,并将这些散布的这些点云替换为虚幻中真实的模型
接下来我们回到胡迪尼继续开始散布点云,我们通过环境遮蔽方式制作选区来放置我们的道具
我们重新映射下我们的遮罩区域heightfield_remap1,然后在模糊下,新建高度层将其合并
散布点云:有一项参数可以隐藏地形
重要
我们需要删除一些点云可以直接调整点云参数,还可以通过合并方式减少点云数量(类似max里面焊接距离内的点)新建节点Fuse设置合并数值
我们设置好点云添加好我们的道具至此准备工作完成。在添加道具过程中我们同样做了将道具映射到地形然后模糊地形,这样可以使得道具与地形有一个很好衔接
大概制作思路
使用我们现在高度场、散布点云(密度\朝向\对齐方式\随机缩放或旋转)、制作遮罩(控制点云范围和位置根据我们所要散布的东西决定,石头植被点云可能就要多点一些标志性道具就要少一些)接下来就是选择我们这些节点打包选择所有节点打包快捷键Shift+C
打包后我们右键保存 命名选择路径
添加实例 接下来我们为我们的悬崖\岩石\树木\道具分别创建空输出节点我们称呼它为悬崖
我们添加一个值替换节点
点击初始化他会自动收集变体的所有可能性他不再是0或1,我想用我的模型路径替换它
来到我们的ue4这里有我们在houdini中使用的悬崖,我们在资产管理器中右键复制他的路径粘贴到我们替换节点中(上图绿色位置)
我们查看属性依然是0或1
因此我们需要使用放置函数将end转换为string之前进行replace,所以我想要一个名字为name的字符串
接下来看看我们的岩石,我们需要一个随机岩石
下一个是植被
然后合并我们的节点(全选四个节点按住Alt就可以合并)
最后合并到我们的地形保存我们的打包文件
下面就是暴露我们需要的参数参考上期文章
主要暴露参数有:点云密度\大小缩放\还有岩石等需要的参数【具体见视频教程】
我将为我的地形创建PDG网格,首先新建一个项目这样
这样的一个文件结构,他会自动将数据保存在这些文件夹中
所以当我们计算PDG时候他们将存储在geo
选择我们要保存的位置
保存后出现
接下来创建最重要的网格topnet1最新的一个节点,这样我们就有调度的程序
我们在下面新建一个HDA处理器地形节点,所以我有沙漠地形HDA
我们可以右键预览我们地形
接下来我们处理另一个HDA
还有一件比较重要的事,现在我们只有一块工作项目,但是我想生成例如4X4地形,我想生成16个工作项目,但是现在只有一个所以有一种方式可以做到这一点
我们添加wedge添加属性编号和初始属性,
节点右键cook selectrd node
现在我们有16块工作项目,所以这是添加这些项目简单方法,他也会导出这里瓷砖编号(tile_NR),所以我们每个项目现在都有一个特定数字
在最后位置填写15
现在实际烘焙结果之前还有一件事,我要创建一个文件节点在OBJ层级下创建geo
回到我们的topnet1节点内这样我们就可以直观预览
打包保存我们PDG
将我们的PDG放入我们引擎拖拽进场景然后再PDG菜单下点击Cook output
导入后我们得到如下场景
这个按钮意思清除场景所有内容,再次重新计算保证场景是最新信息
我们再次对PDG菜单进行分类整理选择我们的节点在菜单中选择编辑
面板展示了我们所有暴露的参数
选择我们类型然后再把我们需要的参数放在文件夹内
选择我们暴露参数的参数放入文件夹内,这一步操作就是我们最终在ue4中PDG参数面板(上面开始时截图展示那样)
接下来我们来到虚幻开始来在这里新建一个文件夹来保存我们所有的地块将我们PDG移动到文件夹中
接下来我们要启用世界合成这很重要
现在我们有16块地形,我们把他保存为一个单独的场景文件,当我按下按钮后我们将有16张新地图,我们将在此管卡中加载地图
我们来到PDG当我按下烘焙命令后你将看到我用所有这些地图从0-15
我们来到Lecels全选右键加载
我们又回到了地形
我们测试隐藏其中一块地块
我们打开地图管理可以看到由16块组成同时可以看到地块名字和位置更多信息,同样重要是流距离现在我们设置是50000
设置流距离我们需要设置可能是一半的距离假设为25k点击创建
然后全选地块右键设置为25k将我们的流距离分配给它
接下来我们测试下放置我们的角色从一边开始当我们点击播放时可以看见灰色地块是不显示不加载的
通过动画我们可以看见地形慢慢加载和卸载某些部分因此您不必担心自动分配流媒体值或设置,流媒体构建与卸载如此广泛的构图为我们做这件事
解锁HDA 有时候我们打开hda文件会有锁
至此houdini地形制作和导出到ue4完毕,有个大概了解也有些疑惑有待研究 后面我们在通过简单案例更具体分享HDA、PDG、以及Houdini关卡制作流程等内容。 点击阅读原文观看视频版
工程获取方式: 免费分享 只需分享到朋友圈集随意赞就行(截图后台私信我获取下载地址 )好东西就要分享更多人。 资源来源网络分享,试用版仅供学习研究使用,版权归原作者所有,24小时内自行删除。
|