CGとCVの日記

Computer GraphicsとComputer Visionについて

順列都市

人工知能,仮想現実等を題材にしたグレッグ・イーガンの電脳SF

順列都市〈上〉 (ハヤカワ文庫SF)

順列都市〈上〉 (ハヤカワ文庫SF)


順列都市〈下〉 (ハヤカワ文庫SF)

順列都市〈下〉 (ハヤカワ文庫SF)

物語はスキャンテクノロジー,プロセッサの計算能力が発達した未来で,人間が自分の”コピー”を
計算機乗で走らせることができるようになっている世界で起こる.

このような世界では人々が不死を手にしたと考えるかもしれないが,実際はそうではなく,宇宙の終焉とともに
コピーを走らせる計算機も消滅してしまう.

そこで,TVC宇宙と呼ばれるセル・オートマトン世界が登場する.
セル・オートマトンとは簡単にいうと自己増殖していくパターンのことで,ここではそのパターンが
プロセッサをなしており,TVC宇宙とは1つの大きな自己増殖するプロセッサクラスタということもできる.

通常の宇宙は時間の経過とともに拡張し,エントロピーが増大している.
しかし,TVC宇宙では時間の経過と共にさらなる秩序が生まれているのでエントロピーは減少する.
そのTVC宇宙上でコピーを走らせれば完全な不死を得ることができる.


これだけでも普通の電脳SFと違い,かなり興奮する内容なのだが,まだまだおもしろいポイントがある.


その鍵を握るのがオートヴァースというセル・オートマトン世界.
余剰な計算能力を持つ人はオートヴァース上で独自の物理法則に従うおもちゃの宇宙を走らせることができる.

通常の宇宙では計算能力が足りず,分子や原子生物を相互反応させる程度だったものが,TVC宇宙では
惑星1つまるごとを走らせるだけのプロセッサがある(それが時間のたつごとに増殖している).

TVC宇宙上で走らせたオートヴァースの惑星上で生命が誕生し(実際には誕生するように設計したのだけれども),
その生物とのファーストコンタクトも描かれている.

また,オートヴァースの惑星上から見ればTVC宇宙上の世界(物語中ではエリュシオンと呼ばれている)
の存在はそれを創造した神の存在に等しく,その存在はオートヴァース惑星上の科学とは矛盾しており,存在をめぐる
オートヴァース惑星とエリュシオンの争いも描かれている.
筆者自身も神の存在を否定しているのだと思う.


このように人工知能,仮想現実,から宇宙の起源まで取り扱った非常におもしろい作品だと思う.
ハードSFが好きな自分にとってはとても満足の行く作品でした.



個人的な疑問点としては

  • バタフライ計画ってちょいちょいでてきたけど何だったのか
  • マリアのお母さんはどうなったのか

ぐらいです.
もう一回読み直しますかね.



以下,個人的に名言だと思うものを挙げてみる.

  • 対称性は破られるためにある」
  • 「長い長い時間がたって死ぬこと,それは意味が違う.正解は死なないこと,以上」

CG系の研究で使えるソフトウェア on Mac

CG系の分野は資産がたくさんあります(他の分野もそうだと思いますが).
また,うちの研究室ではMac使いが少なく寂しいのでまとめてみます.

Editor 系

terminal

f:id:daiki_yamanaka:20111109002007j:image
言わずと知れたterminal.sshで研究室サーバに入るときとか使います.というかいつでも使えます.なんでも出来ます.

GNU Emacs For Mac OS X

emacsはフトントエンドがCocoa APIで作られた通称"Cocoa Emacs"があるので安心ですね.入れましょう.
でもぼくは-nwオプションつけてterminalで作業するのが好きです.
~/.emacs をいじりましょう.

browzer

ブラウザならなんでもいいですが,先生やセンパイや共同研究先からもらったファイルが文字化けして読めない場合があります.
そういうときはブラウザにぶち込んだら大抵読めます.

MacWiki - TeXShop

論文はTex派かWord派かに別れると思いますが,Texで行きましょう.
WYSIWYGにはWYSIWYGの良さがあると思いますが,Markup Languageはやはりきれいに仕上げるとこが出来ると思います.
再利用も簡単ですし.
MacでTexを使おうと思ったら,emacs等のエディタで書いてコンパイルしてもいいのですが,面倒なのでTexShopがいいと思います.

Keynote

Mac使いだとKeynote使いたいですよね.ぼくもそうです.
しかし,明らかにPowerPointに劣っている点があります.

  • 図形が貧弱

図(矢印とか四角)とかが貧弱です.2次元だとまぁ使えるのですが,3次元的に見せたい場合(例えば四角を平行四辺形に変形させたり)がダメです.
こういうときはPowerPointの力を借ります.PowerPointは図形が充実しているのでそれをCopy&PasteすればOKです.

  • デフォルトの設定がよろしくない

