铁匠smith

In the previous blog posts in this series we have looked at the team that created The Blacksmith, and the art production process that established the short film’s aesthetic. But now we turn our attention to more technical matters, as we consider the project’s production in Unity 5, here focusing on scene setup, shading and lighting.

在本系列的先前博客文章中,我们介绍了创建《铁匠》的团队 ,以及确立了短片美学的艺术制作过程 。 但是现在,我们将注意力转向更多的技术问题,因为我们考虑了Unity 5中该项目的生产,这里重点关注场景设置,阴影和照明。

引擎版本和狗粮 (Engine versions and dogfooding)

The production of The Blacksmith was done on early alpha- and beta-versions of Unity, and was stabilized on 5.0.b22 to ship. The project has since been upgraded to the shipped version of Unity 5.

铁匠 》的制作是在Unity的早期alpha和beta版本上完成的,并稳定在5.0.b22上以进行发布。 此后,该项目已升级到Unity 5的出厂版本。

Using an engine in constant development involves instability and leads to some inevitable inefficiency when it comes to content production. We faced the weekly dilemma of whether to upgrade to get the fixes in the new version, or to skip a version to avoid disruption of the team’s work.

在持续开发中使用引擎会带来不稳定,并在内容制作方面不可避免地导致效率低下。 我们每周面临的困境是,是否要升级以获取新版本中的修补程序,还是跳过一个版本以避免团队工作中断。

In addition, the sequencing of cameras and animation in The Blacksmith was based on Director, one part of the Storytelling set of tools in Unity, which at that time were in a very early stage of development (and still don’t have an announced release date). Getting this functionality into our project involved regular merges to the main Unity 5, which continued from about halfway in-production until we shipped.

另外, 《铁匠》中的相机和动画的排序基于Director,这是Unity中Storytelling工具集的一部分,当时该工具还处于开发的早期阶段(并且尚未发布版本)日期)。 将此功能纳入我们的项目需要定期合并到主要的Unity 5,Unity 5从生产中途一直持续到我们发货为止。

As a content-production team at Unity, we communicate bugs and feature requests to the relevant development teams, and then usually keep our fingers crossed that they will be fixed quickly or implemented at all. If they aren’t, we workaround through our own solutions. Our feedback is weighed against the needs of the larger Unity userbase and we don’t usually get any prioritised treatment.

作为Unity的内容制作团队,我们将错误和功能请求传达给相关的开发团队,然后通常不由自主地指出,这些错误和功能请求将很快得到修复或完全实现。 如果不是这样,我们将通过自己的解决方案来解决。 我们的反馈意见是与更大的Unity用户群的需求权衡的,我们通常不会得到任何优先处理。

场景设定 (Scene setup)

At the start of The Blacksmith’s production stage, we whiteboxed the scene in Unity.

《铁匠》制作阶段的开始,我们在Unity中将场景添加了白盒。

Using packages from the Asset Store, such as Better Rocks and Cliffs by Quantum Theory, was very helpful for prototyping, and ensured we were able to start working on look development very early on. We quickly achieved a rather detailed result:

使用Asset Store中的软件包,例如Quantum Theory的Better Rocks和Cliffs ,对原型制作非常有帮助,并确保我们能够尽早开始外观开发。 我们很快取得了相当详细的结果:

Following our storyboard, which we did during pre-production, we did a first iteration of the cameras, loosely approximating the desired shots. Based on that, we were able to break down what assets needed to be produced for each shot. At that stage the 3D art for the characters was already in progress.

按照我们在预生产期间所做的故事板,我们对相机进行了第一次迭代,大致逼近了所需的镜头。 基于此,我们能够分解出每个镜头需要生产的资产。 在那个阶段,角色的3D艺术已经在进行中。

It was important for us to have as much artistic control per-shot as it would be possible. Therefore we extended the Unity Editor with a Scene Manager, which allows us to group objects per shot. We use it to enable or disable certain objects, or change their properties – location, scale, material and so on – only for a specific camera, in order to get a better shot composition. In the same way, every shot can have its own, specific light setup, and thanks to the realtime global illumination we have instant change of the lighting from shot to shot.

