![view](/schemes/projectsu/view.png)
![edit](/schemes/projectsu/edit.png)
![attach](/schemes/projectsu/upload.png)
![history](/schemes/projectsu/history.png)
![swikis](/schemes/projectsu/swikis.png)
![top](/schemes/projectsu/top.png)
![changes](/schemes/projectsu/recent.png)
![search](/schemes/projectsu/search.png)
![help](/schemes/projectsu/help.png)
第 85 版に加えられた変更
削除は 取消線 、追加は 太字 で示されます。段落の一部が修正されたときは、その段落全体をいったん削除して、新しい内容の段落を追加したように表現されます。
Croquet に関するメモ
*Croquet* を 使う機会/使える機械が増えてきたので、気付いたこと/調べて分かったことをメモしておきます。スクリプトなんかも書いてしまっていますが、*Smalltalk* ってのはそういう世界(お絵描きを楽しむビギナーからカリスマ的ベテランプログラマまでがそれぞれの興味でシームレスに 混在できる/して楽しめる/しないと盛り上がらないコミュニティ)なので意味不明のところは適宜読み飛ばしてください。もちろん興味を持てそうなことで分からないことがあればもうすこしかみ砕いて説明します。遠慮なくどうぞ。
!質問など、あれば<font size=-1>
+@%^-
<font color=maroon>書き込みテスト。--sumim</font> <tt><em><font color=gray>- 2002-11-20, 11:08:30</font></em></tt>
</font>
!セットアップ
-*Croquet.zip>http://www.opencroquet.org/downloads/Croquet.zip* を展開。Win32 は Croquet0.01.image を TeaSqueak1.9.exe にドロップイン。
-Mac は os-x のみ。新しい *VM>ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.4alpha/mac/squeak3.4.0b2-mac-vm.sit* と *mpeg3Plugin.bundle>ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.4alpha/mac/carbonplugins/mpeg3Plugin.bundle.sit* 、*SqueakFFIPrims.bundle>ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.4alpha/mac/carbonplugins/SqueakFFIPrims.bundle.sit* を別途入手して展開したフォルダに入れる。<strong>VM は展開時にできるフォルダから取り出して、Croquet フォルダに入れます。</strong><br>参考:*Mac Croquet Info*(Mac OS における Croquet 動作確認リスト)
!起動
-TeapotMorph startFullScreen を do-it 。<br>(左上の Workspace の当該文字列に挿入ポインタを置くか全文選択状態で alt/cmd-d )。もしくは、
-左下の Morph Catalog から Teapot をデスクトップにドラッグ&ドロップ
前者はメッセージ名から分かるように、morph を画面いっぱいに広げ、かつ、フルスクリーンモードで機能する。起動には時間がかかる。ハングアップしたかな…と思ってもひたすら我慢。 <font color=blue size=-1>10分待っても何も出てこなかった…というのは本物のハングだったのでしょうか。--藤井 <font color=maroon>マシンパワーにもよりますが、10 分もかからないと思います。あと、いろいろなリソースをダウンロードしているようなので通信速度にも依存するかと。いずれにせよ、ハードディスクのアクセスはあるようなので耳をすませば分かります。---sumim</font></font> Tea Test Morph は、基本的なパーツのみを表示して動作をチェックするための文字通り「テスト用」らしい。ただ、起動にはやはり時間がかかるので走るか走らないか分からない状態ならぶっつけ本物で試したほうがよい。
Mac では前者はハングアップする場合があるので、はじめから後者で走らせるほうが無難。後者でも、無事起動を確認してから、<code>ScreenController new fullScreenOn.
TeapotMorph someInstance extent: Display extent; position: 0@0</code>をここからコピペして入力したのち選択し、do-it することでフルスクリーンモードと同じことができる。ただ、一部のマシンではディスプレイの解像度を落とさないと(800x600 程度?)パフォーマンス不足で画面の反応がついてこなかったり、そもそも動作しないことがあるので注意。
<font color=DarkTurquoise size=-1>起動しません(^^;PBG4(500)のOS X 10.2.2です.アプリケーションの中にCroquetと言うフォルダを用意して環境を作ってみました.Croquet /Croquet0.01.imageをCroquet /squeak3 Folder/Squeak 3.4.0Beta2にD&Dして起動させました.画面左下のTeapotをデスクトップにD&Dすると,<font color=red>Error: Callout mechanism not available</font>と言うウィンドウが表示されてしまいます.ウィンドウの上4行はこれらのメッセージを表示しています.<code>ExternalFunction class(Object)>>error:
EsternalFunction class>>externalCallFailed
GLMaxOSX(Object)>>externalCallFailed
GLXMacOSX>>glGenLists:</code>Proceedのボタンを押すと同じ事の繰り返し,Abondonを押しています.Debugは押していません.--人狼 <font color=maroon>それだとダメです。VM と .image と .bundle はすべて同じ階層に入れてください。--鷲見 </font><font color=DarkTurquoise>了解しました.VMをフォルダに入れっ放しにしたのがダメだったのですね.有り難うございます.--人狼</font></font>
!無事起動したときの注意
URL 入力を促すダイアログボックスが表示されるが、これはキャンセルする。たしかその後<s><font color=gray>も</font></s><strong><font size=+2>が</font></strong>待たされるはず。 <font color=blue size=-1>Teapot をドラッグ&ドロップだと小さい画面がすぐ出ました。しかし、Connect のウィンドウが動かない&消えない。--藤井</font>
!基本操作
空間内では、右クリックで移動、左クリックで物体の操作やハロー(後述)による指示ができる。
<b>移動</b>
移動はマウスの右ボタンで行なう(ホイールボタン付きで都合、3ボタンの場合はホイールボタンかも。未確認)。右ボタンを押し下げた状態で、マウスポインタを画面上方に移動すると前進、下方だと後退、右は右旋回、左は左旋回となる。マウスポインタが中心から離れるほど変化量が大きくなる。
窓枠状のものを以外、といってもデフォでは時計と正四面体しかないが、これらとの間には接触判定がなされているので、ぶつかったり乗り上げたりする。重力らしきものはある程度働いているらしい。ただ、床の範囲を超えて移動したときに、端で落ちたりはしない。
<b>視線移動</b>
shfit キーを押しながら移動時と同様の操作(右ボタンで画面上方、下方へのポインタの移動)を行なうと、視線を上下に移動、つまり見上げたり下を見たりができる。マウスボタンを放すと視線は元に戻る。
<b>窓枠状のものの使い方</b>
別の空間への出入り口、もしくは平面情報の表示パネルとなる。マウスポインタを合わせるとハロー(聖者の後光/光輪風に配置される機能ボタン)が表示される。右端の[+]ボタンをクリックすると、中の様子を覗くことができる。このとき[+]ボタンは[−]に置き換わる。この[−]ボタンをクリックすることで元の画面(写真など)に戻すことができる。[+]を押して“開いた”状態にすると処理に負荷がかかるので必要がなければ閉じておく。ちなみに、ハローの操作はその窓枠状のものの目前に移動しなくても、途中に邪魔する物体がなければかなり離れた場所からでも操作できる。
別の空間への出入り口、もしくは平面情報の表示パネルとなる。マウスポインタを合わせるとハロー(聖者の後光/光輪風に配置される機能ボタン)が表示される。右端の[+]ボタンをクリックすると、中の様子を覗くことができる。このとき[+]ボタンは[?]に置き換わる。この[?]ボタンをクリックすることで元の画面(写真など)に戻すことができる。[+]を押して“開いた”状態にすると処理に負荷がかかるので必要がなければ閉じておく。ちなみに、ハローの操作はその窓枠状のものの目前に移動しなくても、途中に邪魔する物体がなければかなり離れた場所からでも操作できる。
[↓]ボタンを押すと窓枠状のものの目前に移動することができる。窓枠状のものの“コンテンツ”が Squeak プロジェクトのような平面なら、その操作画面と変わらない印象の画面になる(ただし、窓枠状のものの縦横比が画面のそれと一致していない場合は枠も表示されるため、こうした印象は薄れる)。コンテンツが空間の場合はそのまま前進(右クリックで画面上方へポインタ移動)すれば、その空間に突入できる。後退すれば、窓枠状のものが視線から離れるだけでなにも起こらない。
窓枠状のものは、その位置や向き、縦横比や大きさを変えられる。枠の上中央付近を左ボタンでクリックしてドラッグすると上下左右への移動、下中央だと前後左右への移動。左右中央だと回転(勢いを付けて離すとそのまま回転し続ける)。四隅をドラッグすると縦横比や大きさの変更となる。高さは、shift ドラッグでも変えられる。重力や衝突判定は行なわれず、空中に固定/別のオブジェクトへ食い込んだ状態で表示される。
<b>ドック</b>
マウスポインタを画面下端に移動するとアイコン状のボタンが列挙される。ここから各種機能を利用したり、オブジェクトを呼び出すことが可能。階層状になっているので、機能を直に呼び出すためのボタンに行き着くまでは何度かクリックしなければならない。階層を戻るには、左端に表示される“リターン矢印”ボタンをクリックする。最後の機能ボタンに行き着いたかどうかは分かりづらい。クリックで機能するものもあれば、ディスクトップへのドラッグ&ドロップのものもある。
!お遊び
-ドックの TPaint を使って絵を描くと、それっぽく立体化してくれる(Teddy とは違うけど、っぽい)。
-窓枠状のものを使って空間を移動した後、[−]ハローボタンで後ろ手に閉めてしまうと、後続は同じ操作で空間に移動できなくなる。出口を閉じられた窓枠状のものは、ガラス的(ミラー的にあらず)表示になり、それまであった空間へ移動するために通り抜けようとしてもすり抜けるだけでなにも起こらない。?マークの像がある部屋とエスカレータの部屋で実験できる。
-すべてではないが、大抵のオブジェクトにはぶつかると乗り上げるかたちで上に登ることができる。壊れた水道橋の上にも鮫の上にも乗っかれる。ファンを踏み台にしてパソコンの上にも乗っかれる。鮫に乗ると、鮫の回転に合わせて視線が移動する。鮫を移動させると一緒に移動するかも…(黄スクリプトを書いてテストしてみよっと)。
-起動画面の正四面体は、クリックして数字キーをタイプすると様相が変化する。
-窓枠状のものに収められたプロジェクト画面は、遠く離れた場所からでも操作できる。
!とりあえずの注意
-Andreas Raab の部屋の鮫をクリックしてはいけない。ノーティファイアがでてしばらく制御が戻らなくなる。 <font color=blue size=-1>まっしぐらに鮫に会いに行きました。闇雲にクリックしましたが無視されました。しばらくたつと「Abandon」「Debug」などのボタンがついたウィンドウが 2 種類出てきました。あれはテスト(examination)だったのかな?と今になって思います。--藤井 <font color=maroon>「しばらくたつ」まで、実は操作ができなくなっています。再び試していないのでわかりませんが、くだんのウインドウを閉じてしまえば問題はないかも。--sumim</font></font>
-空間に移動した後、移動に使った出入り口を含む窓枠状のものを削除してしまうと元の空間に戻れなくなる。
-空間に移動するための窓枠状のもの以外ではカメラボタン(スナップショットを撮る)は機能しない。ちなむと、スナップショットはドックの Snapshots ホルダに蓄積されます。撮れても撮れなくても(ゎ)ノンリアクションなので注意。
!不明であったが解決した/未だに不明なことがら
<b>空間を左クリックしたときに現れるメニュー状のものは何か?</b>
-単なる一覧なのか、なにか機能を持つものなのか
-単なる一覧というより単なる絵をウインドウに表示させたもの。ポップアップのデモ。
-たとえば、あるスペース(や TeaMorph )の*インスペクタ*で、<code>glx activeCamera pointer popUp: (TClock initialize: glx)</code>とすれば、時計がポップアップするようになる(このメッセージ式を do-it するとそれまでのポップアップオブジェクトは失われるので注意)。
@
<b>マウスポインタによる操作を無視するオブジェクト(時計など)を自在に動かすことは可能か?</b>
-自在にという意味では、オブジェクトに対して、TSpinBeahvior を追加してやればよい。
-任意の場所にという意味では、黄スクリプトで<code>self myTarget translationX: 0 y: 0 z: 0</code>などとすればよい。起動時状態で左右が x 、上下が y 、前後が z 。空間中央が 0, 0, 0 。
@
<b>バニーなどのように簡単にウインドウ(とりあえずはチェスのようなもの)も出すことができるのか?</b>
-たとえば space の黄スクリプトで、<code>| tmorphic |
tmorphic _ TMorphic initialize: self glx world: nil.
tmorphic world addMorphCentered: Tetris new.
self myTarget addChild: (TWindow contents: tmorphic)</code>などとすればよい。
<center><a href="./uploads/478/twindow-tmorphic.jpg">*+twindow-tmorphics.jpg+*</a></center>
@
<b>ドックへのプロジェクトの追加は簡単にできるか?</b>
-自動的に行われる。よってプロジェクトのウインドウを作ることは、前述のようなスクリプトをわざわざ記述しなくとも、ドックからのドラッグ&ドロップで簡単にできる。
@
<b>stop script というのがあるが、start script で単発用に記述した黄スクリプトを起動してよいのか?</b>
-とりあえず上の例ではループに陥ってしまっている様子はない。
- #startScript:in: の下流の #startScript: コメントによると "If no trigger is given, the script is evaluated exactly once" とのこと。現状では実行は一回きりで、stop script が必要とされることはないと思われる。
@
<b>簡単にポータルウインドウを作ることができるか?</b>
-たとえばミラー。あるスペースのインスペクタで、<code>self addChild: ((TWindow initialize: glx) contents: (TPortal initialize: glx))</code>を do-it 。ポータルは、空間と対応するものではなく、#linkPortal: で指示したオブジェクトの目前に出口を持つワームホールのようなもの。ミラーの例でもわかるようにデフォでは self が指定されている(ただ、この仕組みだけでは「飛び込むと飛び出してしまう不思議感覚」は説明できても、“ミラー”にはならないはずなのでさらなる解析が必要…)。たとえば、時計を指定すれば、その目前に飛び出すことができる、<code>self addChild: (
(TWindow initialize: glx) contents: (
(TPortal initialize: glx) linkPortal: TClock someInstance))</code>が、戻ることはできない。指示したオブジェクトがポータルなら相互に行き来できる。
@
-とりあえず考えられる手順。
--つなげたい空間それぞれにミラー(デフォのポータル)を作る。
--どちらかのポータルにもう一方を #linkPortal: する。
@
<b>プロジェクトウインドウのデフォサイズ、縦横比を呼び出し時に自由に変更する方法。</b>
-いったん呼び出されたあとは固定なのはしょうがないとして…。
@
<b>簡単に空間を作ることができるのか?</b>
-できそう。最低、床をテクスチャで用意すればそれっぽいものが…。
@
<b>他のユーザとの空間の共有は簡単にできるのか?</b>
-可能。ただし画面の更新に異常に時間がかかるようなので要再調査。
-Tea Test Morph を使えば確実にすんなり動く。
-*Croquet のピアツーピアに関するメモ*
!気付いたこと
-これでホログラムと気の利いたポインティングデバイス(ウエア)があれば…と、妄想モード。
-逆に低解像度デバイスを従来 UI で使うときの福音になる…*かも>低解像度デバイス使い勝手向上に Croquet 的 UI*。
!終了
画面の青ボタンクリック(Mac は cmd-クリック、2ボタンマウスはalt-クリック、ホイールマウスは右クリック…と説明するのが面倒なので Smalltalk では*赤ボタン、黄ボタン、青ボタン*と呼ぶようになったわけですゎ)で Morphic のハローを表示させ、×ボタンで TeapotMorph を閉じる。ちょっとタイムラグがあってから制御が戻ってくるので、改めて、デスクトップメニューから quit を選択。(save するか尋ねられるので no )。>藤井さん <font color=blue size=-1>丁寧な解説をありがとうございました。よくわからないままおサル状態でクリックしてグルグル回ってペンキぶちまけてムチャクチャでした。次回は基本操作をよく読んでから茶壷に飛び込もうと思います。せっかく鷲見さんがサルにもわかるように解説してくれたので…--藤井 <font color=maroon>いや。最近書き足されたものを見るとわかるように、このページはかなりマニアックなメモです(^_^;)。Croquet のほうは、まあ、適当にいじって遊んでみる…程度に考えておいてください。で、結局、おバイオ様ではとりあえず Tea Test Morph だけは動いたのですね?--sumim</font></font>