Sunday, December 20, 2009

シグラフあじあ終了

長い四日間が終わった.
今日の午前は,CGALのコースを半分聞いて,アトムの話を聞いた.午後は,Joe Rohdeの話を聞いて,モデリングの話を聞いた.
今日は最高だった.
まずCGALを使おうと思った.これはメッシュのブーリアンとかメッシュ構築とかができるライブラリで,汎用性やデータ構造の説明を聞いただけで,かなり魅力を感じた.使おう.
Joe Rohdeの話は物語の作り方についてだけど,内容は秘密なのだけれど,彼の話し方・プレゼンの仕方が最高だった.これまで聞いたプレゼンで一番素晴らしいと思った.ゆっくりと話し,強調したいことは強く,繰り返して言うし,言葉の韻を踏むし,聞きやすかった.こういうプレゼンを目指そうと思った.デザインされたプレゼンだった.
といった具合に最高でした.
このあと,仲間たちと飲みに行った.テーブルの座席時計回り順でいうと,某宮田先生と某高橋氏,某柿原氏,ざくさん,某せい氏とテーブルを囲んだ.
皆相変わらずのクオリティで,素晴らしかったです.


ザクさんのクオリティの高さを示した写真.

ということで,最高でした.

Saturday, December 19, 2009

丸一日行動②

暦本先生が話すセッションでの質問は,話した内容とあまり関係ないような質問が多かったように思う.
聞き手によって,聞こえた内容が違うということなのかな,と思った.
このセッションで,昔のVRの展示や実験のビデオがいくつか流されていたけど,どれも反応が早かった.10年くらい前でも,バーコード読んで,オブジェクトを描画するだけなら,ほぼリアルタイムだということに驚いた.

論文で名前をみたことがあるけれど,それがどんな顔なのか知らないことが多い.
Shape Analysisセッションで,アメンタが質問するために名乗って,はじめてその人がアメンタだと知った.

とにかく疲れた.

Friday, December 18, 2009

丸一日行動

朝から夜までしぐらふあじあでした.
朝から昼は,論文セッションを聴講して,夜はComputer Animation Festicalを見てました.どれも素敵なセッションです.

昼間は,ポスター発表でしたので,作ったポスターの横に立っていました.
色んな人と話ができたのでよかったです.

夕方に来年の研究概要を宮田先生に見てもらって指摘をもらいました.時間もないので,すぐに直したいと思います.

色んなことしたので,とにかく疲れました.

Wednesday, December 16, 2009

HoppeとLoopと並んだ

SIGGRAPH ASIA 2009に参加して良かった.
ついにHoppeとLoopと並ぶことができました.
実力じゃなくて,物理的に並んだのですが.

感激しました.
握手とかしてもらったりして.
緊張して声とか手とか振るえてしまいました.

Technical Papers Fast Forwardで,某柿原氏と某せい氏が前のほうにいるからおいで,というメールを送りつけてきたので,私も前のほうに行って,彼らの後ろくらいに座ったの始まりです.
このとき,左には,某松藤氏がいて,ちょっと右のほうには某宮田先生がいました.すぐ右には,二人で向かい合いながら盛り上がっている白人男性がいました.そして,座った時には気付きませんでしたが,その二人がHoppeとLoopだったのです.
そのことに気付かずにいると,宮田先生から電話がかかってきて,君の右手に,Hoppeいるよ,と受話器から聞こえてきました.それを聞いて,右の男性の顔を見ると,確かにwebサイトで見てた顔と同じやつが座っているわけです.
驚きました.まじかよ.というような感じで.
そして,その話している相手はLoopでした.
どういうことよ,と思いました.

このチャンスを逃すのも惜しいので,ビビりながらも話しかけました.
大したことは話していないですが.
でも,こんな時のために,もっとまともな英語は常に準備しておかなきゃなとは思いました.

とにかくこのとき,ビッグネーム二人と肩を並べたわけです.
本当に感激しました.
並んでいることに気付いて電話してくる宮田先生にもさすがだな,と感銘を受けました.私もあんなふうに心に余裕がある大人になりたいです.

以上のように刺激的な時間を体感して,会社で素人に毛の生えたような人たちと話していてもいかんなと,このままじゃ腐ってしまうな,と思いました.
別の求めるなら,求めるで自分に厳しくいなければならないし,会社にいるなら,いるで強く生きなきゃならないな,と.

この出会いは,最高の思い出になりました.
ありがとう.



並んだ写真.あまりにも緊張したため,微妙な笑顔になってますね.

Friday, November 27, 2009

Predictice-Corrective Incompressible SPHはすばらしいと思う

Siggraph 2009で発表されたSolenthalerさんとPajarolaさんの流体シミュレーション手法の論文Predictice-Corrective Incompressible SPHはすばらしいと思った.
これまでのラグランジェパーティクルを用いた流体シミュレーションでは,濃度が指定した濃度より濃くなることがあり,濃度を一定に保てなかった.
この論文では,濃度が指定した値以上に高くなると,プレッシャーを積算し,次のタイムステップでの濃度が一定になるようにする.これにより潰れることがない流体シミュレーションができる.
この論文の素晴らしいところは,この計算方法を実装するために,これまで書いたSPHのコードをほとんど変更しないでよいことだと思う.
プレッシャーの一部を書き換えるだけで,そのまま動く.はず.すばらしい.
が,ひとつ問題を発見した.

Friday, October 30, 2009

LibTIFFのTIFFOpenの設定によるファイルアクセスの挙動の違い

