基礎編今いる場所(Network Path)

#TouchDesigner099

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

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

前回、基礎編CHOP Exportをする際に開くダイアログで触れた、[Relative CHOP Refernceの相対参照](https://qiita.com/roundjam/items/05088c4767fd3b4cff80#relative-chop-reference%E3%81%AE%E7%89%B9%E5%BE%B4)とか[CHOP Referenceの絶対参照](https://qiita.com/roundjam/items/05088c4767fd3b4cff80#chop-reference%E3%81%AE%E7%89%B9%E5%BE%B4)という話しの中で、そもそもTouchDesignerを立ち上げたばかりの初期状態で今いる場所は「実はproject1と名づけられたcontainerというオペレータの中」であると書きました。
この辺、使いはじめたばかりだと何のこっちゃかよくわからん状態かと思いますが、後々、人様に自分の作ったものをお見せする際に多用するPerform mode[oishihiroakiさんの記事](https://qiita.com/oishihiroaki/items/aa63a05e1158319170a7)などで必要になる概念なので、以下説明をしてみまます。

##自分が今いる場所(Network Path)
タイトルに「Network Path」と書きましたが、これは自分が見ている画面や特定のファイルの場所などを表す住所のような概念であり、TouchDesigner独自の考え方ではありません。
Windows 10にしたところで、デスクトップの画面は実はCドライブのユーザフォルダの中（C:\Users\ユーザ名\デスクトップ）にあるわけです。
これと同じように、TouchDesingerにおいても立ち上げたばかりの初期状態で見えている画面は、project1と名づけられたContainerコンポーネント（COMP）というオペレータの中にいます。正確な場所は画面上部にいつも表示されていて、この住所のことを公式には[Network Path](https://www.derivative.ca/wiki088/index.php?title=Network_Path)と呼びます。
![ファイルパス.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/1dd71d20-b300-931f-b6a5-8dfebd95d4b8.jpeg)

##住所の先頭(root)
Network Pathの一番先頭の「/」は、住所のいちばん先頭を表しています。(地球、日本、東京都、千代田区で住所を表現するとしたら、一番先頭の地球にあたる概念です。)このスラッシュで表される場所を[root](https://www.derivative.ca/wiki088/index.php?title=Root)と呼びます。
このスラッシュをクリックして表示される選択肢からさらにスラッシュをクリックして下さい。
![root.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/101278d9-a930-3e22-87b4-a18322d12d2f.jpeg)

Yeeeeeesssssss!!!!!!
どこだここは。いつもと違う風景が見えてきましたよ。
![root2.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/c6d110ed-e68e-f8f8-c629-edde0a51901f.jpeg)

ここが地獄の一丁目、TouchDesignerの住所の先頭です。そして、rootの実体がここです。今まで見えていた画面はあくまでproject1の中身であったことがわかると思います。

###rootで見えているもの
rootにはproject1のほかに、performと名づけられたwindow COMP とlocalと名づけられたbase COMPも見えました。
初期状態でperform modeにする（F1キーを押す）とこんな感じでウィンドウが開きますが、このような画面制御を行っているのが、実はこのperformと名づけられたwindow COMPなのです。
![perform.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/982296e3-47b4-18bd-dc2b-29619e5236a3.jpeg)
いつもの画面はNetwork Editorという開発モードですが、人様にお見せするモードがperform modeなのです。で、perform modeの様々な設定は、このperformと名づけられたwindow COMPで行います。
いつものproject1のひとつ上の階層に移動してはじめてperform modeの全貌が見えてきますので、Network Pathという概念を理解しておいた方がよいと思ったわけです。
ちなみにこのperform modeのでかいウィンドウを閉じるときはescを押してください。
perfrom mode については、前述の[oishihiroakiさんの記事](https://qiita.com/oishihiroaki/items/aa63a05e1158319170a7)がおすすめです。
※rootにあるlocalというbase COMPの中に入るといくつかオペレータが見えます。これらはTouchDesingerで使う基本的な諸々の機能を実現していますので、じっくりと各オペレータを研究してみるとおもしろいと思います。でも間違ってlocalを消すと、TouchDesignerの便利機能がいくつか吹っ飛びますのでご注意下さい。
※ややこしくなりますが、perform modeを制御するためのwindow COMPは必ずrootにおかなければならないというルールはないです。ただ、本稿は基礎編なので立ち上げたばかりのTouchDesignerをいじるという前提でいろいろと書いてます。

##絶対参照と相対参照
で、やっと[前回](https://qiita.com/roundjam/items/05088c4767fd3b4cff80)につながる話しなのですが、CHOP ExportのダイアログでRelative CHOP ReferenceかCHOP Referenceを選択すると、絶対参照か相対参照でオペレータの場所を特定します。絶対とか相対とかよくわからんぞ！という方もいるかも知れないですが、要は住所の表現の仕方（Network Pathの表現の仕方）の違いだけです。住所という本質的な機能は同じです。

###絶対参照
[まずは、前回の話の通りCHOP Referenceを選択してみると。。。](https://qiita.com/roundjam/items/05088c4767fd3b4cff80#chop-reference)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3230383233392f31633634393864642d666436302d653530372d393239362d3138333832326534303463662e6a706567.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/9449753c-8700-63cb-43d6-a7b929d7ff8a.jpeg)

これはわりとわかりやすいと思います。住所の先頭（つまり「/」で表されるroot）から厳密に愚直に素直に書いているだけです。繰り返しになりますが、noise1はrootに存在するproject1というオペレータの中にあるのでこのような表記になるわけです。

###相対参照
[今度は、Relative CHOP Referenceを選択してみると。。。](https://qiita.com/roundjam/items/05088c4767fd3b4cff80#relative-chop-reference%E3%81%AE%E7%89%B9%E5%BE%B4)
![relative.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/6e72b911-f9ce-a787-fdd7-9bbed1ed76d3.jpeg)
なんということでしょう。。。絶対参照ではnoise1の手前に記述されていた/project1/がありません。これは、自分が今いる位置を基準にして表現しているためです。

もう少し正確に書くと今言っている「自分」というのはdisplace1です。で、参照先となるnoise1はdisplace1と同じ階層にいます。
・自分（displace1）がいる場所を絶対参照で表現すると　/project1/displace1
・参照先（noise1）がいる場所は絶対参照で表現すると　/project1/noise1
displace1からみたnoise1は、自分（displace1）と同じ階層（project1の中）にいるので相対参照の場合は、/project1/を省略しているわけです。
郵便物を例にとると↓こんな感じです。

■絶対参照
・発送元：東京都千代田区丸の内１丁目
・送付先：東京都千代田区外神田１丁目

■相対参照
・発送元：丸の内１丁目
・送付先：外神田１丁目

同じ階層の住所は省略しているわけです。
また、これを少し応用してみますと、仮に同じ階層にあるgeo1というオペレータの中にnoise1があったとして、自分（displace1）が今いる場所からみてnoise1を相対参照で表現すると　geo1/noise1となります。
![relative3.jpg](https://qiita-image-store.s3.amazonaws.com/0/208239/79e66c03-2103-89eb-989c-49f9a62ed9ab.jpeg)


##どっちを使うの？
意味はわかったけど、絶対と相対のどっち使えばいいの？という疑問も沸くと思います。
どちらが便利かというのは場合によりまして、TouchDesignerというより汎用的な意味で[こちらが詳しく解説してくださってます](http://proengineer.internous.co.jp/content/columnfeature/5229)。
ぶんなげで終わってすみませんが、冒頭述べたとおりパスという概念はありとあらゆるシステムで共通しているので。。。

以上で、TouchDesignerを立ち上げたばかりの初期状態で今いる場所に関する解説は終わりです。