您需要 登录 才可以下载或查看,没有账号?注册
x
Introduction
Hi there! I’m Santeri Soininen. I’ve been working in games as a 3D Generalist and Environment Artist for 7 years. I’ve worked on a few indie games, such as Midair and OlliOlli World. I stumbled into 3D art and gamedev kind of by accident after dropping out of university and have mostly just been making it up as I go along. I suppose you could say I’m self-taught, meaning I learned from YouTube, Polycount, etc.
介绍
嘿,你好!我是Santeri Soininen。我作为3D通才和环境艺术家在游戏中工作了7年。我曾参与过一些独立游戏的开发,比如《Midair》和《OlliOlli World》。我从大学辍学后偶然发现了3D艺术和游戏开发,而且大部分只是在我前进的过程中编造它。我想你可以说我是自学成才的,这意味着我从YouTube,Polycount等那里学到了东西。
The Stylized Fantasy City Project
The Stylized Fantasy City project started from a couple of different points. I was looking to do something with quite a lot of modularity looking to further explore stylized PBR, and something in a fantasy setting is very much my comfort zone, so that was an obvious choice. I decided to be free-form and exploratory with the way I approached this project, so I didn’t work from concept art.
风格化的幻想城市项目
风格化的幻想城市项目从几个不同的地方开始。我希望做一些具有相当多的模块化的东西,希望进一步探索风格化的PBR,而幻想环境中的东西是我的舒适区,所以这是一个显而易见的选择。我决定以自由的形式和探索的方式来处理这个项目,所以我没有从概念艺术开始工作。
There was no single point of inspiration or reference, instead, I spent time looking for stylistic, mood technical, and subject matter references. Here’s my ref board from PureRef.
The scene is quite stereotypical in many ways; I’m sure most people have seen something that resembles it in other artwork. Therefore I wasn’t too worried about not having specific concept art. But I definitely don’t recommend this kind of approach to most people.
没有单一的灵感或参考点,相反,我花了时间寻找风格,情绪技术和主题参考。这是我来自PureRef的参考板。
这个场景在很多方面都是相当刻板的。我相信大多数人都在其他艺术品中看到了类似的东西。因此,我并不太担心没有特定的概念艺术。但我绝对不会向大多数人推荐这种方法。
Modeling
The first thing I want to touch on is modularity and module granularity. In my initial plan for this scene, I was going to construct everything with a very granular degree of modularity from the individual wall, beam, floor, roof pieces, and so on. However, during my first blockouts, it became evident that this would be quite cumbersome and would not allow me to easily make the kinds of curved, exaggerated forms on the houses that I wanted. So I opted for less granularity and instead constructed my buildings out of three main building shapes and a bunch of extensions.
建 模
我想谈的第一件事是模块化和模块粒度。在我最初对这个场景的规划中,我将从单个墙壁、横梁、地板、屋顶等以非常精细的模块化程度构建所有内容。然而,在我第一次封锁期间,很明显,这将非常麻烦,并且不允许我在我想要的房屋上轻松制作各种弯曲,夸张的形式。因此,我选择了较低的粒度,而是用三个主要建筑形状和一堆扩展来构建我的建筑。
In terms of the main modeling parts, there’s nothing special going on in the main bodies
of the houses, just standard box modeling workflows for the walls and beams. I used instancing (Linked Duplicates) in Blender quite a lot on all the windows and other repeating bits. This way, I was able to place my blockout windows where I would want them and then update the models later. I modeled all the houses straight and then used the Lattice modifier to bend them in order to keep my workflow as nondestructive as possible.
就主要建模部分而言,房屋主体中没有什么特别之处
,只是墙壁和梁的标准箱建模工作流程。我在Blender中使用了实例化(链接重复项)在所有窗口和其他重复位上都很多次。通过这种方式,我能够将遮挡窗口放置在我想要的位置,然后稍后更新模型。我对所有房屋进行了直线建模,然后使用“格子”修改器对它们进行弯曲,以保持我的工作流程尽可能无损。
I kept things as low poly as possible until I needed to add some resolution for vertex painting later. The roofs use a technique I’ve seen pop up in a couple of places, most notably Toivo Huhtaniska's interview for 80 Level.
I subdivided the flat roof meshes, then used the Displace modifier in Blender to displace them based on the height map from my roof texture. After that, I decimated them to get a more acceptable game resolution mesh. The final step was to edit the normals to be fully flat (all pointing in the same direction as the original plane) so that the normal map from the tiling material renders correctly.
The peak and bottom edge shingles consist of individual shingle meshes that I baked onto an atlas to break up the silhouette.
我保持尽可能低的多边形,直到我以后需要为顶点绘画添加一些分辨率。屋顶使用了我在几个地方看到的一种技术,最着名的是Toivo Huhtaniska对80 Level的采访。
我细分了平屋顶网格,然后使用Blender中的“置换”修改器根据屋顶纹理的高度贴图置换它们。在那之后,我摧毁了它们,以获得一个更可接受的游戏分辨率网格。最后一步是将法线编辑为完全平坦(所有法线都指向与原始平面相同的方向),以便平铺材质中的法线贴图正确渲染。
顶边和下边缘的瓦片由单独的瓦片网格组成,我将它们烤到地图集上以分解轮廓。
For the background castle, I mostly didn’t give it as much attention as the foreground elements. But I did still go in and bring it up to a reasonable level of quality by adding trim and some secondary details. This is where it was extremely handy to use the Array and Curve modifiers to quickly place a ton of these rock meshes on all the edges I wanted. The main shapes of the castle were all rather quickly bashed together with booleans. Keeping a lot of things as booleans in combination with arrays and mirrors allowed me to keep things nondestructive and quickly iterate on the design.
对于背景城堡,我基本上没有像前景元素那样给予它那么多的关注。但我仍然通过添加修剪和一些次要细节将其提升到合理的质量水平。在这里,使用 Array 和 Curve 修改器快速将大量这些岩石网格体放置在我想要的所有边缘上非常方便。城堡的主要形状都很快被布尔值打在一起。将很多东西作为布尔值与数组和镜像相结合,使我能够保持无损,并快速迭代设计。
Sculpting
In order to get the most bang for my buck in terms of sculpting time, as well as to keep things consistent, I sculpted a set of generic stones and got a whole lot of reuse out of them. The generic stone sculpts were used to create a tiling stone texture and then also baked onto an atlas of individual stones that I could use to construct anything I wanted. I used Curve and Array tools in Blender to add the individual stones on the corners of a bunch of models.
I also used the high poly stones again on the pillars of the chapel: I assembled the high poly from the previously sculpted stones in Blender and then baked it to its unique texture.
雕刻
为了在雕刻时间方面获得最大的收益,并保持一致性,我雕刻了一套通用宝石,并从中获得了大量的重用。通用的石雕被用来创造瓷砖石的纹理,然后也烤到单个石头的地图集上,我可以用来构建我想要的任何东西。我在Blender中使用了曲线和阵列工具,在一堆模型的角落上添加了单独的宝石。
我还在教堂的柱子上再次使用了高聚石:我从Blender中以前雕刻的石头中组装了高聚石,然后将其烘烤成独特的质地。
I also sculpted a bunch of smaller props, as well as key assets I knew I wanted a little bit more fidelity on. Most of these could have been textured with my existing trims, but I chose to go for the extra fidelity instead.
我还雕刻了一堆较小的道具,以及我知道我想要更多保真度的关键资产。其中大部分都可以用我现有的装饰来纹理化,但我选择额外的保真度。
Texturing
I’ve already touched on some baked textures but let’s go into a bit more detail here. I sculpted all the tileables for my textures in ZBrush, then assembled my final bake models in Blender and baked in Substance 3D Designer. I used Designer for all of my tileables and Substance 3D Painter for the individual assets. All the wood beams were textured with a trim sheet using the Ultimate Trim Sheet technique pioneered by the people at Insomniac. I originally planned to use it for other aspects of the project as well, but it ended up not being a good fit for all the things I wanted to do.
纹理
我已经谈到了一些烘焙纹理,但让我们在这里更详细地介绍一下。我在ZBrush中雕刻了纹理的所有可平铺物,然后在Blender中组装了我的最终烘焙模型,并在Substance 3D Designer中烘焙。我对所有可平铺对象都使用了 Designer,对单个资源使用了 Substance 3D Painter。所有木梁都使用Insomniac人民开创的终极装饰板技术,用装饰板进行纹理处理。我最初计划将它用于项目的其他方面,但最终它并不适合我想做的所有事情。
All the base color work on both tileables and unique assets was the product of just some simple AO, curvature, and height-based effects as well as brush stroke masks generated from alphas I created in Photoshop.
可平铺和独特资源上的所有基色工作都是一些简单的AO,曲率和基于高度的效果以及我在Photoshop中创建的alpha生成的笔触蒙版的产物。
I kept all the texturing 99% procedural for the assets as I didn’t want to sink too many hours into hand painting.
我保留了所有纹理99%的纹理资源,因为我不想在手绘上花费太多时间。
The large-scale variation in the scene comes from a combination of world space triplanar brush textures, vertex paint (blends modulated by more brush stroke textures and AO), and decals. Here’s my setup for the world space color variation. I just chose two arbitrary colors and kept them at a very low intensity (0.3). Here, you can see the effect of the variation when cranked up to full.
场景中的大规模变化来自世界空间三平面画笔纹理、顶点画图(由更多画笔描边纹理和AO调制的混合)和贴花的组合。这是我对世界空间颜色变化的设置。我只是选择了两种任意颜色,并将它们保持在非常低的强度(0.3)。在这里,您可以看到曲柄到最大时变化的效果。
The decals were hand-painted in Photoshop with some painterly brushes and the shader setup is a very basic solid color with variation provided by a world space brush stroke texture.
This was my first project where I realized that making a quick blueprint to control some basic parameters on my decal materials through MaterialInstanceDynamic saves a ton of time and makes duplicate material instances for every possible situation.
贴花是在Photoshop中用一些绘画画笔手绘的,着色器设置是非常基本的纯色,由世界空间画笔描边纹理提供变化。
这是我的第一个项目,我意识到通过MaterialInstanceDynamic制作一个快速蓝图来控制贴花材质上的一些基本参数,可以节省大量时间,并为每种可能的情况制作重复的材质实例。
Composition and Scene Assembling
I think the gif covers most of it! I had a pretty decent idea of the main composition from my initial sketch and focused heavily on the main camera angle. That means I spent most of my level building and set dressing effort on the areas that are closer to the camera and left everything else pretty rough, as you can see from the aerial shot of the city.
构图和场景组合
我认为GIF涵盖了大部分内容!从我最初的草图中,我对主要构图有了一个相当不错的想法,并且主要集中在主相机的角度上。这意味着我花了大部分时间进行关卡建设,并在靠近摄像机的区域设置了着装工作,而其他一切都非常粗糙,正如你从城市的航拍中看到的那样。
With regards to composition on the main camera angle, I struggled a little bit with figuring out how to have all of my elements in there while keeping things feeling cohesive. One mental hurdle here was to abandon the notion of having just a single strong focal point and instead make peace with the fact that there’s a lot to look at in the picture, and so I wanted to let the viewer's eye wander around the image, taking in the city as if they were in a video game – seeing all the possible things they could do as well as their ultimate goal in the castle and a path upwards towards it.
关于主摄像机角度的构图,我有点挣扎,弄清楚如何将我的所有元素都放在那里,同时保持事物的凝聚力。这里的一个心理障碍是放弃只有一个强大的焦点的概念,而是与图片中有很多东西要看的事实保持和平,所以我想让观众的眼睛在图像中徘徊,就像在视频游戏中一样欣赏城市 - 看到他们能做的所有可能的事情以及他们的最终目标城堡和一条向上通往它的小路。
This is all to say that composition fundamentals are extremely important, but it’s not always the best approach to keep to rigid composition rules in every case.
A couple of additional notes on how I assembled things inside Unreal Engine: I created a few different preset building assemblies as Blueprint actors out of my main house and house extension pieces, as well as windows and other detail pieces. I was then able to very quickly populate the background city with those. This approach could have been taken further and done better if I was to create something like this in actual production. That was the general mindset for most of my workflows: everything could be cleaned up and scaled up to work in production if necessary, but I didn’t waste time doing all of that on a personal project.
这就是说,构图基础非常重要,但它并不总是在每种情况下保持严格的构图规则的最佳方法。
关于我如何在虚幻引擎中组装东西的一些额外说明:我从主屋和房屋扩展件以及窗户和其他细节中创建了几个不同的预设建筑组件作为蓝图Actor。然后,我能够非常快速地用这些填充背景城市。如果我在实际生产中创建这样的东西,这种方法本可以走得更远,做得更好。这是我大多数工作流程的普遍心态:如有必要,所有内容都可以清理并扩展到生产中的工作,但我没有浪费时间在个人项目上完成所有这些工作。
The terrain is a basic height blend material between 4 different layers. I used the Landscape Grass System to place grass on all the areas where the grass layer is painted.
地形是4个不同层之间的基本高度混合材料。我使用景观草系统将草放置在绘制草图层的所有区域。
Lighting and Post Processing
The mood I wanted to go for was something sunny, bright, and comfy. So I played around with my light angle and eventually landed on a late afternoon-ish time of day.
I chose to use UE4 for this project because 5 still had some stability issues around the time I started it.
I decided to try out Nvidia's RTXGI plugin for my Global Illumination, and it worked great for this scene! I chose to push my GI intensity quite a lot to make the scene feel lush and warm.
照明和后期处理
我想去的心情是阳光明媚,明亮,舒适。所以我玩弄了我的光角度,最终降落在一天中的傍晚时间。
我选择在这个项目中使用UE4,因为5在我开始这个项目时仍然存在一些稳定性问题。
我决定为我的全局照明试用Nvidia的RTXGI插件,它非常适合这个场景!我选择将我的胃肠道强度提高到很大一点,以使场景感觉郁郁葱葱和温暖。
The lighting in the scene consists of just the Directional Light, Skylight, and the DDGI volume.
场景中的光照仅由定向光、天窗和 DDGI 体积组成。
For the post-processing I used a LUT texture, meaning that I did all of my post-processing adjustments inside Photoshop with adjustment layers.
对于后期处理,我使用了LUT纹理,这意味着我在Photoshop中使用调整图层进行了所有后期处理调整。
Conclusion
Every project is a learning opportunity and a unique challenge. I struggled quite a bit with this scene because of not working from specific concept art, as I knew I would when I started it. I also learned a lot about how I would probably want to set up my buildings in the future if I was to do another similar project.
Perhaps one takeaway for people reading this would be to remember that not everything has to be perfect. This scene has a ton of pretty rough elements and unrefined textures but it still works (at least I hope it does.) Work smarter, not harder, and focus your efforts on where it will be seen, not on some prop hidden in a corner that no one will see.
结论
每个项目都是一个学习机会,也是一个独特的挑战。由于没有从特定的概念艺术中工作,我在这个场景中挣扎了很多,就像我开始时所知道的那样。我还学到了很多关于如果我要做另一个类似的项目,我将来可能想要如何设置我的建筑物。
也许阅读本文的人的一个收获是记住,并非所有事情都必须是完美的。这个场景有很多非常粗糙的元素和未精制的纹理,但它仍然有效(至少我希望它能做到)。更聪明地工作,而不是更努力地工作,把你的努力集中在能看到它的地方,而不是放在隐藏在一个没有人会看到的角落里的道具上。
|