基礎編CHOP Exportをする際に開くダイアログ

###TouchDesigner099
自分が使い始めた時につまづいたことなどを備忘録として書いていきます。

非商用版 https://www.derivative.ca/099/Downloads/
をダウンロードし、インストール。その際、公式サイトでユーザ登録したり、そこそこグラフィックに強いマシンの用意などが必要です。その辺は無事乗り越えて立ち上げたばかりの状態をもとに以下記述します。
プログラミング自体あまり経験のない方にも分かりやすく書こうとしていますので、少し冗長であるかもしれません。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3230383233392f36656139623230312d646130342d333239382d653232322d3139626630356530353635652e6a706567.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/005fd61b-9fc1-ef49-0a46-67670de556c6.jpeg)

今回は、[基礎編オペレータ同士をつなぐ実線と点線の違い](https://qiita.com/roundjam/items/27041034bfa78c78c942)で触れた内容で、CHOP Exportをする際に開くダイアログについて解説します。
まずは、前回触れた記事の[点線パタン2](https://qiita.com/roundjam/items/27041034bfa78c78c942#%E7%82%B9%E7%B7%9A%E3%83%91%E3%82%BF%E3%83%B32export-chop)
を参照し下記のようなCHOP Exportのダイアログを開いてください。
![CHOP.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/1976dd79-679a-1c8a-e9ef-d19a890c0123.jpeg)
このダイアログを上から順に説明します。

##Export CHOP
まずは一番上のExport CHOPです。
[前述の通り、noise1からdisplace1のUV Weightへリンク](https://qiita.com/roundjam/items/27041034bfa78c78c942#%E7%82%B9%E7%B7%9A%E3%83%91%E3%82%BF%E3%83%B32export-chop)をし、ダイアログからExport CHOPを選択します。
すると、下記の通りdisplace1のUV Weightがnoise1のチャンネル1(chan1)によって制御されます。
次に、下図の右の赤丸で示すようにDisplace1のパラメータウィンドウのUV Weightの左端あたりにカーソルを合わせてください。すると何やら「+」マークが現れるのでそこをクリックすると、、、、
![chop1.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/2c7b482e-812e-557a-55b0-2eb22a867a46.jpeg)

YEEEEESSSSSS!!!!!!!
UV Weight欄のパラメータのリンクについて、noise1:chan1と表示されました。
つまりこれが後述するものも含め、CHOPからの[リンク](https://qiita.com/roundjam/items/27041034bfa78c78c942#%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A1%E3%83%9F%E3%83%AA%E3%81%AE%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AF%E7%82%B9%E7%B7%9Alink%E3%81%A7%E3%81%A4%E3%81%AA%E3%81%8C%E3%82%8B)の詳細を意味しています。

では、Export CHOPの詳細を見ていきます。
noise1:chan1　という表記は、見ての通りソースとなるオペレータ名：（ソースとなるオペレータ名の）チャンネル名という構成です。
![chop2.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/514e38b4-c531-a182-3f4f-b10a4697f9f6.jpeg)

###Export CHOPの特徴

・一度ソースとターゲットの関係を設定すると、この関係性を修正する際には当該パラメータの上で右クリックしてRemove Exportを選択し消去してから再度リンクを張りなおして再設定する必要があります。逆に、間違って設定を消すということになりにくいので、それはメリットといえるかもしれません。→ごめんなさい。これですが、再確認したところ一度設定したExport CHOPを上書きしたり、後述するCHOP Referenceで上書きすることもできるようです。が、操作性に若干くせがあるようですので動作を確実にするためにやはり一度設定したExport CHOPをRemove Exportしてから再設定することをお勧めします。
![chop3.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/1a1e8481-a7a8-b8be-772a-4f27eb7ca5c5.jpeg)

・Export FlagをON/OFFすることでExport CHOPを有効/無効することが可能。ちなみにこの機能は、後述するRelative CHOP Reference等にはありません。この機能のおかげで、CHOPからのパラメータ制御の動作確認をするという意味では、Export CHOPが一番使いやすいかもしれません。

 ![chop4.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/d96cbbbc-a816-f0c3-23fe-89bc8aebd97c.jpeg)

##Relative CHOP Reference
次に、ダイアログの上から二番目Relative CHOP Reference（相対CHOP参照）です。
前項のExport CHOPと同じように、Linkを設定しUV Weightのパラメータを見ると今度は
op('noise1')['chan1']
と表記されています。
これはExport CHOPと同じく、noise1のchan1によって制御されていますよという意味ですが、お気づきの通りなにやらopだとか()とか、[]とかでてきました。
これは、Export CHOPと異なる特徴のひとつです。以下詳細を見ていきます。

###Relative CHOP Referenceの特徴
・pythonの文法に従った自由度の高い記述
このop('noise1')['chan1']という命令そのものが編集できるので、自由度の高い制御が可能となっています。（記述方法は[python](https://ja.wikipedia.org/wiki/Python)という言語の文法に従い表現されています。
op('noise1')というのは、Touch Designerのoperatorのnoise1を意味しています。Touch Designerのpythonによる制御はまた別項目を用意したいと思っていますが、長くなりそう。）
自由な記述ができることの例として、
op('noise1')['chan1'] の後に、* 2と追加してみましょう。
![chop5.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/27be25b4-a306-ed7c-1538-d80cc7126220.jpeg)
すると、displace1の画像の揺れが激しくなったと思います。noise1で生成される乱数を2倍にしたので、効果も2倍になりました。このようにpythonの形式に従いさえすれば自由に編集できるというのがExport CHOPにはない、CHOP Referenceの強みです。

・相対参照
Relative CHOP Referenceという通り、noise1の存在する位置が相対的に表現されます。
（Touch Designerを立ち上げた初期状態の場合、実はnoise1はproject1というcontainerオペレータの中にいます。相対とは何ぞやという方は[こちらのページ](http://proengineer.internous.co.jp/content/columnfeature/5229)がうまく説明してくださっています）
つまり、仮にソースとなっているnoise1が今いるproject1というCOMPの外にあったとしても下記のような記述をすることで指定することができます。
op('../container1/noise1')['chan1']
この辺は全く初めてTouch Designerに触った方には理解しにくいと思います。説明足りずごめんなさい。


##CHOP Reference
次にダイアログの上から3番目のCHOP Referenceを見ていきます。
いつもの通り、UV Weightのパラメータを見ると今度は
op('/project1/noise1')['chan1']とあります。
![chop7.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/1c6498dd-fd60-e507-9296-183822e404cf.jpeg)
これは、前述のRelative CHOP Referenceと異なり、絶対パスによる参照といわれるもので表記されています。
違いはそこだけで、それが特徴です。

###CHOP Referenceの特徴
・絶対参照
前述の通りTouch Designerを立ち上げた初期状態の場合、実はnoise1はproject1と名づけられたcontainerというオペレータの中にいますので、noise1の存在する場所を正確に（というか絶対的な位置として）表現すると
/project1/noise1
という表記になります。
これはつまりproject1の中にいるnoise1ですよ。という場所を特定した表現です。
機能としての違いは参照の仕方が異なる以外はRelative CHOP Referenceを選択した場合と全く同じ。なのですが、CHOP Referenceを使うメリットとしては、今いる位置からは見えない（違う階層にいる）CHOPファミリのオペレータを明示して制御できる点かと思います。
（この辺も使い始めたばかりの方には意味不明ですよね。。。説明不足かもしれません。ごめんなさい。今のところは読み飛ばしていただいて構わないと思います。）


##Current CHOP Value
ではさらに次のダイアログの選択肢から、Current CHOP Valueを選択します。これはNoise1からdisplace1へリンクの設定をしたその瞬間、Noise1によって生成された値をUV Weightへ出力するだけです。

##Text
では、ダイアログの最後、Textを選択します。
これは、オペレータの位置とチャンネル名を自動的に入力してくれます。
今はnoise1のchan1をソースとしていますので、/project1/noise1 chan1という表記がされたと思います。
![chop8.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/1e476260-8651-890e-233c-83b0d8c45a79.jpeg)

でも、これはこのままでは何も実質的な機能はありません。（UV Weightの欄が赤くマスクされ、エラーであることか示されます）
先ほどのCHOP ReferenceやRelative CHOP Referenceのようにpython形式で手書きでLinkを張るときに、このTEXTを使ってソースの記述をするという、補助的な機能と僕はとらえています。