date: thu, 27 sep 2007 18:52:31 +0900 date: thu, 04 oct ...sp8ct/tmp/stl_globe.pdf1 / 26 date: thu,...

26
1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1) Date: Fri, 07 Aug 2009 17:00:07 +0900(訂正と補足;その2) From: Tsukasa NAKANO To: "Y.TESHIMA", tomatsuri atsushi Cc: Akiko TANAKA Subject: globe Subject: globe-2(訂正と補足;その1) Subject: stl_globe.tar-was-modified(訂正と補足;その2) てしまさま、 地質調査情報センターのなかのです。先日の会合の時にあなたの計算機で使えなかったアニメーション 作成用のものを含めた、地球儀作成用のプログラム群の説明を書きます。 株式会社 Tnet 戸祭さま、 産業技術総合研究所の中野 司です。先日転送した「地球儀」関連のプログラムなどの説明の E-mails ですが、手嶋さんに送った後にそれらで説明している書庫ファイル http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar の内容を変えたことを思い出しました。具体的には、「地球儀」のデータ作成などの処理のデモ用の C-shell scripts やバッチファイル群を入れたディレクトリ demo_csh/ demo_bat/ の構成および ファイル名の命名則を変更し、さらに、それらの中に以前にはなかった PLY/ZCP 形式のデータを作 成するデモ用の C-shell scripts やバッチファイル群を付加しました。 (1) 3次元物体像の造形用プログラム群の概要 地球儀や立体地質図、そして、画像から抽出した物体像などの3次元像の「造形」をぼくは以下の2種 類のプログラムで行っています: [1] 3次元像の CAD データ(STL 形式PLY/ZCP 形式データ)を作成するためのプログラム群。 [2] そのデータの編集・加工や3次元像の鳥瞰図描画など(GIF 形式の動画の作成を含む)を行う ためのプログラム群。 以前にあなたに差し上げたものは [1] で、これは後述の書庫ファイル stl_globe.tar にも入っています。 また、 [2] のうちの主要なものは下記の WEB ページで公表しています(地球儀の動画などを公表する場 合にはこのページを引用して下さい;そこには引用法も書いてあります): http://www.gsj.jp/GDB/openfile/files/no0448/0448index.html https://www.gsj.jp/researches/openfile/openfile2006/openfile0448.html

Upload: others

Post on 19-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

1 / 26

Date: Thu, 27 Sep 2007 18:52:31 +0900

Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

Date: Fri, 07 Aug 2009 17:00:07 +0900(訂正と補足;その2)

From: Tsukasa NAKANO

To: "Y.TESHIMA", tomatsuri atsushi

Cc: Akiko TANAKA

Subject: globe

Subject: globe-2(訂正と補足;その1)

Subject: stl_globe.tar-was-modified(訂正と補足;その2)

てしまさま、

地質調査情報センターのなかのです。先日の会合の時にあなたの計算機で使えなかったアニメーション

作成用のものを含めた、地球儀作成用のプログラム群の説明を書きます。

株式会社 Tnet 戸祭さま、

産業技術総合研究所の中野 司です。先日転送した「地球儀」関連のプログラムなどの説明の E-mails

ですが、手嶋さんに送った後にそれらで説明している書庫ファイル

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar

の内容を変えたことを思い出しました。具体的には、「地球儀」のデータ作成などの処理のデモ用の

C-shell scripts やバッチファイル群を入れたディレクトリ demo_csh/ と demo_bat/ の構成および

ファイル名の命名則を変更し、さらに、それらの中に以前にはなかった PLY/ZCP 形式のデータを作

成するデモ用の C-shell scripts やバッチファイル群を付加しました。

(1) 3次元物体像の造形用プログラム群の概要

地球儀や立体地質図、そして、画像から抽出した物体像などの3次元像の「造形」をぼくは以下の2種

類のプログラムで行っています:

[1] 3次元像の CAD データ(STL 形式と PLY/ZCP 形式データ)を作成するためのプログラム群。

[2] そのデータの編集・加工や3次元像の鳥瞰図描画など(GIF 形式の動画の作成を含む)を行う

ためのプログラム群。

以前にあなたに差し上げたものは [1] で、これは後述の書庫ファイル stl_globe.tar にも入っています。

また、[2] のうちの主要なものは下記の WEB ページで公表しています(地球儀の動画などを公表する場

合にはこのページを引用して下さい;そこには引用法も書いてあります):

http://www.gsj.jp/GDB/openfile/files/no0448/0448index.html

https://www.gsj.jp/researches/openfile/openfile2006/openfile0448.html

Page 2: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

2 / 26

なお、以前に紹介した立体地質図の CAD(STL 形式)データを作るものは地球儀用のものとは別の [1] の

プログラム群です。また、地球などの地形高度(標高値)の球面調和関数展開に関するものは地球儀用

の [1] のプログラム群のヘルパー([0]?のプログラム群)です。これらに関しても今後説明したい(早

く公表しないといけない)と思っています。

(2) プログラムのインストール

まず、以下の2個の書庫ファイルをダウンロードして下さい:

[a] http://www.gsj.jp/GDB/openfile/files/no0448/stl.tar

http://www.gsj.jp/data/openfile/no0448/stl.tar

[b] http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.tar

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.zip

[a] は前記の WEB ページからダウンロードできます。しかし、その内容は古いので、 新版の

プログラムなどが入っている [b] の 2 個のいずれか(これらは同じ内容です)をお使い下さい。

なお、前記の WEB ページに置いてある説明書 http://www.gsj.jp/data/openfile/no0448/stl.pdf

の内容も古いので、 新版 http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.pdf をご覧下さい。

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.zip

これら(どちらも同じ内容です)は以前にコピーしてもらった書庫ファイルですが、念のため

にいずれかを再度ダウンロードする方が良いです。

以下のようにして、これら2個の書庫ファイルを自分のハードディスクに展開して下さい(以下では

上部のディレクトリ名を "stl/" としていますが、実際にはこれは何でもかまいません;ここでは説明の

都合上、それを "stl/" としています):

[a] まず、適当な解凍プログラムを使って、書庫ファイル stl.tar の内容をハードディスクに展開す

る。ただし、そのプログラムがディレクトリ stl/ を自動的に作成してくれなかった場合は自分

でそれを作成し、stl.tar から展開された4個のディレクトリ(src/、bin/、doc/、exe/)をそこ

に移動せねばならない。

[b] 次に、解凍プログラムで stl_globe.tar を展開し、その中のディレクトリ globe/ をディレクトリ

stl/ の下に移動する。

この結果、以下の構成のディレクトリなどが得られるハズです:

Page 3: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

3 / 26

stl/ ← これは自分で作らないといけないかもしれない。

# 以下は書庫ファイル stl.tar を展開したもの。

src/ ← [2] のプログラムのソースファイルが入っている。

bin/ ← 初は空。[2] の UNIX 用実行ファイルを入れる。

doc/ ← [2] のプログラムの説明書が入っている。

