粒子表示プログラム cdview ver.3.16

特徴

  • 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'で最初のファイル、最後のファイルに切り替え

連続ファイルにある全データをメモリに読み込むことで、 ファイルの切り替えを高速化することができます。手順は以下の通りです。

  1. '/'でコマンドモードに移行
  2. "mem"と入力
  3. 読み込みファイル間隔(デフォルトは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 %OUT%.mp4 フレームレート15でmp4ファイルを作成
fmpeg -y -r 15 -i %IN% -b 2000k -vcodec wmv2 %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'(エル)で粒子のラベルが表示されますので、 特定のラベルの粒子を探すことができます。

粒子が多い場合は以下の操作を使用します。

  1. 'f'で粒子検索モードに移行
  2. 粒子のラベル番号を入力
  3. 'g'で選択粒子のみ表示
  4. もう一度'g'で選択粒子とその周りの粒子のみ表示
  5. '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最初のファイルに移動
Abmpを出力しながらファイルを連続降順移動(ムービー作成用)
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ファイル出力
OBMPファイル出力
q終了
r粒子サイズを減少
R粒子サイズを増加
s最終ファイルへ移動
Sbmpを出力しながらファイルを連続昇順移動(ムービー作成用)
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コマンドヘルプ表示

コマンド一覧

CommandShort Command機能
calc rmsdrmsdRMSD計算(pdbファイル向け)
calc rmsfrmsfRMSF計算(pdbファイル向け)
calc distancedis2粒子間距離の時間依存計算
del distanceddis距離計算windowを削除
store memorymem複数ファイルのメモリ読み込み
set skipskipファイル移動のスキップ数指定
set time_unittu時間単位の変更[fs/ps/ns]
show lineline粒子の線表示ON
hide lineline_off粒子の線表示OFF
show particleparticle粒子表示OFF
hide particleparticle_off粒子表示OFF
calc solvent_exclude_surfacesessolvent exclude surface (SES)の計算
calc solvent_exclude_surface_allses_all全ファイルのSES計算
add texttext任意のテキストを表示
find particle_labellabel粒子検索
output bmpbmp'O'でBMPファイル出力
output povpov'O'でPOVファイル出力(shadow off)
output pov_shadowpov_shadow'O'でPOVファイル出力(shadow on)
calc densityden密度計算
fit axis [x|y|z]fita [x|y|z]選択2粒子を軸向きにフィット
add residue nextadd_rn残基を降順で追加
add residue prevadd_rp残基を昇順で追加
change residuecr残基名を変更(側鎖は削除される)
change atomchange_a原子名変更(pdbファイル向け)
make bondmake_b選択2粒子間にボンド追加
remove bondrm_b選択2粒子間のボンド削除
change level_maxlmax等値面の最大値変更
change level_minlmin等値面の最小値変更
gr particlegr動径分布関数計算
gr monomergr monoモノマーの動径分布関数計算
adjust depthdepth表示奥行きの調整
output prepprepprepファイル出力
move dummymv_dprepファイルのダミー粒子を移動
change show_selected_particle_rangechange s_range選択粒子の周り表示時の距離指定
set clip_planeclipクリップ面作成( x??, y?? or z?? )
add clip_planeadd_clipクリップ面追加( x??, y?? or z?? )
rotaterot座標回転: rot [x|y|z] angle (cNum): Num is chain number
translatetrans座標移動: trans [x|y|z] length (cNum): Num is chain number
set c_colorc_color連続色カラム数設定: num [min] [max]
num:座標の後に続くカラム数(最大4)
min,max:色設定値の最小、最大
set eye_angleeye_angle画角の設定(デフォルトは30°)
値を大きくすると奥行きが強調される。
rotate moleculerot_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-19:グレー

ボンドの表示

コメント行コマンドでボンドファイルを指定して、 任意の粒子間にボンドを描くことができます。(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元数(ξ,η,ζ,χ )  とオイラー角の関係は以下の通りです。

          θ    ψ  - ϕ
ξ  =   sin--sin------
          2       2
η  =   sin θ-cos ψ---ϕ
          2       2
           θ    ψ + ϕ
ζ  =   cos -sin ------
           2      2
χ  =   cos θcos ψ-+-ϕ-
           2      2

起動オプション

コマンドラインから起動するときは起動オプションを設定することができます。

-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_SCALEcdviewファイルで粒子の半径に乗ずる値。 デフォルトは0.7
CDVIEW_ENABLE_AXIS1にすると、デフォルトで座標軸の傾指標を表示する。
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ファイルを削除

使用事例(ギャラリー)

ダウンロードとインストール

ダウンロード

cdview316.zip (Windows)

グラフィックカードの世代によって粒子選択に時間がかかるようになったので、alt+左クリックで粒子選択をする実行ファイルもつくりました。粒子選択が遅い場合には以下のファイルをダウンロードして下さい。
cdview316_alt_pick.zip (Windows)

インストール

ダウンロードしたファイルを解凍してできるフォルダを適当な場所に置いて 下さい。

Windows版での使用ライブラリをglutから freeglut に変更しました。 またライブラリをスタティックリンクしているので追加dllは必要なくなりました。 ver. 3.15以降では、glut32.dllは必要ありません。

ソース

ソースファイルは http://sourceforge.net/projects/cdview/ にあります。
コンパイルするときは適宜Makefileを変更して下さい。

更新情報

  • 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 を追加しました。
      このオプションを使うとバッチファイルなどから自動で動画を作ることができます。
  • 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 で周期境界表示をしたときの粒子の内側の色を設定できるようにした。
  • 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」(非公開)を統合し、 個人的に使用していたものを公開。

あとがき

「プログラミング作法」(Brian W. Kernighan, Rob Pike, 福崎俊博 訳)に感銘を受け、 cdviewを作り直したのが本作です。 特にデータ構造が前作よりも大幅に変わり、プログラミングの自由度が増えました。

ただし、汎用ライブラリの作成や、インターフェースと実装の分離なども行ったため、 プログラムの複雑度もずいぶん増えました。 それと、データ構造毎に初期化などを準備する必要があり、プログラムの規模は結構大きくなりました。

リストやハッシュなどやを自作すると、C++のありがたみがよく分かります。 その苦労がきっかけとなり、CよりもC++を使うようになったので、 ある意味記念となるプログラムということになりました。

まだバグはありそうですが、まずまず安定して動いているのでver.3.10からbetaは外しました。 今後はインターフェースをglutからQtに変えた新cdviewを作りたいと思っています。(2012/12/27)

(追記)
Windows以外でもcdviewを使いたいとありがたい要望があったので、 ソースを公開することにしました。 これを機に-Wallで警告が出なくなるようにソースを修正したのですが、 これまでの無精から使用していない変数が大量にあることが分かり、 これらを全て削除しました。 それでもコメントアウトしてあるデバッグ用のコードがまだたくさんあるので、 あまりお見せできるようなものではないのですが...

コンパイルしてでもcdviewを使いたいという方は http://sourceforge.net/projects/cdview/ からダウンロードして下さい。MacとLinuxで(多分)コンパイル出来るMakefileも入れておきました。 SourceForgeの Code には、なるべく最新のソースを置いておくつもりですので、 興味ある方はsvnでダウンロードして下さい。(2013/01/09)