【元素整理】-程式化地牢:模块化设置分解
地编场景制作3D场景引擎地编地图编辑 5495 9
实名

通过了实名认证的内容创造者

发布于 2021-8-27 17:18:38

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 大西几 于 2021-8-31 11:06 编辑

作者:
丹尼尔·斯温
Paradox Interactive 的环境艺术家
PS:中文源于机翻,已经尽量还原作者说的话。

This is a rough breakdown ofthis project.
这是这个项目的粗略分类。

1.jpg

I started this modular environment set during a course, held by Kim Avaa (https://www.artstation.com/aava). I have since then scrapped it and started over again - I felt like I had made too many mistakes the first time. The biggest challenge was probably to plan the models so that they would snap together correctly and not break any tiling.
我在 Kim Avaa ( https://www.artstation.com/aava )举办的课程中开始了这个模块化环境。从那以后我放弃了它并重新开始 - 我觉得我第一次犯了太多错误。最大的挑战可能是对模型进行规划,以便它们能够正确地拼合在一起并且不会破坏任何平铺。

My personal goal with this project was simply to explore and learn a bit about environment art and modularity. The goal with the modular set was to make an easy-to-use asset pack that was generic enough to allow for any kind of level layout and not restrict a level designer.
我对这个项目的个人目标只是探索和学习一些关于环境艺术和模块化的知识。模块化集的目标是制作一个易于使用的资产包,它足够通用以允许任何类型的关卡布局并且不限制关卡设计师。

From what I’ve gathered, my approach is a bit unorthodox. So I will break it down and hopefully teaching someone something new, while also opening up for feedback from others about my workflow.
从我收集到的信息来看,我的方法有点不正统。所以我会把它分解,希望能教给别人一些新的东西,同时也开放其他人对我的工作流程的反馈。

2.jpg

Placeholder meshes and planning
占位符网格和规划

I spent a lot of time on figuring out the dimensions of the basic meshes. At first, I made the walls 200x200 cm. But I noticed that it felt really off, from both an aesthetic and a modular standpoint. 200x200 wasn’t high or wide enough to fit playable characters; door openings became too narrow, the ceiling needed extra margins to not be too low, etc.
我花了很多时间来弄清楚基本网格的尺寸。起初,我把墙壁做成 200x200 厘米。但我注意到,从美学和模块化的角度来看,它都感觉很不舒服。200x200 不够高或不够宽,无法容纳可玩角色;门洞变得太窄,天花板需要额外的边距不能太低,等等。

When I restarted the project, I went for a 300x300 cm and 25 cm thick wall instead - I found this to be a much better standard. Having established a standard also made it easier to improvise new pieces later on.
当我重新启动项目时,我选择了 300x300 厘米和 25 厘米厚的墙 - 我发现这是一个更好的标准。建立标准也使以后更容易即兴创作新作品。


From the basic square ratio 300x300 wall piece, I proceeded to make other modular pieces that fit its’ measurements: 300x300 floor, stairs that ascended 300cm, trims that could cover the 25 cm and 50 cm seams between ceiling and floor, vaults with an inner radius of 150cm and 300cm, etc.
从基本的方形比例 300x300 墙体开始,我开始制作其他适合其尺寸的模块化部分:300x300 地板、上升 300 厘米的楼梯、可以覆盖天花板和地板之间 25 厘米和 50 厘米接缝的装饰、带有里面的拱顶半径150cm和300cm等

Textures
纹理

I then continued by creating some tiling materials in Substance Designer. I spent a lot of time on these, since they were going to be the base of the entire project and the style-defining content.
然后我继续在 Substance Designer 中创建一些平铺材料。我花了很多时间在这些上,因为它们将成为整个项目和风格定义内容的基础。

I aimed for exaggerated but realistic shapes; rounding the corners a bit extra, increasing the crack intensity, deeper slopes, higher values on the warp-nodes, etc. The goal-post was somewhere between a hand painted look and a semi-realistic style.
我的目标是夸张但逼真的形状;将拐角稍微圆润一点,增加裂纹强度,更深的坡度,更高的经线节点值等。球门柱介于手绘外观和半写实风格之间。


My general workflow for creating materials in Substance Designer is that I start with the macro shapes in the height map, then I add the micro shapes. I then use the completed height map as a base for both the base color and the roughness.
我在 Substance Designer 中创建材质的一般工作流程是从高度图中的宏观形状开始,然后添加微观形状。然后我使用完成的高度图作为基色和粗糙度的基础。

During this process, I always have the height map connected to a ‘normal sobel’ with a high intensity and a ‘hbao’ node - A sharp normal and AO helps visualise the height information much better and avoid any artifacts. This way I also have full control of the final AO through the entire process.
在此过程中,我始终将高度图连接到具有高强度的“法线索贝尔”和“hbao”节点 - 清晰的法线和 AO 有助于更好地可视化高度信息并避免任何伪影。这样我也可以在整个过程中完全控制最终的 AO。


I usually start brick patterns with several tile-random nodes. Both share parameter values, only that one outputs a random grayscale square pattern and the other a randomly rotated gradient pattern. I run an edge detect and then warp all three patterns. These are good base patterns that I will reuse several times later in my graph.
我通常从几个随机瓷砖节点开始砖图案。两者共享参数值,只有一个输出随机灰度方形图案,另一个输出随机旋转渐变图案。我运行边缘检测,然后扭曲所有三种模式。这些是很好的基本模式,稍后我将在我的图表中多次重复使用它们。

After that, I used the  flood-fill node and generate some more random gradients, which I then multiply over the warped edge detect. I then warp the result some more with a perlin noise. And that’s how I made the basic shape of the rocks.
之后,我使用了洪水填充节点并生成了一些更多的随机梯度,然后我将其乘以扭曲边缘检测。然后我用柏林噪声进一步扭曲结果。这就是我制作岩石基本形状的方式。


Underneath is the height map for the sand: I “Slope Blur” a perlin noise on itself. Multiply it with a blurred cells noise. Invert it and then warp it (with another perlin noise as warp-input). I then run it through a highpass (to flatten the values a bit). Lastly, I multiply another warped cells noise (same perlin noise warp-input).
下面是沙子的高度图:我“倾斜模糊”了一个柏林噪音。将其与模糊的单元格噪声相乘。反转它然后扭曲它(使用另一个柏林噪声作为扭曲输入)。然后我通过高通运行它(使值变平一点)。最后,我乘以另一个扭曲单元噪声(相同的柏林噪声扭曲输入)。


One more thing that I think is worth mentioning is the color. I grab different points of my height map, run them through dynamic gradient nodes. I then blend all of these different colors over each other, to create a non-uniform and layered base color.
我认为值得一提的另一件事是颜色。我抓住我的高度图的不同点,通过动态梯度节点运行它们。然后我将所有这些不同的颜色相互混合,以创建不均匀和分层的基色。


I also made some small variations of all materials, for vertex-painting to add some diversity to the scene.
我还对所有材质做了一些小的变化,用于顶点绘制以增加场景的多样性。


Modeling
造型

hi-poly
高-多边形

I used the height-maps that I made in Substance Designer in Maya to generate hi-poly models.
我使用我在 Maya 的 Substance Designer 中制作的高度图来生成高多边形模型。

I’ll do a quick step-by-step on how to do this: I started with a high resolution plane.
我将快速逐步介绍如何执行此操作:我从高分辨率飞机开始。


1) Go into Animation mode. 2) Expand 'Deform'. 3) Browse down to 'Texture'. 4) Make sure it's set to Normal. 5) Click 'Apply'. 6) Make sure the a 'textureDeformerHandle' object is in the outline. 7) Click the checker in the Attribute Editor. 8) Choose File
1) 进入动画模式。2) 展开“变形”。3) 向下浏览到“纹理”。4)确保它设置为正常。5) 点击“应用”。6) 确保“textureDeformerHandle”对象在轮廓中。7) 单击属性编辑器中的检查器。8) 选择文件