对于我们来说,尽可能地控制每次拍摄的艺术性很重要。 因此,我们使用场景管理器扩展了Unity编辑器,该管理器使我们可以按次对对象进行分组。 我们使用它来启用或禁用某些对象,或仅针对特定相机更改其属性(位置,比例,材质等),以便获得更好的镜头构图。 同样,每个镜头都可以有自己的特定灯光设置,并且由于具有实时全局照明,我们可以在每个镜头之间即时更改照明。

底纹 (Shading)

Unity’s Physically-Based shading system is fairly straight-forward to use and set up.

Unity的基于物理的着色系统非常易于使用和设置。

It was employed throughout the entire project. Since we didn’t scope this project to include the development of a proper skin shader, we used the Standard shader even for that:

它在整个项目中都被使用。 由于我们没有将这个项目包括在适当的皮肤着色器中,因此我们甚至使用了标准着色器:

The Challenger – Screenshot from the Unity Editor

挑战者– Unity编辑器的屏幕截图

One of the great advantages of the Standard shader in Unity 5 is that it is meant to be extended and modified for the specific needs of any project. The source of the Standard shader can be downloaded from here: http://unity3d.com/get-unity/download/archive (under the ‘Downloads’ dropdown for the appropriate platform, select ‘Built in shaders’). Building project-specific shaders on top of it is quite straightforward, and we did it a lot on The Blacksmith. We will share some examples below.

Unity 5中的标准着色器的一大优点是可以根据任何项目的特定需求进行扩展和修改。 可以从以下位置下载标准着色器的源: http : //unity3d.com/get-unity/download/archive (在相应平台的“下载”下拉列表下,选择“内置着色器”)。 在其之上构建特定于项目的着色器非常简单,我们在The Blacksmith上做了很多工作。 我们将在下面分享一些示例。

We modified the Standard shader to make it aware of the custom shaders we have added to the project. We used two versions of this modification: one for the environment (e.g. it is aware of our atmospheric scattering) and a more complex one for the characters (which is also aware of our unique character shadows and wrinkle maps). The latter has a slightly enhanced UI, with sliders for the specular map.

我们修改了标准着色器,以使其了解我们添加到项目中的自定义着色器。 我们使用了两种版本的修改:一种用于环境(例如,它了解我们的大气散射),另一种用于字符(用于我们的角色,也了解我们独特的角色阴影和皱纹贴图)。 后者具有稍微增强的UI,并带有用于镜面贴图的滑块。

To give the Challenger’s face some extra life and detail, we decided to develop a solution for blendshape-driven wrinkle maps. Based on the influences of the most prominent blend shapes at any time, we mixed together multiple normal and occlusion textures in a screen-space prepass. This was then fed directly to a Standard shader variation that sampled and unpacked normals and occlusion from this screen-space buffer instead of the regular material slots.

为了使“挑战者”的面Kong更加生动有趣,我们决定为混合形状驱动的皱纹贴图开发一种解决方案。 基于任何时候最突出的混合形状的影响,我们在屏幕空间预通过中将多个法线和遮挡纹理混合在一起。 然后将其直接馈入“标准”着色器变量,该变量从该屏幕空间缓冲区而不是常规材质槽中采样并解压缩法线和遮挡。

The Standard shader is awesome for a wide range of real-world materials, but hair is, unfortunately, not one of these. Although hair rendering was never a primary focus area for The Blacksmith, we did want to ensure we had those characteristic anisotropic highlights for hair, while still integrating properly with the physically based environment used by the other materials. To achieve this, we modified a Standard shader to use a different reflectance distribution model, but left the sampling of reflection and light probes intact.

标准着色器对于各种现实世界的材质来说都是很棒的,但是不幸的是,头发不是其中之一。 虽然头发渲染从来都不是铁匠的主要重点领域,我们也希望确保我们拥有这些特征的各向异性亮点头发,同时还与其他材料使用的基于物理的环境中正常整合。 为实现此目的,我们修改了标准着色器以使用不同的反射率分布模型,但完整保留了反射和光探针的采样。

