﻿WEBVTT

00:00:00.641 --> 00:00:03.331
嗨，歡迎來到"藝術家的腳本"

00:00:03.694 --> 00:00:07.054
這是一個關於Blender腳本的系列視頻教程

00:00:07.550 --> 00:00:11.325
它針對的是那些不一定想成為程序員的人

00:00:11.735 --> 00:00:15.525
但對他們來說，腳本可能是有所幫助的

00:00:15.525 --> 00:00:18.375
而且它可以在很多事情上都很有用

00:00:18.375 --> 00:00:20.105
我們很快就會看到

00:00:20.105 --> 00:00:24.080
在我們開始之前，讓我先介紹一下我自己

00:00:24.080 --> 00:00:25.930
我的名字是Subren Stuvel

00:00:25.930 --> 00:00:28.150
我是一名核心Blender開發者

00:00:28.150 --> 00:00:30.390
我曾在Blender研究所工作過

00:00:30.390 --> 00:00:32.900
我有在藝術家身邊工作的經驗

00:00:32.900 --> 00:00:35.215
我曾在Blender Cloud本身工作過

00:00:35.215 --> 00:00:37.320
也曾在Flamenco做過tractor

00:00:37.320 --> 00:00:40.425
我還有一個計算機動畫專業的博士學位

00:00:40.425 --> 00:00:43.175
期間我在Blender遊戲引擎上工作過

00:00:43.175 --> 00:00:46.395
之後，我開始在Blender研究所這裡工作

00:00:46.395 --> 00:00:49.590
這個系列的內容是關於Blender的腳本編寫

00:00:49.590 --> 00:00:52.240
基本上就是讓Blender自己按按鈕

00:00:52.240 --> 00:00:54.915
如果你曾做過任何需要大量點擊

00:00:54.915 --> 00:00:57.005
和大量重複的“猴子”工作

00:00:57.123 --> 00:00:59.988
這可能是可以幫助到你的系列教程

00:00:59.988 --> 00:01:02.308
腳本編寫的例子會很有用

00:01:02.308 --> 00:01:05.128
我們對骨骼或對象進行批量命名

00:01:06.092 --> 00:01:09.887
或者在某個目錄下渲染10000個OBJ文件

00:01:10.128 --> 00:01:13.323
有一點要記住的是，計算機是愚蠢的

00:01:14.313 --> 00:01:16.493
他們只會按照要求去做

00:01:16.493 --> 00:01:19.303
一行一行，一個字一個字地去做

00:01:19.303 --> 00:01:21.683
而不會真正去思考你的意思

00:01:21.855 --> 00:01:26.175
所以說，一定要謹記字面意思，這是很好的

00:01:26.286 --> 00:01:28.906
那麼這個系列的介紹就到這裡了

00:01:29.322 --> 00:01:32.507
我們先去用Blender本身做一些實用的東西

00:01:33.588 --> 00:01:36.058
然後就可以用Python來編程了

00:01:36.378 --> 00:01:40.798
那是一門相當不錯的語言，讀起來相當容易理解

00:01:40.891 --> 00:01:44.556
而且，它還可以讓你在交互式地玩弄它

00:01:44.829 --> 00:01:49.014
所以，讓我們深入到Blenders的"python控制台"中

00:01:49.014 --> 00:01:51.979
在我切換完之後，就是這樣子了

00:01:52.050 --> 00:01:54.455
所以這裡是默認的啟動文件

00:01:55.332 --> 00:01:58.437
我們可以把時間線換成Python控制台

00:02:00.091 --> 00:02:02.581
因為我們現在不需要時間線

00:02:02.581 --> 00:02:08.481
我們來做一些計算，3×4=12，2加3×4=14

00:02:12.383 --> 00:02:15.493
因為乘法和除法都是先於加法和減法

00:02:19.029 --> 00:02:24.264
所以如果要先做加法，就要用小括號，(2加3)×4=20

00:02:27.650 --> 00:02:31.350
我們去看看能不能對那個默認的立方體做一下

00:02:31.350 --> 00:02:34.075
如果我們在3D視窗中按N鍵

00:02:35.096 --> 00:02:37.256
可以看到x y z的位置

00:02:38.553 --> 00:02:40.998
讓我們把它移到別的地方去

00:02:41.178 --> 00:02:44.443
所以如果把鼠標懸停在位置輸入框上

00:02:44.443 --> 00:02:46.053
可以看到Python信息

