皮克斯动画特效太好,但特效师容易「手抖」,还好Python来帮忙

简介: 当谈论特效电影时,Python常常被我们所忽略,特效工作者小哥Dhruv Govil要为Python「平反」,他写了篇博客讲述了在动画电影制作的每一个环节,Python都能为特效师们提供极大的便利!

微信图片_20220109171711.png


谁说程序员都是没有感情的代码机器?

 

微信图片_20220109171713.gif


其实,电影工业的技术方面就是程序员艺术性的一面。


微信图片_20220109171716.png


一个从事影视后期的pipeline开发者小哥写了篇博客,讲述Python如何被特效电影所「重用」!


Python:动画故事片的幕后操作手


Python是一种易于读写的编程语言,在过去几年里,它已经成为电影制作过程中不可或缺的一部分。几乎在所有动画长片或视觉特效电影中,Python都发挥了很大的作用。


QQ图片20220109172652.png


今天的电影产业在很大程度上仍然依赖于Python 2.7。


此后会完全过渡到Python 3。


在后期制作中,Python的最大用途是在故事片pipeline中

 

下图形象地描述了工作室的流水线。pipeline是将每个部门连接在一起的箭头,确保每一步都能很好地协同工作。(不同工作室之间可能略有不同,但大体都是如此)

 

微信图片_20220109171720.png


电影制作流水线概述:Storyboard /Footage/Previs(分镜脚本等)是我们获取故事资源的途径,而Compositing/Lighting(合成/照明)则是电影的最后阶段。但视觉效果电影与动画电影略有不同,因为你以分镜的形式额外添加电影镜头元素。

 

如果你觉得图标不够直观,那这部《料理鼠王》的后期制作过程就能帮你get到,注意看右下角的标注:

 

微信图片_20220109171722.jpg


在各个环节中,Python可以说是给后期人员提供了大大的便利。


建模Modeling


建模负责创建其他部门使用的3D源几何图形。这里将涉及到相当多的几何图形,常常令后期师们眼花缭乱。


微信图片_20220109171724.png

 

这就是 Python 派上用场的地方。大多数3D软件包都有一个 Python API,可以让你手动编写所有需要编写的程序。

 

使用Python创建自定义变形器或交互式工具会变得更加复杂,如下图演示的一样:

 

QQ图片20220109172228.png


一些非常有趣的基于Python的建模工具


套索Rigging


套索工具负责创建一个人物几何骨架,就像一个真正的人一样变形。

 

微信图片_20220109171728.gif


Python在操纵中起着不可或缺的作用。以下是一些用法:

 

  • 开发自定义变形器或节点来执行非应用程序本地的操作。


  • 制造自动化的套索工具。无需手动完成所有工作,可以使用代码组合平台,这使得它们易于重用。

 

  • 为动画师开发在模式或控件之间切换的支持脚本。

 

动画Animation

 

动画,本质上是一个创造虚拟演员的工作。

 

但这个过程会包含很多重复性的动作,利用Python脚本,这些动作可以被处理掉,或者简化掉。

 


比如:


  • 选择控制器。把杂乱无章界面变得整洁
  • 创建键。特别是中间键。在2D时代,动画师会定义在键之间(在姿势之间赋予动作的键)作为一个姿势的权重。在3D中,我们可以使用工具来帮助动画师设定新键比旧键重30%的权重
  • 设置约束.。角色会拿起某些道具,因此动画师必须保证角色和手中的道具被捆绑在一起。

 

我们开发的大多数工具都是用Python来做这类事情的,但大多数用户界面都是通过PyQt或Pyside来完成的。

 

角色特技Character FX


现在,我们已经完成了基础性工作,下一步,我们要考虑肌肉,头发和布料这些深层次的视觉效果了。

 

从《长发公主》里飘逸的裙子,到《精灵旅社》里疯狂的发型,再到《自杀小队》里的肌肉模拟,这些都是由FX处理的。


这是使角色逼真最重要的一步。

 

微信图片_20220109171731.gif


《精灵旅社2》中的服装是如何被模拟的


就像之前的工作一样,Python在这里也大有用途。

 

例如:


  • 设置模拟
  • 将多次模拟结合起来
  • 创建全新的程序化工作流

 

特效FX


这是一个与角色 FX 完全不同的工作, 破坏建筑物,爆炸,魔法粒子,甚至整个海洋。这里也在很多方面使用 Python,包括设置过程效果图和脚本参数,否则手工操作会很耗时。


QQ图片20220109172459.png


Python甚至可以用来创建产生有趣效果的整个过程节点,这是非常强大的。


照明Lighting

 

现在所有的3D几何图形都已经创建好了,我们需要把它转换成可以在屏幕上显示的图像,但是如果我们直接这样做,画面会是黑色的。

微信图片_20220109171734.gif


皮克斯开发的渲染引擎


即使在这里,Python也是非常有用的,因为一个场景可能有很多很多的灯光和很多很多的3D资源。在这里,我们可以创建帮助管理这些场景的UI。


通常一个场景中会有数十亿,甚至数万亿的对象,这些对象可以被提炼成简单的用户界面。

 

合成Compositing


终于到合成了。

 

人们通常认为视觉效果是夸张的爆炸或奇奇怪怪的生物,但它也可以是一些细微的东西,比如背景替换,或者增加人群。


微信图片_20220109171736.gif


大多数人都没有意识到,即使是像《阿甘正传》这样看似简单的画面,也要花费多少工作


合成不是单纯的组合,而是使画面具有整体感,这一点并不容易。

 

Python可用于在Nuke等应用程序中自动设置合成节点图,但也可用于使用OpenColorIO或Pillow等库本身执行整个图像处理操作。


我们甚至可以使用 Python for Computer Vision 来帮助跟踪场景中的对象。

 

在动画电影中,Python经常被忽视,因为看起来它似乎不是艺术过程的一部分。


你很少能在屏幕上看到它的直接结果,但是,它是一个越来越有价值的工具,让日益复杂的电影登上屏幕。

 

微信图片_20220109171738.png


参考链接:

https://www.gfx.dev/python-for-feature-film

相关文章
|
数据采集 Linux Python
手抖把Python2.7卸载了,导致了自己的yum不可用
手抖把Python2.7卸载了,导致了自己的yum不可用
439 0
手抖把Python2.7卸载了,导致了自己的yum不可用
|
12天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
3天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
18 4
|
3天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
5天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
15 5
|
3天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
13 1
|
3天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
19 2
|
6天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
10天前
|
数据处理 Python
从零到英雄:Python编程的奇幻旅程###
想象你正站在数字世界的门槛上,手中握着一把名为“Python”的魔法钥匙。别小看这把钥匙,它能开启无限可能的大门,引领你穿梭于现实与虚拟之间,创造属于自己的奇迹。本文将带你踏上一场从零基础到编程英雄的奇妙之旅,通过生动有趣的比喻和实际案例,让你领略Python编程的魅力,激发内心深处对技术的渴望与热爱。 ###