Rattyは、インライン3DグラフィックスをサポートするGPUレンダリングのターミナルエミュレーター 回転するネズミカーソルを含む サイトでブログ記事を読める サイトでRattyのダウンロードへ移動できる サイトでソースを確認へ移動できる
2件のコメント
Hacker Newsのコメント
ここで何人かがVR活用について話しているが、以前ソフトウェア開発向けの浅い3D UIを少しいじったことがある
一日中使ってもVACによる眼精疲労が少ないよう、ノートPC画面の数cm奥行き程度の浅い深度で、部屋の中で腕を振り回すというより、3Dで色やレイヤーを加えて描く感覚に近かった
3Dは、揺れ3D、Webカメラによる頭部/視線トラッキングで作る遠近、シャッター眼鏡のステレオ、XR HMDなどで実現できる。揺れ方式は最も簡単だが、かわいい反面気が散りやすく、遠近のほうがより繊細で邪魔になりにくい
アプリのステレオ対は、「左右の目用に2つのウィンドウを提供する」か、「左右ビューを交互表示してラベリング/同期/ポーリングする」といった形にでき、このかなりの部分でウィンドウシステム/ウィンドウマネージャ/デスクトップ側の支援が必要になる。ElectronとXを積み重ねて使う方式では、かなり大きなテコが得られた
テキストを3Dに押し出すのは色付けよりずっと面白く、ごちゃついた見た目を許容するなら、深度で分離した補助情報レイヤーも入れられる。Emacsで文字ごとに深度が持てるようになれば、LispMにもなかった何かが生まれることになる
ただし、コードテキストのように本質的には3Dではないものの可能性を探るなら、前景/背景色、フォント、Unicode、アニメーションでUXをプロトタイピングするほうがずっと簡単で、ブラウザなら重ねたdivと透過2D/3Dキャンバスを使えばよい
すべての文字が3D上に配置されたquadで、インスタンシング描画されるので、数千万個以上を扱える。各文字は別々のポリゴンのように個別アドレス指定や変更が可能
GitHubリポジトリ全体を一度にレンダリングするのに使っていて、ネイティブApple版とWeb版の2つがある。Web版にはIDE構成の基本要素が入っており、洞察や感想を聞きたい
https://ivanlugo.dev/ide
UNIXはREPL体験の面で、いまだにXeroxワークステーションや一般的なLispマシンに追いつこうとしているように見える
1981年にはすでにインライングラフィックスがあった
https://youtu.be/o4-YnLpLgtk?t=376
まだ見ていない人のために: https://www.youtube.com/watch?v=yJDv-zdhzMY
これは気に入った。ターミナルがテキストしか扱えない理由はない
データサイエンスノートブックは、ターミナルが進化しうる一つの方向を示していて、この分野では面白いことがたくさん起きている。Kittyはおそらくこの分野で最も積極的なイノベーターだろう [1]
ただ、全体的なビジョンがあるのかはよく分からない
[1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/
[1] https://github.com/joouha/euporie
pyvistaがKittyグラフィックスを使って、任意の3D図形をターミナルに直接レンダリングできるようにすることに成功したかなり大掛かりなハックで、性能を出すにはshmを使う以外に方法がなかった
https://git.theresno.cloud/panki/kglobe
自分が理想として思い描いていたコンピューティングの未来、「haiku+macOSのマッシュアップ」を超えるかもしれない
ふだんはファイルマネージャをクリックして使うより、ターミナルからファイルシステムを見て回るほうを好むのだが、ディレクトリ内の3Dモデル(STL/STEP、3Dプリント用)をターミナルベースのレンダリングで見せるグリッド型の
lsがあれば、本当に便利だと思うモデルをプレビューして回転確認までできればなお良い
何に使うかはよく分からないが、視覚効果は楽しかったし、Webサイトのブルータリズムデザインも気に入った。古き良き時代の記憶を思い出させてくれた
これ、かなり良さそうでは?
質問がある。レンダリング能力的に2Dもうまく扱えそうに見えるのだが、見当違いだろうか? ターミナルで高品質な2D画像やラスタライズを得る既存の解決策は、たいていあまり良くなかった。これが他の解法より優れている可能性があるのか、それともどこかで根本的な限界にぶつかるのか気になる
それと、GPUアクセラレーションだとsshではどうなるのかも気になる
ターミナルがゆっくりとフル機能のWebブラウザになっていっている
正直まだ分からないが、そのうち自分で確かめるつもり :D
https://github.com/fathyb/carbonyl
https://hyper.is/
Terryの冥福を祈る。決して忘れられませんように
付け加えるなら、このプロジェクトを見ると彼の精神は生き続けているように思える :D
これを見て、compizが出てきたときに皆が「自分のウィンドウがキューブの上にある」とか「揺れるウィンドウが必要だ」と言っていた時代を思い出した
なので案の定、すぐインストールした
いろいろなcompizアニメーション効果つきでWindowsとUbuntuの間を切り替えるのが、魔法のように感じられた
リンク先のブログ記事で、新しく提案されたglyph protocol [1]を知ってとても興味を持った
6か月ほど前にも、まさにこういうものがないことを残念に思っていた [2]
[1] https://rapha.land/introducing-glyph-protocol-for-terminals/
[2] https://news.ycombinator.com/item?id=45805072
https://github.com/tikimcfee/glyph3d-js
Kitty graphics protocolですでにある程度は可能。Kittyで3Dグラフィックスをレンダリングするデモを作った [1]
実際に欠けている重要な部分はvsyncで、rattyにもないように見える
レンダリングが同期されていないと、アプリケーションがフレームバッファに書き込んでいる最中にターミナルエミュレータがそれを読み取り、視覚的アーティファクトが発生することがある
[1] https://x.com/zack_overflow/status/2035921425341763756?s=20
Lobste.rsの意見
ランディングページからLLMっぽさを感じたのでブログ記事を確認したら、やはりそうだった
使用自体にタグを付けるならプロジェクトの90%に付けることになるだろうし、会話も成果物そのものから外れてしまう。3Dのネズミを表示するターミナルエミュレータを一人がハックして作ったという話が、倫理論争のスレッドになっていくのは望ましくない
手早い wow 効果のために少しだけ3Dを入れはしたが、目標は慎重に基礎を考え直すことであるべきだと思う。たとえ私の実験が失敗しても、人間のための人間的な視点の製品を作ったという点は誇りに思っている
もちろん、彼らが純粋に楽しみのためにやっているのなら、それ自体は問題ない
何度読んでも、いまだにひどく混乱する
一方では sixel や kitty を見たときのように、ずっと「なぜ?」という気持ちになる。根本的にテキスト指向のインターフェースにグラフィックスを載せるのはクールだが、実用的には見えない。もちろん curses や slang に対しても同じ反論はできる
もう一方では、3Dレンダリングのプロトコル/表示をどうにか Emacs の中に入れられないか気になってくる。何に使うかはまったく分からないが、このプロジェクトのように本当にクールそうだ
昔は楽しいからプログラムを作っていたものだ。覚えていないのか?
夕方の数時間を使って、自分の Haskell CAD フレームワークが Ratty で読める形でオブジェクトを出力するようにしてみた
かけた時間の割にはかなり可能性がありそうだったが、「オブジェクト配置」コマンドがもう少し設定可能だとよかった。REPL 出力内にスペースを作ることや、オブジェクトのサイズ調整まで自前で処理してくれることを期待していた
それと、Ratty がassets フォルダ外のファイルを読み込めないのは少し残念だ。スクロールも少し壊れているようで、オブジェクトが消えるにはまだ早いタイミングで消えてしまうのをよく見た。ただ、こちらが何か間違えていただけかもしれない