exe/ ← [2] の Windows 用実行ファイルが入っている。

# 以下は書庫ファイル stl_globe.tar を展開したもの。

globe/ ← stl_globe.tar に含まれている。

test/ ← 球面の近似法などの説明用の図など。

src/ ← [1] のプログラムのソースファイル。

bin/ ← 初は空。[1] の UNIX 用実行ファイルを入れる。

exe/ ← [1] の Windows 用実行ファイル。

dem/ ← 地球などの数値地形(DEM)データ。

cm/ ← 地球儀などの表面にはるデータ。

demo_csh/

earth/ ← 地球儀などの造形用の C-shell scripts が入っている。

mars/ ← 火星儀などの造形用の C-shell scripts が入っている。

lunar/ ← 月球儀などの造形用の C-shell scripts が入っている。

venus/ ← 金星儀などの造形用の C-shell scripts が入っている。

galilei/ ← 木星のガリレオ衛星の造形用の C-shell scripts が入っている。

demo_bat/

earth/ ← 地球儀などの造形用のバッチファイル群が入っている。

mars/ ← 火星儀などの造形用のバッチファイル群が入っている。

lunar/ ← 月球儀などの造形用のバッチファイル群が入っている。

venus/ ← 金星儀などの造形用のバッチファイル群が入っている。

galilei/ ← 木星のガリレオ衛星の造形用のバッチファイル群が入っている。

*.* ← globe/ の下には他にもいくつかのファイルがある(後述)。

Windows で上記の demo_bat/ の中のデモ用のバッチファイルを走らせるだけなら、これで準備は終わ

りです。Windows(コマンドプロンプト)の任意の場所からインストールした実行ファイルを起動した

い場合には、ディレクトリ stl/exe/ と stl/globe/exe/ の両方を実行パスに登録するか、これらのディレク

トリ中の実行ファイルすべてを実行パスに登録済みの適当なディレクトリにコピーして下さい。

UNIX(Linux や Cygwin を含む)でプログラム群を使う場合には、以下のようにしてソースファイルの

コンパイルを行う必要があります:

書庫ファイル stl.tar の中のプログラムのコンパイル

cd 何とかかんとか/stl/src

make install

Page 4: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

4 / 26

書庫ファイル stl_globe.tar の中のプログラムのコンパイル

cd 何とかかんとか/stl/globe/src

make install

ただし、これらの処理には GNU-C コンパイラ(gcc)などのプログラム開発ツール群が必要です(その

詳細はソースファイル用のディレクトリに置いてあるファイル Makefile をご覧下さい)。これらが完了

すると、stl/bin/ および stl/globe/bin/ に実行ファイルがインストールされているハズです。

UNIX でも Windows の場合と同様に、stl/globe/demo_csh/ の中のデモ用の C-shell scripts を走らせる

だけなら、これで準備は完了です。そうでない場合は、stl/bin/ と stl/globe/bin/ の両方を実行パスに

登録するか、これらの中の実行ファイルすべてを実行パスに登録済みの適当なディレクトリにコピーし

ておけば、ここでインストールしたプログラムのそれぞれを任意の場所から起動することができます。

(3) デモ用のバッチファイルもしくは C-shell scripts

個々のプログラムの説明の前に、まず、以下のようにしてカラーの地球儀が回転するアニメーション(GIF

形式の動画)のファイル globe_C.gif を作ってみましょう:

Windows の場合

[1] まず、Explorer などでディレクトリ stl/globe/demo_bat/earth/ に移動し、バッチファイル

globe_C_stl.bat を選択して実行する。これにより自動的に開いたコマンドプロンプトの上

でカラーの地球儀の STL データファイル globe_C.stl を作るハズなので、コマンドプロン

プトが閉じた後にその有無を確認して下さい。

[2] その後、同じディレクトリにある globe_C_gif.bat を選択し実行する。こちらは少し時間が

かかるが、コマンドプロンプトの上でカラーの地球儀が回転する動画のファイル

globe_C.gif が作成される。Internet Explorer などを使えばこの動画のファイルを(作成

の 中でも)画面表示できるハズである。

Linux や Cygwin などの UNIX 系 OS の場合

[1] 端末から以下を入力して stl/globe/demo_csh/earth/globe_C_stl.csh を起動し、STL データ

ファイル globe_C.stl を作成する:

cd 何とかかんとか/stl/globe/demo_csh/earth

globe_C_stl.csh

[2] その後、端末から以下を入力して同じディレクトリにある globe_C_gif.csh を起動し、動画

のファイル globe_C.gif を作成する:

globe_C_gif.csh

firefox(Mozilla FireFox)や animate(ImageMagick)などを使えばこの動画のファイル

globe_C.gif を X-window で表示できるハズである。

Page 5: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

5 / 26

ディレクトリ stl/globe/demo_bat/ と stl/globe/demo_csh/ の下には地球に対するもの(earth/)以外に

も火星(mars/)、月(lunar/)、金星(venus/)および木星のガリレオ衛星(galilei/)に対する合計 5 個

のディレクトリがあり、これらそれぞれの下には3次元像を造形し描画するための多数(ガリレオ衛星

用のものは8個づつ、それ以外は 20 個づつ)のバッチファイルと C-shell scripts が格納されています。

上記の実行例からわかるように、地球儀などの3次元像の鳥瞰図(動画)は先に概略を説明した2種類

のプログラム群に応じた2段階の処理過程で作成するようになっており、それらの各過程で使用する

stl/globe/demo_bat/ や stl/globe/demo_csh/ の下の天体名ごとのディレクトリに格納されているバッチ

ファイルや C-shell scripts も以下のようなファイル名の命名則に従っています:

[1] STL 形式データファイルを作成するもの:*_stl.bat もしくは *_stl.csh

[2] GIF 形式の動画ファイルを作成するもの:*_gif.bat もしくは *_gif.csh

これら以外のファイル名を構成している文字列もデモ用のバッチファイルや C-shell scripts の処理内容

を表しています。上記の文字列("stl" もしくは "gif")と拡張子(".bat" もしくは ".csh")以外の、"_" で

区切られているファイル名を構成している2もしくは3個の文字列とそのファイルの処理内容との対応

関係は以下の通りです:

ディレクトリ galilei/ の下の io_*.*、europa_*.*、ganymede_*.* および callisto_*.*

これらのファイルの命名則は他のディレクトリの下にあるものとは異なります。これらはそれ

ぞれ NASA の Voyger spacecraft 1 and 2 が撮影した木星のガリレオ衛星(イオ、エウロパ、

ガニメデおよびカリスト)の画像を表面に貼り付けただけの球面のデータを処理します。

earth/(地球)、mars/(火星)、lunar/(月)および venus/(金星)の下のファイル

“_” で区切られた 初の文字列が "globe" もしくは "shell" のファイル

文字列 "globe" で始まるものは内部が詰まった地球儀などの像を処理します。また、"shell"

のものは南極に設けた三角形の「出入口」を通して内外がつながっている球殻状の像を作

