粒子表示プログラム cdview ver.3.17, ver.3.2.0



特徴
- MDシミュレーションなどで得られた粒子の位置情報を画面上に表示できる
- 粒子の位置の情報は普通のテキストファイルで与えるのでデータを作るのが容易
- 位置を表すファイルを複数用意することで連続して粒子位置を表示できる(簡易アニメーション機能)
- 任意の粒子間にボンドを描くことができる
- 粒子の色、半径を自由に設定できる
- 描画している絵を.bmpファイルに保存できる (動画作成ソフトを使えば動画も作れる)
- PDBファイルも描画可能
- 3次元座標中のポテンシャルエネルギーなど、3次元のスカラー量も描画可能
- 粒子表示に回転楕円体で表示可能(液晶などの表示用)
- 粒子の位置を変更できる
使用法
cdview3.exeのアイコンにデータファイルをドラッグ&ドロップすることで実行できます。
コマンドラインから
cdview3 [FILENAME]
としても実行できます。ここで[FILENAME]は座標データファイルのファイル名で、
ワイルドカード指定も可能です。
操作の基本
マウスにより視る角度・視点の位置の変更や、粒子の選択ができます。
マウス左ドラッグ | 回転 |
マウス右ドラッグ | 前後移動 |
マウス両ボタンドラッグ | 平行移動 |
CTRL+マウス左ドラッグ | 画面に垂直な軸で回転 |
粒子をポイントしてマウス左クリック | 粒子を選択 |
キーボードショートカットに様々な機能が割り振られています。 また、'/'を入力するとコマンドモードになり、 コマンド入力によっても様々な機能を使うこ とができます。
操作の詳細に全操作が書いてあります。
座標データファイル
cdview3は以下の3種類のデータを読み込んで粒子座標等を描画することができます。
- cdviewフォーマット(拡張子 "cdv")
テキストで粒子の3次元座標が書いてあるデータ - fdviewフォーマット(拡張子 "fdv")
テキストで3次元空間のスカラー量が書いてあるデータ - PDBフォーマット(拡張子 "pdb")
タンパク質などでよく使われる座標データ - Amber Prepファイル(拡張子".in", ".prep")
Amberで使用する分子構造データ
cdviewフォーマット
ファイルの拡張子は"cdv"を推奨します。但し実際は"fdv"や"pdb"でなければ何でも良いです。
基本的には、1行につき1粒子の情報を
[通し番号] [粒子種] [x座標] [y座標] [z座標]
というフォーマットで与えます。
データファイルの例は以下のようになります。
0 0 379.434700 344.410400 391.625700 1 0 363.349400 396.798000 354.886200 2 0 363.111300 382.512500 408.103700 3 0 363.352600 344.300500 360.257600
粒子種の番号にによって粒子の色が決まります。色の初期設定は
0:赤 1:緑 2:青 3:シアン 4:マゼンタ 5:黄 6:深緑 7:グレー 8:白 9:非表示
となっています。詳しい説明は cdviewフォーマットの詳細にあります。
fdviewフォーマット
ファイルの拡張子は"fdv"です。
3次元格子上のスカラー量を等高線もしくは等値面で表示するためのフォーマットです。 ファイルの先頭には格子の数を以下のように書きます。
' fv_xn=[xの格子数] fv_yn=[yの格子数] fv_zn=[zの格子数]
データのフォーマットは
[x格子座標] [y格子座標] [z格子座標] [x座標] [y座標] [z座標] [スカラー量]
となります。格子座標は格子数より小さい整数値、 座標とスカラー量はは実数で与えます。
データファイルの例は以下のようになります。
' fv_xn=27 fv_yn=27 fv_zn=27 0 0 0 -67.426294 -67.426294 -66.649452 3.593000 0 0 1 -67.426294 -67.426294 -61.470506 2.258000 0 0 2 -67.426294 -67.426294 -56.291561 1.573000 0 0 3 -67.426294 -67.426294 -51.112615 0.768000 0 0 4 -67.426294 -67.426294 -45.933669 -0.395000 以下略
詳しい説明は fdviewフォーマットの詳細にあります。
fdviewファイルの表示においては、 上下カーソルキーで断面の移動、 左右カーソルキーで表示等値面を変更することができます。
pdbフォーマット
ファイルの拡張子は"pdb"です。
pdbフォーマットはタンパク質などの構造を原子レベルで表すためのもので、 世界中で広く使われています。データファイルの例は以下の通りです。
ATOM 1 N LYS 1 41.863 28.070 11.605 1.00 0.00 ATOM 2 H1 LYS 1 41.406 28.282 12.480 1.00 0.00 ATOM 3 H2 LYS 1 42.854 28.243 11.702 1.00 0.00 ATOM 4 H3 LYS 1 41.708 27.076 11.510 1.00 0.00 ATOM 5 CA LYS 1 41.314 28.960 10.570 1.00 0.00 ATOM 6 HA LYS 1 40.242 28.776 10.629 1.00 0.00 ATOM 7 CB LYS 1 41.562 30.453 10.774 1.00 0.00 ATOM 8 HB2 LYS 1 42.494 30.795 10.323 1.00 0.00 以下略
フォーマットの詳細はWorldwide Protein Data Bank にあります。
PDBファイルの表示においては、 'e'でタンパクの表示モード、'w'で水の表示モードを変更することができます。
操作の応用
キーボードショートカットはほぼ全てのキーに割り振られています。 これらを利用して様々な操作を行うことができます。ここでは、 目的に応じた操作の具体例をいくつか取り上げます。
簡易アニメーションとムービー作成
cdviewは分子動力学などのシミュレーションの結果を表示するために作ったものなので、 比較的容易に粒子の動きを見たり、ムービーを作成したりできます。
簡易アニメーション機能を利用するには、pos001.cdv, pos002.cdv, pos003.cdv.. 等の粒子座標の連番ファイル(PDBファイルでも良い)を準備して、 以下の操作を使います。
- 最初のファイルpos001.cdvをcdview3にドラッグ&ドロップ
- 'z', 'c'でファイルを切り替え
- 'Z', 'C'でファイルを連続切り替え
- 'x'で連続切り替え停止
- 'a', 's'で最初のファイル、最後のファイルに切り替え
連続ファイルにある全データをメモリに読み込むことで、 ファイルの切り替えを高速化することができます。手順は以下の通りです。
- '/'でコマンドモードに移行
- "mem"と入力
- 読み込みファイル間隔(デフォルトは1)を入力
ファイル数が多いときは、 ファイルの読み込み間隔を大きく取った方がメモリの節約になります。
簡易アニメーションが使用できる状態で、 ムービー作成用の画像ファイルを出力するには以下の操作を使います。
- 'S'(またはalt+'s')で番号が大きくなる順にファイルを連続切り替えながら画像出力
- 'A'(またはalt+'a')で番号が小さくなる順にファイルを連続切り替えながら画像出力
出力された画像ファイルから、
AVImakerやFFmpegなどのアプリケーションなどを利用して、ムービーを作成できます。
alt+'s' (alt+'a')とすると出力ファイルの番号が1から始まります。(FFmpeg向け)
環境変数CDVIEW_MAKE_MOVIE_COMMANDにFFmpegで実行するコマンドを設定するとalt+'s'やalt+'a'の後に、そのコマンドが自動で実行されます。自動実行するためには予めパスの通ったところにFFmpegの実行ファイルを置いて下さい。コマンド内には入力ファイルに置換される%IN%と拡張子を除いた出力ファイルに置換される%OUT%を設定する必要があります。設定例は以下の通りです。
コマンド | 説明 |
---|---|
ffmpeg -y -r 15 -i %IN% -vcodec libx264 -pix_fmt yuv420p -vf crop=trunc(iw/2)*2:trunc(ih/2)*2 %OUT%.mp4 | フレームレート15でmp4ファイルを作成 |
fmpeg -y -r 15 -i %IN% -b 2000k -vcodec wmv2 -vf crop=trunc(iw/2)*2:trunc(ih/2)*2 %OUT%.wmv | フレームレート15、ビットレート2000kbpsでwmvファイルを作成 |
環境変数CDVIEW_REMOVE_BMP_AFTER_MAKING_MOVIEの値を1にすると、上記のCDVIEW_MAKE_MOVIE_COMMANDで設定したコマンドを実行した後に動画作成用のbmpファイルを自動で削除します。
cdview3をコマンドラインからオプション-auto [keys]を実行すると、起動後[keys]で設定したキー入力を自動で行います。
例えば、オプション -auto DDDvvs+q を付けて連番ファイルの最初のファイルを与えると、起動後に粒子表示ディテール増加を3回、文字表示レベル変更を2回実行した後にmovie作成用のbmpファイルを出力し、cdview3を終了します。上記のCDVIEW_MAKE_MOVIE_COMMANDを設定しておけば動画の作成も行いますので、バッチファイルなどを作れば自動で複数の動画ファイルを作ることができます。
粒子の検索
表示されている粒子数が少ない場合は、 'l'(エル)で粒子のラベルが表示されますので、 特定のラベルの粒子を探すことができます。
粒子が多い場合は以下の操作を使用します。
- 'f'で粒子検索モードに移行
- 粒子のラベル番号を入力
- 'g'で選択粒子のみ表示
- もう一度'g'で選択粒子とその周りの粒子のみ表示
- 'j'で選択粒子を注目
'j'で粒子注目の解除、'g'で全粒子表示に戻すことができます。
粒子位置の変更
粒子位置の変更には以下の操作を使います。
- 'm'で粒子移動モードへ移行
- マウス左ドラッグで適当な粒子選択しを表示されている平面内で移動
- 粒子以外の場所でマウス左ドラッグで視る角度を変えて移動平面を変更
- '?'で一つ前の移動を取消
- 'o'で変更後の粒子ファイルを保存
ボンドがある粒子を動かした場合は、 ボンド長が変わらないようにボンドで結合している粒子も一緒に移動しますので、 PDBファイルのエディットにも使えます。 ボンド作成の方法はボンドの追加・削除にあります。
ボンドの追加・削除
ボンドの作成や削除は以下能操作で行うことができます。
- ボンドを作成もしくは削除したい2粒子をマウスで選択
- '/'でコマンドモードに移行して、"make_b"を入力しボンド長を入力してボンド作成
- '/'でコマンドモードに移行して、"rm_b"を入力してボンド削除
PDBファイルで欠損残基の補完
欠損している残基がある場合、 切れている部分に残基を追加することで補完することができます。 操作は以下の通り
- '/'でコマンドモードに移行して、"add_rn"を入力
- 3文字の残基名を入力(スペースで区切って複数入力することも可能)
- 追加された残基はまっすぐになるので、 粒子位置の変更で適当な位置に移動
- 末端を別の残基につなぐ必要があるときは、 ボンドの追加・削除でボンドを作る
上記の方法は残基番号が増える方向(C端方向)に残基を付け加える方法です。 残基番号が減る方向(N端方向)に付け加えたいときは"add_rp"コマンドを使用します。
操作の詳細
マウスによる操作
画面に向かってこちら側がx軸の正方向、右がy軸の正方向、上がz軸の正方向とすると
左クリック | クリックした粒子の情報表示 SHIFT+クリックで2粒子以上選択可 |
左ドラッグ | 回転 |
右ドラッグ(上下) | 前後移動 |
右左両方ドラッグ | 平行移動 |
CTRL+左ドラッグ(回転) | x軸(画面に垂直)回転 |
キーボードによる操作
Key | 機能 |
---|---|
ESC | 終了 |
SPC | アトムタイプの使用カラムを変更(cdviewファイル向け) |
- | 全アトムタイプの表示ON/OFF切り替え(cdviewファイル向け) |
/ | コマンドモードへ |
0 | 全アトムタイプを表示 |
1-9 | 粒子種0-8の粒子の表示・非表示の切り替え (+alt で10-18の切り替え) |
= | 粒子種9の粒子の表示・非表示の切り替え (+alt で19の切り替え) |
> | 選択残基を昇順移動(pdbファイル向け) |
< | 選択残基を降順移動(pdbファイル向け) |
? | 粒子の移動を取消 |
a | 最初のファイルに移動 |
A | bmpを出力しながらファイルを連続降順移動(ムービー作成用) |
b | 投視射影と正射影を変更 |
c | ファイルを昇順移動 |
C | ファイルを連続昇順移動 |
d | 粒子のディテールを減少 |
D | 粒子のディテールを増加 |
e | 描画モードを昇順変更(pdbファイル向け) |
E | 描画モードを降順変更(pdbファイル向け) |
f | 粒子検索 |
F | 残基検索(pdbファイル向け) |
g | 選択原子の表示変更 |
h | 追加表面データ表示のON/OFF |
H | 追加表面データ表示の半透明化 |
i | カラーモード昇順変更(pdbファイル向け) |
I | カラーモード降順変更(pdbファイル向け) |
j | 選択粒子を注目 |
J | 座標軸の傾き指標表示のON/OFF |
k | セルの表示モード昇順変更 |
K | セルの表示モード降順変更 |
l | ラベル表示モード昇順変更 |
L | ラベル表示モード降順変更 |
m | 粒子移動モード |
n | 粒子名変更(pdbファイル向け) |
o | ファイル出力 |
O | BMPファイル出力 |
q | 終了 |
r | 粒子サイズを減少 |
R | 粒子サイズを増加 |
s | 最終ファイルへ移動 |
S | bmpを出力しながらファイルを連続昇順移動(ムービー作成用) |
t | 選択粒子している2粒子の位置を一致させる |
u | 等値面表示のON/OFF |
U | 等値面表示モードの変更 |
v | 文字表示レベルの昇順変更 |
V | 文字表示レベルの降順変更 |
w | 水表示モードの昇順変更(pdbファイル向け) |
W | 水表示モードの降順変更(pdbファイル向け) |
x | ファイルの連続変更を中断 |
y | 参照ファイルへのフィッティングのON/OFF(pdbファイル向け) |
Y | 参照ファイル表示のON/OFF |
z | ファイルを降順移動 |
Z | ファイルを連続降順移動 |
[ | 背景色を変更(白・黒) |
DEL | 選択粒子を削除 |
F1 | キーボード操作ヘルプ表示 |
F2 | コマンドヘルプ表示 |
コマンド一覧
Command | Short Command | 機能 |
---|---|---|
calc rmsd | rmsd | RMSD計算(pdbファイル向け) |
calc rmsf | rmsf | RMSF計算(pdbファイル向け) |
calc distance | dis | 2粒子間距離の時間依存計算 |
del distance | ddis | 距離計算windowを削除 |
store memory | mem | 複数ファイルのメモリ読み込み |
set skip | skip | ファイル移動のスキップ数指定 |
set time_unit | tu | 時間単位の変更[fs/ps/ns] |
show line | line | 粒子の線表示ON |
hide line | line_off | 粒子の線表示OFF |
show particle | particle | 粒子表示OFF |
hide particle | particle_off | 粒子表示OFF |
calc solvent_exclude_surface | ses | solvent exclude surface (SES)の計算 |
calc solvent_exclude_surface_all | ses_all | 全ファイルのSES計算 |
add text | text | 任意のテキストを表示 |
find particle_label | label | 粒子検索 |
output bmp | bmp | 'O'でBMPファイル出力 |
output pov | pov | 'O'でPOVファイル出力(shadow off) |
output pov_shadow | pov_shadow | 'O'でPOVファイル出力(shadow on) |
calc density | den | 密度計算 |
fit axis [x|y|z] | fita [x|y|z] | 選択2粒子を軸向きにフィット |
add residue next | add_rn | 残基を降順で追加 |
add residue prev | add_rp | 残基を昇順で追加 |
change residue | cr | 残基名を変更(側鎖は削除される) |
change atom | change_a | 原子名変更(pdbファイル向け) |
make bond | make_b | 選択2粒子間にボンド追加 |
remove bond | rm_b | 選択2粒子間のボンド削除 |
change level_max | lmax | 等値面の最大値変更 |
change level_min | lmin | 等値面の最小値変更 |
gr particle | gr | 動径分布関数計算 |
gr monomer | gr mono | モノマーの動径分布関数計算 |
adjust depth | depth | 表示奥行きの調整 |
output prep | prep | prepファイル出力 |
move dummy | mv_d | prepファイルのダミー粒子を移動 |
change show_selected_particle_range | change s_range | 選択粒子の周り表示時の距離指定 |
set clip_plane | clip | クリップ面作成( x??, y?? or z?? ) |
add clip_plane | add_clip | クリップ面追加( x??, y?? or z?? ) |
rotate | rot | 座標回転: rot [x|y|z] angle (cNum): Num is chain number |
translate | trans | 座標移動: trans [x|y|z] length (cNum): Num is chain number |
set c_color | c_color | 連続色カラム数設定: num
[min] [max] num:座標の後に続くカラム数(最大4) min,max:色設定値の最小、最大 |
set eye_angle | eye_angle | 画角の設定(デフォルトは30°) 値を大きくすると奥行きが強調される。 |
rotate molecule | rot_mol | 選択分子の回転(PDBファイル向け) |
cdviewフォーマットの詳細
フォーマット
データファイルの例
0 0 379.434700 344.410400 391.625700 0 0 0 2
1 0 363.349400 396.798000 354.886200 0 0 0 0
2 0 363.111300 382.512500 408.103700 0 0 0 3
3 0 363.352600 344.300500 360.257600 1 9 9 9
4 0 372.181800 401.394000 350.105200 0 0 0 0
5 0 406.834800 394.561500 374.777800 2 0 9 9
フォーマットは左から
[通し番号] [粒子種0] [x座標] [y座標] [z座標] [粒子種1] [粒子種2] ...
粒子種は数字で与え、数字ごとに色が変化する
粒子種は最大6種類与えることができ、それぞれ表示中にSPACEキーで切り替えることがでます。
粒子種を1種類しか与えない場合のファーマットは
[通し番号] [粒子種0] [x座標] [y座標] [z座標]
となります。
コメントとコメント行コマンド
ファイルの先頭にあり、行の始めが ' か # である行はコメントとみなします。
また、コメント行に以下のようなコマンドを与えることが出来ます。
box_sx=[num] | セルボックスの開始点のX座標 |
box_sy=[num] | セルボックスの開始点のY座標 |
box_sz=[num] | セルボックスの開始点のZ座標 |
box_ex=[num] | セルボックスの終了点のX座標 |
box_ey=[num] | セルボックスの終了点のY座標 |
box_ez=[num] | セルボックスの終了点のZ座標 |
box_wt=[num] | セルボックスの太さ |
box_c=([num1],[num2],[num3]) | セルボックスの色を指定する。 num1は赤成分、num2は緑成分、num3は青成分。 バックが白のときの色はbox_c2で指定する。 |
r?=[num] | ?には数字が入りその粒子種の半径を決める。 |
c?=([num1],[num2],[num3]) | ?には数字が入りその粒子種の色を決める。num1は赤成分、num2は緑成分、num3は青成分 |
bond_file=[file_name] | ボンドの情報が書いてあるファイル名を指定する |
bond?_c=([num1],[num2],[num3]) | ?には数字が入りそのボンドの色をを指定する。num1は赤成分、num2は緑成分、num3は青成分 |
bond?_wt=[num] | ?には数字が入りそのボンドの太さを指定する |
face_file=[file_name] | 面表示の情報が書いてあるファイル名を指定する |
face?_c=([num1],[num2],[num3]) | ?には数字が入りその面の色をを指定する。num1は赤成分、num2は緑成分、num3は青成分 |
st?=[str] | ?には数字が入る。[str]は適当な文字列 |
st?_pos=([num1],[num2]) | 文字列の表示位置(-2.5〜2.5程度) |
light_position=([num1],[num2],[num3]) | 光源の方向を指定する。デフォルトは(1.2,1.0,1.1) |
c_color=[num] | 粒子の色を連続的に変化させるための値のカラム数設定 |
c_color_start=([num1],[num2],[num3]) | 連続変化させる色の開始色 |
c_color_end=([num1],[num2],[num3]) | 連続変化させる色の終了色 |
色の初期設定は0:赤 1:緑 2:青 3:シアン 4:マゼンタ 5:黄 6:深緑 7:グレー 8:白 9:非表示 11-99:グレー
ボンドの表示
コメント行コマンドでボンドファイルを指定して、 任意の粒子間にボンドを描くことができます。(cdviewファイル向け)
ボンドファイルは1行に1ペアの座標ファイルでの通し番号で与えた数字を書き、 その後にボンドの種類番号を書きます。 種類を省略したときは0を指定したことになります。
別ファイルではなくcdvファイル内で、 行頭に「CDVIEW_BOND」を付けてボンドファイルと同じフォーマットでボンド情報を書いても、 粒子間にボンドを表示できます。 (pdbファイルの場合は[REMARK CDVIEW_BOND])
面の表示
コメント行コマンドで面表示ファイルを指定して、 任意の3粒子間に三角形を描くことができます。
ファイルには1行に3つの粒子番号を書き、 その後に面の種類番号を描きます。 種類を省略したときは0を指定したことになります。
別ファイルではなくcdvファイル内で、 行頭に「CDVIEW_FACE」を付けて面表示ファイルと同じフォーマットで面の情報を書いても、 粒子間に面を表示できます。
回転楕円体の表示
コメント行コマンドで粒子の半径を与えるときに、 例えばr0=(1.0,2.0,3.0)とすると、 x軸、y軸、z軸の半径がそれぞれ1.0, 2.0, 3.0の回転楕円体を表示できます。
粒子の角度はx, y, z座標の次に、
4元数の4つの値を書くことで与えることができます。
4元数とオイラー角の関係は以下の通りです。

起動オプション
コマンドラインから起動するときは起動オプションを設定することができます。
-level_num | 等値面の数(fdview向け) |
-level_max | 等値面の最大値(fdview向け) |
-level_min | 等値面の最小値(fdview向け) |
-detail | ポリゴンのディテールの初期値 (default 6) |
-c [file_name] | [file_name]:ヘッダの情報ファイル |
-eye_pos | 初期視点の設定 |
-rot_pos | 回転中心の設定 |
-w[num] | [num]:ウィンドウの幅 (default 448) |
-h[num] | [num]:ウィンドウの高さ (default 448) |
-x[num] | [num]:ウィンドウのx座標 (default 50) |
-y[num] | [num]:ウィンドウのy座標 (default 0) |
-ax[num] | [num]:x軸周りの角度 (default 0) |
-ay[num] | [num]:y軸周りの角度 (default 0) |
-az[num] | [num]:z軸周りの角度 (default 0) |
-j | 遠くの粒子が小さくならない正射影モード |
-full | フルスクリーンモード |
-stereo | ステレオモード |
-eye_angle | 描画画角(default 30) |
-auto | キー入力の自動実行 アルファベット:キーコマンドそのまま, アルファベット+:alt+キーコマンド, '_':スペースキー, '\u','\d','\l','\r','\h': それぞれup, down, left, right, home キー |
環境変数
CDVIEW_PARTICLE_SIZE_SCALE | cdviewファイルで粒子の半径に乗ずる値。 デフォルトは0.7 |
CDVIEW_ENABLE_AXIS | 1にすると、デフォルトで座標軸の傾指標を表示する。 |
CDVIEW_LIGHT_POSITION_X | 光源の方向のX座標 |
CDVIEW_LIGHT_POSITION_Y | 光源の方向のY座標 |
CDVIEW_LIGHT_POSITION_Z | 光源の方向のZ座標 |
CDVIEW_DISABLE_ERROR_HIT_ENTER | エラーメッセージ出力時のEnterキー入力の抑制 |
CDVIEW_MAKE_MOVIE_COMMAND | alt+'s'やalt+'a'の後に実行されるFFmpeg用の動画作成コマンド |
CDVIEW_REMOVE_BMP_AFTER_MAKING_MOVIE | 1にするとCDVIEW_MAKE_MOVIE_COMMANDで設定したコマンド実行後に動画用bmpファイルを削除 |
使用事例(ギャラリー)
ダウンロードとインストール
ダウンロード ver.3.2.0(開発版)
cdview3_2_0.zip (Windows)
粒子選択を高速化するためシェーダを使って OpenGL の描画を行うようにしました。描画処理を改良したため通常の描画自体も大幅に高速化されています。
現在シェーダを使って描画できるのは粒子とボンドだけなので、PDBファイルでの線、リボン表示などには対応していません。また、描画処理の全てをシェーダに対応させたわけではないので ver.3.17 の全機能は再現できません。
シェーダ対応により描画が高速化されていますので、粒子表示のみで特別な機能が必要ない場合はこちらのバージョンをお使い下さい。
ダウンロード ver.3.17
cdview317.zip (Windows)
グラフィックカードの世代によって粒子選択に時間がかかるようになったので、alt+左クリックで粒子選択をする実行ファイルもつくりました。粒子選択が遅い場合には以下のファイルをダウンロードして下さい。
cdview317_alt_pick.zip (Windows)
インストール
ダウンロードしたファイルを解凍してできるフォルダを適当な場所に置いて 下さい。
Windows版での使用ライブラリをglutから freeglut に変更しました。 またライブラリをスタティックリンクしているので追加dllは必要なくなりました。 ver. 3.15以降では、glut32.dllは必要ありません。
ソース
ver.3.2.0 以降のソースファイルは以下にあります。
https://github.com/t-koishi/cdview
ver.3.17 以前のソースファイルは引き続き以下にあります。
http://sourceforge.net/projects/cdview/
コンパイルするときは適宜Makefileを変更して下さい。
更新情報
- 2020/08/14 cdview ver.3.2.0を公開
- 粒子とボンドのシェーダ描画に対応した
- シェーダ描画を使った粒子選択を実装した
- 100万水分子(300万原子)のサンプル water_drop_1M.zip
('d'キーを2回押して粒子描画ディテールを下げるとノートPCでも十分な速度で描画ができました)
- 2019/05/22 cdview ver.3.17を公開
-
粒子種の最大数を20から100にした(サンプル color100_test.zip)
- shift+s or shirt+a で動画作成関数を呼ばないよう修正した
- pdbファイルで溶媒の設定がされた粒子の表示を水の表示の扱いと同じにした
-
面の情報の書いてあるファイルを additional_surface_fixed=file_name で読み込めみ、ファイルを切り替えても常にそのファイルでの面を描くようにした (サンプル sur_fixed_data.zip)
(ファイルを切り替えても最初に読み込んだ面のファイルの情報で面を描画します。各ファイルで同じ面情報を使う場合は、こちらの方がメモリ使用量が減るのでお勧めです。) - 面の情報の書いてあるファイルを additional_surface=file_name で読み込めるようにした(サンプル sur_data.zip)
- CDVIEW_FACEのあるファイルを複数読み込んだとき、最初のファイルの面しか表示されなかったバグを修正した
-
粒子種の最大数を20から100にした(サンプル color100_test.zip)
- 2017/12/11 cdview ver.3.16を公開
- FFmpegを使って動画を作るための環境変数CDVIEW_MAKE_MOVIE_COMMANDを追加した。
この環境変数にFFmpegのコマンド設定するとalt+'s'やalt+'a'で連続画像作成した後に、設定したコマンドが自動実行されます。自動実行するためには予めパスの通ったところにFFmpegの実行ファイルを置く必要があります。環境変数内には入力ファイルに置換される%IN%と拡張子を除いた出力ファイルに置換される%OUT%を設定する必要があります。 - 上記の自動動画作成コマンドを実行した後に画像ファイルを自動で削除する環境変数CDVIEW_REMOVE_BMP_AFTER_MAKING_MOVIEを追加した。
この環境変数の値を1に設定すると、動画を作成するために作った画像ファイルを自動で削除します。 - エラーメッセージ出力後に '--- Hit Enter Key ---' を表示し、Enterキーの入力待ちをするようにした。
ドラッグ&ドロップで実行したときにエラーメッセージが見えないための対策なので、コマンドラインから実行している場合は環境変数'CDVIEW_DISABLE_ERROR_HIT_ENTER'を1にするとEnterキーの入力が不要になります。 - Amberのprepファイルの表示に対応しました。
入力ファイル名の拡張子が'.in'か'.prep'の場合はprepモードでファイルを開きます。'c'キーと'z'キーで分子構造の表示を切り替えることができ、'1'キーでダミー原子の表示のON/OFFを切り替えることができます。 - 画角を設定するコマンドラインオプション -eye_angle を追加しました。
このオプションを使用するとデフォルトの画角30°を変更することができます。 - 粒子選択をalt+左クリックで行う実行ファイルを作成できるようにした。
グラフィックカードの世代によりポリゴンのセレクション機能が省かれるようになったらしく、粒子選択が非常に遅くなったため、通常の左クリックで粒子選択を行わない実行ファイルを準備することにしました。 - 起動後に自動でコマンド入力するオプション -auto を追加しました。
このオプションを使うとバッチファイルなどから自動で動画を作ることができます。
- FFmpegを使って動画を作るための環境変数CDVIEW_MAKE_MOVIE_COMMANDを追加した。
- 2015/05/22 cdview ver.3.15を公開(ver.3.14の更新も含む)
- ボンドファイル読み込みの不具合を修正 (Thanks to Nさん)
- [HOME]キーで描画奥行き範囲を自動調整するようにした。
マウス操作で奥に行った粒子が見えなくなった場合は[HOME]キーを押して下さい。 - 粒子種の値+100でその色を暗くした色の粒子を描けるようにした。
- PDBファイルでもCDVIEW_BOND行でボンドを描けるようにした。
- 'rot_mol'コマンドで分子を回転できるようにした。(PDBファイル向け)
- 'add_clip'コマンドでクリップ面を追加できるようにした。
- 2013/05/24 cdview ver.3.13を公開
- fdview表示のフォントカラー設定の修正(Thanks to Mさん)
- 'pov'コマンドで連続ファイル出力がpovファイルになるようにした。
これによりPOV-Rayのレンダリングで動画を作れるようになった。
(Thanks to Aさん) - 'set eye_angle'コマンドで画角を変更できるようにした。(デフォルトは30°)
- fdviewモードの安定性を少し改善
- 'calc density'コマンドで分割セルサイズと原子種を設定できるようにした。
- 2013/01/09 cdview ver.3.12を公開
- ソースコード公開のための修正
動作はver.3.11と変わらないはず。
(Thanks to Aさん)
- ソースコード公開のための修正
- 2012/12/29 cdview ver.3.11を公開
- アイドル時の描画を抑制
- 'j'で視点が移動しないときがあったバグを修正
- 2012/12/27 cdview ver.3.10を公開
- 等値面の複数表示に対応
等値面を表示時にカラーマップをクリックで、 対応する等値面の表示のON/OFFができるようにした。 - ボンドの色設定ができないバグを修正
- ボンドの設定がpovファイルに反映されないバグを修正
(Thanks to Aさん)
- 等値面の複数表示に対応
- 2011/11/30 cdviewを使った動画作成チュートリアルを追加
- 2011/11/30 cdview ver.3.09を公開
- オプション -s_lenと -s_widthを追加。 立体視したときの視点の位置と、 左右の視点の距離を設定できるようにした。
- alt+'s'、alt+'a'でFFmpeg向けの連番BMPファイルを作成
- いくつかデバッグ
- 2010/11/05 cdview ver.3.08を公開
- 'p'で周期境界条件を反映した表示を行えるようにした。
ただし、コメント行コマンドで
box_sx,box_sy,box_sz,box_ex,box_ey,box_ezが設定されている必要有り。
(※この状態で粒子を動かすなどの操作をすると、
不具合が出るかもしれませんので注意して下さい。)
- コメント行コマンド inside_c で周期境界表示をしたときの粒子の内側の色を設定できるようにした。
- 'p'で周期境界条件を反映した表示を行えるようにした。
ただし、コメント行コマンドで
box_sx,box_sy,box_sz,box_ex,box_ey,box_ezが設定されている必要有り。
(※この状態で粒子を動かすなどの操作をすると、
不具合が出るかもしれませんので注意して下さい。)
- 2010/08/11 cdview ver.3.07を公開
- ファイルを切り替えたとき粒子のディテールを保存するようにした。
- 粒子の色を連続的に変化させるモードを追加。(Thanks to Mさん)
cdviewファイルでコメント行にc_color=1と書いて、 座標データの次のカラムに適当な実数(ピリオドが必要)を書いておくと、 その数の最小値から最大値に向かって色が連続的に変化する。 色はフォルトで青→緑→赤と変化する。変化する色を指定したい場 合はコメント行にc_color_start=(1,1,1) c_color_end=(1,0,0)のように、開始色と終了色を設定する。 色をしている実数は最大4カラムまでであり、 その数に応じてc_colorの値を設定する。
コメント行にc_colorが無くても、 'c_color'コマンドで色を決める実数のカラム数 (最小値、最大値も)を設定できる。 - bond_file読み込み処理のデバッグ(Thanks to Nさん)
- shift+' 'でfdviewデータのカラム変更
- 2010/05/27 cdview ver.3.06を公開
- '='キーで粒子種9の表示ON/OFFができるようにした。
- alt+'1'-'9'キーで粒子種10-18、 alt+'='キーで粒子種19の表示ON/OFFができるようにした。
- 2010/04/22 cdview ver.3.05を公開
- cdviewファイルでセルボックス有りのときに、 視点の位置を旧cdviewに合わせて後に下げた(距離を1.5倍)
- セルボックスの色を変更するためにコメント行コマンドbox_cを追加
(cdviewファイル向け)
例えばコメント行にbox_c=(1.0,0.0,0.0)を書くと セルボックスの色が赤になる。
バックが白のときの色はbox_c2で設定する。 - 光源の方向を変更するためにコメント行コマンドlight_positionを追加
(cdviewファイル向け)
例えばコメント行にlight_position=(2.0,3.0,4.0)を書くと 光源の向きを(2.0,3.0,4.0)にできる。
環境変数 CDVIEW_LIGHT_POSITION_X, CDVIEW_LIGHT_POSITION_Y, CDVIEW_LIGHT_POSITION_Zでも設定可能 - 'J'キーで座標軸の傾きの指標を表示
環境変数CDVIEW_ENABLE_AXISを1にするとデフォルトで表示する。 - Shift+左クリックの最大原子選択数を4つにして、 3つ選択してるときはボンド間の角度、 4つ選択してるときは2面角を表示
- 2010/04/01 cdview ver.3.04を公開
- 以前公開していた粒子ビューワー「cdview ver.1.09」、
PDBファイル表示に特化した「cdview2」(非公開)、
3次元空間中のスカラー量を表示する「fdview」(非公開)を統合し、
個人的に使用していたものを公開。
- 以前公開していた粒子ビューワー「cdview ver.1.09」、
PDBファイル表示に特化した「cdview2」(非公開)、
3次元空間中のスカラー量を表示する「fdview」(非公開)を統合し、
個人的に使用していたものを公開。
あとがき
2012/12/27
「プログラミング作法」(Brian W. Kernighan, Rob Pike, 福崎俊博 訳)に感銘を受け、 cdviewを作り直したのが本作です。 特にデータ構造が前作よりも大幅に変わり、プログラミングの自由度が増えました。
ただし、汎用ライブラリの作成や、インターフェースと実装の分離なども行ったため、 プログラムの複雑度もずいぶん増えました。 それと、データ構造毎に初期化などを準備する必要があり、プログラムの規模は結構大きくなりました。
リストやハッシュなどやを自作すると、C++のありがたみがよく分かります。 その苦労がきっかけとなり、CよりもC++を使うようになったので、 ある意味記念となるプログラムということになりました。
まだバグはありそうですが、まずまず安定して動いているのでver.3.10からbetaは外しました。 今後はインターフェースをglutからQtに変えた新cdviewを作りたいと思っています。
2013/01/09
Windows以外でもcdviewを使いたいとありがたい要望があったので、 ソースを公開することにしました。 これを機に-Wallで警告が出なくなるようにソースを修正したのですが、 これまでの無精から使用していない変数が大量にあることが分かり、 これらを全て削除しました。 それでもコメントアウトしてあるデバッグ用のコードがまだたくさんあるので、 あまりお見せできるようなものではないのですが...
コンパイルしてでもcdviewを使いたいという方は http://sourceforge.net/projects/cdview/ からダウンロードして下さい。MacとLinuxで(多分)コンパイル出来るMakefileも入れておきました。 SourceForgeの Code には、なるべく最新のソースを置いておくつもりですので、 興味ある方はsvnでダウンロードして下さい。
2020/08/26
ver.3.2.0 でようやく OpenGL のシェーダ(GLSL)を使った cdview を公開することができました。
ver.3.16 あたりで、使用しているノートPCを変更したときGPUによるピッキング処理のハードウェアアクセラレーションがなくなっており、マウスクリックによる粒子選択が使い物にならないぐらい遅くなっていることに気づきました。いろいろ調べて、GPU のシェーダを使わないとピッキング処理を高速化できないことがわかり、苦労してシェーダを使ったピッキング処理を実装し、初めての公開したシェーダ対応版 cdview が ver.3.2.0 となります。
2000年ぐらいに OpenGL を勉強し始め cdview を作ったので、 cdview は OpenGL v1.1 の描画命令を使った実装となっていました。その後、 GPU にはユニファイドシェーダが使われるようになり、 OpenGL を使った描画がかなり複雑になったことは知っていましたが、簡単には対応できなさそうでしたので、 cdview では OpenGL v1.1 の書き方のままになっていました。
2017年ぐらいから少しずつ OpenGL の勉強を再開したので、シェーダの対応にはかなり時間がかかったことになります。最終的には同じ形状の大量描画に向いている「インスタンシング描画」を実装できたので、ver.3.2.0 はそれまでものより描画がかなり高速化されました。ただし、ver.3.2.0 で使えるのは ver.3.17 の機能の一部だけですので、今後は ver.3.2.x で開発を進めていく予定です。
ソースコードは、今時の環境に合わせて GitHub の https://github.com/t-koishi/cdview で公開しており、今後の更新もこちらで公開する予定です。GLSL対応は #ifdef USE_GLSL ... #endif に書かれていますので、興味のある方は参照してみて下さい。
OpenGL のプログラム作成に関しては今回の更新を含め、和歌山大学の床井先生の webページ を参考にさせてもらっています。私が OpenGL のプログラムを作れるようになったのは、このページのおかげと言っても過言ではありません。OpenGL プログラミングについて詳しい情報を発信してくださる床井先生にこの場を借りて感謝申し上げます。