Unity3D Adam Demo的学习与研究

 

 

1.简述

这篇文章是对Adam各种相关资料了解后进行一些精简的内容。如果你想仔细研究某个技术请跳转至unity相关页面。

Adam官方页面: https://unity3d.com/cn/pages/adam

搬运视频以及资源包网盘下载: http://pan.baidu.com/s/1jH6NF86

 

Adam这个demo由8个人的团队耗时6个月(part1四个月,part2两个月)打造完成。

其中使用到的软件如下:

Model: 3DSMax, Marvelous Designer, ZBrush

Texture: Substance Painter

Tiled textures: Quixel megascans

Animation: MotionBuilder

 

关于megascans这个软件单独介绍下,算是quixel近年的新计划,可以理解为实景扫描素材库

提供模型和贴图的下载,内容主要以户外自然为主,但目前收费较贵。

 

技术方面主要集中在2种灯光和新加入的PostProcessing上,其次就是物理插件CaronteFX

 

 

2.技术深入

 

2.1 - 环境与表现

 

2.1.1 - Adam的布料撕裂效果

这个一开始看demo时的确以为是物理模拟插件CaronteFX的功劳

但看了视频才知道是max里做好,然后导出abc格式到unity中来完成的

 

我后来在看demo的目录文件时也发现了位于SteamingAssets的abc文件

 

播放效果:

 

abc格式导入工具的github地址如下:

https://github.com/unity3d-jp/AlembicImporter

 

 

2.1.2 - Adam背上的线缆和面部破损

线缆确实是CaronteFX实现了

 

而面部破损因为不需要表现破碎动画,先是在Max里用tp粒子制作的原型,然后再交由建模师制作实际模型

 

关于布料方面以及CaronteFX的使用,极力推荐篇文章:

https://blogs.unity3d.com/cn/2017/01/04/adam-vfx-in-the-real-time-short-film/

 

 

2.1.3 - 室内环境中的烟雾动画

 

下图直接摘自官网

 

3A游戏中常见的粒子序列,这里使用3dmax的插件PhoenixFD生成。 