LibTiffというライブラリを使ってプログラムすることがあるが,TIFFOpen関数のモードの設定の"r"と"r+"の違いではまったことがあったので,メモ.
環境はwindows xp pro, visual studio 2008 vc++.

TIFF* TIFFOpen(const char *filename, const char *mode)
この関数はfilenameであるファイルのアドレス,modeであるファイルアクセスのモードを設定することで,tiffファイルを開く機能が実装されている.
それで,modeの違いでちょっとした挙動の違いを示す.
"r"は読み込み,"w"は書き込み,"a"は追記とリファレンス(http://www.remotesensing.org/libtiff/man/index.html)のTIFFOpenの項目には記述してあるのだが,それ以外にも,"r+"などが設定できる.
今回は"r"と"r+"の若干の違いについて気付いたので,メモっとく.
TIFF* tiff = TIFFOpen(filename, "r");
TIFFClose(tiff);
とするとtiffはアクセスができなくなっているが,他のファイルからfilenameのファイルにアクセスしようとしてもアクセスエラーがでる.
たとえば,
TIFF* tiff = TIFFOpen("filename.tiff", "r");
TIFFClose(tiff);
system("del filename.tiff");
としても,filename.tiffは消えない.

つまりは,複数の実行ファイルをひとつの一括したようなプログラムでtiffを読む場合,この読み込みでは,一番最初に読んだやつだけがアクセス可能となり,それ以降ではCloseしているのにも関わらず,アクセス不可能となる.

一方,
TIFF* tiff = TIFFOpen("filename.tiff", "r+");
TIFFClose(tiff);
とした場合は,このfilename.tiffはどれからもアクセス可能になっている.つまり,
TIFF* tiff = TIFFOpen("filename.tiff", "r");
TIFFClose(tiff);
system("del filename.tiff");
とすると,filename.tiffは消える.

つまり複数の実行ファイルをまとめたようなプログラムでは,どいつもこいつもfilename.tiffにはアクセス可能となっている.Closeしているので,これが正しい形に思える.
セキュリティの違いで組みかたを変えればよいと思うが,この違いを知らないと,ずっとはまることになる.

ちなみに私は3時間くらいはまっていた.

openGLの光源の位置設定でありがちなミス

openGLでの光源の位置は,4つの要素配列を使って設定するべし.

void glLightfv(GLenum light, Glenum pname, const GLfloat *params)
この関数を使って光源を設定する.
lightにはGL_LIGHT0からGL_LIGHT7までの8個のライトの名前を入れる.
pnameにはGL_POSITION,GL_SPOT_DIRECTION,GL_AMBIENT,GL_DIFFUSE,GL_SPECULARなどから設定したいパラメータの名前を入れる.
paramsには設定するパラメータを入れる.

この設定でGL_POSITIONは4要素の配列で設定しないと思いもしないレンダリング結果が出てくることが多い.
3要素のx,y,zだけを設定した気になっていると,4要素目が0と見なされて,平行光源の光源の方向設定していることになる.
スポットライトを設定しているはずなのに,平行光となり,予想していた絵と全然違うということになる.
回避するためには,4要素[x,y,z,w]の配列を用意して,wは0以外の値(私は1を入れている)を入れてglLightfvを呼んでやる.

覚えている間は,ミスることはないけど,たまにしかライティングのコードを書かない私のような間抜けは,同じミスを繰り返す.
ちなみに私は,こんな設定の話をすっかり忘れて1日くらいはまったことがある.昨日くらいの話だけど.

Saturday, September 5, 2009

Deformationテスト

デフォメーションのプログラムを組んでみた.
詳しいことは後でまとめるとして,まずは絵だけ.


初期状態の四面体です.ここからてっぺんの頂点を右にずらします.
以下に有限要素法を適用していない結果と適用した結果を並べます.


有限要素法を適用していない結果.てっぺんの頂点が移動しただけです.


有限要素法を適用した結果.てっぺんの頂点が移動するにつれて,他の頂点にも力が加わり移動しています.

今回の古典力学のシミュレーションはオイラー法で計算しているので,精度はすげー悪いはずです.論文に出ているようなタイムステップを実装しているわけではないので,そのうち誤差がたまって,四面体が爆発してしまいます.次はまともなタイムステップの計算をしてみます.

追記(2009/9/6):このデフォメーションはオイラー法でしか,古典力学の計算をできないかもしれない.ルンゲクッタ法では導関数を求めなければならない.しかしデフォメーションでは次のタイムステップの加速度は次の計算を行わない限り求まらない.つまり,ルンゲクッタ法に用いるための導関数は次の計算まで求まらないが,次の計算をするためには,次の導関数が必要となり,計算ができないということになる.だから,オイラー法で逐次計算していくしかない.ということは,みんな計算誤差なんて無視しているのか.

メモ
ちなみに,2007年のシグラフで公開されたBargteilさん達の論文に書いてあるFEMをそのまま実装しても全然うまくいきません.理由は,若干の記述を間違えている箇所があるからです.まじめに読んで実装しても,頂点は変な回転をしながら移動します.この論文が参照している2003年に公開されたTeranさん達のFinite Volume Methods for the Simulation of Skeletal Muscleか,2004年に公開されたIrvingさん達のInvertible Finite Elements For Robust Simulation of Large Deformationに記述されているFEMを実装するべきです.

Wednesday, August 19, 2009

F=XBはXが先に決まる

先日のF=XBで,deformation gradient Fと変形後の座標を意味するXのどちらが先に与えられるのかという疑問があったが,変形後の座標Xだということに気がついた.
Xは,力が加わり,加速度,速度が頂点を移動させた結果であるため,タイムステップがひとつ前の状態で決まる.変形後,Fが求まることで,さらに四面体の各頂点に力が伝搬するような仕組みになっている.
有限要素法の意味を考えてみるとすぐにわかるはずだった.

Tuesday, August 18, 2009

A Finite Element Method for Animating Large Viscoplastic Flowを再度読んでみる

Irvingさんたちの論文Invertible Finite Elements For Robust Simulation of Large Deformationを読んで,Bargteilさんたちの論文A Finite Element Method for Animating Large Viscoplastic Flowで記述されている有限要素法の触りの部分がわかった.

まず四面体を3x3行列で表現する.x0とx1,x2,x3を頂点とすると行列Xij = x ij - x0jのように定義する.iは1,2,3でjは次元.
X0を変形前の形状として,B=X0-1を基底行列とする.
変形後をXとして,deformation gradient FはF=XBとする.
SVDでF=UF^VTのように分解し,応力P^をP^=2u(F^-I)+λ Tr(F^-I)Iで計算する.uとλは素材の係数とのこと.
i番目の頂点に加わる力は,gi=UP^VTjAjNjで計算する.

ここでトーシロー(素人)の私がわからないのが,変形後のXがあっての話なのか,変形させるためのFがあっての話なのか.このあと読み進めてみる.

Friday, July 24, 2009

Deformation Gradientに関するメモ

Deformation Gradientという言葉に遭遇したが,調べずに放置していたので,このあたりでメモ程度残しておく.

とりあえずググって出てきたのが,wikipedia.
http://en.wikipedia.org/wiki/Finite_strain_theory

これによると,デフォメーション前後の位置を見たとき,この近隣のサンプル点との相対的な位置の変化量を示した行列のことを指しているらしい.
具体的にはどうすればいいのかな.

剛体のアニメーションの計算では,物体内部のある任意の点は,近隣の点との相対的な距離は変化しない.しかし,デフォメーションでは,相対的な距離が変化する.準備として近隣ノードとの隣接となる点を見つけておきたい.

詳しくは,リンク先に書いてある.


Deformation Gradientが1のとき,体積は変わらないというようす.

Sunday, June 21, 2009

BargteilさんらのViscoplasticモデル

BargteilさんたちのA Finite Element method for Animating Large Viscoplastic Flowの3章をさっと読んでみた.
前回読んで意味がわからず途中で断念したIrvingさんたちの論文を参考に,粘塑性の物体の変形と動きをモデル化している.今のところ,この論文に関しても,ほとんど理解できていない.
Irvingらの考えも理解できていないので,この分野の知見が足りないのだろう.

まぁ,よくわからなかったが,私の知見と照らし合わせて,何が書いてあったかまとめてみる.
3.1 Finite Element Methodでは,オブジェクトを四面体にして,四面体を変形するということが記述されていた.
四面体を行列X(ラージエックス)で表記している.この行列Xは3x3行列で,3次元上のあるノードから他の3つのノードの相対的な位置を表している.このとき,行をノードのインデックスで,列を次元としている.
シミュレーションをはじめるために,basis matrix(基底行列,と訳すのかな)を計算する.この基底行列βは初期のX0の逆行列とする.
このとき,与えられた変形状態がXのとき,Deformation gradient(変形勾配,と訳すかな)Fは,F=Xβで計算できる.これは,初期の四面体X0にDeformation gradient Fという変形行列をかけることで,変形後の座標Xが求まるという見慣れた計算.論文ではF=∂x/∂u=Xβと記述されている.uの意味が不明だが,きっと変形ベクトルを意味するんだろう.
あとの計算で使うため,FはF=UF^Vのように対角化する.
ここでは,Deformation gradient Fを計算するために,1st Piola-Kirchhoff stress(何これ?と思ってググったらwikipediaに書いてあった)を計算する.
http://en.wikipedia.org/wiki/Stress_(physics)
どうやら,素材と応力を関係させるとのことらしい.その応力P^は,P^ = 2μ(F^-I)+λTr(F^-I)I,で表されている.ここでは,λとμは材質のパラメーター.Trは行列のトレース.
それで力の計算は,g=UP^VT∑ANで計算できるとのこと.ANは面法線の重み付き面積とする.
ここまでで,材質が関係する応力を計算し,座標変換の行列Fを求めたいということがわかった.たぶん1st Piola-Kirchhoff stressを知っていれば,ここまで読む必要なかったように思えた.

次に,3.2 Plasticity Modelについて読んだが,これまたよくわからない.
かかっている力eを可塑性epと弾性eeに分けられると仮定する.体積の変化によるひずみによって加速が起こるとしている.(で,何よって感じがする)
可塑性のFPと弾性Feの掛け算モデルは適切であり,F=FP・Feで表す.このとき,det(FP)=1とすることで,体積の変化が起こらないことを保障するとのこと.
F^* =(det(F^))-1/3 F^を計算するために対角化されたDeformation gradientのF^を使う.このとき,det(F^*)=1とする.そして,F^P = (F^*)γとする.γはねばりの係数.
つまり,(det(F^))-1/3 F^に適当な数をかけた行列を座標変換の行列としてbasis matrix βにかけてやれば,よいということだろうか.

Deformation gradient Fの行列式が1になるように,かつ,弾性と可塑性に分けて計算すれば,それなりに見えるのではないかと,思ってきた.

Tuesday, June 2, 2009

Plasticモデル

今回読む論文は,Bargteilさん達の
A Finite Element Method for Animating Large Viscoplastic Flow
です.
PlasticをYahoo!辞書で引いてみますと,「プラスチックの」「ビニールの」等の素材を意味する形容詞と「可塑性の」という変形の性質を意味する形容詞が出てきます.まだ論文はちゃんと読んでいないので,はっきり言えませんが,変形について論じられているため,ここでのPlasticは「可塑性の」なのだと思います.
この論文を読み切った後は,可塑性の変形を実装しようと思います.

Sunday, May 31, 2009

この論文は読めない

Volume conserving finite element simulations of deformable modelsを読んでいましたが,全然内容を理解できません.ですので,次の論文読みに移ろうと思います.
別の機会に,運悪くこの論文を読む羽目にならないように,ここでメモって残しておこうと思います.

この論文に書かれている有限要素法は,2章 Time Discretizationと3章 Spatial Discretization,4章 Collisions and Contactを理解しなければ実装はできない気がしているのですが,正直2章の時点でつまずいています.この章には,1タイムステップの処理内容が記述されています.1から9ステップで構成されていて,位置と速度を計算します.次のタイムステップの位置は現在の位置と速度(なんか色々ややこしい処理したあとの速度)から計算しますが,次のタイムステップの速度は,式を見る限り(ステップ8の式に7の式を代入することで),加速度にタイムステップをかけた値になるはずです.この速度では,現在の速度は失われてしまいますので,加えられた力の分しか計算しません.しかし,その加速度も明確に計算式が記述されておらず,同著者の論文をちょっと漁ってみても,加速度の計算の記述はありません.何を計算すればよいのかさっぱりわかりません.
体積を一定にするために,位置を決定する速度を適当な値に調整し,次の速度を適当な値に調整するのは,わかりましたが,これらの計算方法がわからないので,どうしたもんか,といったところです.論文の売りは,Divergence freeとone-ringの体積の保持でしょうから,動きの計算は適当でいいのかもしれませんが,この論文に書いてあることは,実装できないので,もう読むのをやめます.次の論文に移ろうかと思います.

Monday, May 25, 2009

次はElasticモデル

次は,Elasticモデルについて,IrvingさんらのVolume conserving finite element simulations of deformable modelsを読もうと思います.

Sunday, May 24, 2009

球の衝突判定実験











Bridsonさんらの論文に書いてある衝突判定法を用いてFEM法で作った球で衝突判定の実験をし,この衝突判定法で判定ができることを確認した.
実験のために以下の準備をした.
・球のメッシュの頂点を移動可能にし,速度と加速度を設定できるようにした.高い精度が必要ないので,オイラー法でシミュレーション.
・球の下に面を配置し,衝突判定をする.ここでのリアクションは,衝突していると判定された頂点は動かないようにする.
・球に下向きに加速度をかけ続ける.なんとなく重力加速度を意識した.
この実験の結果が上の数枚の画像.左側はメッシュのエッジの描画で,右側はそれに面をつけてレンダリングした結果.

ここでは,Bridsonさんらの論文の説明が不親切な部分があるので,少しメモを残しておく.

この衝突判定法は,三角形x1x2x3と点x4の衝突を検知する手法.というか,結構一般的な手法なので,Bridsonさんらの論文を読まなくても,CGの数学関係の本には書いてあること.

まず,点x4と三角形x1x2x3を含む平面の距離を計算し,接触の距離h以下の点x4を判定する.準備として2個のベクトルを計算する.1個は,頂点x3(実はx1でもx2でも十分)から点x4までのベクトルを計算したベクトル.もう1個は,三角形の法線ベクトルnを計算したベクトル.これら2ベクトルの内積は平面からの距離であり,条件(x4-x3)・n < hが満たされるとき,x4と三角形x1x2x3の平面は接触しているとする.

次に,点x4を平面上に射影した点x'4が,三角形x1x2x3の内側か判定する.内側ならば,三角形と点は接触している.次の連立方程式を解き,その解を条件式にはめることで判定できる.
(x1 - x3)・(x1 - x3)w1 + (x1 - x3) ・ (x2 - x3)w2 = (x1 - x3)・(x4 - x3)
(x1 - x3)・(x2 - x3)w1 + (x2 - x3) ・ (x2 - x3)w2 = (x2 - x3)・(x4 - x3)
1 = w1 + w2 + w3
点x'4は,x'4 = w1 x1 + w2 x2 + w3 x3である.また,w1とw2がw1>=0, w2>=0, 1-w1-w2>=0を満たしていれば,点x'4は三角形の内側である.
以上のように,接触の判定を行う.

ちなみに,今回のリアクションは,適当に設定したため,論文のモデルに則っていない.

Sunday, May 17, 2009

collisionについては,そろそろいいかな

BridsonさんらのRobust Treatment of Collisions, Contact and Friction for Cloth Animationを読ませてもらっているが,最後まで読もうという気になれない.
その理由として,以下3つ.
1.とにかく一章が長い.
2.求めている情報以外の文章が多い.
3.大袈裟
7章の半分まで読み,まとめの10章まで,あと3章だけど,面倒なので萎えた.

ここでは,論文に記された「布以外の一般的な動的シミュレーション」に関する内容をざっくりと説明する.

・オイラー法やルンゲクッタ法などの一般的な微分方程式と同様に,設定したタイムステップ⊿t後のオブジェクトの表面の位置と速度を推定する.
・ものと当たっていたら,そこに急ブレーキをかける.
・近づいたり,当たりの判定は,法線ベクトルと三角形のある頂点からもっとも近い点までのベクトルの内積が,設定した厚み以下なら当たっているとする.
・高速に処理するために,空間分割を用いる.

といっただけのこと.
売りが布の摩擦なだけに,シミュレーション方法に驚きはない.

三角形上での当たり位置は,一般的な平面と点の距離で求まる.論文には,わざわざ式が書いてある.空間上の当たりの位置は,tタイムステップ時の距離が0になる位置を計算することで求める.布のシミュレーションはばねモデルで計算している.大した話じゃないと思う.

ここに記したようなタイムステップと当たり判定に関しては参考にするけど,布のシミュレーションはあまり納得できないので,気にしないことにする.

時間かけて読んだ割には,得られる知見が乏しい.
読むポイントが見いだせなかったことに原因があるような気がする.反省.

Sunday, May 10, 2009

Robust Treatment of Collisions, Contact and Friction for Cloth Animation読み始め

BridsonさんのRobust Treatment of Collisions, Contact and Friction for Cloth Animationを読ませてもらっているが,なかなか難しく感じる.知らないことが多いだけに.

イントロだけさらっと目を通したが,わかった(ような気になっている)ことは3点.
・布地のようなヘナヘナなモデルだと,衝突判定の演算がめちゃくちゃ多いということ.
・布地の伸縮や曲がったりの変形は難しい
・手で何か操作する

布のアニメーションの何が難しいんだ?って思っていましたが,この論文のイントロを読んで難しいことはわかりました.
布地の面ってメッシュで作られていて,ヘナヘナな布だと,ものにかぶったり,布自体がくしゃくしゃになって,メッシュの頂点すべてに対して,衝突判定が必要になったりします.しかも,動きのあるシミュレーションだと,タイムステップの取り方次第で,布の面が貫かれたりします.
だから,一回一回計算する必要があるんだよ,ということでした.
これは確かに面倒な処理だと思います.

ただ完全に理解したわけでもないので,このまま読み進めてみようと思います.
読み進めていれば,そのうち理解が深まると思いますので.

Saturday, April 25, 2009

BCC Lattice and Cut point結果



球の関数に対して,Labelleさん達の論文Isosurface Stuffing: Fast Tetrahedral Meshes with Good Dihdral Anglesで記述されているcut pointを計算して四面体として出力する処理を施した結果です.
これがグッドアングルかどうかはあんまり気にもならんのですが,次に点のwarpingでもしてみましょうか.

Wednesday, April 22, 2009

BCC Lattice and Cut point失敗したけどなんとなく出た結果


まぁ失敗なんですけど,以前からシコシコプログラムしていたBCC Latticeのドロネー図を用いたFEM Mesh生成のcut pointを計算した結果です.
cut pointは,陰関数のzero-setの近似でFEM Meshのエッジを切った点です.
一つの四面体の中のどこにcut pointがあるかを調べて,cut pointと四面体の各頂点の関数値を調べて,四面体をzero-set surfaceの近似になるように分割します.

この結果はその分割でミスっているのですが,そこはプログラムの書き間違い程度だろうと予想できるので,直せば,ある程度きれいに陰関数のzero-set surfaceを近似したFEM Meshを作ることができます.

プログラムでややこしかった点は,データの構造です.
BCC Latticeをはじめに計算し,点群を保持して,そこからドロネー図を計算し,一様に四面体を計算するのですが,ここまでで点と四面体のデータをそろえてしまっているのに,さらにcut pointなるものを付加して,四面体を分割するといったことが必要になります.

四面体クラスは,点を参照しています.
この点はBCC Latticeの点でもあり,cutpointでもあります.

cut pointや四面体の分割によってオブジェクトの数が変化するので,リスト構造を用いることを考えましたが,ヘッドのポインタから尻尾に向かって潜っていく時,リストの数が増えればその分遅くなりますので,やめました.

こんな状況でも,たまにはリスト構造のコードも組む時あるのですが,今回は,配列を予想できる数だけ確保して,アクセスすることで,少しだけストレスを減らしています.
(リスト構造でストレスがかかるとか言っている時点で,javaで言うとVectorクラスしか知らない原始人みたいに思われますが,その通りなので,言い返しません.microsoftが独自に用意してくれたライブラリとかカッコよく使いこなしたいです.)

また,四面体の分割方法は各頂点を固定して8通りあり,4頂点の配置は24通りあるため,一つの四面体を192通り確かめて,分割方法を決定します.
そこで,4!のループの中に8通りのチェック関数を入れて,チェックしました.
for(int i=0;i<4;i++){
  for(int j=0;j<4;j++){
    if(i==j) continue;
    for(int k=0;k<4;k++){
      if(k==i) continue;
      if(k==j) continue;
      for(int l=0;l<4;l++){
        if(l==i) continue;
        if(l==j) continue;
        if(l==k) continue;
        四面体pointのindex入れ替え(i,j,k,l)
        8通りチェック関数(四面体);
      }
    }
  }
}
みたいな感じで.

Sunday, April 5, 2009

ミュンヘン八日目,帰国

2009年4月4日

帰国の日.
本当に刺激的な時間を過ごせた1週間だったと思う.

6時頃に起床し,出発の支度をする.
7時頃ホテルで朝食をとり,忘れ物の確認をしてチェックアウト.

土産を見にいろんな店に入った.
基本的にお菓子を買って帰国することにする.
香水にも化粧品にもブランド品にも興味がないので,海外でのショッピングの楽しさがよくわからん.

フラフラしているのも飽きたので,8時頃にS8に乗り込んだ.
このとき忘れずに刻印機でチケットをパンチ.
9時頃に空港の駅に到着.




このとき気付いたのだけれど,スーツケースの中はすかすかでお土産を入れるスペースがあるのだけれど,クッションになるようなものがないので,瓶などでは何かと当たって割れたりするかもしれない.なんか緩衝材を持ってくればよかった.

空港のスーパーみたいなところで,またもお土産用のお菓子を購入.
そして,チェックインしようとエコノミーのカウンターに行くとめちゃくちゃ人がいっぱい.だから,自動チェックインで済ませてください,と言われた.
なんか使い方がよくわからないけれど,とりあえず人がいたので,聞いてみた.
すると予約が済んでいる客は,パスポートを読み取り機で読み取ったら,終わりとのこと.
じっさいにそうだった.

パスポートの顔写真があるところを読み取らせると,なんか紙が出てきた.
その紙を持って,荷物を預ける専用カウンターに持って行って,荷物を預けて終わりとのこと.
そのカウンターに行ってみると,すごい列.


70mくらい並んでいた.
しかし,進みは早く15分くらいで,預けることができた.20kgは超えると追加料金がかかるようだが,ボクの荷物は20.5kgで超えているのだけれど誤差の範囲でOKらしかった.
ちょっと離れたところに英語が分からなくて困っている日本人らしき人もいたから,海外旅行では少しは英語を理解できた方が不便は少ないと思う.困っている日本人らしきCGに詳しそうだったけど,実際はCGには関係ない人たちは,自分の手続きが終わったら助けようと思っていた.だけど,係りの人がなんとか助けてなんとかなったようだ.

荷物を預けられたので,身軽になった.PC担いでいるけど.
それで手荷物チェックを受けて,パスポートコントロールを受けて,ゲートまで来た.
このとき,10時くらいだったので,残り5時間.何しよう.

することないので,端から端までぶらぶらしてみた.

だいたい2時間くらい潰せた.
ほしいものなんてここでは何もないので,カフェで食事をすることにした.

ツナトーストとコーヒー.8ユーロくらい.
空港で食事すると高い.
ツナトーストは端から端までたっぷりツナが入っていて,コンビニのサンドイッチのように少なくない.これなら,この値段はしかたないような気になった.

これで30分.
まだまだ時間がたくさんある.
けど,疲れたので,座って待つことにした.
ココナッツとパインのジュースを買って,飲んだ.

おいしいものではなかった.

しばらくすると日本人が集まってきた.
一人で待っている人なんてほとんどいない.
みんな4人以上の団体だ.
友達とでも来ているのだろうか.
4人以上の男女複合型もいれば,女性のみもいる.とにかく皆一緒に来たのだろう.どうせ夜はエロいことでもやっているんだろう.複数人での楽しみ方もあるという話だから,理解できなくもないが,本当にいいのか問いたい.

そのあとにまた日本人が集まってきた.
大きな声で話す「自分ら賢いですから」タイプの人たち.
英字新聞読んでいるのを見て(衛星を飛ばすニュースがないか探していた),「なんだね,君ドイツ語は読めないのかね.」とか言ってくる.何この空気.

そんな感じで時間が無駄に過ぎていくのを待った.

しばらくして搭乗が始まった.
搭乗のときに某高橋先生と再会した.嫁がいるという理由でお土産の量が多かった.嫁のためにあれだけ頑張れるってかっこいいと思う.

エコノミーの座席はまたも,個人テレビがないタイプ.
となりは普通っぽい日本人男性.この人とは一言も話さなかった.こういうとき,外人の方が話しやすい.

離陸.
離陸後安定したくらいで,機内でドイツ語しかしゃべれないおばさまたちにドイツ語で必死に何かを言われた.大切なのは気持ちだ.伝えたいことは,伝わる.おばさんたちは飛行機の外を撮りたかったのだ.きれいな空を撮ったマダム達はご満悦で,ダンケシェーンと言い,席に戻っていった.
確かに外はきれいだった.


機内食はポークシチューだった.まぁまぁの味,機内食としては.

しばらくして,映画が始まる.
007と馬鹿犬の話とロッカーの話だった.
どれもよかった.
本当に映画っていいものですね.

時差ボケとか,ストレスでほとんど寝ずに10時間くらいのフライトを終え,成田に到着.
このとき,日付は4日から5日になっていた.
飛行機を出て,パスポートコントロールを通って,荷物をとって,税関を通過.
これで帰国.

まずは借りていた国際電話を返したい.
しかし,見つからない,返却場所が.
QLライナーってところで返すはずなのだが,場所がわからない.
30分くらいうろうろして,ようやくANAの国内線カウンターの横の端の端にあるカウンターを見つけた.もうちょっとわかりやすくならないものか.


腹減ったので,レストランで食事をした.
大してうまいとも思わなかった.

そんで,京成線で船橋まで出て,JRで亀戸に向かった.
無事,住まいに到着.14時頃だっただろうか.
非常に疲れる旅だった.
ぐったりということで,少し寝た.

Saturday, April 4, 2009

ミュンヘン七日目,EG終了

2009年4月3日

今日はEG最終日.
昨日の疲れもあって,7時に起床.
昨夜たくさん食べたので,今日は朝抜いた.
今日は9時半から始まるので,そんなに急がなくて良い.
ゆっくり準備し,8時頃に出発.

9時頃に到着.
始まる前にまたも簡単に某岡部さんと話をして,最後のセッションを聞いた.
このセッションでその岡部さんは発表した.何かと面白い人だった.
そのあと,オープンサンドウィッチが出されたので,もぐもぐと食べた.
これは昼食の代わりとして.
固いパンに,チーズとか,ハムを乗せただけなのだけど,すごくおいしかった.やっぱりオリーブがうまい.

そして,Closing.
Awardが発表された.
たしか,ブレイクダンスみたいな動きをさせる論文と,写真の中のものの色を変える論文と画像のデフォメーションだった.

終わり.
会期中に会った皆と挨拶をして,電車に乗った.
いい人たちばかりだった.
特に大竹さんと岡部さんに初めてお会いできたのはよかったです.

この会議に出ることができて,少しだけ前進できたような気がします.
手伝ってくれた皆に感謝です.


ホテルに戻り,Marienplatz(ようやくこれをマリエンプラッツと発音しているのが聞き取れた)に食事や買い物をするために向かった.

BMW Weltに行くと予定していたけれど,BMW Weltは平日だと18時までしかやっておらず,ホテルから出たのが16時頃だったため予定を変更した.
Marienplatz周辺は,観光名所ということで,うろつくことにした.
バイエルン州立歌劇場


何とかっていう建物.


将軍なんとか.


odeonplatzのところにある門.


ホーフなんとか.


たぶん有名な建物.


英国庭園近くの日本茶室


英国庭園.


Marienplatz周辺でうろうろして,疲れたので,食事にした.
最後のアイスバインを食べようと,またDonislに入る.
アイスバインを注文すると,ここにはアイスバインと呼ばないと言われた.まぁ注文は通ったからよい.
以前も同じようなことを言われたけど,この店で(もしくはこの地方で)言われている名前を覚えていないから仕方ない.




相変わらずでっかい肉の塊だ.
すごくおいしいのだけれど,半分くらいで腹がいっぱいになるのが,惜しい.
一皿で二人分くらいある.
ビールも飲んでいるからなおさら腹が膨れるのかもしれない.

食ったら眠くなったので,ホテルに帰ってシャワーを浴びることにした.
明日は15時40分出発なので,お土産見るのに10時くらいに空港につけばよいと思っている.飛行機に乗れば,12時間で日本に到着.
時差もあって,5日の午前に到着する.

ホテルに帰るためにSバーンに乗った.
中央駅までは2駅.
しかし,なぜだか1駅隣のKarlsplatzに降りてしまった.
何かの縁だと思い簡単にカールス門を見てきた.


地図を見ると,中央駅までは400mくらいなので,歩いて帰ることにした.
ちんたら歩いていると,中央駅の入り口に到着.
せっかくなので,近くの今まで入ったことのない店に入ってみた.
そこは地下のスーパーみたいになっており,安値でお菓子や飲み物を買える.
少しだけ買い物をして,ホテルに戻った.

後は明日の準備をするだけ.

Friday, April 3, 2009

ミュンヘン六日目,一日中発表がある最後の日とディナー

2009年4月2日
この日のメインは夜にあるConference dinner.
ようやく時差ボケがなくなってきたのか,6時頃に起床.
いつもの通り朝食をとり,会場に向かう.
なんとなく会場を撮ってみた.



FPの発表を聞いて,昼食をとった.
この日の昼食は,でっかい肉団子だった.
会場で出会ったエドモンドとともにそれを食べて,また昼からのセッションを聞いた.
コーヒーブレイクで,某岡部さんと簡単に話をした.
凄みのある人は皆,ボクはラッキーなだけ,と言うが,ラッキーだけでそんなに頑張れない.普通じゃない努力をしているのだと思う.

面白いinvited talkを聞いて,この日のセッションは終わり.
午後7時の食事まで2時間あるので,一度ホテルに帰ってシャワーを浴びることにした.

これもまたいつもどおりの道でホテルについて,シャワーを浴びて食事に出かけた.
EGディナー会場は,古い感じのホテル(?)のパティー会場.

荷物を預けて,EGで出会った友人Edmondと会場に突撃.

そこでは,EGのすべての参加者がいるのだと思う.すごくたくさん人がいた.



世間知らずのボクが知っているほどの日本の著名な方々も集まっていたので,簡単に挨拶だけさせてもらった.
学生のころは,宮田先生の弟子として,いろんな著名人に挨拶をさせてもらった覚えがある.
そのころにさまざまに会わせていただいたおかげで,今みたいなただの会社員になっても,宮田先生の弟子ということで,著名な方でもラフに話してくれる.自分が宮田先生の下にいなかったら,たぶんこんなにラフに話もできていないだろうし,聞けない話もたくさんあった.

そういえば,初日に見たCGに詳しそうな人たちはそこにはいなかった.もしかしたら別の団体さんだったのか.大学近くでも見たから,スタジアムに用があった人たちか.

このディナーでは,ものすごい量のビールやワインが出るし,食べ物も無限に近い.
しこたま食って飲んだ.

最後は,岡部さんと肩を組んで撤収した.

Thursday, April 2, 2009

ミュンヘン五日目,発表

2009年4月1日
発表がある日.
5時半くらいに起床.
何度か発表練習をして,朝食のバイキングに向かう.
あまり時間もかけたくないので,さっさと料理を取って,席に着く.
人があまりいない.

時間を気にかけながら,さっさと食べ,部屋に戻って,また練習.
8時になったので,FPのセッションを聴講するために,会場に向かう.
電車の中で,原稿読んでいたら,乗り越した.
中央駅から二駅のodeonsplatzで降りなきゃいけないのに,U4でさらに二駅先のMax-Weber-Pl.で乗り越したことに気付いた.
ホームに降り,反対の電車を待つ.
10分くらいして,電車が来たので,odeonsplatzに戻って,U6に乗り換えた.
あとは,乗っているだけでいいので,またぶつぶつと練習を始めた.
すると,となりの人が,それどこで発表するの,って声をかけてきた.
その人はしわをキャプチャする研究のFPの著者で,しわについてぶつぶつ言っているのを聞いて,気になったらしい.
質問の聞き取り練習を含めて,簡単に会話させてもらった.
その人はカナダの大学から来ていて,何をしていて,うんぬん.ということ.
何話していたか忘れた.

そうしていると,会場に到着.
9時ちょっと過ぎたくらいに到着.
FPを見て,考えの幅が広いなぁ,と思い,自分がもう少し頑張るべきだと確認できた.
この気持ちを帰ったらみんなに言おうと思う.


コーヒーブレイク中も,ぶつぶつ練習.
ふと,周りを見渡すと,SIGGRAPH に何本か論文を通している某大竹先生がいた.今回,面倒みている学生がShort paperで発表があるということで,来ているようだ.日本人ということと別の某つながりで,すでに今回ボクがここにいることは知っていたようだ.熱い.

休憩後のFPのセッションは,さっき電車で話しかけられた人のFPの発表を見た.
汎用的で,既存手法よりもかなり素晴らしい結果が出ているように見える.

昼はEGが用意したパスタを食べた.
オリーブがめちゃくちゃおいしい.
ドイツに来て気付いたけど,なにかと付けてくれるマスタードとオリーブがめちゃくちゃおいしい.
マスタードは全然辛くないし,食べやすく,酸っぱいと言えば酸っぱい程度.このおいしさに驚いた.
オリーブはたぶん,鮮度の違い.しらんけど.


そして昼が終わり,自分の発表時間.
会場は小さめなのだけど,立っている人がいるくらいいっぱい人が来ている.FP見に行けよ,とは思うけど,これだけの人の前で研究結果を見せることができることがうれしかった.だいたい50,60人かな.
聴衆を見ながら話すと緊張しない,と先生に騙されて部屋いっぱいの人を見て緊張した.質問には答えられたし,コメントは持ち帰るとして,これで一安心だ.


この後も発表は続いていたのだけど,皆がよく知る分野の発表では,質問が熱い.
これは質問攻めと言っても過言ではないくらいに,みんな質問する.
自分のはかなりマニアックだったのかな.ここまで,ややこしくなかった.

この後,Short paperのFast Forwardがあるので,見に行った.
どれも素晴らしい結果を出している.
FPはかなり若い人が多いなぁと思ったが,SPは結構おじさんが多い.
特に気になる発表が2件あるので,それはチェックしようと思う.

SPのFFが終わって,またNPの発表を見に行った.
今回もほぼ満員.
意外と注目する人いるんだなぁ.
発表がすべて終わり,chairが総評をして,終了.
いい経験をさせていただきましたありがとうございます.ボクはもう少し努力をしようと思います.
周りに合わせていたら,あんなところで優位に立てない.
仕事忙しいとかを言い訳にするのが恥ずかしいと思ったので,仕事はほどほどにしよう.誤解を生んじゃいけないから言いますが,ちゃんと仕事はしますよ.もちろん.
ただ程々で.

この日は終了.
FPのProceedingsが用意できていると聞き,取りに行った.
無事受取り,ホテルに帰る.

今日もビールを飲もうと思い,500mlを2本購入.

今回は,LOWENBRAUと書かれたラベルを選択した.
ひとつはDUNKEL,もうひとつはTRIUMPHATORと書かれている.
どちらも黒いビールだ.
アルコール度数は,DUNKELは5.5%,TRIUMPHATORは7.6%とある.
うん.いい.
ということで,ホテルに帰り,早速DUNKELを飲む.
おいしい黒ビールだ.
前に飲んだおっさんの絵が描いてあるものとは,全然違う.メロンっぽい味がするのはおっさんビールの特徴だとわかった.
10分くらいで,500mlがなくなったので,つぎに強い方を開けた.
これもおいしい黒ビール.
ただアルコールの強さを感じないくらいに,香りがいい.
これもまた,おいしい黒ビールだ.
これも10分くらいでなくなった.

何か食べないといけないと思い,Marienplatzに行って,この前に行った店に入ることにした.
Marienplatzの景色はやっぱり凄い.



店では,夜は中で演奏があった.

ここでもビールを注文した.

食べるものは牛のスープとアイスバインを注文.
スープは味薄め.肉はやわらかい.


そのあとついにアイスバインが持ってこられた.


豚の足を煮込んだという料理だが,噂ではおいしいとのことだが,どうだろうか.
ナイフがすっと入る.ぶよぶよのゼラチンだ.
ブヨブヨがすごくおいしい.
ブヨブヨの内側には,肉がある.
これもおいしい.
マスタードをつけてもおいしい.
一度は食べてみたほうがいい料理だと思った.
量が半端じゃなく多いので,腹いっぱいになる.
あまりの量に途中で挫折しそうになったけど,全部食べた.
余裕があったら,もう一回食べたいくらいおいしかった.
値段は15.05ユーロ.質と量を見たら安いものだと思う.

腹も満たされたので,今日は帰って寝るとします.