第11回: Python,制作

目次

Python基礎

Pythonとは

Pythonはシンプルで読みやすく,覚えやすいプログラミング言語です.オープンソースで,手間のかかるコンパイルがない手軽さから,プログラミング初学者の教育用にも多く用いられています.
また,プロフェッショナルからも愛用され,ビッグデータ,機械学習などのデータサイエンス分野でも主要な言語として使われおり,豊富なライブラリが用意されています.
「プログラミング言語ランキング」で検索すると,その人気の度合いが見て取れると思います.
TouchDesignerではあらゆる場面でPythonスクリプトを書いて実行することができ(すでに少し書いてしまっていますが),必要な箇所でうまく使用していくことでテキストベースのほうが得意な処理はPythonで行なうというような使い分けをしていくと良いでしょう.

Text_DATで書いてみる

TouchDesignerでPythonスクリプトを書く最も原理的な方法は,Text DAT内に書く方法です.
その際Processingで出ていたコンソールウィンドウに当たるものを出すには,Textport and DATSというウィンドウを出します.
Textportにはprint関数によって文字列が出力されたり,そのままPythonのコードも書けます.また,エラーが出たときにもエラーの内容を表示します.
常にどこかに表示しておくようにすると良いでしょう.

Text DATに書いたPythonスクリプトを実行する方法は,Text DAT上で右クリック>Run Scriptか,ctrl-r or Cmd-rで実行してください.


他のscriptから実行する場合は

op('オペレータ名').run()

とすることで実行できます.
run()には引数も渡せます,今回は割愛します.

PythonとProcessingの比較

PythonとProcessingでは型の宣言の仕方から関数の書き方やクラスの書き方,インデントなどあらゆるところが似てはいますが,異なるので注意が必要です.

Processing:

int num; //整数型を宣言
num = 10; //10を代入
print(num); //numをコンソールに出力

Python:

num = 10
print(num) //numをコンソールに出力

Pythonは「動的型付き言語」に分類される言語で,変数の型が状況に応じて動的に決定されます.
つまり,Processingで宣言していた型を明示的に指定する必要がありません.

文末とインデント

Pythonの文末にはセミコロンが不要です.

条件分岐

Processing if文:

int num = 10;
int thre = 5;
if (num >= thre) {
    print("numは" + str(thre) + "以上です");
}
else {
    print("numは" + str(thre) + "未満です");
}

Python if文:

num = 10
thre = 5
if num >= thre:
    print('numは' + str(thre) + '以上です')
else:
    print('numは' + str(thre) + '未満です')

条件分岐の条件式にカッコは不要です.
また,条件式の後にはコロンを書きます.
次の文はタブによる空白があります.これは4文字のスペースでも代用できます.
TouchDesignerでは関数などがタブで作られているので,自分でインデントするときはタブキーで対応しましょう.
(ただ,業界全体としては業界全体としては,スペースで統一することが推奨されているようです.)

繰り返し

Processing forループ:

int num = 10;
for (int i = 0; i < num; i++) {
    print(i);
}

Python forループ:

num = 10
for i in range(num):
    print(i)

in range(数)によって繰り返し回数を指定できます.
pythonのforループには他にも色々なループの回し方があり,用途で使い分けられて便利です.

Script系オペレータ

Script CHOP, Script SOPなどScriptを仕込むことのできるオペレータがあります.

課題

授業内課題

図のようにairports.csvからデータビジュアライゼーションを球面上にマッピングしなさい

要件

  • Script CHOPを挟むことで,x,yのデータからx,y,zの球面上データにすること
  • ファイル名を学籍番号+名前(ローマ字).toe として添付して提出(例: 11111111SeiyaAoki.toe)
  • csvファイルとプロジェクトファイルを同一フォルダに入れて,Zip化して添付すること

締切: 2020年7月24日15:50
提出先: Google Classroom


来週までの課題

最終作品に向けたアップデート版を提出しなさい.

要件

  • ファイル名を学籍番号+名前(ローマ字).toe として添付して提出(例: 11111111SeiyaAoki.toe)
  • 関連ファイルがある場合は,同一フォルダに格納後ZIP化して提出すること

締切: 2020年7月23日23:59
提出先: Google Classroom