デフォルトだと文字がかなり大きくなってしまうので,Master Slideを変更することをお勧めします.
タイトルのフォントサイズは84 -> 48ぐらいに変更するのがよいのでは無いでしょうか.

LaTeXiT

keynoteに数式を入れたい場合はLaTeXiTが使えます.Texの文法で書いて,Drag&Dropでいけます.
やっぱTexがいいですね.


Viewer系

次はViewer系です.Graphics系だとやっぱり絵がないと寂しいですよね.でもゼロからViewerを作ろうとするとけっこうめんどいです.

ImageJ

f:id:daiki_yamanaka:20111109012705j:image
通常の画像処理だとGIMPとかPhotoshopとかでいいのですが,画像の解析となるとこのImageJが便利です.
主に生物系の人が使ってるみたいです.
ボクセルのボリュームデータを呼んでくれるところがいいですね.
あとJavaで書いてあるのでどの環境でも動きます(たぶん),自分でPlugInを書くことも出来ます.

MeshLab

f:id:daiki_yamanaka:20111109012704j:image
f:id:daiki_yamanaka:20111109012703j:image
メッシュに対していろんなファイル読めるし,いろんな処理をすることができます.
点群も表示することができます.フリーのメッシュviewerの中では一番いいのではないでしょうか.

ParaView - Open Source Scientific Visualization

f:id:daiki_yamanaka:20111109012659j:image
これは主に何かしらの値(スカラ,ベクタ)を持ったメッシュを表示するときに使います.
また,paraviewは入力データに対してフィルタをかけていくようになっていて,例えばthresholdや領域指定で表示範囲を

いろんなフォーマットのファイルを読むことができますが,
ぼくはVTK Formatを使っています.
VTK format
非構造メッシュももちろんあります.ぼくはTetrahedral MeshやTriangle Meshの可視化にお世話になってます.

こんな感じですねー.次はLibraryや参考書編でも書こうかなと思います.

Gill Sans

Mac 使いなら一度は見たことあるフォント,Gill Sans.

f:id:daiki_yamanaka:20111030155315p:image

エリック・ギル (Eric Gill) が1927-30年にかけて制作したヒューマニストサンセリフ体の欧文書体である。ギルは名高い彫刻家、グラフィックアーティスト、そして書体デザイナーであった。...
Wikipediaより.
ギル・サン - Wikipedia


Keynoteでこのフォントをよく使うようになりこのGill Sansが好きになったので,
日頃よく目にするブラウザのフォントもGill Sansに変えてみた.

f:id:daiki_yamanaka:20111030160339p:image


こちらが普段よく見かけるフォントTimes.たぶんGoogle Chromeのデフォルトの設定もこれ.
もともと新聞で使っていたフォントということもあってちょっと堅い感じ.

f:id:daiki_yamanaka:20111030160341p:image


つづいてこれがGill Sansを使ったもの.少しポップな感じがしていい感じに.

究極的にはGill Sansを書けるようになりたい.

Variational Tetrahedral Meshing

Variational Tetrahedral Meshing http://www.cs.berkeley.edu/~jrs/meshpapers/ACSYD.pdf
4面体メッシュ分割に関する論文.かなり有名な手法みたい.
作者はINRIAのPierreAlliezさん.Modeling業界ではかなり有名な人らしい.
著書に「Polygon Mesh Processing」がある

Polygon Mesh Processing

Polygon Mesh Processing


Meshをあつかった本は少ないのでかなりためになる.

ある頂点に対しエネルギー関数を考え移動させるのですが,それは頂点が含まれる4面体メッシュの外接円の中心点の重心と等価だそうです.(数学的な証明もかいてありました)
そして3次元のボロノイダイアグラムによる分割を行います.
これを収束するまで繰り返します.

アルゴリズムとしては簡単そうなので今度実装してみよう.

boost::program_options

c++コマンドライン引数をパースするライブラリを探してたら2つ見つかった.

http://www.gnu.org/s/hello/manual/libc/Getopt.html
シンプルで使いやすい.Java移植版もある

  • boost::program_options

やっぱりboostにもあった.
使うのはとても簡単.エラーやヘルプのメッセージなどが自動生成されるので楽.

#include <boost/program_options.hpp>

using namespace std;
namespace po = boost::program_options;

po::options_description desc("Allowd options");
po::variables_map vm;

string input_filename;

void parse_program_options(int argc, char** argv){

	desc.add_options()
			("help,h","produce help message")
			("input,i", po::value<string>(), "input file name")
			;

	po::store(po::parse_command_line(argc, argv, desc), vm);
	po::notify(vm);

	  if(vm.count("help")){
		cout << desc << endl;

	  }
	  if(vm.count("input")){
		  if(vm["input"].as<string>().empty()){
			  cerr << "input file name is empty" << endl;
			  exit(-1);

		  }
		  else{
			  cout << "input file name is " << vm["input"].as<string>() << endl;
			  input_filename = vm["input"].as<string>();
		  }
	  }
}