Hair shader – Screenshot from Unity Editor. Click to see full size.

头发着色器– Unity编辑器的屏幕截图。 单击以查看完整大小。

We also wanted to have soft vegetation in some of the shots, as well as an easy way of painting varied vegetation in the scene. The solution was a two-stage process extending Unity’s builtin vegetation features. A small tool, PaintJob, automated the process of shrink-wrapping any static geometry in the world with a temporary terrain. Combined with a simple ruleset controlling the wrapping, this allowed us to paint vegetation layers on ground meshes, around structures and on rooftops. For rendering, we then captured this painted data into a custom component for handling view-dependent sorting, sampling dynamic GI and managing culling and LODing.

我们还希望在某些镜头中具有柔和的植被,以及在场景中绘制各种植被的简便方法。 解决方案是一个两阶段的过程,扩展了Unity的内置植被功能。 小型工具PaintJob使具有临时地形的世界中任何静态几何体的收缩包装过程自动化。 结合控制包装的简单规则集,这使我们能够在地面网格物体,建筑物周围和屋顶上绘制植被层。 为了进行渲染,我们随后将绘制的数据捕获到一个自定义组件中,以处理依赖于视图的排序,对动态GI进行采样以及管理剔除和LODing。

灯光 (Lighting)

We used different layers to separate the lighting for the characters and for the environment, and assigned the respective culling masks to lamps. This way we had better control over both, taking a similar approach to what is usually done in filming, where specific light conditions are set up with regard to the presence and position of characters in the scene.

我们使用了不同的层来分离角色和环境的照明,并为灯分配了各自的剔除蒙版。 这样,我们可以更好地控制这两种情况,采取与摄影中通常采取的类似方法,即根据场景中角色的存在和位置设置特定的光照条件。

To improve the look of the characters, we used additional small local light sources to soften the shadows (unlit parts) on their faces.

为了改善角色的外观,我们使用了其他小型局部光源来柔化角色脸上的阴影(未照明的部分)。

As our characters are very prominent in the demo, and we have lots of close-up shots, it was very important to make sure that they could receive shadows with reasonably high resolution. For this reason we added a separate shadow texture dedicated only to the character shadows.

由于我们的角色在演示中非常突出,并且我们有很多特写镜头,因此确保他们可以接收到具有合理高分辨率的阴影非常重要。 因此,我们添加了仅用于角色阴影的单独阴影纹理。

The light in the smithy interior was intended to look like it was coming from holes in the walls and roof. This effect is achieved by a cookie with an appropriate pattern.

铁匠铺内部的光线看起来像是来自墙壁和屋顶的Kong。 这种效果是通过具有适当模式的Cookie来实现的。

For the ocean and beach puddles, we wanted reflections that would provide sharp contacts where objects penetrated the reflective surface, while growing more diffuse as the distance from reflector to receiver increased. What we ended up building was something similar to water reflections, but with a depth-aware convolution step setting up data for variable surface smoothness. Again, the output for this system was fed into a Standard shader, this time replacing reflection cube maps with our custom reflection texture.

对于海洋和海滩水坑,我们希望反射能够在物体穿透反射表面的地方提供清晰的接触,同时随着从反射器到接收器的距离增加,扩散会越来越多。 我们最终构建的建筑类似于水反射,但具有深度感知的卷积步骤,可设置可变表面光滑度的数据。 同样,该系统的输出被输入到标准着色器中,这次用我们的自定义反射纹理替换了反射立方体贴图。

In the next piece in this series on creating The Blacksmith we’ll move on to exploring the way the Demo team approached post process, animation and audio/video production. So be sure to keep an eye out for the next post over at our special dedicated page for The Blacksmith.

在本系列的下一篇关于创建铁匠的文章中,我们将继续探讨演示团队处理后期处理,动画和音频/视频制作的方式。 所以一定要留意在接下来的文章在我们的铁匠特种专用页面 。

翻译自: https://blogs.unity3d.com/2015/06/17/making-of-the-blacksmith-scene-setup-shading-lighting/

铁匠smith

铁匠smith_铁匠的制作:场景设置,阴影,照明相关推荐

  1. 铁匠smith_铁匠的制作:概念和艺术创作

    铁匠smith For our second blog post in this series, the team reveals some sources of inspiration behind ...

  2. 铁匠smith_铁匠的制作:动画,相机效果,音频/视频

    铁匠smith In this blog post we'll be sharing our animation pipeline, and our approach to the post effe ...

  3. 铁匠smith_铁匠中的独特角色阴影

    铁匠smith It was bright and sunny morning. It must have been some time last fall, when we finally got ...

  4. 铁匠smith_铁匠的大气散射

    铁匠smith Early in the planning phase of The Blacksmith, we knew we wanted an atmospheric scattering s ...

  5. 铁匠smith_铁匠镇的皱纹地图

    铁匠smith When planning The Blacksmith short film, we never really prioritized a custom skin shader hi ...

  6. ue4场景没阴影_UE4性能调试分析常用方法

    UE4性能调试分析常用方法 本文将介绍使用UE4开发项目常用到的性能分析的命令 UE4使用命令的方式是在游戏运行的时候按~键就可以输入命令了 显示CPU和GPU端执行耗时命令: stat UNIT 这 ...

  7. 图片工厂怎么制作场景拼图 图片工厂制作场景拼图教程

    2019独角兽企业重金招聘Python工程师标准>>> 图片工厂中你可以根据自己的喜好去制作场景拼图,那么问题来了,图片工厂怎么制作场景拼图?小编带来了图片工厂制作场景拼图教程,感兴 ...

  8. bat自动输入密码登录_如何制作自动设置计算机管理员密码的脚本

    如何制作自动设置计算机管理员密码的脚本 首先新建一个txt文档,输入以下代码 @echo offecho 更改管理员administrator密码net user administrator /act ...

  9. JMeter场景设置叙述

    Jmeter场景设置叙述 JMeter的线程组设置里有一个调配器设置,用于设置该线程组下脚本执行的开始时间.结束时间.持续时间及启动延迟时间.当需要半夜执行性能测试时会用到这个功能. 设置调度器配置, ...

最新文章

  1. C语言指针数组,遍历查询!_只愿与一人十指紧扣_新浪博客
  2. vs2010 使用vs online账号 需要安装的插件
  3. 乡村振兴国际经验-农民丰收节贸易会: 谋定城镇化进程
  4. python编程*三角形图形创意图片_python循环输出三角形图案的例子
  5. 使用client-go自定义开发Kubernetes
  6. 线上redis服务内存异常分析。
  7. Windows环境配置Apache+Mysql+PHP
  8. 前端遍历列表生成表格_图书作者的演练-创建列表页和添加表单框-flask
  9. php 时间类型int类型,mysql 查询 int类型日期转换成datetime类型
  10. 系统学习NLP(二十七)--EMLo
  11. TortoiseSVN 官网 中文语言包位置
  12. 解决Eth0网卡不存在的情况_wuli大世界_新浪博客
  13. 怎样对生产环境10T RAC新增Adg 不对现有主库产生任何负载,不占用网络带宽?
  14. 近期工作中的错误总结
  15. 计算机控制系统设计题例题,计算机控制系统练习题..doc
  16. RK3399平台开发系列讲解(其他篇)1.31、 什么是虚拟化
  17. 简体和繁体之间的转换
  18. writev遇到非阻塞IO
  19. 矩阵求和c语言通俗易懂
  20. Win10/Win11下清除windows defender安全中心病毒和威胁防护历史记录

热门文章

  1. 神经网络与深度学习(笔记一)
  2. thinkpad笔记本功能键开关设置
  3. 实习笔记 —— AOP开发I
  4. Hadoop的FileInputFormat解析
  5. 超图iMobile的so库和jar包版本不匹配解决方案
  6. Vue(二):附代码示例
  7. Module build failed: TypeError: this.getOptions is not a function at Object.loader
  8. Mysql启动 - 错误1053:服务没有及时响应启动或控制请求
  9. Discuz二次开发基本知识总结
  10. Android 12.0 锁屏页面滑动解锁不灵敏的功能修复