摘要:渲染是批处理运行模式,那能不能使用Docker容器技术,做大规模的渲染集群呢?

我们先说说3D渲染涉及哪些领域:

1、什么是3D渲染

简单粗暴的讲:就是将虚拟世界里的3D模型,变为(人眼看到)平面图片。

比如你画了个3D模型,经过渲染,变成了最终我们看到的图片:

(3D模型)

(2D图片)

2 、3D模型,怎么得到2D图片

将一个想象的“摄像机”放到3D空间中,去拍摄图片。这个“摄像机”跟我们的眼睛类似,它看到的就是2D的图片(视网膜上)。

墙裂建议去看看这个教程:https://www.khanacademy.org/partner-content/pixar/rendering/rendering1/v/overview-rendering

所以简化后就是,一个“摄像机”+ 一个“视窗”。如下图:

画重点:从摄像位,发出一束射线,穿过栅格,打到3D模型上,并记录下击中的那个点的颜色。

重复上述步骤,扫描每个栅格上面的点,得到所有点的颜色。这就得到栅格最终的图片:

这种方式也叫光线追踪,这个词也比较常见。

每张图片里的每个像素点,都是通过“摄像机”+“栅格”拍摄出来的。

3 、3D->2D 更复杂的场景

实际渲染情况下,并不只是这么简单,因为3D模型表面的颜色,会受到它周围的环境的影响。比如:3D模型的附近有个光源,3D模型的表面光滑程度等等。

所以即使你知道“摄像机”发出的那束光击中了3D模型的位置,你也并不能马上得到该点的颜色(底色+干扰=最终颜色)。

所以真正计算像素点的颜色,工作量还是非常大的。注意,这还是一张图片(一帧)的计算量,一部动画电影得有多少帧图片?

4 、完美的批处理任务

一部电影由很多的帧组成,每一帧都由上面光线追踪算法计算出每个像素点的颜色。注意:每一张图片,都可以分别计算的,互相之间并不影响。

(每一帧,单独进行渲染处理)

  • 渲染是创建 3D 模型并将其转换为 2D 图像的过程。 在 Autodesk 3ds Max、Autodesk Maya 和 Blender 等应用程序中创作 3D 场景文件。 Autodesk Maya、Autodesk Arnold、Chaos Group V-Ray 和 Blender Cycles 等渲染应用程序可生成 2D 图像。 有时,可以从场景文件创建单一的图像。 但是,常见的操作是建模并渲染多个图像,然后将其组合成动画。
  • 传媒娱乐行业往往使用渲染工作负荷来生成特效 (VFX)。 广告、零售、石油和天然气及制造等其他众多行业也会使用渲染。
  • 渲染过程属于计算密集型工作;要生成的帧/图像数可能很多,而渲染每个图像可能需要大量的时间。 因此,渲染是一个完美的批处理工作负荷,可以利用 Batch 类服务来并行运行多个渲染器。

5 、渲染云厂商

各大通用类云厂商,一般都是通过直接买买买,获得了云渲染的能力。

也有一些是直接定位为渲染领域的专业云:

瑞云,又独立搞了个“青椒云”。这么看来,华为云如果想要进入渲染计算,也得买个小帮手才行啊~

6 、渲染大客户

一般就是各大渲染厂商,也就是制作动画片的大厂。比较有名的“追光动画”大家总有听说过吧。

今年疫情,电影行业受挫,估计这些渲染厂家日子不好过。。

7 、渲染软件的生态

要计算那些光线追踪的像素颜色,就得有专门的软件。

这些软件有开源的,有商业的。大部分都在Windows或者Mac上面(毕竟Mac才是设计师们的宝贝)。当然,也有不少是支持在Linux的。

看Google趋势,热门的渲染软件如上。基本上渲染软件都在下面:

8 、容器搞渲染集群?

既然渲染是完美的批处理,每个步骤的处理互相不影响,可以分布式大规模同时进行。

同时,容器技术,天然适合大规模运行环境的复制。

那能不能使用Docker容器技术,做大规模的渲染集群呢?

答案当然是肯定的。

2019年1月份,GoogleCloudSony PicturesImageworks合作推出了OpenCue,高性能的开源渲染管理器,专门针对VFX和动画功能而设计。Apache 2.0许可

Google云,也基于OpenCue,推出了渲染解决方案:

https://cloud.google.com/solutions/creating-a-render-farm-on-gcp-using-opencue?hl=zh-cn

9 、容器渲染集群尝试

毕竟咱是搞容器的嘛,所以小组也针对这个OpenCue做过原型验证,还给他们提了贡献呢:-)

安装Maya,安装插件:

配置渲染任务:

