R12プログラムは文章である。読み書きができる人間なら誰にでも書ける。1XPressoを作るさてこれからXPressoについて勉強していきます。4Dに内蔵されているノードベースのプログラミング環境の名前です。言っても言葉で説明できるものではないので、実際にプログラムを組みながら少しずつ説明していきます。新規ファイルを作成し、ヌルオブジェクトを作成して下さい。このオブジェクトはプログラムとは関係ありませんが、XPressoは「タグ」の形を取るので、オブジェクトが一つもないと作れないのです。XPresso」を選択します。すると、オブジェクトの右にXPressoタグができ、同時にXPresso編集ウインドウが表示されるはずです。World!」を表示させてみましょう。4Dらしい方法で表示させます。スプラインプリミティブ」から「テキスト」オブジェクトを作成して下さい。テキストスプラインオブジェクトをXPresso編集ウインドウにドラッグして下さい。図801-2次に、テキストスプラインに文字を入力するために「定数」ノードを作成します。XPresso編集ウインドウ内で直接新しいノードを作るには、画面内の空いているところで右クリックし、プルダウンメニューから必要なノードを選択します。一般」の中に入っています。先ほどドラッグアンドドロップで作成したノードも、実はこのメニューの中に入っている「オブジェクト」ノードと同じものです。それでは、定数ノードを選択してそのパラメータを属性マネージャに表示させます。World!」と入力します。図801-3次に、この定数ノードの値をテキストスプラインオブジェクトに伝えます。テキスト」ポートを作ります(デフォルトでは、ノードの左側が青く表示され、入力ポートを追加できます。ノードの右側は赤く表示され、出力ポートを追加できます)。図801-4そして、定数ノードとスプラインオブジェクトのポートの間をドラッグアンドドロップしてつなぎます。World!」に変っているはずです。World!」を出してみましょう。XPresso編集ウインドウ内部に出します。これはXPressoのバグチェックをする時にとても便利です。一般」から「結果」ノードを作成して下さい。次に属性マネージャでデータタイプを文字に変更し、定数ノードの出力ポートにつなぎます。World!」と表示されるはずです。図801-7次に、テキストスプラインオブジェクト自体の名前も変えてしまいましょう。名前」ポートを作成し、定数ノードにリンクします。World!」に変っているはずです。XPressoを実行」コマンドを選択したり、オブジェクトマネージャの空いている部分をクリックしてみて下さい。するとXPressoが実行され、表示が更新されるはずです。小さなノードにポートを追加すると表示がはみ出します。このような場合は、Controlキーを押しながらノードのタイトル部分をダブルクリックすると適切にリサイズされます。ここでちょっと実験をしてみましょう。World!」から元の「Text」に戻すのです。World!」に戻るはずです。この名前パラメータはXPressoに支配されていて、オブジェクトマネージャからは変更できなくなっています。これはこれで不便です。XPressoを削除すればこの働きを消せるわけですが、XPressoを消さずに一時的に働きを止める方法はないもんでしょうか。4Dの中にはXPressoの働きを止める方法が何段階か用意されています。エクスプレッションを使う」のチェックを外す方法です。これで全てのエクスプレッションが一時停止します(XPressoやCOFFEE、プラグイン等はエクスプレッションに含まれます)。この状態でテキストスプラインに新しい名前を入力すると、その通りに変更されるはずです。図801-9次に、オブジェクトマネージャでXPressoタグを選択して属性マネージャを開き、そこで「使用する」のチェックを外すと、個々のXPressoの働きを一時停止できます。図801-10最後に、XPresso編集ウインドウでテキストオブジェクトノードを右クリックし、プルダウンメニューから「停止」をチェックすると、個々のXPressoノードの働きを一時停止できます。この操作は属性マネージャからでもできます。図801-11これで安心してXPressoを使えるようになりました。3COFFEEノードそれでは、さらにまた別の方法を紹介します。それはCOFFEEノードを使う方法です。COFFEEノードを使うと、昔ながらにテキストでプログラムを書けます。難しそうですが、実は複雑なプログラムを作る場合は、こちらの方が遥かに見やすくて簡単です。実際問題としてCOFFEEノードを使わずに複雑なプログラムは作れません。4DにはXPressoタグ以外にも従来からの「COFFEEタグ」があり、ここでは全てテキストでプログラムを書きます。COFFEEタグの中ではThinkingParticlesを扱えません。4Dにおいて最も簡単で強力なプログラム法なのです。計算」からCOFFEEノードを選択してください。図801-12COFFEEノードにはデフォルトで3個のポートが付きますが、まずこれを消しましょう。ポートを消すにはポートをダブルクリックします。ポートにワイアが付いている場合は最初のダブルクリックでまずワイアが消えます。次にCOFFEEノードを選択した状態で属性マネージャを見ます。図801-13ここでまず重要なのは、「属性マネージャのフィールドでプログラムを編集してはいけない」という点です。一応属性マネージャでもプログラムの編集はできます。属性マネージャの仕様ではプログラムがカラー表示されず、またタブやリターンで次のフィールドに移動するようになっていて、非常にプログラムしにくいのです。そこで、左下にある「COFFEEエディタを開く」をクリックして下さい。すると「エクスプレッションエディタ」ウインドウが開き、属性マネージャに表示されていたプログラムがその中にも表示されるはずです。図801-14エクスプレッションエディタは、元々COFFEEタグを編集するために作られたもので、この中では普通にプログラムを書けます。タグやノードを切り替えてもエクスプレッションエディタの中身は切り替わらないので注意して下さい。毎回属性マネージャで「COFFEEエディタを開く」ボタンを押す必要があります。面倒ですが、いろいろな技術が歴史的に積み重なっているので仕方がありません。それではエクスプレッションエディタでの作業に移ります。デフォルトで付いていた3個のポートに対するプログラムを消去して下さい。次に以下の1行を追加します。World!」と表示されるはずです。図801-15コンソールウインドウが開いていない場合は、ウインドウメニューから選択して開いて下さい。何も表示されない場合は、前のステップでXPressoを止めたままになっていないかどうかチェックして下さい。結果ノードと違ってコンソールウインドウは出力の履歴が残るので、プログラムのデバッグ時に重要な役割を果たします。プログラムを次のように変更すると、行の色が緑に変わり、実行ボタンを押してもコンソールウインドウには何も表示されません。World!");図801-21止めたい部分が複数の行に渡る場合は、その部分を「/*」と「*/」で囲みます。4COFFEEノードにポートを追加する最後に、COFFEEノードでポートと情報をやり取りする方法を説明しましょう。COFFEEノードの左上をクリックし、文字ポートを作ります。次にポート名を右クリックし、プルダウンメニューから「名前を変更」を選択し、判りやすい名前に変更します。ここでは「n_in」としておきましょう。次に、このポートを定数ノードにつなぎます。World!」という文字情報を受け取れるようになりました。図801-16次に、エクスプレッションエディタに戻り、プログラムを次のように変更し、実行ボタンを押します。World!」が増えたはずです。println(n_in);図801-17次に、COFFEEノードの右側にも文字ポートを追加し、名前を「n_out」とします。プログラムに次の1行を追加します。n_in;そして、このn_outポートを結果ノードにつなぎます。World!」が表示されたはずです。World!」のまま変りませんが、この文字データはCOFFEEノードの中を通ってきたものです。COFFEEノードの中でプログラムを追加すれば自由に操作できます。COFFEE」に変化したはずです。ここで「stradd()」は文字を追加する関数です。COFFEE");図801-19また、プログラムを次のように変更すれば、結果ノードの表示は「12」に変ります。World!」の文字数で、「sizeof()」は文字数を調べる関数、「tostring()」は整数データを文字データに変換する関数です。n_out=tostring(sizeof(n_in));図801-20たくさんあるCOFFEEの関数を憶えるのは大変だと思うでしょうが、憶える必要は全くありません。その度にマニュアルを調べればいいのです。私もマニュアルを調べながらこのテキストを書いていますが、世の中そんなもんです。マニュアルを読んでも判らないことはどんどん掲示板に質問しましょう。COFFEEのマニュアルは以下のページから入手できます。http://www.maxon.net/en/support/plugin-cafe.html。