关于阵列图转换,这里顺带提一下unity正在开发的工具VFXToolbox(https://forum.unity3d.com/threads/release-thread-vfx-toolbox-image-sequencer.438465)

这在unity adam的相关文章中有提到,我后来试用了一下,不仅仅是阵列图和序列图互转这么简单,可能以后要集成一套图形处理的功能进去。

 

 

2.1.4 - Puddles水坑涟漪效果

 

同样使用PhoenixFD制作的涟漪序列,并将这个NormalMap赋予unity粒子序列。

 

下图直接摘自官网

 

顺带一提,以上两个效果的作者是Zdravko Pavlov,已经有11年的相关工作经验

 

 

2.1.5 - SceneManagement多场景并行编辑

得益于unity5.3加入的SceneManagement,可以多人并行编辑一个大场景了

 

在观察demo执行文件时,会发现有非常多的场景文件

使用HHD Hex Editor打开后确实可以看见,整个大的场景中不同内容被放在多个小的场景文件内

就像视频中说的那样,多人协作时分成多个小场景编辑,这样非常方便

 

 

 

2.1.6 - 编辑器状态启用IK

(Unite Europe 2016视频中确实有一个InEditorIK的脚本)

 

有时候要在编辑器内调节IK,视频中提到了这个问题。

解决方法在这里:https://forum.unity3d.com/threads/set-up-ik-in-editor.332035/

 

 

 

2.2 - 角色处理

在视频中Lu和Guard的布料都是用CaronteFX来做的,但实际上资源包中,是通过Unity自定义关节实现的

只有Sebastian的资源包使用了CaronteFX布料

 

2.2.1 - 自定义关节

来看一下这两个角色的自定义关节。

 

角色Lu

 

角色Guard

 

Lu只有一小块地方用了unity布料。因为这一块在demo中会随风飘扬

 

对于布料模拟这是个好方法,但是它并不能解决动态穿插问题

 

 

2.2.2 - CaronteFX的布料效果

Sebastian是一个单独拆出来的包,原因是它的布料和之前的那些角色不同。它用的是CaronteFX的烘培布料

在这个资源包里会发现居然带了一个纯运行版的CaronteFX,你不能编辑它,你只能用。。

 

单是看GC没发现什么问题,不过得注意下内存中数据量的问题,烘焙数据大约占了150mb左右,还有烘培速度

 

 

carontefx的烘培速度确实非常慢,Adam团队自身也对此做了一些代理对象处理。

 

另外carontefx其实并不简单,其来头就是RealFlow的开发公司NextLimit

https://www.nextlimit.com/products/name/carontefx/

 

 

 

2.3 - 光照部分

在github上,unity专门把Adam光照部分提取了出来(TubeLight,AreaLight,Volumetric fog)

https://github.com/Unity-Technologies/VolumetricLighting

 

在Unite Europe 2016 - The making of Adam demo这部视频里,有对这些内容进行细致的讲解

 

2.3.1 - TubeLight柱形光照

 

没有阴影,相比AreaLight更低品质,但是便宜

 

如果直接丢到空项目里用是这样的,因为它必须相机挂上PostProcessing才行

 

 

此时就可以看见效果了

 

 

还可以设置ShadowPlane,控制光照的扩散

比如这里就约束了底部扩散,你可以直接改生成出来的Shadow Plane坐标和旋转,来控制它。

 

2.3.2 - Area Light区域光照

看视频中的讲解,似乎是通过CommandBuffer在AfterLighting处理后,拿到G-Buffer的数据进行采样,并通过DrawMesh来绘制光照。

 

 

 

和TubeLight一样,相机需要挂载PostProcessing。

如果需要和Adam里一样有雾光效果,需要挂载两个脚本

LightManagerFogLights,LightManagerFogEllipsoids

 

此时可以看见雾的效果(gif)

 

 

2.3.3 - Volumetric fog 体积雾

因为在Adam demo中雾效是和灯光整合的,所以也就没法测试了。

FogEllipsoid是具体代码。

另外相关文章中提及到的LightShafts,github地址如下:

https://github.com/robertcupisz/LightShafts

 

 

2.4 - 一些其他工具

大气散射和平面反射在Blacksmith的demo中就已经讲过,这里不做介绍

Blacksmith demo学习:http://www.cnblogs.com/hont/p/5658491.html

 

2.4.1 - RigMeister2000

这是一个角色骨架调试工具,它位于Adam相关的角色资源包里

这个包里有两个脚本RigMeister2000和VisibleSkeleton。

前者可以校对骨骼朝向和作为一个约束工具使用,并且调试朝向。后者可以绘制出骨骼gizmos

 

挂上VisibleSkeleton之后,效果如下

 

 

RigMeister2000这个工具比较谜,因为除了Adam外的人形角色都没有绑定这个脚本

它在LateUpdate里会去做约束处理。但实际上你开不开这个脚本变化不大,或者说基本上没变化。

 

 

2.4.2 - Wind

一个小工具,一个绘制箭头Gizmos的脚本

 

 

 

3.结语

 

在Unite 2016的两部视频中,unity自己挖了不少坑,比如Delay了1年的Sequence工具。。

unite2016中提及的新特性大致如下:

1.CrowdSystem集群系统,这个说会100%在unity中集成,但目前来看应该还要等。

2.CustomCape feathers simulation in Unity5.4一个羽毛模拟组件,说是在unity5.4中加入,但目前应该是Delay。

3.Motion Vectors for temporal Anti-Aliasing in Unity5.4使用运动向量的随机采样抗锯齿?这个未知

4.Texture Array 这个Demo的地形中有用到,并且5.4确实加入了,在adam室外部分的Shader中可以找到这个类型。

 

另外室外环境的包中有一个地形工具TETerrain,但是这个工具似乎是缺少编辑器套件,我没办法用大的地表重新切片

所以这部分内容只好跳过。

 

关于Adam这个demo的研究这里就结束了,因为一直有各种事,delay到现在才开始写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python安卓自动化实现方法_uiautomator +python 实现安卓UI自动化

简单实例注:安卓6.0以上的手机不会自动安装app-uiautomator.apk和app-uiautomator-test.apk,需要手动安装,否则报错ioerror RPC server not starteduiautomator pythonHTMLTestRunner 安卓UI自动化实现#coding:utf-8from uiautomator importD…

2_C语言中的数据类型 (四)整数与无符号数

1.1 sizeof关键字 sizeof是c语言关键字,功能是求指定数据类型在内存中的大小,单位:字节 sizeof与size_t类型 1.1 int类型 1.1.1 int常量,变量 int就是32位的一个二进制整数,在内存当中占据4个字节…

Spring实战——通过Java代码装配bean

上篇说的是无需半行xml配置完成bean的自动化注入。这篇仍然不要任何xml配置,通过Java代码也能达到同样的效果。 这么说,是要把上篇的料拿出来再煮一遍? 当然不是,上篇我们几乎都在用注解的方式如ComponentScan Component等就完成了…

java.io和util的区别_Java NIO与IO的区别和比较

Java NIO与IO的区别和比较导读J2SE1.4以上版本中发布了全新的I/O类库。本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道。一. 介绍NIONIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共…

区块链+税务的思考

2016年,区块链技术火了!各大金融公司、互联网巨头都竞相参加到区块链技术的研究中。我们公司的业务是税务的信息化领域,也希望通过区块链技术的应用,来提升为财税领域的服务。 区块链技术优缺点总结 下图是对区块链技术的一些特点…

如何使用JavaScript删除CSS属性?

In this article, well see how we can remove a CSS property from a certain element using JavaScript? We can remove only those properties that we assign ourselves and the pre-default ones cannot be removed by this method. 在本文中,我们将看到如何使…

【喜报】JEEWX荣获“2016 年度码云新增热门开源软件排行榜”第一名!

为什么80%的码农都做不了架构师?>>> 2016 年度码云新增项目排行榜 TOP 50 正式出炉!根据 2016 年在码云上新增开源项目的 Watch、Star、Fork 数量以及其他角度的统计,JEEWX捷微管家荣获“2016 年度码云新增热门开源软件排行榜”第…

java 二叉树特点_疯狂java笔记之树和二叉树

树的概述树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构1.树的定义和基本术语计算机世界里的树,是从自然界中实际的树抽象而来的,它指的是N个有父子关系的节点…

tomcat +apache 配置集群

2019独角兽企业重金招聘Python工程师标准>>> APACHE2.2.25TOMCAT6.0.37配置负载均衡 目标: 使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1. Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例&…

java双缓存机制_详解JVM类加载机制及类缓存问题的处理方法

前言大家应该都知道,当一个Java项目启动的时候,JVM会找到main方法,根据对象之间的调用来对class文件和所引用的jar包中的class文件进行加载(其步骤分为加载、验证、准备、解析、初始化、使用和卸载),方法区中开辟内存来存储类的运…

什么是mvc?

什么是MVCMVC 是一种设计模式,它将应用划分为3 个部分:数据(模型)、展现层(视图)和用户交互层(控制器)。换句话说,一个事件的发生是这样的过程:1.…

mysql的安装和基本命令_MySQL安装以及简单命令用法

MYSQL:关系型数据库存储引擎:负责将逻辑层的概念转化为物理层机制,在物理层完成物理机制。支持事务:transaction必须满足的条件:ACID(一致性,持久性,原子性,隔离性)锁:并发访问随机访问:数据在磁盘上是随机存储的安装&…

docker集群运行在calico网络上

2019独角兽企业重金招聘Python工程师标准>>> ##网络及版本信息 docker1 centos7 192.168.75.200 docker2 centos7 192.168.75.201 物理网络 192.168.75.1/24 Docker version 1.10.3, build 3999ccb-unsupported ,安装过程略 # calicoctl version Version…

人脸识别python face_recognize_python2.7使用face_recognition做人脸识别

偶然看到一篇文章,说是可以实时人脸识别,很有兴趣就自己按照文章开始动手人脸识别,但是实现过程中遇到了几个问题这里做个总结,希望可以帮助到大家安装face_recognition这个之前需要先安装编译dlib,如果没有安装dlib&a…

jvm延迟偏向_用于偏向硬币翻转模拟的Python程序

jvm延迟偏向Here, we will be simulating the occurrence coin face i.e. H - HEAD, T - TAIL. Simply we are going to use an inbuilt library called as random to call a random value from given set and thereby we can stimulate the occurrence value by storing the o…

opengl es的射线拾取

2019独角兽企业重金招聘Python工程师标准>>> 在opengl中关于拾取有封装好的选择模式,名字栈,命中记录,实现拾取的功能,相对容易一些。但是到了opengl es里面就比较倒霉了,因为opengl es是opengl的简化版&am…

视觉学习(4) —— 添加地址传递数据

Modbus Slave 选择一个地址右键,选择发送的数据类型 视觉软件 一、添加地址 当地址为100时,先将首地址改为100,第0个地址为100,第1个地址为101,往后累加 若想使用100—150的地址,即首地址为100&#xff…

jquery中阻止事件冒泡的方法

2019独角兽企业重金招聘Python工程师标准>>> 根据《jquery基础教程》 第一种方法:判断事件的“直接”目标是否是自身,如果不是自身,不予处理 $(div.outter).click(function(event) {if (event.target this) {$(p).css(color, red…