投递渲染任务,容器们开干啦:

额,容器估计要统一宇宙了。

点击关注,第一时间了解华为云新鲜技术~

3D渲染集群,你了解多少?的更多相关文章

  1. OSG 集群渲染 cluster render 支持 Cave 和 powerwall 模式

    写了几天.用OSG,实现了集群渲染,感觉还不错,线性加速比还算能够.採用KDTree .八叉树管理场景.场景数据通过UDP和TCP. 不用复制文件,直接在线读取(主节点向渲染节点同步模型数据).效率基 ...

  2. zhihu spark集群,书籍,论文

    spark集群中的节点可以只处理自身独立数据库里的数据,然后汇总吗? 修改 我将spark搭建在两台机器上,其中一台既是master又是slave,另一台是slave,两台机器上均装有独立的mongo ...

  3. 【实时渲染】实时3D渲染如何加速汽车线上体验应用推广

    在过去,一支优秀的广告片足以让消费者对一辆汽车产生兴趣.完美的底盘线条或引擎的轰鸣声便会让潜在买家跑到经销商那里试驾.现在,广告还是和往常一样,并没有失去其特性,但86%的买家在与销售交流之前会在网上 ...

  4. Redis集群~StackExchange.redis连接Twemproxy代理服务器

    回到目录 本文是Redis集群系列的一篇文章,主要介绍使用StackExchange.Redis进行Twemproxy(文中简称TW)代理服务的连接过程,事务上,对于TW来说,我们需要理解一下它的物理 ...

  5. Memcached【Magent+Memcached】集群

    Memcached介绍  事件处理libevent是个程序库,它将Linux的epoll.BSD类操作系统的kqueue等事件处理功能封装成统一的接口.即使对服务器的连接数增加,也能发挥O(1)的性能 ...

  6. Hadoop集群(第1期)_CentOS安装配置

    CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会获得七年的支持(通过安全更新方式 ...

  7. 分布式架构高可用架构篇_05_fastdfs集群的安装

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  8. 分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  9. 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

随机推荐

  1. Python访问列表中的值

    Python访问列表中的值: 列表中可以包含所有数据类型: # 列表中可以存放 数字数据类型数据 # int 型数据 lst = [1,2,3] print(lst) # [1, 2, 3] # fl ...

  2. PDO::__construct

    PDO::__construct — 创建一个表示数据库连接的 PDO 实例(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 PDO::__constru ...

  3. PDOStatement::closeCursor

    PDOStatement::closeCursor — 关闭游标,使语句能再次被执行.(PHP 5 >= 5.1.0, PECL pdo >= 0.9.0) 说明 语法 bool PDOS ...

  4. luogu P4948 数列求和 推式子 简单数学推导 二项式 拉格朗日插值

    LINK:数列求和 每次遇到这种题目都不太会写.但是做法很简单. 终有一天我会成功的. 考虑类似等比数列求和的东西 帽子戏法一下. 设\(f(k)=\sum_{i=1}^ni^ka^i\) 考虑\(a ...

  5. Hadoop学习问题记录之基础篇

    目的 记录学习hadoop过程中遇到的基础问题,无关大小.无关困扰时间长短. 问题一 全分布式环境中运行mapred程序,报异常:java.net.NoRouteToHostException: 没有 ...

  6. SparkSQL JDBC和JDBCServer区别

    注意SparkSQL JDBC和SparkSQL JDBCSever是完全两种不同的场景. SparkSQL JDBC SparkSQL可以使用JDBC的方式访问其他数据库,和普通非spark程序访问 ...

  7. Linux的VMWare中Centos7磁盘分区管理 fdisk分区和制作文件系统格式化和开机自动挂载

    一.硬盘的组成零件扇区 磁道 磁盘容量 磁盘分区 简介 硬盘由容量.柱面数.磁头数.扇区数 C/H/S, Cylinder, Head, Sector(柱面/磁头数/扇区数) 1.磁头数表示硬盘总共有 ...

  8. AsyncTask被废弃了,换Coroutine吧

    本文主要是学习笔记,有版权问题还请告知删文 鸣谢:guolin@第一行代码(第三版) 你是否也在最近的代码中看见了 AsyncTask 被一条横杠划掉了 这表明--他要被Google放弃了 Googl ...

  9. 利用描述符自定制property

    利用描述符自定制property class Lazyproperty: def __init__(self,func): # print('==========>',func) self.fu ...

  10. 说说Spring中的 @RestController 和 @Controller

    Spring MVC执行流程已是JAVA面试中老生常谈的问题,相信各位小伙伴也是信手拈来.今天我们来谈谈另一个面试中必会必知的问题: @RestController和@Controller的区别? S ...