The Attribute Editor should allow you to browse to your image by clicking the 'image name' folder. Then select your mesh (the plane in this case) and brows to your 'textureDeformer' in the Attribute Editor, where you can increase the strength of the map.
属性编辑器应该允许您通过单击“图像名称”文件夹来浏览您的图像。然后选择您的网格(在本例中为平面)并在属性编辑器中浏览您的“textureDeformer”,您可以在其中增加贴图的强度。

low-poly低-多边形

With the hi-poly complete, I started quad-drawing on top of it: I found that the most optimized and best looking approach was to do it by hand. Other ways would be to reduce the hi-poly with automated algorithms or simply push a (low-resolution) subdivided plane up against the live-surface hi-poly - I did not find these results good looking enough compared to the slower method. Since I was already planning on reusing the mesh for other models, I figured that it was okay to spend a bit of time on the initial base meshes.
完成 hi-poly 后,我开始在它上面绘制四边形:我发现最优化和最好看的方法是手工绘制。其他方法是使用自动算法减少高多边形或简单地将(低分辨率)细分平面推向实时表面高多边形 - 与较慢的方法相比,我认为这些结果不够好看。由于我已经计划将网格重用于其他模型,因此我认为花一些时间在初始基础网格上是可以的。

I started with just a square, covering the entire hi-poly model.
我从一个正方形开始,覆盖了整个 Hi-poly 模型。