int main(int argc, char** argv){

	parse_program_options(argc, argv);
        
        return 0;

}

boost::program_options::parse_config_fileを使えばコマンドラインだけじゃなくconfig fileからも簡単にできそう.

Computer Geometry

3次元モデリングとかCGとかやってる研究室に配属になった.
教授と話してると「うちは幾何で勝負してる」って言われたので,幾何学の勉強を開始.
研究を進めてて
・frustumとcube群(voxel)の交わる体積を求める
という問題が生じた.
infinite frustumって考えてcubeと交わる4つの直線との交点を求めれば出るだろって思ってたけど,
実際は考えないといけない交差のパターンがいくつもあるし,
多面体の体積を求めるために3角形分割しないといけないし,
いろいろ面倒だなって思った.


いまのとこ幾何って直感的には分かるけど,いざ実装ってなるとはてしなくめんどくさい印象.
ってことで↓の本で勉強してます.

コンピュータ・ジオメトリ―計算幾何学:アルゴリズムと応用

コンピュータ・ジオメトリ―計算幾何学:アルゴリズムと応用

  • 作者: M.ドバーグ,M.ファンクリベルド,M.オーバマーズ,O.チョン,Mark De Berg,Mark Overmars,Mark van Kreveld,Otfried Cheong,浅野哲夫
  • 出版社/メーカー: 近代科学社
  • 発売日: 2010/02
  • メディア: 単行本
  • 購入: 4人 クリック: 29回
  • この商品を含むブログ (4件) を見る

日本語だとこの本が一番よさげ.

f:id:daiki_yamanaka:20110618164322j:image
http://www.architecturalgeometry.at/
この本は建築のための幾何学.
基本的な用語,概念は網羅してる.
詳しいアルゴリズムとかは書かれてないので実装するにはこの本だけだときつい.
なんといっても絵が多いので読んでて楽しい.

旧Mac -> 新Mac 移行に関するまとめ.

旧Mac(Macbook pro 13 inch 2009 early model)から新Mac(Macbook pro 15 inch 2011 early model)への移行の際に
いろいろ手こずったのでそのまとめ.

Mac->Macの移行の際には大きく分けて2つの選択肢があると思います.

1. 新しく環境を構築し,重要なファイル(ドキュメント等)を後から移行する.

2. 移行アシスタントを使う.
f:id:daiki_yamanaka:20061203001639j:image



今回の移行ではなるべく前の環境のまま移行したかったので,1はやめて2を選びました.
移行アシスタントでは無線LAN,有線LAN,Firewire経由のいずれかが選べ,今回はFirewireケーブルを使用しました.
移行できるデータは
・/Users/hogehoge 以下
・/Applications
・設定
です.
移行先に同じ名前のユーザがあると移行ができないため別の名前のユーザをつくらないといけません.
また,OSのバーションを同じにしておく必要があります.
200GB程度の移行に8時間程かかりました.



移行が終わって気づいたのですが,/Libraryや/usr/local/bin/ 内のファイルに"(古いMacから)"
という名前がついてしまっていました.
また,/Developer以下は消えてしまいます.

・ユーザ名を変えなければいけない.
・/Developer以下が消える(再設定がめんどくさい)
・/usr/local/bin 内の実行ファイルや/Library 内のフォルダに "(古いMacから)"という名前がついてしまう.
等の問題が発生しました.

Apple Storeの人曰く「移行アシスタントでそのままの環境を移行できる」そうですが,
ぼくが思っていたそのままの移行は出来ませんでした.



そこで,どうにか古い環境をそのまま移行するために,
「古いMacのハードディスクのデータを新しいMacのハードディスクにまるごとコピーすればいいじゃないか」と考えました.

データのコピーにはハードディスクを換装するときにお世話になったCarbon Copy Cloner - Home
を使いました.

だいたい5時間程度でデータの移行が終わり起動してみると,起動時のりんごマークから進みません.
f:id:daiki_yamanaka:20110409011126p:image

ハードの互換性が問題なのでしょうか.

どうにもならないのでOSの再インストールすることにしました.
f:id:daiki_yamanaka:20110409011738j:image

そして再起動すると...!?

そこには見覚えのあるデスクトップ画面が.
f:id:daiki_yamanaka:20110409012728p:image

どうやらハードディスク内のOSの領域だけ書き換わったので,後のファイルも正常に読めているようです.
アプリケーションが起動できない等の問題もありません.
まったく前の環境と同じです.

これがぼくの求めていた”そのままの環境の移行”です.

正しいやり方かはわかりませんが,Macの移行で困っている方は使ってみてはいかがでしょうか.