ります。後者のデータは Z corporation 社(http://www.zcorp.com)の3次元プリンタで造

形する場合に適しています。なお、このような「出入口」の大きさと球殻の厚さはデモ用

のファイルが作るものから変更可能です。ただし、デモ用のファイルから起動するプログ

ラム shell_[i,o,t]h は常に南極に「出入口」を作ります。これらのプログラムは STL 形式の

データファイルを作りますが、そうではなく PLY/ZCP 形式のファイルを作る新しいプログ

ラム shell_zcp_[i,o,t]h を使えば、任意の位置に「出入口」を設けることができます。

初の文字列が “north”、”south”、”east”、”west”、”near” もしくは “far” のファイル

これらはそれぞれ北半球、南半球、東半球、西半球、地球に近い側もしくは遠い側の半球

の STL データを作成するバッチファイル(*_stl.bat)や C-shell scripts(*_stl.csh)です。

ただし、これらから動画を作成する *_gif.bat と *_gif.csh は用意していません。

2番目の文字列(1文字のみ)が “B” もしくは "C" のファイル

文字 “B” のファイルは白黒の、また、"C" が含まれるファイルは地形高度を色で表した「模

様」を貼り付けたカラーの地球儀などの像を処理します。

Page 6: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

6 / 26

3 番目の文字列が(前記の “stl” でも “gif” でもない)”zcp” のファイル

これらは STL 形式ではなく、前記の Z corporation 社製の3次元プリンタで造形するのに

適した PLY/ZCP 形式のデータファイルを作成します。

木星のガリレオ衛星以外の天体儀はすべて、地形高度(標高値)が以下の倍率だけ強調されています:

地球(earth/) 50

火星(mars/) 25

月(lunar/) 12.5

金星(venus/) 50

ただし、ぼくが C 言語で書いた「地球儀」などの STL もしくは PLY/ZCP 形式データを作るプログラム

(例えば、globe_ih)ではこれらの強調率の値をそのまま指定できません。これを対象天体の半径の値に

繰り込んで指定しています。つまり、例えば地球の場合、前記のディレクトリ globe/ の直下にあるテキ

ストファイル earth.tbl に書き込まれている実際の半径の値(6378000;この単位は m)と標高値の強

調率(50 倍)から計算した値 6378000 / 50 = 127560 を造形する球体の半径の値として指定しています。

ガリレオ衛星用のものと(文字 "C" が含まれたファイルが作る)カラーの地球儀などの表面には実際の

衛星表面の画像や地形高度に応じて色づけをした画像を貼り付けています。このような地形高度の強調

率や表面色などは後述するプログラム群に与えるデータ(画像)やパラメータの指定を変えれば変更可

能です。また、動画のフレーム数やそれぞれの鳥瞰図の視線方向などについても同様です。

疲れたので今日のところはここまでにします。

Date: Wed, 10 Oct 2007 10:07:03 +0900

From: Tsukasa NAKANO

To: "Y.TESHIMA"

Cc: Akiko TANAKA

Subject: mars-poster

てしまさま、

なかのです。大昔に学会で発表した火星の表面の画像と地形データに関するポスターを発掘したので、

それを以下に添付します。globe のプログラム群で「火星儀」の作成に使っている dem/mars_DTM.tif

や cm/mars_DTM.* はこのポスターで紹介している空間分解能が 4 dpd(dot per degree)の数値地形モ

デル(DTM)のデータファイルから作りました。とり急ぎ、

Page 7: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

7 / 26

Page 8: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

8 / 26

Date: Mon, 03 Dec 2007 09:15:02 +0900

From: Tsukasa NAKANO

To: "Y.TESHIMA"

Cc: Akiko TANAKA

Subject: globe-3

てしまさま、

地質調査情報センターのなかのです。すみません。かなり間が空いてしまいました。先日来の E-mail の

続きの地球儀作成用プログラム群の説明を書きます。

まず、先日の E-mails の補足(の補足)を書きます。以前に紹介した下記の書庫ファイルにいくつかの

プログラムの修正版と新しいプログラムのファイルを付け加えました(これ以上の修正・付加はしない

つもりです):

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar

それから、以前の書庫ファイルには Borland-C コンパイラ(bcc32)でコンパイルした Windows 用の実

行ファイルを入れていましたが(先日の E-mails ではこれを書き忘れていました)、それらに bcc32 に起

因する問題点を見つけました。

これは具体的には、C 言語の標準ライブラリの関数 atan2(x,y) を使って逆正接関数 arctan(x / y) の

x = y = 0 の場合の(未定義の)値を計算した時に bcc32 が問答無用でプログラムを強制終了させて

しまう実行コードを生成することです。ぼくが書いた C 言語のコードは逆正接関数が未定義の値に

なることに備えているので、このような問答無用の強制終了は困ります。

そこで、今回の書庫ファイルには MinGW(Minimalist GNU for Windows)の GNU-C コンパイラ(gcc)

でコンパイルし直した Windows 用の実行ファイルを入れておきました。

bcc32 と gcc が生成した実行コードに大きな違いはないはずです(gcc を使った今回のものの方が高

速かもしれません)。

こういう訳なので、新しい書庫ファイルを用いて以前に説明した方法でプログラムの再インストールを

行って下さい。

(4) プログラムの説明

前に書庫ファイル stl_globe.tar からインストールしたディレクトリ stl/globe/ には地球儀などの CAD

データの作成のためのプログラム群とそれに用いるデータ(主に画像)だけが入っています。これら以

外の、CAD(主に STL)データを編集・加工や、そのデータから物体像の鳥瞰図の描画のための(書庫

ファイル stl.tar に入っていた)プログラム群に関しては PDF ファイル stl/doc/stl.pdf の中で詳しく述

べているので、ここでは説明を省略します。

Page 9: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

9 / 26

(4-1) 地球儀作成用プログラム群の概要

以下の3種類のプログラムが stl/globe/ の下に入っています:

[1] 地球儀などの CAD データを作成するためのプログラム

これには球状、球殻状、半球状と半球殻状の像の CAD(STL と PLY/ZCP)データを作るプロ

グラムがあります。さらに、球と球殻の像のデータを作るプログラムのそれぞれには後述する

球面の近似に用いる正多面体が異なる3種類のもの(プログラム名に含まれる文字列 "_ih"、

"_oh" および "_th" で識別できる)があります。これらは具体的には以下の通りです:

globe_[i,o,t]h もしくは globe_[i,o,t]h_zcp

地球儀などの球状の像の STL もしくは PLY/ZCP データを作るためのプログラム。

shell_[i,o,t]h もしくは shell_[i,o,t]h_zcp

内部が空洞の球殻状の像の STL もしくは PLY/ZCP データを作るためのプログラム。

hss と hss_zcp

半球状の像の STL と PLY/ZCP データを作るプログラム。これらは本来は半球殻を作

成するもの(hss == Hemi-Sphere Shell)であるが、起動時のパラメータ指定により

内部が詰まった半球の像を作成することもできる。

[2] 近似球面の性質を知るためのプログラム、tah_[i,o,t]h

これらはテスト用のプログラムで、ぼく以外の人が使うことはないと思います。指定した3種

類の正多面体を基にして球面を近似した多面体の表面を構成する三角形の面積の分布を調べる

ためのプログラムです。

[3] ユーティリティプログラム

地球儀などの像の表面に貼り付ける地形や色のデータを入れた TIFF 画像や、その像の

PLY/ZCP データの加工に使える以下の4個のユーティリティプログラムを用意しました:

tcm

白黒やグレースケールの TIFF 画像に色情報(カラー マップ)を付け加えたりする。

trgb

カラーマップ(疑似カラー)形式の TIFF 画像をフル カラー形式のものに変換する。

zcp2vrml2

PLY/ZCP 形式のデータを ver. 2 の VRML 形式に変換する。

zcp_scale

PLY/ZCP データ中の座標値のスケール変換を行う。

(4-2) 地球儀などの CAD データの作成法

前記の[1]のプログラム群はいずれも、地球儀などの CAD データをここで説明する2段階の手順を踏ん

で作成するようになっています。

Page 10: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

10 / 26

(4-2-1) 単位球を近似する多面体の構築

その第一段階は半径1の球(単位球)の形状を近似するような、三角形の面から構成される多面体の構

築です。この処理では単位球面上に位置する頂点と、正三角形の面からなる下記の3個の正多面体のい

ずれかをその初期形状として使用します(これらの正多面体のそれぞれの展開図を PDF ファイル

stl/globe/test/[i,o,t]h.pdf に示してあります):

正 20 面体(icosahedron;略して "ih")

正8面体(octahedron;"oh")

正4面体(tetrahedron;"th")

これらの正多面体のうちの指定したものに対して以下のような再帰的な処理を行い、その表面の三角形

を細分化して近似球面を構築します:

[a] 各三角形をその3辺の中点のそれぞれを新しい3個の頂点として4個の三角形に細分化する。

[b] それと同時に、これらの新しい頂点のそれぞれを単位球の中心から投影した単位球面上の点の

位置に移動する。

[c] これらの三角形ごとの細分化の処理を(球の近似に十分な多面体が構築できるまで)指定した

回数だけ再帰的に繰り返す。

このような細分化処理の繰り返し回数を level と呼んでいます。level の値に0を指定すると三角形の細

分化処理は行われず、もとの正多面体で単位球面を近似します。そして、0以上の任意の level を指定し

て構築した多面体の三角形の総数はもとの正多面体のものの 4^level 倍になります。このような0以上の

様々な level を指定して細分化した三角形が PDF ファイル stl/globe/test/triangle.pdf の各ページに、ま

た、3種類の正多面体を初期形状とした、様々な level の多面体が stl/globe/test/[i,o,t]h.pdf のそれぞれ

に示されています。

stl/globe/test/triangle.pdf の上の各ページに示したように、細分化した三角形には前記の再帰的

な手続きで取り扱った順に0から始まる番号を付けています。これらそれぞれの三角形の中央

上段の番号は 10 進数表記で下段は4進数表記です。これらの番号と細分化した三角形の配置の

対応関係がわかれば PLY/ZCP データを作成するプログラム群のコードが単純になるのですが、

今のところそれができていません(再帰的な手続き以外の方法で細分化した三角形の番号付け

を行うことができていない)。

(4-2-2) 球面の加工

次に第二段階の処理として単位球を近似する多面体を変形したり、その表面に色(もしくは模様)を付

けたりします。いずれの場合も指定した画像から読み出した、単位球面上のそれぞれの点に対応してい

る画素の値のマッピング処理を行います。

この処理では球面上の地図データを円筒図法でプロットした画像を使用します。これは画面表示した時

の横・縦のそれぞれが球面上の経・緯線に平行な方向を指し、かつ、横座標値と経度、および、縦座標

Page 11: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

11 / 26

値と緯度のいずれもが線形な関係式で表せる地図投影法で描かれている画像です。ただし、この画像の

横方向のひろがりは経度-180~180 度の範囲に、また、縦方向は緯度 90~-90 度に対応していると想

定しています。

この円筒図法の画像を画面表示した時の左上隅の点(正確には、画像の左上隅の画素の左上隅

の頂点)に対応する経度と緯度はそれぞれ -180 度と 90 度です(画像の上方向が北です)。

多面体の変形処理では、まず、その各頂点の座標値を(三角形の細分化処理で使っていた)カーテシア

ン座標形式から極座標形式に変換します:

x = r × cosφ× cosλ

y = r × cosφ× sinλ

z = r × sinφ

ここで x、y、z は頂点のカーテシアン座標値、λとφはそれに対応した経度と緯度、そして、当初の多

面体の頂点は単位球面上に乗っているので、球の中心から頂点までの距離 r は変形前は値1です。次に

この経度と緯度が指す位置の画素の値(画素値)を指定した円筒図法の画像から読み出し、その点の球

面から測った地形高度 E を計算します:

E = B + S × 画素値(0~)

ここで B と S は画像ごとに指定する係数値(base と step 値)です。

この画像は地形高度(標高値)のデータを保持しているので、DEM(Digital Elevation Model)

の画像と呼んでいます。

終的には、もとのままの経・緯度と以下の式で計算した球の中心からの距離 r が指す位置にそれぞれ

の頂点を移動して(多面体を変形して)、地球儀などの3次元像の表面に凸凹を付けます:

r = 1 + ε× E / R

ここで R は地球などの対象球体の実半径で、εは地形高度 E の強調率です。ただし、後で説明するよう

に、地球儀作成用のプログラム群ではこのεの値を陽に指定できません。DEM の画像の画素値から E

を計算する際に使う係数値(B と S)に繰り込んで指定するか、球体の実半径として値 R / εを指定する

必要があります。

多面体の表面への色や模様付けの処理も同様にして行います。この場合にはまず、それぞれの三角形の

重心の経度と緯度を計算し、その位置に対応する円筒図法の画像上の画素が保持している色や輝度でそ

の三角形の内部を塗りつぶすような設定を付け加えた CAD データを出力します。

後で説明するように、地球儀作成用のプログラム群ではこれらの処理に TIFF 形式ファイルの画像を使い

ます。多面体の変形に用いる DEM の画像としては白黒、グレースケールもしくはカラーマップ(疑似

Page 12: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

12 / 26

カラー)形式のものを指定できます( 後の形式のものを指定するとその表示色の情報は無視され、画

素値だけが処理に用いられる)。また、これらに加えて、色や模様付けにはフルカラー形式の TIFF の画

像も指定可能です。なお、これら2種類の画像の画素数は同じでなくてもかまいません。さらに、これ

らの片方もしくは両方の指定が省略可能です(その場合は凸凹なしや単一の色で塗りつぶされた表面の

地球儀になる)。

(4-2-3) 球殻、および、半球と半球殻状の像の作成

地球儀などを鳥瞰アニメーションとして表示するだけなら先の手順で作成した球状の像の CAD データ

で十分ですが、それを3次元プリンタで実体模型として出力する場合には球殻状の像の方が(模型の重

量の面で)有用です。また、ここで紹介するプログラム群にはこのような球殻以外にも半球や半球殻状

の像の CAD データを作成できるものがあります。これらの形状の像の CAD データは以下のようにして

構築しています。

まず球殻ですが、その「内壁」は先の手法で構築した「外壁」と平行になるようにしています。つまり、

これら2枚の壁の間の距離(正確には、外壁の構築に用いた単位球の半径方向の距離)はどこでも同じ

値で、そのような球殻の厚さ(thickness)は単位球の半径を単位とする0~1の範囲の値によって指定

できます。また、この球殻の一カ所に球状の像の外部と内部をつなぐ「穴」を設けるようにしています。

この穴は先に説明した多面体の三角形の細分化処理(それで指定した level の値を face とします)の途

中で指定した繰り返しの回数(hole;0≦hole≦face)に 初に達した三角形です。なお、単位球面の構

築処理に用いている多面体の三角形の配置の関係上、球殻の像を STL データとして出力するプログラム

群では穴の位置は常に南極になります。これに対して、PLY/ZCP データを出力するプログラム群を使う

とその位置(および穴の三角形の向き)を好きなように指定することができます。

次に半球と半球殻ですが、正8面体の半分(= ピラミッド状の多面体)のものだけをこれらに対する球

面の構築(多面体の三角形細分化)処理で初期形状として使っています。また、半球殻の厚さ(thickness)

として1以上の値を指定した場合に内部が詰まった半球状の像を作るようにしてあるので、これらの像

の CAD データを出力するプログラムには STL 形式と PLY/ZCP 形式のデータ用のものがそれぞれ1種

類づつあるだけです。なお、これらのプログラムでは半球の「頂上」にマップすべき球面上の点の経度

と緯度を指定できるようになっています。

先に説明した円筒図法の画像を用いた色や模様付けの処理は球殻、半球および半球殻の像の外壁に対し

てのみ行います。そして、それ以外の半球の「底面」、球殻と半球殻の内壁や球殻に穿った穴の壁面には

すべて指定した同一の色を塗布しますが、その指定の仕方は STL と PLY/ZCP 形式のデータ(を出力す

るプログラム)ごとに異なります:

STL データ

色情報を添付しない(造形や描画の際にそれを指定できる)。

PLY/ZCP データ

作成する際にその色の成分の強度の値を指定する必要がある。

Page 13: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

13 / 26

(4-3) CAD データのファイル形式について

ここまでにも何度か書いたように、ここで紹介しているプログラム群は地球儀などの球、球殻、半球や

半球殻状の像の STL(正確には binary もしくは color STL)形式と PLY/ZCP 形式のいずれかのデータ

を出力します。これらのファイル形式の詳細は前記のPDFファイル stl/doc/stl.pdfの記述をご覧下さい。

これらの概要は以下の通りです:

[a] 物体像の形状を表現するデータと言う意味では両者は互換だが、STL 形式では多面体近似した

物体像の表面をカバーする三角形の頂点の座標値のデータを重複して保持しているのに対して、

PLY/ZCP 形式ではそれらを統合して保持している。そのため、PLY/ZCP 形式のファイルのサ

イズは STL 形式のものの半分以下になる。

[b] 三角形ごとに保持できる色数は異なる。つまり、STL 形式では色の R、G、B 成分の強度値は

32 階調づつ(合計 31768 色)だが、PLY/ZCP 形式は 256 階調づつ(16777216 色)である。

また、STL 形式では色なしの三角形も許されている。

[c] STL は本来は色なしの造形データの形式であり、色情報を保持できるように拡張された color

STL 形式のデータをきちんと取り扱えないソフトウェアもままある。ただし、その場合でも、

binary STL 形式のデータと見なされて色なしの表示などを行える可能性が高い。

[d] PLY/ZCP は Stanford 大学で設計された PLY 形式(PLY polygon file format)のサブセット版

の、Z-corporation 社の3次元プリンタで用いられている形式である。PLY/ZCP はもちろんの

こと PLY 形式のデータを取り扱えるソフトウェアは数少ない。

人間の目では識別不能なので、STL と PLY/ZCP 形式で保持できる色数の違いは実質的には問題になら

ないと思います。問題はこれらのファイル形式の流通性とファイルサイズの大小で、前者に重きを置く

なら STL を、後者なら PLY/ZCP 形式を使えばよいと思います。いずれにせよ、stl/doc/stl.pdf で説明し

ているプログラム群を使えば STL と PLY/ZCP の両形式は相互に変換可能です。また、プログラム

zcp2vrml2 を使えば PLY/ZCP 形式を広く知られている ver.2 の VRML 形式に変換できます。

(4-4) プログラムの使用法

ここではそれぞれのプログラムの詳細を説明します。これらはいずれも UNIX 系の OS(Linux、Mac OS

X、Cygwin など)の端末環境や Windows のコマンドプロンプト(DOS 窓)からプログラム名とその起

動パラメータを並べた行をキー入力して起動します。ただし、それぞれの起動法(行)を示している箇

所では以下のことに注意して下さい。

[a] 先にも説明したように、地球儀などの球もしくは球殻状の像の CAD データを出力するプログラ

ムには球面を近似する多面体の初期形状(ih、oh と th)に応じた3種類のものがありますが、

それらのうちの ih のものの起動法だけをここに示しました。それ以外のものを起動したい場合

にはプログラム名に含まれている文字列 "ih" を "oh" や "th" に読み替えて下さい。

[b] 中括弧 "{}" で囲んだパラメータの指定は省略可能です。また、括弧 "()" で囲んだ(3個の)も

のは一組であり、パラメータの間の "|" はその前後のいずれかを選択できることを意味してい

ます。このような省略や選択を行った場合のプログラムの挙動はそれぞれのパラメータの説明

Page 14: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

14 / 26

として記した通りです。

[c] プログラムのいくつかは処理結果のテキストデータを標準出力に書き出します。ここではそれ

らのうちの重要なものを ">" を使ってファイルにリダイレクトする起動法を示しています。

[d] 入力すべき起動行が長い場合は行末にエスケープ文字 "¥" を置いて改行したものを示してい

ます。ただし、これは UNIX 系 OS の shell に対してのみ通用する記法であり、DOS 窓では改

行せずに1行にまとめて入力する必要があります。

(4-4-1) globe_[i,o,t]h と globe_zcp_[i,o,t]h

地球儀などの球状の像の STL や ZCP データを作成する。

起動法

globe_ih level {DEM base step radius} {color} STL

globe_zcp_ih level {DEM base step radius} color|(R G B) ZCP

パラメータ

level

多面体による単位球の近似の「level」(0以上の整数値)。

DEM、base、step、radius

DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図

画像(DEM の画像)が入っている TIFF 形式ファイルの名前、また、base と step はその画素

値を球面から測った標高値に変換する際に用いる係数の値(浮動小数点数)である:

標高値 = base + step × 画素値(0~)

radius は地球などの対象球体の半径の値(浮動小数点数)で、 終的に作成される地球儀など

の半径は以下の値になる:

地球儀などの半径 = 1 + 標高値 / radius

これらの4個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない球体

になる。

color もしくは R、G、B(globe_zcp_[i,o,t]h のみ)

color は(変形させた)球面の色(もしくは模様)付けに使う円筒図法の地図画像が入っている

TIFF 形式ファイルの名前。PLY/ZCP 形式データを出力するプログラムに対してこのファイル

名の指定を省略した場合、その代わりに球面全域を塗りつぶす色の R、G、B 成分の強度の値(0

~255 の整数値)をここで指定しなければならない。STL 形式データを出力するプログラムで

はそれは不要で、球面に塗る色はそのデータの描画などの処理の際に指定できるはずである。

STL や ZCP

作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これら

に "-" を指定すると CAD データを 標準出力に書き出す。

Page 15: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

15 / 26

(4-4-2) shell_[i,o,t]h と shell_zcp_[i,o,t]h

球殻状の地球儀などの STL や PLY/ZCP データを作成する。

起動法

shell_ih face hole thickness {DEM base step radius} {color} STL

shell_zcp_ih face hole {lon. lat. rot.} thickness ¥

{DEM base step radius} color|(R G B) ¥

insideR insideG insideB ZCP

パラメータ

face

多面体による単位球の近似の「level」(0以上の整数値)。

hole

球殻の内部と外部をつなぐ穴の「level」。0~ face の範囲の整数値を指定する。0を指定する

と単位球の構築処理で初期形状として用いた多面体の三角形に相当する大きな穴が、また、face

と等しい値なら球を近似するように細分化した三角形に相当する小さな穴になる。

lon.、lat.、rot.(shell_zcp_[i,o,t]h のみ)

lon. と lat. は球殻の内部と外部をつなぐ三角形の穴の中央の位置の経度と緯度、また、rot. は

その三角形の「向き」を指す方位角である。ただし、穴の形状は概ね正三角形なので、rot. と

して -60 ~+60(度)の範囲の値を指定すればよい。これらの角度の単位は度で、いずれも浮

動小数点数として取り扱われる。なお、STL 形式のデータを出力するプログラムではこれらの

パラメータ値を指定できない。その場合や、PLY/ZCP 形式データ用のプログラムに対してこれ

らの角度の指定を省略した場合には lon.= 90、lat.= -90かつ rot.=0が採用されて穴は「南極」

に設置される(穴を「北極」に置きたい場合には lon.= -90、lat.= 90 かつ rot.=0を指定すれ

ばよい)。

thickness

球殻の厚さを指す0と1の間の値(浮動小数点数)。

DEM、base、step、radius

DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図

画像(DEM の画像)が入っている TIFF 形式ファイルの名前、また、base と step はその画素

値を球面から測った標高値に変換する際に用いる係数の値(浮動小数点数)である:

標高値 = base + step × 画素値(0~)

radius は地球などの対象球体の半径の値(浮動小数点数)で、 終的に作成される地球儀など

の半径は以下の値になる:

地球儀などの半径 = 1 + 標高値 / radius

これらの4個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない球殻

になる。

Page 16: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

16 / 26

color もしくは R、G、B(globe_zcp_[i,o,t]h のみ)

color は(変形させた)球殻の表面の色(もしくは模様)付けに使う円筒図法の地図画像が入っ

ている TIFF 形式ファイルの名前。PLY/ZCP 形式のデータを出力するプログラムに対してこの

ファイル名の指定を省略した場合、その代わりに球殻の表の面全域を塗りつぶす色の R、G、B

成分の強度の値(0~255 の整数値)をここで指定しなければならない。STL 形式のデータを

出力するプログラムの場合はそれは不要で、表面に塗る色はそのデータの描画などの処理の際

に指定できるはずである。

insideR、insideG、insideB(globe_zcp_[i,o,t]h のみ)

球殻の内壁と穴の壁を塗る色の R、G、B 成分の強度値(0~ 255 の整数値)。STL 形式データ

用プログラムに対してはこれらの指定は不要で、これらの色はそのデータの描画などの処理

の際に指定できるはずである。

STL や ZCP

作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これら

に "-" を指定すると CAD データを 標準出力に書き出す。

(4-4-3) hss と hss_zcp

半球状もしくは半球殻状の地球儀などの STL や PLY/ZCP データを作成する。

起動法

hss level thickness {DEM base step radius} {color} lon. lat. STL

hss_zcp level thickness ¥

{DEM base step radius} color|(R G B) ¥

wallR wallG wallB lon. lat. ZCP

パラメータ

level

多面体による単位球の近似の「level」(0以上の整数値)。

thickness

半球殻の厚さを指す正の値(浮動小数点数)。ただし、1以上の値を指定すると内部が詰まった

半球の像を作る。

DEM、base、step、radius

DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図

画像(DEM の画像)が入っている TIFF 形式ファイルの名前、また、base と step はその画素

値を球面から測った標高値に変換する際に用いる係数の値(浮動小数点数)である:

標高値 = base + step × 画素値(0~)

radius は地球などの対象球体の半径の値(浮動小数点数)で、 終的に作成される地球儀など

の半径は以下の値になる:

Page 17: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

17 / 26

地球儀などの半径 = 1 + 標高値 / radius

これらの4個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない半球

もしくは半球殻になる。

color もしくは R、G、B(hss_zcp のみ)

color は(変形させた)半球面の色(もしくは模様)付けに使う円筒図法の地図画像が入ってい

る TIFF 形式ファイルの名前。PLY/ZCP 形式のデータを出力するプログラムに対してこのファ

イル名の指定を省略した場合、その代わりに半球の表面全域を塗りつぶす色の R、G、B 成分の

強度の値(0~255 の整数値)をここで指定しなければならない。STL 形式のデータを出力す

るプログラムの場合はそれは不要で、表面に塗る色はそのデータの描画などの処理の際に指定

できるはずである。

wallR、wallG、wallB(hss_zcp のみ)

半球の底面や半球殻の底面と内壁を塗る色の R、G、B 成分の強度値(0~255 の整数値)。STL

形式データ用プログラムに対してはこれらの指定は不要で、これらの色はそのデータの描画な

どの処理の際に指定できるはずである。

lon.、lat.

半球もしくは半球殻の「頂上」にマップする球面上の点の経度と緯度を度単位で指定する。

STL や ZCP

作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これら

に "-" を指定すると CAD データを 標準出力に書き出す。

(4-4-4) tah_[i,o,t]h

先に説明した手法で単位球を近似した多面体の三角形(Triangles)の面積(Area)の分布を調べ、その

情報をヒストグラム(Histogram)として表示する。ヒストグラムの bin のうちの空でないものごとに下

記の4個の値をタブコード区切りで行にまとめて標準出力に書き出す:

[1] そのヒストグラムの bin の下端を指す正規化した面積の値。ただし、それが三角形の面積の

小値以下に相当する値なら、その 小値に相当する正規化した面積の値を表示する。

[2] そのヒストグラムの bin の上端を指す正規化した面積の値。ただし、それが三角形の面積の

大値以上に相当する値なら、その 大値に相当する正規化した面積の値を表示する。

[3] その bin に落ちる三角形の個数

[4] その bin に落ちる三角形の個数の割合(0~1)

ただし、以下の値を単位として三角形の面積を正規化している(正規化した三角形の面積が1なら実際

の三角形の面積は以下の値である):

単位球の表面積(4×π)÷多面体を構成する三角形の総数

起動法

tah_ih level {base step bins}

Page 18: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

18 / 26

パラメータ

level

多面体による単位球の近似の「level」(0以上の整数値)。

base、step、bins

これらの値でヒストグラムのそれぞれの bin で数える三角形の正規化した面積(1前後の値に

なるハズ)の値域を指定する。bins は bin の総数であり、i = 1~ bins 番目の bin では正規化

した面積が以下の値域に落ちる三角形の個数を数える:

base + step × ( i - 1 ) ~ base + step × i

ただし、これらの bin が三角形の正規化した面積の値域全体をカバーしていない場合はそれを

補う bin を付加して処理を 行う。また、これら3個のパラメータの指定を省略した場合も同様

で、三角形の正規化した面積の値域全体をカバーする1個の bin が処理に用いられる。

(4-4-5) tcm

白黒、グレースケールおよびカラーマップ(疑似カラー)形式の TIFF 画像ファイルの上のカラーマップ

(表示色情報)を操作する。

起動法

TIFF 画像ファイル中のカラーマップを抽出する場合:tcm org_TIFF > CM

TIFF 画像ファイル中のカラーマップを削除する場合:tcm org_TIFF gray_TIFF

TIFF 画像ファイル中にカラーマップを埋め込む場合:tcm org_TIFF CM CM_TIFF

パラメータ

org_TIFF

処理を行う TIFF 画像ファイルの名前。白黒、グレースケール もしくはカラーマップ形式のも

のでなければならない。

gray_TIFF と CM_TIFF

処理結果を書き込む TIFF 画像ファイルの名前。

CM

org_TIFF から抽出したカラーマップのデータを入れる、もしくは、そこに埋め込むデータを入

れたテキストファイルの名前。ただし、後者の名前として "-" を与えると、org_TIFF に埋め

込むカラーマップのデータを標準入力から読み込もうとする。このファイルは、先頭にカラー

マップ上の色の総数が、そしてそれに続いて org_TIFF の画像上の0以上の画素値それぞれに対

する色の R、G、B 成分の強度値(0~65535 の整数値)が書き込まれている形式である。なお、

これらの数値の区切りは改行、空白もしくはタブコードである。

Page 19: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

19 / 26

(4-4-6) trgb

カラーマップ(疑似カラー)形式の TIFF 画像のファイルをフルカラー形式のものに変換する。通常の画

像ビュワーは 16 bit 画素値でカラーマップ形式の TIFF 画像ファイルを取り扱えないので、それを行い

たい場合にはこのプログラムでフルカラー形式のものに変換する必要がある。

起動法

trgb org_TIFF RGB_TIFF

パラメータ

org_TIFF

処理を行う TIFF 画像ファイルの名前。白黒やグレースケール、そして、フルカラー形式の画像

ファイルを指定してもかまわない。

RGB_TIFF

処理結果を書き込む TIFF 画像ファイルの名前。

(4-4-7) zcp2vrml2

PLY/ZCP 形式のデータファイルを ver.2 の VRML(Virtual Reality Markup Language)の形式のもの

に変換する。より詳細には、PLY/ZCP ファイル上で物体像を表現している多面体を ver.2 の VRML の

IndexedFaceSet として記述し直し、それを標準出力に書き出す。

起動法

zcp2vrml2 ZCP > VRML2

パラメータ

ZCP

PLY/ZCP ファイルの名前。"-" を指定すると PLY/ZCP データを標準入力から読もうとする。

VRML2

ver. 2.0 の VRML のテキストデータを書き込むファイル名。

(4-4-8) zcp_scale

このプログラムは PLY/ZCP ファイルの上の物体像が占める座標値の値域を調べたり、それらの値に指定

した定数を乗じて物体像のスケール変換を行ったりする。前者を行った場合、物体像が占めている領域

の x、y、z 座標値それぞれの 小値、 大値とそれらの差の3個の値をタブコード区切りで並べた3行

の表示が標準出力に書き出される。なお、この処理には PLY/ZCP ファイルの前半に書き込まれている座

標値データ以外は不要だが、zcp_scale はエラーチェックのために残りのデータ(物体像表面の表示色情

報など)もスキャンする(つまり、無駄な処理を行う)。

Page 20: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

20 / 26

起動法

PLY/ZCP ファイル上の物体像が占める座標値の値域を調べる場合

zcp_scale org_ZCP

PLY/ZCP ファイル上の物体像のスケール変換を行う場合

zcp_scale org_ZCP scale|(Sx Sy Sz) new_ZCP

パラメータ

org_ZCP と new_ZCP

PLY/ZCP データを読み書きするファイル名。これらのそれぞれに "-" を指定すると標準入力や

標準出力に対してデータを読み書きする。

scale もしくは Sx、Sy、Sz

座標値の拡大率。浮動小数点数も可。1個の値 scale だけを指定した場合にはそれを org_ZCP

のすべての座標値に乗じる。また、3個の値 Sx、Sy、Sz を指定すると、これらは x、y、z 座

標値それぞれの拡大率だと見なされる。

今日のところはここまで。

Page 21: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

21 / 26

Date: Wed, 23 Jun 2004 15:38:35 +0900

From: Tsukasa NAKANO

To: Miwa YOKOKAWA

Subject: Re: Globe 届きました!

よこかわさま、

横川さんには書庫ファイル

http://www-bl20.spring8.or.jp/sp8ct/tmp/stl_globe.tar

http://www-bl20.spring8.or.jp/sp8ct/tmp/stl_globe.zip

のものと概ね同じ内容を書き込んだ CD-R を送りました。以下の文章は「CD-R」を上記の書庫

ファイルに読み替えてお読み下さい。

なかのです。同封した CD-R には UNIX(Cygwin)や Windows の DOS 窓で石膏模型用の STL データ

ファイルを作ったり、それらを使って GIF アニメーションを作るためのデータとプログラムのファイル

が入っています。これらを用いた処理の内容については近いうちに GSJ の open file(Web 公開される報

告書)などに書こう(少なくともつちやまさんの科研費の報告書には載せたい)と思っていますので、

詳しいことはもう少しお待ち下さい。以下はとりあえずの説明です。

まず CD-R には以下のファイルが入っています。

[1-1] ディレクトリ test/ の下のファイル ih.pdf、oh.pdf、th.pdf

球面の近似に用いた正多面体の展開図。プリンタ出力して折り紙できます。なお、ih は

icosahedron、oh は octahedron、th は tetrahedron の略のつもりです。

[1-2] ディレクトリ test/ の下のファイル triangle.pdf

球面近似のために行う多面体の三角形の分割の仕方を示す図。

[1-3] ディレクトリ test/ の下のファイル globe_ih.pdf、globe_oh.pdf、globe_th.pdf

level で指定される三角形分割の回数を変えた場合の近似球面の様子を示す図。

[2-1] ディレクトリ src/ の下のファイル

地球儀などの STL データ作成用プログラムのソースファイル。UNIX(Cygwin)でコンパイル

できるようにしてあります。

[2-2] ディレクトリ exe/ の下のファイル

地球儀などの STL データ作成用プログラムの Windows 用実行ファイル。

[3-1] ディレクトリ dem/ の下の 16 bits 画素値の TIFF ファイル

惑星・衛星の DEM(Digital Elevetion Model;数値地形図)。月と金星の DEMs は Clementine

と Magelllan 探査船の測定データからぼくがコンパイルしたものです(それらに関する別刷り

などをそのうちお送りします)。

Page 22: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

22 / 26

[3-2] テキストファイル dem.log

ディレクトリ dem/ の下の DEMs に関する以下の数値が書き込まれています

(1) DEM のファイル名

(2) データの存在する範囲の経度と緯度の 小値(単位は度)

(3) データの存在する範囲の経度と緯度の 大値(単位は度)

(4) 画素値0に相当する標高値(単位は meter)

(5) 画素値1階調に相当する標高値の増分(単位は meter)

なお、(2) と (3) に示されているデータの有無とは関係なく、 TIFF ファイルには円筒図法で

投影された経度-180~180 度、緯度-90~90 度の範囲の標高値データが格納されています。

[4-1] ディレクトリ cm/ の下の *.tif

DEM を標高ごとに色分けしたモノ、および木星の衛星の画像。後者は USGS のホームページ

http://astrogeology.usgs.gov/Projects/Map-a-Planet/ からとってきたものです。

[4-2] ディレクトリ cm/ の下の *.cm.gz

DEM の標高ごとにつけた色の3成分のデータ

[4-3] ディレクトリ cm/ の下の *.ps.gz、*.pdf と *.gif

DEM につけた色と標高の対応関係を示すカラーバーの図

[5-1] テキストファイル globe.tbl と shell.tbl

地球儀などの STL データ作成に用いた近似球面のパラメータ。globe.tbl には近似に用いた正多

面体の名前の略語と三角形分割の回数が、また、shell.tbl にはそれらに加えて「南極の穴」の

サイズと球殻の厚さを指定するパラメータが書き込まれている。なお、“#” で始まる行は処理に

使っていません。

[5-2] テキストファイル earth.tbl、mars.tbl、lunar.tbl、venus.tbl

地球儀などの作成に用いた DEM のファイル名、惑星・衛星の 半径(meter)、および、標高値

の倍率が書き込まれている。

以下省略

Page 23: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

23 / 26

Page 24: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

24 / 26

Page 25: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

25 / 26

Date: Fri, 25 Apr 2014 16:50:13 +0900

From: Tsukasa NAKANO

To: Takuya Murakami

Cc: Akiko TANAKA, "TSUCHIYAMA, Akira", Kentaro Uesugi, Michihiko Nakamura

Subject: 地球儀作成の補助プログラム cap_*

むらかみさま、

GSJ/AIST のなかのです。先日送っていただいたカラーの地球儀の石膏模型はぼくが書いたプログラム

"globe_*" で作成した造形データをそちらの3次元プリンタで出力した後に、その像の内部を手でくり貫

いて中空にしたものですね?

On Tue, 8 Apr 2014 19:40:16 +0900 Takuya Murakami wrote:

> 明日、中野様に、造形品のサンプルを送ります。こちらは、中野様にと

> ご提供いたします。内容は地球儀(直径φ150mm)です。

> 中は中空にして、粉をぬきとって、その後に、同じ素材で封止しています。

以前に紹介した http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.pdf に記してあるように、ぼくが書

いたプログラム"shell_*" を使えば中空の「地球儀」の造形データを作成できますが、それでは像の内部

と外部をつなぐ三角形の「穴」が目立つので NG ということでしょうか? これを改善するため、”shell_*”

の造形データの「穴」をふさぐ「蓋」の造形データを出力するプログラム "cap_*" を書いてみました:

プログラム "cap_[i,o,t]h"

プログラム "shell_[i,o,t]h" で得られる「地球儀」の像の表面の「穴」に対応した「蓋」の STL

形式の造形データファイルを作成する計算機プログラム。

"cap_zcp_[i,o,t]h"

"shell_zcp_[i,o,t]h" で得られる像の表面の「穴」に対応した「蓋」の PLY/ZCP 形式データファ

イルを作成するプログラム。

これらの新しいプログラムのソースコードと Windows 用実行ファイル、および、"cap_*" を使った処理

のデモ用のバッチファイルや C-shell scripts を以前に紹介した「地球儀」作成用の書庫ファイルのそれ

ぞれに追加しておきました:

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar

http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.zip

プログラム "cap_*" の起動法は "shell_*" の場合とほぼ完全に同じです:

shell_oh face hole thickness {DEM base step radius} {color} STL

cap_oh face hole thickness {DEM base step radius} {color} STL

Page 26: Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct ...sp8ct/tmp/stl_globe.pdf1 / 26 Date: Thu, 27 Sep 2007 18:52:31 +0900 Date: Thu, 04 Oct 2007 19:54:41 +0900(訂正と補足;その1)

26 / 26

shell_zcp_th face hole {lon. lat. rot.} thickness (改行しない)

{DEM base step radius} color|(R G B) insideR G B ZCP

cap_zcp_th face hole {lon. lat. rot.} thickness (改行しない)

{DEM base step radius} color|(R G B) insideR G B ZCP

造形データの出力ファイル名を除く起動パラメータとして "shell_*" に対するものと同じ値を指定して

"cap_*" を起動してやれば、"shell_*" の出力データの像の表面の「穴」に対応した「蓋」の造形データ

を作成することができます。

また、例えば下記のもののように、「地球儀」作成用の書庫ファイルに追加したバッチファイル

"demo_bat/*/cap_*.bat" や C-shell scripts "demo_csh/*/cap_*.csh" も既存の "demo_*/*/shell_*.*" が

出力する中空の地球儀などの「穴」に合う「蓋」の造形データを作成するようにしてあります。

demo_bat¥earth¥shell_zcp.bat

shell_zcp_ih.exe を使って中空の地球儀の PLY/ZCP 形式の造形データファイル(shell.zcp)を

作成する既存のバッチファイル。

demo_bat¥earth¥cap_zcp.bat

cap_zcp_ih.exe を使って地球儀表面の「穴」をふさぐ「蓋」の PLY/ZCP 形式ファイル(cap.zcp)

を作成する新しいバッチファイル。

これらをどうぞ御利用下さい。とり急ぎ、