I added an amount of vertical edges equal to the amount of brick cavities and lined them up. This is just to mark the general edge-flow and it will help all the way through the quad-drawing process.
我添加了与砖腔数量相等的垂直边缘并将它们排成一行。这只是为了标记一般的边缘流,它将一直帮助完成四边形绘制过程。

After that, I inserted horizontal edges, every third right between the brick-rows, to make sure that the edges brought out the basic siluet.
在那之后,我在砖行之间每隔三分之一插入水平边缘,以确保边缘带出基本的siluet。

With all this extra geometry, I started moving the vertical edges in-between every single brick. I iterated on the edge-flow: The red lines are where I noticed that I could rearrange, to have more relaxed polygons (to reduce over-drawing and other issues).
有了所有这些额外的几何图形,我开始移动每块砖之间的垂直边缘。我迭代了边缘流:红线是我注意到我可以重新排列的地方,以获得更宽松的多边形(以减少过度绘制和其他问题)。

With the proper edge-flow, I added the last vertical edge-loops, adjusted them so that they were placed on top of the bricks (creating cavities between all bricks).
使用适当的边缘流,我添加了最后一个垂直边缘循环,调整它们以便它们被放置在砖块的顶部(在所有砖块之间创建空腔)。

Lastly, I made sure that the mesh seamlessly tiled by moving around the edge-vertices by matching them with other adjacent copies of the model.
最后,我通过将边缘顶点与模型的其他相邻副本进行匹配来确保网格无缝平铺。

I had a similar process for the floor and ceiling base mesh.
我对地板和天花板基础网格有类似的过程。

UV-mappingUV映射


I unwrapped all meshes by using the Planar UV-mapping method - This was not only the fastest, but the most accurate way to UV-map these meshes. The front needs to cover the entire UV space from 0 to 1, in a perfect square, to match up with the textures.
我使用平面 UV 映射方法展开所有网格 - 这不仅是对这些网格进行 UV 映射的最快,而且是最准确的方法。正面需要覆盖从0到1的整个UV空间,形成一个完美的正方形,与纹理相匹配。


Note: Unlike the front side, the back and the sides don’t need any dedicated UV space because they are always supposed to be hidden.
注意:与正面不同,背面和侧面不需要任何专用的 UV 空间,因为它们总是应该隐藏的。

Modeling pt2建模pt2


With the basic meshes completed and UV mapped (Wall, Floor, Ceiling) I moved on to making variants and new meshes by cutting them up and by using the ‘Deform’-tools in Maya.
完成基本网格并绘制 UV 映射(墙壁、地板、天花板)后,我继续通过切割和使用 Maya 中的“变形”工具来制作变体和新网格。
我使用可用的布尔运算从基本网格中切出形状:

