CameraFile
複数のシーンで同じカメラを使用する¶
カメラの概念については,Documents/GUIのチュートリアル(CueMol2)/Step9で基本が紹介されていますが, 複数のシーンで同じカメラ(視点・視方向)を使用したいケースがあると思います. 例えば,構造比較の図などでよくあるケースだと思います.
カメラ自体をcuemol2/ObjRendCopyPasteの方法でシーン間でコピペすることで, 同じカメラで分子を表示することは一応可能ですが, カメラを変更した場合に,再度すべてコピペしなおす必要がありかなり不便です.
Cameraと外部camファイル¶
そこで,バージョン2.0.1.207では,カメラの設定だけ別ファイル(camファイル)に保存し, 複数のシーンでそれを参照することで,カメラ設定を共有させる方法を実装しました.
カメラ設定に関するコンテキストメニュー¶
カメラを作成すると,シーンパネルに図のような項目ができますが, これを右クリックするとコンテキストメニューが表示されます.
メニューの機能のうち,カメラ設定ファイルに関する項目を列挙します.
- Load file...
- 外部camファイルを読み込む
- Reload file
- 外部camファイルを再読み込みする
- Save file as...
- 選択されているカメラ項目を外部ファイルとして書き出す
- Save file
- 外部camファイルに現在設定を上書き保存する
以下では,順を追って各機能を説明していきます.
カメラ設定をcamファイルに書き出す¶
上述の,「Save file as...」を実行すると, 選択されているカメラ項目が外部camファイルとして書き出されます. この時,ファイル保存ダイアログが表示されますので, 適当な場所にcamファイルを保存してください. (qscファイルと同じ場所か,あるいは相対位置が明確な場所(一つ上のディレクトリーとか)に保存したほうが無難)
保存後,項目の左側にファイルアイコンが表示されます.
このファイルアイコンは,このカメラ項目がqscファイル内ではなく,外部ファイルにリンクされていることを示しています.
別のシーンからcamファイルを取り込んで共有する¶
次に,別のシーンqscファイルを開く,あるいは作成し, シーンパネルのCameraの親項目(下図参照)を右クリックしてコンテキストメニューを表示させ, 「Load file...」をクリックします. (もし既に子camera項目があるなら,それらのうちどれかを右クリックするのでもOKです)
するとファイルを開くダイアログが出てくるので,先ほど書き出したcamファイルを指定します. すると,図のように,ファイルアイコン付のcamera項目が新しくできます.
これをダブルクリックすると,camファイルに保存された視点等が現在ビューに適用され画面が変わります.
camファイル中に保存されているcameraの名称が,既にあるcamera名と同じである場合は, copyN_xxx (Nは数値)という名前に変更されて,読み込まれます.
camファイルの更新¶
さらに,外部ファイルにリンクされているcamera項目に対して, コンテキストメニューの「Save from view」や「Properties...」を用いてcamera項目を変更した場合, CueMol内の状態と,camファイルの内容が食い違った状態になります.
camファイルへ上書き保存¶
この場合,当該のcamera項目のコンテキストメニューから,「Save file」を選択すると, 現在のCueMol内のcamera設定値で,外部ファイルの内容が上書きされます. (この操作は元に戻せませんので注意)
ちなみに,シーン(qscファイル)を上書き保存すると,外部ファイルにリンクされているcameraも,それぞれのファイルに対して上書き保存されるようになっています.
camファイルから再読み込み¶
さらに,このように上書き保存等を行うと,他のシーンにて外部camファイルとCueMol内のcamera項目の内容が食い違った状態になります.
この場合,当該のcamera項目のコンテキストメニューから,「Reload file」を選択すると, 外部ファイルの内容が読み込まれます(すなわち,現在のCueMol内のcamera設定値が上書きされる).
ちなみに,上書き保存の場合と同様に, シーン(qscファイル)を再読み込みすると,外部ファイルにリンクされているcameraも同様に再読み込みされます.
camファイルの形式¶
camファイルは,qscと同じくxml形式で,qsc中のcameraタグの部分だけを外部に書き出したような形式になっています. 例えば,テキストエディターで開くと,以下のような形式になっています.
<?xml version="1.0" encoding="utf-8"?>
<camera center="(-10.837787,13.999697,15.037303)"
centerMark="crosshair" distance="200"
name="camera_0" perspec="false"
rotation="(0.774185,-0.124804,0.245019,0.570112)"
slab="50" stereoDist="1" stereoMode="none" zoom="50"/>
タグの属性値の意味は以下の通りです.
- center
- 視点の中心の座標値.Å単位.
- centerMark
- 中心のマークのタイプ.crosshair, axis, noneのいずれか.
- distance
- 視点とカメラの間の距離.Å単位.
- name
- カメラの名称
- perspec
- trueだとperspective投影に,falseだとorthographic投影になる
- rotation
- 視方向を表すquaternion値.(0,0,0,1)がZ方向を表すが,直観的には解りにくいので手動変更はお勧めしません.
- slab
- スラブ厚さ.Å単位.
- stereoDist
- 立体視の場合の左右の目の間隔.Å単位.
- stereoMode
- 立体視のモード.none,hardware (サポートされていれば), cross, paraのいずれか.ただし,cross/paraは限バージョンでは実装されていません.
- zoom
- 拡大値.画面のtopとbottom間の距離をÅ単位で指定.
これらの値をテキストエディターで手動編集し,上述の再読み込みを行うことで, カメラ設定を変更することもできます.