- 程序化藤蔓 (Houdini):制作了程序化藤蔓工具,能够动态攀附并适应物体的形状。工具包含多种可调参数,例如分布与密度、生长阶段、分枝数量以及叶片大小等。
-
程序化浮岛地形 (Houdini):
利用高度场生成浮岛的上表面地形,呈现自然起伏的地形特征;使用基于噪声的程序化几何设计浮岛底部结构。
- 程序化贴图 (Substance Designer):制作了精致的玫瑰花窗图案,并将其转换为SVG以生成3D模型;为风格化的树干和灰泥墙制作了程序化材质贴图。
-
风格化树 (SpeedTree, Blender, UE):使用SpeedTree建模制作了一棵弯曲盘旋的风格化树;在Blender中为树叶传递了球形法线;在UE中创建了风格化材质。
- 风格化岩石 (Zbrush, RizomUV, Marmoset ToolBag):在ZBrush中雕刻岩石细节;使用RizomUV拆分UV;在Marmoset Toolbag中将高模的法线细节烘焙到低模上。
- 风格花草 (Blender, UE):在Blender中建模制作草叶并拆分UV;在UE中创建风格化草材质。
- 风格化水 (UE):
在UE中设计了风格化水材质,融合了法线、浪花、折射、反射等效果。
- 资产准备 (Blender, UE):设计、修改并重组了资产以提升视觉效果和整体协调性;在必要时制作了额外的模型并优化了几何结构。
该项目的灵感来源于游戏《元梦之星》的一张地图,地图设计受铃兰与森之灵的启发。铃兰象征着纯洁与幸福,成为本项目的主要设计主题,其柔和的白绿色调影响了场景的主要配色。整体设计旨在唤起一种神圣、超凡脱俗的避难所氛围——一个悬浮于幻想领域中的庇护之地。
草图和白盒主要确定场景布局与关键元素:
- 主浮岛:浮岛装点着茂密的植被,静谧的水体引导视线集中到核心建筑 ——一座象征性庇护所/宫殿,作为场景的视觉锚点。
- 通向副岛的桥梁: 一系列浮动元素构成了桥梁,将主浮岛与三个次级附属岛屿相连,增添了动态感和探索的乐趣。
在此基础上,我结合了程序化生成与手工制作的元素,努力打造一个幻想风格的场景,同时呈现风格化的美学效果。
此HDA(Houdini Digital Asset)工具能够动态生成适应任意几何体的铃兰藤蔓,并提供多种灵活的控制选项,例如生长分布、生长进度、分支数量、叶片大小等。
生成主要枝干
- 基础几何处理:对输入几何体重新网格化(Remesh),并应用Peak操作,略微凸出表面,为藤蔓附着创造基础。
- 噪声过滤:使用噪声函数对表面进行过滤,移除部分区域,仅保留藤蔓可生长的部分。
- 点散布:在过滤后的表面上散布点,密度由噪声决定,并根据高度(Y轴)对点排序。
- 藤蔓路径生成:选择底部点作为起点,随机挑选部分点作为终点; 使用“Connect Adjacent Pieces”节点连接点; 通过“Find Shortest Path”生成藤蔓路径; 使用Resample和Fuse节点简化路径。
- 藤蔓粗细:根据路径cost控制藤蔓粗细,形成自然的变化。
- 侧分枝:随机选择主藤蔓上的点; 在这些点上通过“Copy to Points”节点添加曲线作为次级分枝; 使用“Orient Along Curve”和pscale属性调整分枝方向和大小; 使用“Distance Along Geometry”控制分枝粗细。
- 悬垂分枝:选择法线朝下的点; 随机选择部分点并用Line节点创建悬垂分枝; 使用Mountain节点对线条施加轻微扭曲以增加真实感; 同样使用“Distance Along Geometry”控制粗细。
- 叶片变体:在Blender中创建多种铃兰花和叶片形状的集合体,赋予每条藤蔓路径不同的变体。
- 叶片放置:利用曲线法线和切线方向调整叶片的朝向,并将叶片复制到曲线;通过pscale属性调整叶片大小以实现自然变化。
最终资产
将整个程序化藤蔓工具封装为HDA,暴露参数供用户调整:生长分布与密度、分枝数量、叶片覆盖率与大小等。用户可通过简单控制定制出多样化的藤蔓样式,适应不同的场景需求。
结合基于高度场的地形与噪声生成的底部几何形态,创建一个复杂且自然的浮岛地形。
上表面:基于高度场的地形
- 初始布局与遮罩绘制:根据白盒绘制基本布局,定义高地和水域的凹陷区域。 利用 Point Jitter 对圆形点进行抖动并重新采样,生成不规则的岛屿形状,并将其作为高度场的遮罩。
-
边缘过渡遮罩:通过扩大和缩小遮罩并相减得到边缘区域;使用模糊处理平滑过渡,并通过 Heightfield Wrangle 节点将边缘向下弯曲,确保与岛屿底部自然衔接。
- 表面细节:利用 Heightfield Noise 和 Heightfield Distort 添加地形的自然变化。 将高度场转换为几何体,并通过 Boolean 节点根据岛屿遮罩裁剪几何体。
- 基础设置:翻转顶部表面几何体作为底部基础;使用Attribute Wrangle计算点与岛屿中心的水平距离,并将结果存储在 Cd.x 属性中(边缘值设置为0),形成衰减遮罩。
- 噪声应用:通过Point VOP应用程序化噪声,根据点到中心的距离修改其位置;将噪声乘以 Cd.x 属性,确保变形在边缘逐渐消失;使用 Attribute Wrangle 调整点的垂直位置 (y),形成自然的底部锥形结构。
在UE中的集成技巧
- 直接导入高度场到UE可能会遇到以下问题:
- 使用透明度遮罩:因精度限制导致岛屿边缘出现锯齿。
-
导入为几何体:无法使用UE的Landscape工具,难以实时调整地形颜色或细节。
- 解决方案:将几何体和高度场都导入UE;使用 Runtime Virtual Texture (RVT) 储存高度场地形绘制结果; 配置几何体材质以读取RVT数据,支持实时绘制地形颜色,并保持锐利、干净的岛屿边缘效果。
通过Substance Designer创建了一系列程序化贴图,包括复杂的玫瑰花窗、灰泥表面以及风格化的树干纹理。
玫瑰花窗:
- 设计:使用基本的Shape和Transform节点创建哥特式图案的基础形状;利用Splatter节点排列并分层,生成精致的花卉图案。
- 转换为几何体:将黑白遮罩导出为SVG格式,并导入Blender生成3D几何体。在几何体上添加细微的倒角(Bevel)以增强边缘的细腻效果。
灰泥:
- 基础图案:结合多种Noise节点和B&W Spots生成不规则图案,作为灰泥纹理的基础。添加划痕(Scratches)和小点(Dots),为表面增添真实细节。
-
贴图生成:从组合图案生成高度贴图(Height Map),并据此生成法线贴图(Normal Map)和环境光遮蔽贴图(Ambient Occlusion Map)。
-
基础颜色:整合高度信息混合多种彩色笔触;将颜色与AO、光照细节和Curvature Map结合,增加深度与微妙的色彩变化。
风格化树干:
- 基础图案:使用Gradient、Tile Generator和Noise节点生成木材纹理的基础图案。添加木纹(Grain)和小形状模拟自然木材的细节。
-
贴图生成:通过AO、B&W Spots和Clouds丰富细节,并将其整合为高度贴图;根据高度数据生成法线贴图和环境光遮蔽贴图。
-
基础颜色:为树干纹理使用类似水彩的效果,混合云纹以引入色彩变化;使用不同的遮罩混合苔藓效果和阴影颜色;结合curvature、AO以及多种笔触细节,打造统一且富有表现力的纹理效果。
SpeedTree建模
- 树干创建:添加树干并切换至手绘模式(Hand-Drawn Mode),手动调整出螺旋扭曲的树干形状。
-
分枝设置:从树干延伸出大分支(Big Branches);在大分支上添加一级小分支(Little Branches 1),并进一步在一级小分支上延伸出二级小分支(Little Branches 2)。
-
叶片放置:将叶片分别附着到一级和二级小分支上。
Blender法线传递
- 在Blender中用椭球体包裹树叶,模拟球形光照效果。
-
将椭球体的法线传递到树叶上,使叶片呈现统一的球形法线效果,增强风格化表现。
UE材质
- 叶片材质:
- 基础颜色:根据法线方向(朝上或朝下)插值计算叶片颜色与叶片底部颜色。
-
发光效果:使用法线与光照方向的点乘值,在三种颜色之间插值,产生动态光照效果;添加菲涅耳边缘发光效果(Fresnel),使叶片边缘呈现较浅的颜色。
-
叶片形状:应用透明度遮罩(Opacity Mask),定义叶片形状。
-
风吹效果:使用世界位置偏移(World Position Offset, WPO)模拟叶片在风中的摆动。
- 树干材质:
- 贴图:使用SD制作的程序化树干贴图,并提供颜色调整参数以适应不同场景需求。
- 苔藓层:添加可选的苔藓层,根据法线朝上方向动态混合,增强树干的自然美感。
ZBrush雕刻
- 初步构型:使用多个立方体搭建岩石的粗略形状。
-
基本形态雕刻:使用Clip Curve、Trim Dynamic和Trim Smooth Border等笔刷,创建风格化的刻痕边缘。
-
表面细节添加:应用Orb Brushes(如Slash、Rubble和Details),雕刻裂缝、切痕和破损边缘,呈现手工雕琢的质感。
-
网格合并:使用Dynamesh将立方体合并为单一高模网格,确保整体连贯性。
-
简化模型:使用Decimation Master减少面数,生成适合烘焙的低模版本。
RizomUV UV拆分
- 标记接缝:沿岩石的交界处标记接缝,最小化纹理拉伸并确保UV岛之间的自然过渡。
-
UV展开与优化:展开低模模型,形成UV岛;优化UV岛以减少变形,并适当放置。
八猴法线烘焙
- 将高模雕刻与UV拆分后的低模模型导入Marmoset。
-
配置烘焙参数,包括采样数和填充大小(padding size)等。
-
调整烘焙笼使其包裹低模网格,确保高模细节的准确投射。
-
把高模雕刻细节烘焙到法线贴图上。
Blender建模
- 草丛设计:创建简单几何的单片草叶模型;放置不同大小和朝向的草,形成自然的草丛形态。
- UV拆分:调整UV,使草叶底部对齐至贴图的底部,以便控制风吹效果时的运动程度。
UE材质
- 基础颜色:采样地形的Runtime Virtual Texture (RVT),让草叶继承地面颜色以融入环境;为草叶的背面额外叠加一种颜色,增强视觉变化。
-
风吹遮罩:使用Photoshop中的Fibers滤镜生成风吹遮罩,并施加扭曲以创造不规则的风吹效果;使用该遮罩在草叶基础颜色与受风影响的颜色之间插值,增加动态视觉反馈。
-
光照交互:将草法线调整为朝向世界空间的上方,确保光照交互一致性并增强风格化阴影效果。
-
风吹运动:使用World Position Offset (WPO)模拟草叶随风摆动;通过UV映射控制草叶运动幅度,使草叶底部移动较少,叶尖移动较多,展现自然的动态效果。
基础颜色:
- 使用 Depth Fade 节点,根据水体深度在两种水色之间插值;浅水区为较亮的颜色,深水区逐渐过渡为较暗的颜色。
-
通过 Distance to Nearest Surface 节点计算距离最近表面的区域,用噪声纹理叠加生成不规则、有机的泡沫图案。
- 使用泡沫遮罩在水色与泡沫色之间插值,实现平滑的过渡效果。
- 使用Depth Fade控制水体透明度,在与地形或岩石等物体交接的边缘生成自然的透明渐变效果。
- 采样法线贴图模拟动态水面波浪,使其看起来更加生动。
- 添加折射效果,扭曲通过水面观察到的水下或穿过水面的物体。
-
启用屏幕空间反射 (SSR),捕捉周围物体和天空在水面上的动态反射效果。
该项目结合了自制资产与调整后的第三方资产,以实现统一且风格化的场景效果。
岛屿
- 主岛:通过Houdini程序化生成,具备丰富的地形细节和特征。
- 附属岛:基于第三方资产,调整了配色以与主岛风格统一。
- 重新修改的模型:使用Blender对第三方资产的元素进行设计、修改和重组,包含宫殿、凉亭、灯塔、拱门和旋转座椅等资产;部分部分被完全重建并优化以更契合整体设计(玫瑰花窗是将SD设计的遮罩转换为SVG并生成3D几何体)。 除了灯塔光源使用正弦函数控制颜色与发光强度外, 其他材质均基于SD中设计的灰泥纹理调整而成。
- 第三方模型:对竖琴、花盆、圣杯及祭坛等资产进行了几何优化,减少面数以提升性能。材质基于灰泥纹理调整,并提供混合水彩纹理的选项以实现图案多样性。
- 铃兰:修改了第三方模型的花朵和叶片比例,创建了风格化的自定义材质。
-
藤蔓:在Houdini中自制程序化藤蔓。
-
树木:一棵风格化树木使用SpeedTree从零创建并赋予定制材质;其他树木为第三方资产,经过颜色调整以适配环境。
-
草丛:完全自制的模型与材质。
-
荷花与蓝色花卉:结合第三方模型与自定义材质完成。
- 灌木与蒲公英:调整第三方模型的颜色以更贴合场景。
- 自制岩石:在ZBrush中雕刻的独特岩石,使用自定义材质。
-
其他岩石:修改第三方资产的形状与颜色,使其融入场景。