I used the available boolean operations to cut out shapes from the basic meshes:
我使用可用的布尔运算从基本网格中切出形状:


Under “Deform->Nonlinear” I used the “bend” deformer, to wrap a wall mesh around itself and created one of the pillars in the set.
在“Deform->Nonlinear”下,我使用了“bend”变形器,将墙壁网格包裹在其自身周围并创建了集合中的一个支柱。


For other shapes, I combined several copies of the wall and cut them down to the correct size:
对于其他形状,我组合了墙的几个副本并将它们切割成正确的尺寸:



I made vaults by calculating the circumference of a circle with the radius of the floor’s length, divided by 4: (300*PI)/4 ~ 471.25
我通过计算圆的周长与地板长度的半径除以 4 来制作拱顶:(300*PI)/4 ~ 471.25

I used an external cube as a ruler to get the exact length right.
我使用外部立方体作为尺子来获得正确的长度。

Note: I always made sure to retain the UV when stitching and cutting in the meshes.
注意:我总是确保在缝合和切割网格时保留 UV。

With the approximate length on the mesh (471.25 cm), I deformed it into a quarter circle (with a radius of 300cm).
使用网格上的大致长度(471.25 厘米),我将其变形为四分之一圆(半径为 300 厘米)。

I then mirrored the mesh and merged them together - This way the vault won’t break tiling with the other walls on either side.
然后我镜像网格并将它们合并在一起 - 这样拱顶就不会破坏与两侧其他墙壁的平铺。

I made several different sized vaults this way, both up and down segments.
我以这种方式制作了几个不同大小的拱顶,包括上下部分。

Sculpting

雕刻

For the stairs and all the trims in the set, I did some quick sculpting in ZBrush. I basically just took cubes, dulled down the edges and then created some flat surfaces:
对于楼梯和场景中的所有装饰,我在 ZBrush 中做了一些快速雕刻。我基本上只是拿了立方体,将边缘变钝,然后创建了一些平坦的表面:


I made a few variations that I later used to build the stairs and other models.
我做了一些变体,后来用来建造楼梯和其他模型。


The low-poly variants were made in Maya. Baked them all down on a single atlas and then I did the rest of the texturing in Substance Designer by just re-using my earlier materials.
低多边形变体是在 Maya 中制作的。将它们全部放在一个图集中,然后我通过重新使用我以前的材料在 Substance Designer 中完成了其余的纹理。


I also did some deforming in Maya on these trims to make matching shapes to the cut-outs of the base mesh.
我还在 Maya 中对这些修剪进行了一些变形,以使形状与基础网格的切口相匹配。





评分

参与人数 3元素币 +5 活跃度 +60 展开 理由
Adeline + 5 + 20 相当强大,不愧是元素啊
蒙薪忑哮虱... + 20 好厉害
KL呆呆L + 20 牛逼轰轰!

查看全部评分

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
逆水寒  发表于 2021-8-27 20:50:03  
2#
不错
回复 收起回复
使用道具
水木神川  发表于 2021-8-28 00:22:38  
3#
资源甚好,且行且阅读
回复 收起回复
使用道具
冯建飞  发表于 2021-8-29 00:27:26  
4#
每天三铁~蒸做论坛发烧友
回复 收起回复
使用道具
水木神川  发表于 2021-8-29 00:33:02  
5#
谢谢楼主分享!!!
回复 收起回复
使用道具
ZB8024  发表于 2021-8-29 09:59:55  
6#
难得这么详细的案例教程,谢谢分享
回复 收起回复
使用道具
水木神川  发表于 2021-8-30 00:15:25  
7#
学到了新的知识
回复 收起回复
使用道具
冯建飞  发表于 2021-8-30 00:47:01  
8#
地牢围攻的游戏?
回复 收起回复
使用道具
欧炳宗  发表于 2021-8-30 09:48:13  
9#
666
回复 收起回复
使用道具
进击的大灰狼  发表于 2021-8-31 17:47:24  
10#
每天一早上元素
挖矿撩妹两不误
谢谢楼主分享!!
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表