2012-01-16
TokyoDemoFest2012に参加しました
昨年、日本初のオフラインデモパーティということで行われたTokyoDemoFest2011でしたが、今年もめでたく開催となりました。
しかも、場所は秋葉原MOGRA、日程は二日間と前回より大幅にグレードアップした形でした。
僕もオーガナイザーの一人として、また、一参加者として非常に楽しませていただきました。
とりあえず二年連続でやったので、このままうまいこと毎年やっていけたら日本のデモシーンも活気づくのではないかな?と思います。
新人が二人も作品を出していましたしね。しかし、反省点が多かったのも事実。来年以降はもっともっと質の高いパーティにしていけたらと思います。(作品もね)
2011-06-25
AO BenchをOCamlに移植しました
AO Bench(http://code.google.com/p/aobench/)というAmbient Occlusionによるレンダリングを行うベンチマークがあり、結構いろんな言語に移植されてるのですが、OCaml版がなかったので移植しました。
ocamloptでコンパイル、Core2の2.66GHzで6.6 secといったところでした。かなりベタな移植なので、うまいことやればもっと高速になるかもしれません。
2011-05-19
Line Space Gathering for Single Scattering in Large Scenesを読んでちょっと実装しました
さて、私は今学部でいろいろな研究室を回り、論文を読んでは実装するという課題を行っているのですが、初回の課題はSIGGRAPH2010の論文、Line Space Gathering for Single Scattering in Large Scenesを読みました。
この論文はレンダラ系論文で、何らかの媒質中(たとえば埃とか、微小の粒子に満ちた大気とか)を通る光の散乱の高速な計算手法の提案となっています。
ただし、論文手法で扱えるのはまだ、均質な媒質中における単一散乱に留まっています。
従来手法で有名なものとしては、間接照明を高精度、高効率に計算するPhoton Mapping法の拡張、Volumetric Photon Mappingなどがあるそうです。
論文手法の面白いところは、線分同士の近傍探索を高次元空間に変換して候補の限定を高速に行っているところでした。
以下、具体的な手法について簡単にまとめ。
- 設定した光源から光線発射
- まず、光源から光線発射します。このへんは普通のレイトレとかと同じで、別の媒質とぶつかったら適当に反射したり屈折したりします。このとき、たとえば、光源→物体A→無限のかなた、みたいに光線が通った場合、光源→物体Aの光線と、物体A→無限のかなた、みたいにして線分(半直線)の形でどこかに情報を記憶しておきます。
- 線分をPlücker coordinatesによって六次元空間内の点に変換
- Plücker coordinatesという概念があります。これを用いると、ある線分と線分の距離の下界を、六次元空間における平面と点の距離として求めることができます。
- 散乱光の計算をするとき、視線から発射した視線分の近くを通る、光線から発射した光線分の集合を求めることで実現されます。通常、ある点の近くの点を求める手法としては、空間を分割することによるデータ構造(kd-treeやBSPtreeなど)が用いられます。しかし、線分間の近傍探索となると、線分が空間の大部分にまたがるため、うまく空間分割されたデータ構造が作れません。
- そこで、六次元空間内の点や平面に変換することで、うまく空間分割されたデータ構造を作る、というのがこの論文のキモになっています。
- 設定した視線から視線分発射
この手法の優れた点としては、Photonを飛ばして保存するのに比べ、Line Segmentを飛ばして保存するため、メモリ効率が良く、GPU化が容易になった、という点らしいです。
今回私は、論文手法をおおむね実装しました。ただし、GPU化とより効率的に空間分割されたデータ構造の生成は行っていません。以下、適当にレンダリングした結果。
nanikagaokasii
2011/05/19 11:58
すげぇ
2011-04-28
C++で画像とか入出力のまとめ
最近CGとかやってるんですが、結果画像を画像ファイルで保存したりしたいわけです。
まあ、適当にやるならPPMとかでもいいんですけど、PNGとかで保存したいなあ、という需要もあるわけですね。
そこで、マルチプラットフォームっぽいC++用の画像入出力ライブラリについて、集まった情報を自分用にまとめてみました。Twitterで教えてくれた人はありがとうございました!
- boost::gil
- stb_image.c
- http://nothings.org/というサイトのhttp://nothings.org/stb_image.cというC言語で書かれたブツがあります。まだ使ってみてませんが、Cファイル単体でPNGとかJPEGが取り扱えるっぽいので、使いやすさはかなりのものっぽいです。
- DevIL
- http://openil.sourceforge.net/です。これも、最初二つよりも導入が楽そうですが、まだ調査中です。
faith_and_brave
今だとOpenCVが主流な気がしますね。
h013
お、OpenCVでも読み書きできるんですか!ちょっと調べてみますー