00:02:46.112 --> 00:02:49.802
bpy.data.objects.cube.location.0

00:02:50.706 --> 00:02:54.926
這基本上是指從Blender界面的點得到物體的數據

00:02:57.704 --> 00:03:01.534
有對象，從這些對像中，我要有cube

00:03:01.534 --> 00:03:04.589
cube有一個位置，而位置有幾個分量

00:03:04.589 --> 00:03:08.734
X是分量0，Y是分量1，Z是分量2

00:03:11.242 --> 00:03:15.397
我們可以把它複製到我們的Blender Python控制台中

00:03:15.467 --> 00:03:18.252
bpy.data.objects["Cube"]，location[0]

00:03:22.692 --> 00:03:25.002
這樣就可以得到X的位置

00:03:26.488 --> 00:03:31.238
而location 1就可以得到Y的位置，當然2就可以得到Z

00:03:35.288 --> 00:03:38.058
另外，你也可以用字母來表示

00:03:38.842 --> 00:03:42.537
所以實際上有一個".X"，做同樣的事情

00:03:43.051 --> 00:03:45.941
我比較喜歡那些稍微有點好的名字

00:03:45.941 --> 00:03:48.506
如果你只給它們取名X Y和Z

00:03:50.990 --> 00:03:53.435
會讓你的腳本更容易讀懂一點

00:03:53.435 --> 00:03:57.190
這並不局限於讀取，我們還可以寫到它

00:03:57.190 --> 00:03:59.710
所以我們可以把".Z"設置為0

00:03:59.710 --> 00:04:04.815
然後cube會回到0點，或1，或者加=，表示增量

00:04:07.017 --> 00:04:10.092
增量0.1，我們就可以繼續使用

00:04:12.596 --> 00:04:17.216
我在控制台按下向上箭頭鍵，它給出了前面的命令

00:04:17.216 --> 00:04:21.866
然後按回車鍵，這樣就不用再用手輸入所有的內容了

00:04:23.777 --> 00:04:26.027
我們還可以直接指定位置

00:04:26.426 --> 00:04:28.711
而不是單獨指定每個組件

00:04:30.446 --> 00:04:32.616
通過刪除最後一個組件

00:04:33.154 --> 00:04:36.004
然後在括號裡給它分配三個數字

00:04:36.764 --> 00:04:40.409
比如像這樣，然後我們同時設置X Y Z

00:04:44.006 --> 00:04:45.866
這對Scale也是有效的

00:04:56.346 --> 00:04:58.051
對Rotation也是如此

00:05:02.981 --> 00:05:07.556
只是在 Python 的方面，旋轉總是與 Radiance 一起工作

00:05:08.790 --> 00:05:12.890
而不是與你在 UI 中可能看到的 Degrees 一起工作

00:05:13.713 --> 00:05:16.468
所以這可能需要一點時間來適應

00:05:16.913 --> 00:05:20.128
還有一件事可能會讓事情更容易打字

00:05:20.735 --> 00:05:23.660
那就是Python控制台支持自動完成

00:05:25.001 --> 00:05:27.471
所以你可以先輸入bpy.da

00:05:27.471 --> 00:05:30.561
然後按Ctrl加Space，自動補全data

00:05:30.561 --> 00:05:35.451
再輸入.ob，ctrl加空格，補全object，["Cube"]你要自己打

00:05:35.451 --> 00:05:39.546
但是.ro，ctrl加空格補全後再來個euler

00:05:39.546 --> 00:05:43.761
所以這個是用Ctrl加空格完成的，可以很好用

00:05:43.761 --> 00:05:46.701
也可以幫你搞清楚有什麼東西要打字

00:05:48.056 --> 00:05:50.451
所以這裡就有一整張清單了

00:05:52.853 --> 00:05:55.968
順便說一下，你可以在文檔中找到

00:05:55.968 --> 00:05:59.143
如果你去幫助，然後Python API 參考

00:05:59.143 --> 00:06:01.193
你就會得到所有這些信息

00:06:01.193 --> 00:06:03.398
但我們稍後會講到這一點

00:06:03.398 --> 00:06:05.843
讓我們來看看其他一些東西

00:06:05.843 --> 00:06:10.043
我們可以在Blender用戶手冊中找到關於Python的信息

00:06:10.043 --> 00:06:12.953
我們已經看到了現有對象的這些屬性

