7
3D GUI 別解解説 2014 SoftUmeYa, LLC Masashi Umezawa CROSS 2014 言語CROSS Smalltalkによる

Smalltalkで3D GUI

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Smalltalkで3D GUI

3D GUI 別解解説

2014 SoftUmeYa, LLC

Masashi Umezawa

CROSS 2014

言語CROSS

Smalltalkによる

Page 2: Smalltalkで3D GUI

3D GUI課題

ボタンを押すと Hello, 3D World ! と表示されるようにしてください(編集可能であると、なお良い)。

ただし、文字列は 3D オブジェクトとしてパースがかかっているなど、3D であることが判るようにしてください。

Page 3: Smalltalkで3D GUI

どう解く?

じゅん

VisualWorks用、老舗

http://aokilab.kyoto-su.ac.jp/jun/index-j.html

Roassal 3D

Pharo用、発展途上

OpenQwaq

仮想3D世界作成プラットフォーム

https://code.google.com/p/openqwaq/

仕事で使っているOpenQwaqを採用

Page 4: Smalltalkで3D GUI

方針: なるべくコードを書かない 多分ツールの洗練さ、格好の良さでは

Delphiにかなわない

OpenQwaq既存の3Dコンポーネントを使う

QStickyNoteという付箋があるので、それを

仮想世界に生成して終わり

ボタンはライブな手法で生成

Page 5: Smalltalkで3D GUI

StickyNote生成用メソッドの定義 QwaqParticipantUI >> makeNewStickyNote

makeNewStickyNote | space island note pos wrap | self readyForEvents ifFalse: [^ self statusAlert: 'Not ready.']. space := mainView activeSpace. island := space island. pos := avatar translation - (avatar lookAt * 10). note := island future new: QStickyNote. wrap := island future new: QMotionAdapter. wrap future isGroundBound: false. wrap future isDeletable: true. wrap future grip: note. wrap future luggage: note. note future translation: pos. note future contents: 'HELLO 3D'. space future addChild: note.

StickyNote生成

動かせるようにラップ

Island(共有空間)取得

付箋の内容を'HELLO 3D'にして

共有空間に追加

Page 6: Smalltalkで3D GUI

ワークスペースで実行

QwaqForumsUI lastInstance makeNewStickyNote

でなく、ボタンを作ります

アバターの視線の先に付箋が出来る

クリックで編集

別ユーザがいれば協働編集も可能