星球大战与Python之间的那些事


Posted in Python onJanuary 07, 2016

Python与星球大战背后的工业光魔

提起Python语言,很多人会想起系统运维、Web开发等工作。很少有人会知道Python也能够用于电影视觉特效的制作,其中就包括了《星球大战》某些电影特效的制作。

星战之父乔治·卢卡斯于1975年创建了工业光魔(全称:Industrial Light and Magic),从第一部《星球大战》起便参与了电影的特效制作。据Python官网介绍,工业光魔从1996年起开始使用Python语言,取代了此前的Unix shell脚本。工业光魔做出这个决定的原因,在于Python的学习难度低,开发速度快。当时,Python还只是1.4版本。

星球大战与Python之间的那些事

电影特效行业竞争十分激烈,制作公司会不断地寻找更加优秀的编程语言,提高工作效率。工业光魔也是一直在评估Python语言的使用,但是近20年以来,还没有找到一个更好的替代品。

工业光魔的资深技术总监Tommy Burnette曾经这样评价道:

  • Python在我们的生产流程中扮演了至关重要的作用。如果没有它,像《星球大战》第二部这样的大项目就很难完成。从集体渲染到批量处理再到影片合成,Python将所有步骤都紧密的粘合在了一起。

由此可见Python的强大。

Star Wars API

你知道《星球大战》系列大战中出现了多少个种族,多少种飞船吗?这些答案都可以在Star Wars API中找到。

星球大战与Python之间的那些事

据开发者介绍,Star Wars API是全球首个量化的、可供编程使用的星战数据集。开发者经过漫长的搜集和整理,汇总了星战系列电影中的人物、种族、星球、飞船等详细数据。目前,这个API中已经收录了《原力觉醒》中的新数据。API的作者还用Python开发了一个helper库。

我们来看看可以用这个库做些什么。

将所有星球按大小排列:

import swapi
for planet in swapi.get_all("planets").order_by("diameter"):
  print(planet.name)

查看哪些人开过1艘以上的飞船:

import swapi
for people in swapi.get_all("people").iter():
  if len(people.starships) > 1:
    print(people.name)

检索Jar Jar Binks是否在电影中出现:

import swapi
pm = swapi.get_film(4)
jj = swapi.get_person(36)
for c in pm.get_characters().iter():
  if c.name == jj.name:
    print("Why George, why.")

Python编写的Star Wars小游戏

最后,再与大家分享一个国外开发者用Python开发的星战相关游戏,希望大家喜欢。

星球大战与Python之间的那些事

这个游戏类似现在的跑酷,通过上下左右方向键控制。

是不是很酷!很赞!很期待!

Python 相关文章推荐
Python smallseg分词用法实例分析
May 28 Python
常用python编程模板汇总
Feb 12 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
在Python程序员面试中被问的最多的10道题
Dec 05 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
python opencv实现简易画图板
Aug 27 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 #Python
Python解析最简单的验证码
Jan 07 #Python
Python中http请求方法库汇总
Jan 06 #Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 #Python
分享Python文本生成二维码实例
Jan 06 #Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 #Python
使用Python神器对付12306变态验证码
Jan 05 #Python
You might like
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
Python中常见的数制转换有哪些
2020/05/27 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
如何利用cmp命令比较文件
2016/04/11 面试题
三月雷锋月活动总结
2014/07/03 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
安全生产先进个人总结
2015/02/15 职场文书
医生个人年度总结
2015/02/28 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python