00:06:12.953 --> 00:06:17.583
讓我們看看我們是否可以刪除或許創建一些新的對象

00:06:17.583 --> 00:06:19.648
這是用operators來完成的

00:06:19.648 --> 00:06:21.973
operators是Blender將某些功能

00:06:21.973 --> 00:06:25.358
綁定到界面中的菜單項或按鈕的方式

00:06:27.741 --> 00:06:31.766
所以我們可以做的就是將鼠標懸停在Button上

00:06:31.851 --> 00:06:34.371
然後你就會看到operators命令

00:06:34.395 --> 00:06:36.250
你甚至不需要記住它

00:06:36.250 --> 00:06:38.680
你只需按Ctrl加C鍵複製

00:06:38.944 --> 00:06:43.229
然後按Ctrl加V鍵粘貼到控制台，就可以了

00:06:43.942 --> 00:06:47.277
所以，現在我們已經刪除了一個對象

00:06:47.277 --> 00:06:49.502
我們來看看創建一個對象

00:06:49.502 --> 00:06:50.732
你按Shift加A

00:06:50.732 --> 00:06:53.387
然後在一個操作項上懸停鼠標

00:06:53.732 --> 00:06:56.767
你看到bpy.ops.mesh.primitive_uv_sphere_add()

00:06:59.476 --> 00:07:01.321
那麼再按Ctrl加C

00:07:02.347 --> 00:07:07.522
然後在控制台中按Ctrl加V鍵，輸入，就有了你的球體

00:07:08.255 --> 00:07:10.665
這個有點無聊，是默認的

00:07:10.909 --> 00:07:13.814
讓我們來看看能不能做一些事情

00:07:14.397 --> 00:07:15.352
不要害怕

00:07:15.378 --> 00:07:19.903
如果你還不了解這些選項，我稍後會給你一些資料

00:07:20.358 --> 00:07:23.208
你可以在這裡找到它們的具體作用

00:07:23.722 --> 00:07:26.027
那麼，讓我們在(1，2，3)的位置

00:07:28.312 --> 00:07:31.277
創建一個大小等於0.10的小球

00:07:35.204 --> 00:07:38.124
在那裡，你有一個非常小的球體

00:07:38.899 --> 00:07:42.869
讓我們在不同的位置創建一個大一點的球體

00:07:49.679 --> 00:07:50.874
就這麼簡單

00:07:52.355 --> 00:07:56.035
我們已經在Blenders用戶手冊中找到了不少信息

00:07:57.114 --> 00:07:59.399
但也有Blenders的API文檔

00:08:00.314 --> 00:08:04.269
你可以在這裡找到Blender，Python API參考

00:08:05.894 --> 00:08:08.069
它為你打開瀏覽器的信息

00:08:09.094 --> 00:08:11.729
你可以再用那個複製粘貼的技巧

00:08:12.213 --> 00:08:17.423
所以我們來看看，Shift加A，mesh UV sphere，Ctrl加C

00:08:19.433 --> 00:08:23.588
然後我到瀏覽器裡，在快速搜索裡粘貼進去

00:08:26.365 --> 00:08:30.790
點擊第一個鏈接，在那裡就有什麼是什麼的解釋了

00:08:32.692 --> 00:08:35.962
另一個不錯的信息來源是Python標準庫

00:08:37.606 --> 00:08:40.691
那麼到目前為止，我們看到了什麼？

00:08:40.691 --> 00:08:45.006
我們知道計算機很笨，只是把命令一個個做出來

00:08:45.994 --> 00:08:49.204
我們已經看到瞭如何使用Python控制台

00:08:49.592 --> 00:08:53.487
以及如何創建對象、移動對象和修改現有對象

00:08:55.609 --> 00:09:00.324
我們已經看到瞭如何從Blenders用戶界面複製信息的方法

00:09:01.795 --> 00:09:04.465
而且它還指向了一些信息來源

00:09:05.290 --> 00:09:07.785
你可以在這裡找到更多的東西

00:09:07.785 --> 00:09:12.625
所以，在下一個視頻中，我們將看看名稱和對象

00:09:12.625 --> 00:09:13.530
因為輸入

00:09:13.706 --> 00:09:17.906
bpy.data.objects.cube.something.something.something

00:09:19.778 --> 00:09:22.918
過一段時間後，就會變得非常無聊

00:09:22.918 --> 00:09:24.658
在下一個視頻中見

00:09:24.658 --> 00:09:25.383
再見