All Houdini Unreal Engine 4

Unreal Landscape LOD 2 贴图获取

    生成了能保持边界的模型后,还需要做的就是给模型赋予贴图,这个贴图的生成方式如下。     首先要从顶视图获取一张足够大无光照的视角图像。     需要打开场景所有的子关卡来拍顶视图,我们选择视角是Top,无光照模式,显示所有的地形和模型。     然后我们使用Unreal自带的 High Resolution Screenshot工具,调整Screenshot Size Multiplier倍数,使得最终得到的全场景分辨率达到6144左右,导出得到一张高分辨率的图像。     下一步我们使用Photoshop来处理,建立一张6144*6144大小的画布,然后将上面得到的图片导入,铺满整个画布。 然后选中Slice工具,在画布右键点击,选择Devide Slice,将整个画布等分6*6,这样做的目的就是使得我们能够导出6*6张1024*1024大小的材质贴图,正好每单块地形使用一张1024*1024大小的地形贴图。 …

All Houdini Unreal Engine 4

Unreal Landscape LOD 1 Houdini 生成 StaticMesh 地形

    这边的方案是利用Houdini来生成保持模型边界的地形模型,用于远处的地形LOD。     HDA实现:     输入就是地形高度图,留了接口给Unreal。  第一步就是将高度图转换成网格模型,这边的参数都是默认     第二步是标记边界上的点,利用Group节点的边界属性做如下设置即可     第三部是polyreduce,并定义条件保留boundary的点     这样即可实现保留原边的地形网格化HAD       …

All Houdini Unreal Engine 4

Houdini 支持 unreal bake foliage with mark

    需求:区分 Foliage 对象是由哪个 Houdini HAD 生成的 或者 是否是人工刷出来的。     使用:     所有的 Houdini HDA 在 Bake Foliage 这一步骤的时候,都会给生成的Foliage打上标记。这一步是用户无感知的,也不可以不打标记。 …

All Machine Learning

Pix2pix 高度图地形生成效果

使用的开源代码 https://github.com/affinelayer/pix2pix-tensorflow     安装 Conda create –name pix2pix Conda activate pix2pix Conda install cudatoolkit=9.0 tensorflow-gpu     训练命令: Python pix2pix.py –mode …

All Houdini Unreal Engine 4

Houdini 支持 Unreal多层高度图功能

Unreal 4.24 地形最大的变化就是在编辑侧支持了多层高度图,你在创建地形的时候可以勾选如下选项则表示开启这个功能。 要注意的是,如果你没有勾选这个选项,下列Houdini对多层高度图的支持不会启用,使用流程同以前。     Houdini 的输入     启用多层高度图后,你可以开启关闭每一层高度图,世界窗口中显示的就是当前高度图状态下的地形表现。 Houdini的输入地形,就是世界窗口中表现的地形。 如图右边显示什么样就是输入Houdini的地形长什么样。 【要特别注意的是,每次开关地形高度层导致世界窗口中地形表现不一样时,需要Rebuild】     Houdini 的输出     在没有启用多层高度图的地形,结果与没有这功能前一致。 启用多层高度图的地形,输出结果我们作如下demo做说明: …

All Houdini Unreal Engine 4

Houdini 支持 unreal world composition 的地形的多样输入

    Houdini 基础工作流     生成基础地形,单独做一个hda:         然后bake成地形完成这一步骤。     再做一个hda专门作为mask的修改的实现,其中输入为地形,输出也为地形。     结果同样可以bake成地形,然后在结果的基础上,我们可以实现再修改,比如我们在结果的基础上通过unreal自带的工具修饰地形如下:     再次运行mask工具即可得到新的mask标记:   …

All Houdini Unreal Engine 4

Houdini 大地形导入 Unreal 的两种方法

    仅仅修改Houdini文件即可实现的方法     网络上很多文章都有说明,如果我们在Houdini这一测使用其提供的TileSplit节点的时候,是可以在Unreal里面一次性生成多张地图,其效果如下: 但是这里存在两个问题: 这不是正确的Unreal里面使用流式加载地形的正确方式。 不同地形之间的接缝是很难消除的,因为他们隶属于不同的高度图,高度图生成地形还要基于采样生成模型,这个过程对于不同的高度图之间,他们是不会考虑相互影响的,因此总会存在下列情况。     因此从Unreal的角度出发,如何来实现大地形。Unreal默认就提供了可以根据多张切好的高度图来生成大地形的工具,我们可以借用这个工具,让Houdini直接输出切好的地形高度图即可实现。     Houdini这一侧的做法,如下图所示,如要注意的如下: 采用heightfield_output节点作为输出 保证输出的图片的格式是Unreal可以读取的高度图格式,也就是单通道的16比特浮点数据 对高度图做切分,但是一定要保证切分的高度图之间的TilePverlap数值为1 得到的文件效果图,注意这里的自动命名正好是Unreal可识别的命名方式。       …

All Unreal Engine 4

Unreal Landscape TextureArray 分析

    是否采用了TextureArray     整个地形虽然在编辑的时候存在多层高度图,但是在运行的时候,heightmap就只有一张在使用,weightmap是多张,在LandscapeComponent这个层面看不出来用的是Texture还是TextureArray,这边用的是逻辑的贴图书组。     然后我们来看 Landscape 这边的实现     Alandscape 对象里面,存在这两个对象: 这里的注释很好的解释了这两个纹理数组资源的含义。 CombinedLayersWeightmapAllMaterialLayersResource 存储的是所有层一起混合后的绘制层贴图资源; CurrentLayersWeightmapAllMaterialLayersResource 存储的是当前层的绘制层贴图资源; 上面的层的含义是地形层,就是多层高度图的层的含义。后续所有的layertexture操作引用到的都是这两个Resources对象。   …