jun4pharo @ smalltalk勉強会 2015/5/29
TRANSCRIPT
Jun4Pharo~まだ登り始めたばかりだからな この果てしなく遠いJun坂をよ~
Tomohiro "tomo" Oda@tomooda
installation
repository
http://smalltalkhub.com/#!/~tomooda/Jun4Pharo
Gofer new smalltalkhubUser: 'tomooda' project: 'Jun4Pharo'; configurationOf: #Jun; load.(Smalltalk at: #ConfigurationOfJun) load.
CI server
https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/
CIサーバ
Nightly build● Pharo 4.0
https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/lastCompletedBuild/PHARO=40,VERSION=stable,VM=vm/artifact/Jun4Pharo.zip
● Pharo 3.0https://ci.inria.fr/pharo-contribution/job/Jun4Pharo/lastCompletedBuild/PHARO=30,VERSION=stable,VM=vm/artifact/Jun4Pharo.zip
good old days in 90s
Jun for Smalltalk
● Jun for Smalltalk○ VisualWorks上で動く3Dライブラリ○ 開発期間 1996~現在○ AOKI Atsushi, ODA Tomohiro, HOSHI Takanori, NISHINAKA
Yoshiyuki, YAMADA Ryousuke, WATANABE Katsuhiro, Ankur J. Chavda, NISHIHARA Satoshi, MATSUDA Ryouichi, MATSUO Minoru, Brent N. Reeves, ASAOKA Hiroko, TANAKA Shinichi, ASADA Mitsuhiro, Paul Guyot (and LIP6), Albert Kerssies, MATSUBARA Nobuto, SAWAMOTO Eri, HAYASHI Koichiro, NAKAO Tatsuya, NISHIMURA Yuuri
○ 999 classes○ Jun4Java, ChemoJunなどを派生
○ 電子マネキン、造船CAD、工場シミュレーション、化学情
報学などで利用されている
Jun for Smalltalkの歴史
● 青木さんが z-sort法による3D描画ライブラリとして作成
● 電子マネキン時代:○ Mei由来のコードを投入
○ 小田が加わり、OpenGL、ソリッドモデル、ナドナドを実
装
● みんなでよってたかってマルチメディアだの何だのを拡張
Jun for Smalltalk機能
● 幾何○ Point, Curve, Surface, ParametricCurve, ...○ Transformation, ...○ Delauney, Voronoi, ...
● グラフィックス○ Vertex, Polylines, Polygons, NURBS, ...○ RenderingContext, DisplayModel, ...○ VRML, ...
● ソリッド○ Breps, CSG, Octree, Metaball, ...
● 可視化○ Chart, Grapher, ...
Jun for Smalltalk機能
● データ処理○ Matrix, SVD, Random, FFT, ...
● メディア○ QuickTime, Midi, Gif, ...
● ソース管理○ JunSystem○ Encyclopedia
● Smalltalkユーティリティ○ MVC互換レイヤ, File, Progress, MessageSpy, ...
● 言語○ Lisp, Prolog, Plotter
related work
RMapViewer
同じ化学組成を持つ分子の取りうる構造の
マップを可視化して、
反応経路を探索して可視化する
GRRM:量子力学的に可能な構造とその変化を全探索する
http://grrm.chem.tohoku.ac.jp/GRRM/
RMapViewer:探索結果を可視化する
http://sourceforge.net/projects/rmapviewer/
Roassal
可視化フレームワーク
Roassal City Layoutshttps://www.youtube.com/watch?v=CuimMwuZiGA
Woden
シェーダー
Woden Demo for ESUGhttps://www.youtube.com/watch?v=1Nze9tnwYxY
design rationale
Jun4Pharo
Jun4Pharoが目指すのは
GrapherやShaderというよりも
● 幾何とかBodyとかをちゃんと扱える
● 自分で3DなMorphをゴリゴリ書ける○ DisplayModelばっかり使いまわしてほしくない
● でもお気楽に3D可視化できるようにしたい○ データマイニングとかでも使えるように
● 他のライブラリと相互連携したい
Jun4Pharo
● Smalltalk-80的な丸鍋的なライブラリからPharo的なモジュール化されたライブラリへ○ なんでも抱え込まない
○ 芋づる的依存性の解消
● Pharo上の他の3Dライブラリとの連携○ Roassal - ビジュアライゼーション
○ Woden - シェーダフレームワーク
● OpenGLに依存しない○ Canvasでもがんばる!○ もっとすごいライブラリが来たら乗っかる!
Jun4Pharo
One more thing...
Jun4Pharo
One more thing...● いわゆるBSDライセンスです
○ なので、本当はJunではなくTakenokoベース
Demonstration
Jun4Pharo デモ
JunGeometryでゴリゴリ
JunCanvasRenderingContextでゴリゴリ
JunNBGLRenderingContextでゴリゴリ
asWodenRenderableでゴリゴリ
HoneyGingerとゴリゴリ
JunGeometryでゴリゴリJunCanvasRenderingContextでゴリゴリ
NBGLRenderingContextでゴリゴリ
asWodenRenderableでゴリゴリ
HoneyGingerとゴリゴリ
コードはこんな感じ
| form rc |form := Form extent: 500@500 depth: 32.rc := form renderingContext.rc clear.Jun3dDisplayObject benzene renderOn: rc.rc flush.form asMorph openInWorld
まとめ
● 巨大なJun for SmalltalkからPharoに移植はじめたばかりです。
● 少しずつ移植を進めていきます。
● ぜひ遊んでやってください○ http://smalltalkhub.com/#!/~tomooda/Jun4Pharo