(rontolisp) docs
← 関数

scene パッケージの関数

scene パッケージは metal と appkit の上に載る geom ソリッドの 3D ビューアです。軌道回転・パン・ドリーのカメラ、地面グリッド、ワールドとボディの座標軸、 ソリッド/ワイヤフレーム表示、クリックフック、アニメーションフックを備えます。macOS 専用である理由は metal と同じです。Common Lisp の一部ではありません。名前は scene: 修飾子で参照してください。scene:viewer-state は CLOS クラス名でもあります。 ビューアはグローバル変数の集合ではなくインスタンスなので、1 つのイメージに 2 つのウィンドウが同時に存在し独立に回せます。フレーム中に Lisp は三角形に一切触りません。各ソリッドのメッシュは一度だけ GPU に送られ、フレームは ソリッドごとに 4x4 行列を 1 つ渡すだけです。以下の各名前は個別ページへリンクします。 モデル側はソリッドモデリングガイドを参照してください。

関数例結果
scene:viewer(scene:viewer :title "arm")Metal サーフェスを載せたウィンドウと、それを駆動するビューア
scene:offscreen(scene:offscreen :width 320 :height 240)ウィンドウを持たないビューア。描画関数は同一で、レンダラをテスト可能にしているもの
scene:snapshot(scene:snapshot v)オフスクリーンビューアの 1 フレームをピクセル (BGRA) として
scene:add(scene:add v s1 (geom:triad))最後に追加したソリッド。リスト引数は展開され、メッシュは最初に描画されたとき GPU に届く
scene:drop(scene:drop v s1 (geom:triad))ビューアから外し GPU バッファを解放した最後のソリッド
scene:clear(scene:clear v)nil。すべてのソリッドを除去。グリッドとカメラはそのまま
scene:contents(scene:contents v)描画中のソリッドを追加順に
scene:fit(scene:fit v)nil。カメラを内容に向け、全体が収まるまで引く
scene:camera(scene:camera v :azimuth 0.85)nil。方位角/仰角/距離/注視点のうち与えたものだけ設定
scene:grid(scene:grid v :extent 1200 :spacing 100)nil。地面グリッドを作り直す。:extent が nil ならグリッドを消す
scene:grid-color(scene:grid-color v (geom:vec3 0.2 0.5 0.4))nil。グリッドの色
scene:background(scene:background v '(0 0 0 1))nil。フレーム開始時の色
scene:shading(scene:shading v :wireframe)nil。:solid、:wireframe、:both (既定)
scene:axes(scene:axes v :both)nil。:world、:bodies、:both、nil (既定 -- 何も描かない)
scene:ray(scene:ray v 450.0 320.0)ビュー上の点を通るワールド視線を (始点 方向) で
scene:on-click(scene:on-click v #'reach)nil。クリックが落ちたワールド点を引数に hook を呼ぶ。nil で解除
scene:refresh(scene:refresh v)nil。ちょうど 1 フレーム描画
scene:animate(scene:animate v hook)nil。60 fps で描画し、各フレーム前に hook を 1 回呼ぶ
scene:wait(scene:wait v)ビューアのウィンドウが閉じられたら nil
scene:window-of(scene:window-of v)NSWindow。appkit: や生の objc:send への抜け道
scene:context-of(scene:context-of v)metal:context。描画サーフェスへの抜け道