mdisp: ヘルプ

● 名前
   mdisp3 : 立体モデルを3次元表示する.(model displayer)

● 形式
   prompt% java [options] -jar mdisp3.jar [options] file1.csv file2.csv ...

● 入力ファイル形式 file?.csv (CSV形式)

   a1) mdisp3, version

   mdisp3 のバージョンを指定する.この行が指定されなかった場合はデフォル
   ト設定が使用される.
   
   a2) window-parameters, title, xWinSize, yWinSize (, [sync|no]) (, [adjust|no])

   タイトル,ウインドウサイズ,複数のウインドウのモーションをシンクロさ
   せるかどうか,モデルを画面サイズにアジャストさせるかどうかにを指定す
   る.この行が指定されなかった場合はデフォルト設定が使用される.
   
   a3) motion-parmeters, resRot, resTrans

   回転ボタンによる回転の解像度 resRot [rad]と平行移動ボタンによる平行
   移動量 resTrans を指定する.この行が指定されなかった場合デフォルト設
   定される.
   
   a4) light, ambient, R, G, B

   色(R,G,B)のアンビエントライトを設定する.この行が指定されなかった場
   合デフォルト設定される.
   
   a5) light, directional, R, G, B, dx, dy, dz

   色(R,G,B),方向(dx,dy,dz)の平行光源を設定する.この行が指定されなかっ
   た場合デフォルト設定される.
   
   a6) background, R, G, B

   バックグランドの色を指定する.この行が指定されなかった場合デフォルト
   設定される.
   
   a7) action, MIファイル名, ...
   
   この行が指定された場合,「sshotByAction」ボタンによって,物体モデル
   や視点を動かしながら,画面のスクリーンショットを撮る.コマンドライン
   の仕様は下記と,HMDispFrame#shotByAction()の解説を参照.
   
   ----------
   
	コマンドライン commandLine に従って,物体モデルや視点を動かしながらスク
	リーンショットを撮る.コマンドラインの仕様は下記の通り.
		 
	1)コマンドラインの要素はカンマ区切り.CSV形式.
		 
	2)0番目の要素は,「action」とする.
		 
	3)1番目の要素にはスクリーンショットされた画像を保存するMI形式ファイ
	ルの名前(csv ファイルからの相対パスを記述)を指定する.(スクリーンショッ
	トしない場合は任意の文字列で良い.)空欄の場合はファイルダイアログが開
	く.
	
	4)3番目以降は,下記のモーション命令とスクリーンショット命令を順番に
	記述する.
	
	   a) 「ROX, 物体の回転角度」  [rad]
	   b) 「ROY, 物体の回転角度」  [rad]
	   c) 「ROZ, 物体の回転角度」  [rad]
	   d) 「TOX, 物体の移動量」
	   e) 「TOY, 物体の移動量」
	   f) 「TOZ, 物体の移動量」
	
	   g) 「RVX, 視点の回転角度」  [rad]
	   h) 「RVY, 視点の回転角度」  [rad]
	   i) 「RVZ, 視点の回転角度」  [rad]
	   k) 「TVX, 視点の移動量」
	   l) 「TVY, 視点の移動量」
	   m) 「TVZ, 視点の移動量」
	
	   n) 「W,待ち時間」          [msec]
	
	   o) 「SS」	   // スクリーンショット
	
	例)「ファイル『screenshot.mi』で,まず物体をX方向に 0.5 進ませ,Z方向
	に -0.4 進ませ,Y軸回りに π/4回転させ,スクリーンショットを撮り,次に
	視点をY方向に 0.7 進ませ,もう一度スクリーンショットを撮る」というコマ
	ンドラインは,
	
	action, screenshot.mi, TOX, 0.5, TOZ, -0.4, ROY, 0.785, SS, TVY, 0.7, SS
	
	となる.

   ----------
   
   b1) point, x, y, z, color

   座標(x,y,z), カラーcolorの点を表示する.
   
   b2) points, n, color, x0, y0, z0, x1, y1, z1, ...

   カラーcolor,座標(x0, y0, z0), (x1, y1, z1), ...,点数 n 個の点集合を表示する.
   
   b3) sphere, x, y, z, r, color

   中心(x,y,z), 半径r, カラーcolorの球を表示する.
   
   b4) cylinder, x0, y0, z0, x1, y1, z1, r, color

   端点(x0,y0,z0)-(x1,y1,z1), 半径r, カラーcolorの円筒を表示する.
   
   b5) line, x0, y0, z0, x1, y1, z1, color

   端点(x0,y0,z0)-(x1,y1,z1), カラーcolorの線を表示する.
   
   b6) triangle, x0, y0, z0, x1, y1, z1, x2, y2, z2, color

   頂点(x0,y0,z0)-(x1,y1,z1)-(x2,y2,z2),カラーcolorの三角形を表示する.
   裏表があるの注意.
   
   b7) t-triangle, x0, y0, z0, x1, y1, z1, x2, y2, z2, textureFilePath, xt0, yt0, xt1, yt1, xt2, yt2

   頂点(x0,y0,z0)-(x1,y1,z1)-(x2,y2,z2)を表示.ただし,3角形表面に画像
   ファイル textureFilePath の中の三角形領域
   (xt0,yt0)-(xt1,yt1)-(xt2,yt2)をテクスチャとして貼る.裏表があるの注
   意.また,textureFilePath には,csv ファイルからの相対パスを記述する.
   空欄もしくは存在しないファイル名を指定するとファイルダイアログが開く.

   b8) box, x0, y0, z0, xsize, ysize, zsize, rotationOrder, angleX, angleY, angleZ, color

   中心(x0,y0,z0),大きさ(xsize,ysize,zsize),回転順序 rotationOrder,
   回転角度(angleX,angleY,angleZ)[rad],カラーcolorの箱を表示する.
   
   b9) c-cube, x0, y0, z0, scale

   中心(x0,y0,z0),スケール scale のカラーキューブを表示する.
   
   b10) b-box, x0, y0, z0, x1, y1, z1, color

   2点(x0,y0,z0)-(x1,y1,z1)を対角,色をcolorとするバウンダリボックスを表示する.
   
   b11) text2d, x0, y0, z0, rotationOrder, angleX, angleY, angleZ, text, color, fontName, fontSize, fontStyle

   中心(x0,y0,z0),回転順序 rotationOrder,回転角(angleX, angleY,
   angleZ) [rad],テキスト text,色 color,フォント名 fontName(Dialog,
   DialogInput, Monospaced, Serif, SansSerif),フォントサイズ fontSize,
   フォントスタイル fontStyle(0:Plane, 1:Bold, 2:Italic) の2次元文字を
   表示する.
   
   - 色 color には
   
      ア) white, black, red, green, blue, yellow, gray050 などの色を表す語句か,
      イ) RGBA 値を表す[0,1]の4つの実数値
   
      を指定する.ただし,直前のセルに,ア)の場合には「cn」,イ)の場合
      には「cv」のカラーコード判別子を置く.
   
   - 回転順序は下記の値によって指定する.

      public static final int RO_XYZ = 12
      public static final int RO_XZY = 21
      public static final int RO_YXZ = 102
      public static final int RO_YZX = 120
      public static final int RO_ZXY = 201
      public static final int RO_ZYX = 210
      ( HMDispArea#rotTransform3D()参照 ).回転させない場合は 0 を与える.
   
   ◎ 入力ファイル例

-----
# (コメント文です)
# サンプル csv ファイル for mdisp3
#
mdisp3,1.0
window-parameters,MDisp Sample CSV,300,300,sync,adjust
motion-parmeters,0.17444,0.1
background, 0.1, 0, 0
light, ambient, 1.0,0.8,0.6
light, directional, 0.6,0.8,1.0, 1,-1,-1

# 注意)screenshot.mi は相対パスを記載.
action, screenshot.mi, TOX, 0.1, W, 1000, TOX, 0.1, W, 1000, SS, ROY, 0.174, W, 1000, ROY, 0.174, W, 1000, ROY, 0.174, W, 1000, ROY, 0.174, W, 1000, SS, TVZ, -0.1, W, 1000, TVZ, -0.1, W, 1000, TVZ, -0.1, W, 1000, SS

sphere,  0,  0,  0, 0.5, cn, white
sphere, 10,  0,  0, 0.5, cn, red
sphere,  0, 10,  0, 0.5, cn, green
sphere,  0,  0, 10, 0.5, cn, blue
sphere,  5,  5,  5, 0.8, cv, 0.505,0.0588,0,0

point, 1, 1, 1, cn, blue
point, 2, 2, 2, cv, 1, 0, 0, 0
point, 3, 3, 3, cv, 0, 1, 0, 0
points, 5, cn, red,     7.1,7.1,7.1, 7.2,7.2,7.2, 7.3,7.3,7.3, 7.4,7.4,7.4, 7.5,7.5,7.5
points, 5, cv, 0,0,1,0, 9.1,9.1,9.1, 9.2,9.2,9.2, 9.3,9.3,9.3, 9.4,9.4,9.4, 9.5,9.5,9.5

b-box, 0,0,0, 10,10,10, cn, yellow
triangle,   0, 0, 0,   0, 0, 10,  10,  0, 0, cv, 1,0,1,0

# 注意)sample_texture.jpg は相対パスを記載.
t-triangle, 0, 0, 0,  10, 0,  0,   0, 10, 0, sample_texture.jpg, 50,1000, 850, 1000, 50, 50

box, -1, -1, -1, 1, 1, 1, 0, 0, 0, 0, cn, orange 
text2D, 0, 0, 10,  0, 0, 0, 0, MDisp (data.takix3), cn, white, Dialog, 200, 0
# EOF
-----

   
● オプション

  -h : ヘルプメッセージの出力
  -help : ヘルプメッセージの出力
  -size xsize ysize : ウインドウサイズ
  -res trans rot : 平行移動と回転の解像度
  -sync on/off : 複数のウィンドウを同期させて制御する

● メニューバーの説明

  - file, help は省略

  - sshot : スクリーンショットを撮る.

   screen shot は現在の画面のスクリーンショットを撮る.ファイルダイアロ
   グが開くので,画像を保存したディレクトリとファイル名のプレフィックス
   を入力する.画像形式はBMP形式である.

   sshotByMotionButton が on の場合は,ボタンによって平行移動や回転を行
   う度にスクリーンショットを撮る.

   sshotByAction は入力された csv ファイルの action 行の SS コマンドに
   従ってスクリーンショットを撮る.


● パネルの説明

  - Motion: ボタン操作のとき,objects は物体を移動させ,view point は
   視点を移動させる.マウス操作は常に物体を移動させる.

  - X回転正,逆など : 物体もしくは視点を移動させる.

  - ΔΘ度,Δx= : ボタン操作の際の回転量および平行移動量を設定する.回転量
   は[度(degree)]単位.


● デフォルトの物体モデルワールド

   CSVファイルを指定しないで起動した際,原点(0,0,0)に白玉,(10,0,0)に赤
   玉,(0,10,0)に緑玉,(0,0,10)に青玉が表示される.デフォルトでは,
   HMDispArea#display(true) が実行されるため,画面に丁度良く表示される
   ように回転原点の並行移動とスケールが実行される.

   モーションボタンやマウスによる移動や回転は,物体モデルに関しては物
   体モデルが乗っている座標系そのものを移動・回転させ,ViewPlatformに
   関しては固定されたユニバースにおける移動・回転になる.


● 本プログラムを実行するためには JDK と Java3d のインストールとセットアップが必要です.

◎ Linux

1. JDK のインストール

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
https://www.oracle.com/technetwork/java/javase/downloads/index.html

などから,JDK(例えば,jdk-8u152-linux-x64.tar.gz)をダウンロードし,インストールする.

2. Java3d のインストール

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
https://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html

などから,Java3d(例えば,java3d-1_5_1-linux-amd64.bin)をダウンロードし,インストールする.

3. 設定

tcsh の場合,環境変数 CLASSPATH を以下のように設定する:

setenv JAVA3D_BASE	   (Java3Dのインストールディレクトリ)/java3d-1_5_1
setenv CLASSPATH_JAVA3D	   ${JAVA3D_BASE}/lib/ext/j3dcore.jar:${JAVA3D_BASE}/lib/ext/j3dutils.jar:${JAVA3D_BASE}/lib/ext/vecmath.jar
setenv CLASSPATH .:${CLASSPATH}:${CLASSPATH_JAVA3D}

ただし,JAVA3D_BASE は Java3D をインストールしたディレクトリである.

また,環境変数 LD_LIBRARY_PATH を以下のように設定する:

setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${JAVA3D_BASE}/lib/amd64

◎ Windows

Windows 7 Ultimate での実績です.他の環境でうまく起動するかどうかよく分かりません.

1. JDK のインストール

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
https://www.oracle.com/technetwork/java/javase/downloads/index.html

などから,JDK(例えば,jdk-8u152-windows-x64.exe)をダウンロードし,インストールする.

2. Java3d のインストール

http://www.pr.cs.tsukuba.ac.jp/~takizawa/softwares/softwaresIIP/softwaresIIP/java_binaries/
https://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html

などから,Java3d(例えば,java3d-1_5_1-windows-amd64.exe)をダウンロードし,インストールする.

3. 設定

JDK をインストールすると環境変数 Path の先頭に

C:\ProgramData\Oracle\Java\javapath

が挿入されるが,これを削除して(もしくは,下記のパスの後に移動しても良
い)から,JDK と Java3d へのパス

C:\Program Files\Java\jdk1.8.0_152\bin;C:\Program Files\Java\Java3D\1.5.1\lib\ext;C:\Program Files\Java\Java3D\1.5.1\bin

を加える.どうも,
C:\ProgramData\Oracle\Java\javapath\java 
は Java3d と連携していないようです.


● 不具合など

- 本ヘルプメッセージにおける起動方法や使用方法,設定方法に関する説明は,
  jar 形式ファイルを使って本プログラムを起動する際のためのものです.
  bat 形式や exe 形式の場合は該当しない場合があります.

- Linux で,絵が崩れる.また,sample.csv の読み込みに失敗する.すみませ
  ん,原因不明です.

- csv ファイルを読み込み,フレームの大きさを変えてから,sshotByAction
  をするとフリーズする.すみません,原因不明です.csv ファイルの
  window-parameters を変更してから,csv ファイルを読み込み,(フレーム
  の大きさを変えずに),sshotByAction をして下さい.

- sync 機能がうまくいかない.

- JDK や java3d のバージョン,86 用か 64 用か,linux や windows のバー
  ジョンなどの組み合わせで,うまく起動したり,しなかったりします.お手
  数ですが,色々試してみて頂ければと思います.

- その他にも不便な点や,不具合,バグなどあります.すみません,順次修正
  していきます.

● Version: $Id: HMDispFrame.java,v 1.6 2020/01/31 05:09:05 takizawa Exp $

● item-mark order = ● ◎ ○ ※ * + ー ・ 

---
---
Hotaka TAKIZAWA
data.takix3@gmail.com

このソフトウェアには不具合や不便な点があります.また,電子署名はしてお
りません.これらの不具合,不便な点,改竄の有無などに起因する如何なる損
害等にも,当方は一切の責任を持ちません.全て使用者ご自身の責任でご利用
頂きますようお願い致します.

This software would have bugs and inconveniences. An electronic
signature has not been obtained. The software developer (H.T.) is not
responsible for any disadvantages and damages caused by the
software. Please use the software at your own risk.

Copyright (c) 1998-2020, Hotaka TAKIZAWA, All Rights Reserved.

Copyright © , Hotaka TAKIZAWA, All Rights Reserved.