Skip to content

irtviewerの視点・画角をプログラムから任意に設定したい #606

@pazeshun

Description

@pazeshun

論文の図を作るような時に、プログラムを再起動しても再起動前と同じ視点・画角のirtviewerを表示してほしい時があります。
良い見た目となるようにirtviewerをマウスで操作した後、その視点・画角を保存して、次回起動時に読み込むようにしたいと考えています。

jmanualとirtviewer.lを読んで、以下のようにすると視点・画角の保存・再現ができましたが、irtviewerクラスのスロット変数left-right-angleup-down-angleのgetter/setterメソッドがないために:get-val:set-valを使っており、正規の方法ではないと思われます。
よりよい方法はありませんでしょうか。

1.irteusgl$ setq a (make-cube 100 100 100)
#<body #X560090199610 (:cube 100.0 100.0 100.0) 0.0 0.0 0.0 / 0.0 0.0 0.0>
2.irteusgl$ objects (list a)
;; (make-irtviewer) executed
(#<body #X560090199610 (:cube 100.0 100.0 100.0) 0.0 0.0 0.0 / 0.0 0.0 0.0>)
3.irteusgl$ setq vp (send *irtviewer* :viewpoint)
#f(155.272 268.939 113.029)
4.irteusgl$ setq vt (send *irtviewer* :viewtarget)
#f(0.0 0.0 0.0)
5.irteusgl$ setq lra (send *irtviewer* :get-val 'x::left-right-angle)
60
6.irteusgl$ setq uda (send *irtviewer* :get-val 'x::up-down-angle)
20
;; ここでirtviewerを適当にマウス操作
7.irteusgl$ send *irtviewer* :viewpoint vp
#f(155.272 268.939 113.029)
8.irteusgl$ send *irtviewer* :viewtarget vt
#f(0.0 0.0 0.0)
9.irteusgl$ send *irtviewer* :set-val 'x::left-right-angle lra
60
10.irteusgl$ send *irtviewer* :set-val 'x::up-down-angle uda
20
11.irteusgl$ send *irtviewer* :look1
#<coordinates #X560090308378  155.272 268.939 113.029 / 2.618 -2.776e-17 1.222>
12.irteusgl$ send *irtviewer* :draw-objects
1
;; irtviewerの表示がマウス操作前の状態に戻る

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions