サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
marina.sys.wakayama-u.ac.jp/~tokoi
大晦日だ 今日は大晦日です。色々あった 2016 年も暮れていきます。今年は忙しかったです。本当に忙しかったです。iPhone の「ヘルスケア」アプリの「睡眠分析」には、今日は「1日平均: 4時間 8分」とか出ています。てなことをバンドの忘年会で自慢してたら他の人も同じくらいの睡眠時間で、色々おかしいと思いました。そういえば私は先日ついにキレて、任された仕事を一つ投げてしまいました。書きかけの原稿の催促もいただいていますが、返事していません。ごめんなさい。 学生さんとの約束 そんなこんなで、ここんとこ学生さんの面倒を全然見られていません。ごめんなさい。進捗を発表してもらうとプレゼンはとても良くできていたりして、うっかり騙されてしまいます。本当のところはどうなのかはポーリングしないとわからないことが多いのですが、それはコストが高いので、学生さんの方からシグナルを発生してくれた方が他の仕事と非
みんな頑張っている(のか?) うちの研究室の学生さんたちがとあるコンテストに応募して審査員特別賞をもらったらしいのだけど、入賞6チームのうち3チームがうちの大学 (というか主にうちの学科) だったこともあり、これがすごいのかすごくないのかよくわかんない状況のようです。彼らは優勝チームにはさすがに敵わないと思ったことと、同じ大学の他のチームに負けたことで、嬉しいのか嬉しくないのかよくわからないみたいなことを言ってました。その割には記念写真でいつものようにフザけたことをしてる (どうしてそこでやった) ところを見ると、実は嬉しかったんだろ?とりあえずおめでとう。 前に魚眼レンズ画像の平面展開と矩形の描き方について解説を書いたわけですけど、手法自体は教科書に書いてある話です。でも、そのうち学生さんや私自身がやってることでも必要になるので、改めてサンプルプログラムを書きました。「お父さん犬」と「偽
やりたいことがいっぱいある 本当にやりたいことはいっぱいあって,いくつかには手を付けたものの,やらなきゃなんないことに時間を奪われて,途中で放置している状態です.でも,一番やりたかった「家族と一緒に版ご飯を食べる」は,このところ実践しています.やりたいことをやる時間がなければ,やらなきゃなんないことに混ぜてやってしまえとか思うんですけど,なかなかうまくいきませんね.学生さん向けの資料もいくつかブログにまとめようと思っているんですけど,後回しになっています.GLFW で Oculus を使うことに関しても,それなりにノウハウがたまってきたのでブログにまとめたいと思ってるんですけど. その関連で,最近はやりの RICOH THETA S や Kodak SP360 4K で撮った全方位画像 (っていうのが画像処理的な言い方なのかなと思いますけど,一般的には全天球画像とか全周画像とか言いますね)
頂点配列オブジェクトと頂点バッファオブジェクト OpenGL 3.2 の Core Profile 以降では, OpenGL の図形描画は頂点配列オブジェクト (Vertex Array Object, VAO) を介して行わないといけません. VAO は任意の頂点バッファオブジェクト (Vertex Buffer Object, VBO) の組み合わせを管理できるので, 異なる構造のオブジェクト (形状データ) でも VAO 指定するだけで図形の描画が開始できるので楽ちんなのですが, その辺の話はここには書いたもののこのブログに書いてないせいか, どうも今いる学生さんに伝わってない気がするので, 改めて説明します. 早く前回の放射照度マッピングの続きを書きたいんですけど他にも書かんならんもんがいっぱいあって, ちょっとくたびれてます. デプスマップとかポイントクラウドとか関数とか 深度セ
お出かけしたいなあ これを書いている今日は CEDEC2015 が開催されておりまして, うちの学生さんの中にも参加している人がいます. あっ, この記事, そいつのために書いてるようなもんやないか. くそう今頃気がついた. なんか許せねぇ. SIGGRAPH とか, やっぱり色々お出かけしたいですねぇ. もちろん論文を通して, ですが. がんばろう. 環境による照明 今回は前から気になっていた, 講義のこのあたりの説明をもう一度考え直してみます. このスライドの説明がグダグダだということもありますけど, これからやろうとしている研究の基礎知識として某学生さんにも押さえておいてほしいことなので, 某学生さんは心して読むように. OpenGL の固定機能による陰影付けを用いたプログラム 放射照度マッピングによる陰影付けを行ったプログラム 放射照度マップをインポータンスサンプリングで作るプログ
年末 年末です. 今年も暮れていきます. ああ, どうしましょう. 悲喜交々であります. 今年も皆様方にはいろいろご迷惑をおかけしました. 多くの方にご助力いただきました. ありがとうございました. まあ, 継続中のご迷惑もまだあるんですけど. すみません, なんとかします. 卒研その他で髪の毛を扱う人向けに GPU を使う場合のサンプルプログラムを書きました. git で clone するか ZIP ファイルをダウンロードしてください. ベースのプログラム とりあえず, こんな感じになります. まだ最終形態ではありません. てゆうか, 最終形態へは自分で持ってってください. 関連する研究として Selle らの A Mass Spring Model for Hair Simulation や, Liu らの Fast simulation of mass-spring systems
プログラミング 先日,久しぶりにあった知人に「現役プログラマなんですね」と言われてしまったけど,プログラミングは自分にとって表現の手段や考える道具みたいなものなので,こういう仕事をしている限りプログラミングと縁が切れることはないと思います.こういう歳になるとプログラミングは学生さんなんかに任せるべきっていう話になるのかもしれないけど,自分でプログラミングをしてないと発想そのものが出てきません.それにプログラミングをすればするほど自分の未熟さを思い知らされるので,やっぱり終わらない気がします.いつかはやめる時が来るのかもしれないけど,それまでは学生さんたちとガチでタメを張る感じでプログラミングしていたいと思います. Oculus でリアルタイムボリュームレンダリング from Kohe Tokoi on Vimeo. 3D テクスチャ ずいぶん前 (今見たら 8 年前!) に 3D テクスチ
人気サークル横の悲哀 ちょっと前に,とある学会で Oculus Rift を使ったデモをしました.Oculus Rift を使うこと自体は研究の目的ではなかったんですけど,まあ多少は目立てるかっていう下心もあってデモに使いました.デモ会場では隣のブースも Oculus Rift を使ったデモを行うようでした.んで,実際デモが始まってみると,隣がえらく人気で長蛇の列ができてしまい,そのあおりを食ってうちらの前に誰もいないという状況になってしまいました.コミケみたいだ.くそう,松美池のスワンボート元気ですか. もうね,Oculus Rift と言えば「(仮想的な) 彼女を作る」ことがお約束みたいになってますけど,やっぱりそういうのは Unity とか Unreal Engine とか使わないとやってられないって思います.それに世間では DK2 の話題でモチキリだと言うのに,今さら DK1 の,
GLFW では, 開くウィンドウで使う OpenGL のコンテキストのバージョンやプロファイルを指定できます. これは glfwOpenWindow() でウィンドウを開く前に, glfwOpenWindowHint() で指定します. ... int main(int argc, const char * argv[]) { // GLFW を初期化する if (!glfwInit()) { // 初期化に失敗した std::cerr << "Can't initialize GLFW." << std::endl; exit(EXIT_FAILURE); } // OpenGL Version 3.2 Core Profile を選択する glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); glfwOpenWindowHint(GLFW_
夏が終わる まだ暑さは残っているものの, 今頃の空は, なーんか切ないものを感じますね. 子供の頃の夏休みが終わってしまった喪失感の記憶でしょうか. Twitter で「パトラッシュ, ぼくもう疲れたよ」ってつぶやいたら, その直後においでになったお客さんに「パトラッシュってつぶやいてましたよね」と言われてしまいました. ああ, 夏はもう終わってしまうんですね… 夏休み前に学生さんに GPU Gems 3 の Chapter 27. Motion Blur as a Post-Processing Effect を実装してみてって.自分はロクに読みもせずに訳本を渡しました.でも,いきなり投げられても困るかなって思って自分でも実装してみたら, なんだか似て非なるものになってしまいました. はい, 文献はちゃんと読みましょうよ私. CG におけるアニメーションでは, フレームごとに少しずつ形の
演習の進捗管理 演習の進捗管理に Redmine を使う必要があるか微妙に疑問だし, まだほんとにやるかどうかわからないけど, いっぺん提案してみようと思って Mac OS X Server にインストールしようとしたら, OS が 10.8 (Mountain Lion) になってて MySQL が使えず, いろいろハマったのでメモ. これで正しいのかどうかわからない. 多分, どこか間違ってる気がする. 参考 Redmineのインストール | Redmine.JP RedmineInstallOSXServer - Redmine 磁力式駆動: プロジェクト管理ツールRedmineをSQLite3で利用する。 Redmine を rbenv + ruby-build + bundler + sqlite3 で導入 / 構築する - AtAsAtAmAtArA Redmine設定メモ -
補助プログラム 前回 OpenGL 3.2 の Core Profile を使うように設定してしまったので, 固定機能が使えません. そのため, シェーダプログラムを作成しなければ, 図形の描画を行うことができません. 加えて, プラットフォームによってはグラフィックスハードウェアが備えているすべての機能の API を用意していない場合があり (Windows に標準搭載されている OpenGL はバージョン 1.1 までの API しか対応していません), 足らない API を使うにはグラフィックスハードウェアのドライバが用意するエントリポイントを取り出してくる必要があります. これには GLEW という便利なライブラリがあるのですが, 私が GLFW を使い始めたときに, なぜか GLEW と GLFW の共存がうまくいかなかった (ライブラリのリンクに失敗した) ので, 自前で用意す
固定機能ハードウェアとプログラム可能ハードウェア 固定機能ハードウェアは処理内容をハードウェアで実装しているので, 同じ処理内容 (かつ, 同程度のハードウェア量・クロック) なら, 一般的にプログラム可能ハードウェアよりも高速です. しかし, ハードウェアで実装すると「できること」が決まってしまうので, 多様な処理に対応するために, ある程度汎用的に作っておかなければなりません. そのため, 処理内容によっては不要な手順が含まれてしまうことがあります. その点でプログラム可能ハードウェアは, 目的を達成するのに最適な手順が選択できるため, 同じ目的に対して固定機能ハードウェアより高速な処理が行える可能性があります. 陰影付けのおさらい 授業でやってる内容なので (まだの人もいるけど), どのあたりからおさらいを始めればいいのか悩ましいところですが, ざっと解説します. 適当に書いているの
GLUT の現状 OpenGL は「プラットフォームに依存しないグラフィックス API」ですが, これと稼働するプラットフォームとのインタフェースの部分はやはりプラットフォームごとに異なっていて, そのあたりの実装はそれなりにめんどくさいものです. そのために, そこをうまくラップするツールキットがいくつも提案されています. 中でも GLUT は, OpenGL を作ったところの人が作った, 使いやすいツールキットです. また GLUT はマルチプラットフォームに対応しているため, これを使ったソースプログラムは Unix / Linux, Windows, Mac OS X の間で共通にすることができます. GLUT は OpenGL の初期に作られたものですが, OpenGL の学習や OpenGL を使った簡単なプログラムの作成を手軽に始めることができるため, 今でも有用なツールキッ
Lion Mac OS X Lion では OpenGL のバージョン 3.2 が使えるものの,それは lagacy な API を削除した core profile なんですね.そのため後方互換性が必要な場合は,バージョン 3.2 の compatibility profile ではなく,「legacy なバージョン」を使うようにピクセルフォーマット属性を設定するんですね.だから legacy な API を使っている GLUT は,この「legacy なバージョン」すなわちバージョン 2.1 以前を使うようにピクセルフォーマット属性を設定していて,バージョン 3.2 に切り替える方法は(official には)提供されていないんですね.うーん,さてどうしよう.誰か core profile で動く GLUT を作らんかな. Transform Feedback はバーテックスシェーダや
877.fm 実は今日知ったんですけど, 和歌山市内にある "バナナ FM" (877.fm, エフエム和歌山) は, 株式会社ではなく NPO 法人なんですね. この放送局は空中線電力が 20W しかなく, サービスエリアが和歌山市とその周辺くらいしかありません. 番組内容も独自のもので, メジャーなタレントを呼ぶとかそういうこともなく, 時には高校のブラスバンドの演奏を流したりして, それはもう地味というか, 地元に密着した内容になってます. どこかのテンションがやたら高い放送局と違って DJ も日常会話のように自然にしゃべっていて, 気負いがありません. いいです. 日々の生活に実にフィットします. CM にも「近所のあの店が CM してる!」という親しみやすさがあります. 私はこの放送局と縁もゆかりもありませんが, 永く続いて欲しいと思ってるので, 皆さん応援してあげてください.
もうすぐ年末だ どうしよう. もうすぐ年末だ. いろいろやばい. やばいやばいやばい. 危機感は無いわけではないけどマイペースをどうしても崩せなくて, いろんなことを先送りしています. そういえば, ようやく寒くなってきて, 年末っぽい雰囲気が日に日に増しています. と思ったらいきなり風邪を引いてしまい, 今日はなかなかお聞き苦しい講義になってしまいました. Winged Edge Data Structure の説明をしていて「右ウィング, 左ウィング」とか言った後「北ウィング, 南ウィングじゃないですよ, 中森明菜は知らないと思いますけど」みたいなことを口走ってしまいましたが, やっぱり通じませんでした. CG の研究テーマ募集 学生時代は画像処理 (CV) や人工知能 (AI) なんかの研究室に所属していたんですけど, CV や AI というのはやっぱり難しくて, 結局自分は CG
間に合わん 授業期間中だろうが夏休みだろうが, 延々と講義資料ばかり作っている気がします. それなのに, Web 上のものでも "find public_html -type f | wc -l" で 7240, "find public_html -type f -name '*.html' | wc -l" で 1993, "du -s -k public_html" で 635184 くらいしかありません (1万ファイル / 1GB は突破していると思ったんだけどな). これには, この blog や研究室のホームページなんかは含んでませんけど, 量の割に全然管理できてません. もう何がなんだかわかりません. 何をするにも時間がかかりすぎます. 頂点の順序 図のような立方体を線で描くことを考えます. この図形は 8 個の頂点と 12 本の稜線で構成されています. GL_LINE_ST
暑い なんてもんやないですね.日差しに重みすら感じます.眩しいです.非リアにはつらいものがあります.加齢とともに直射日光に当たると日焼けする前に湿疹ができてしまうようになりました.もう闇の中で生きるしかないのかもしれません.子供と一緒に自転車で片男波海水浴場まで通っていた頃が懐かしいです.ところで,数日前まで節電対応で空調なしで頑張ってたんですけど,PC がついに音を上げてクラッシュするようになってしまったので(と言い訳しながら)空調かけてます.みなさまごめんなさい.来週はお盆の一斉休業です.その間に少しでも時間を稼いでおかないと,色々詰みそうです.まー,私なんぞ他の先生に比べりゃあ暇なもんなんですけど orz バンクーバーに行きたかったぜい. pthread 一人の学生さんが OpenCV と OpenGL を組み合わせて何かしようと考えているらしいのですが,どうも動きがぎこちなく見えま
卒研発表だー もう大変なことになってますけど, とにかくなんとかなりそうです. よかったよかった. まだ終わってないけど. 発表練習だけ聞いてると, まともな研究をしているように聞こえる! いや, ちゃんとまともな研究をしてるんだけどね, みんな. 卒業研究/卒業論文無用論 (博士前期ですらいらんという話もでてるけど), 私は卒業研究やってる学生さんを見るのが好きだなぁ. 頭かきむしりながら, 答えが用意されていない問題に取り組むあたり. 自分で問題を見つけて, 自分なりの解決法を考えるっていう楽しみ (苦しみ?) は, どこかに用意されている答えを見つけることでは得られんよね. ビルボード処理 というわけで, 小ネタ. 今日, 学生さんがつぶやいてたことに対する, 私のボヤキに補足します. たとえば, 次のようにして図形が表示されていたとします. static void display(
大震災 東北地方太平洋沖地震で被災された皆様, ならびにご家族・関係者の皆様, そしてこれに心を痛めておられるすべての皆様に, 心よりお見舞い申し上げます. どうしてこんな目に遭わなきゃならないんだという怒りの持って行き場も無く, 「お見舞い」という言葉すらも空虚に思えて, ただただ空を仰ぎ見るばかりです. 今日, うちの大学では「わかやま自主研究フェスティバル」というイベントがあったのですが, その開会式の冒頭でも黙祷の時間がとられました. 私はどうしても下を向けず, 空に登られた方々を見送る気持ちで顔を上げたまま黙祷していました. 「いつかくるとは思っていたが今日くるとは思わなかった」という警句がありますが, それにしてもあまりにも過酷です. この負債は他人任せにせず, 我々日本に住む者皆が負うという覚悟をしたいと思います. 点 (GL_POINTS) にテクスチャを貼る Point
固定機能の廃止 レンダリングパイプラインにおいて固定機能ハードウェアで実装されていた機能が廃止された場合, それらをシェーダで実装しなければ図形を描くことができません. このため, OpenGL を使ってプログラムを書く際には, CG の基礎的な理論に関する知識が必須になりました. CG の授業をしていて, 内心で「でもこれはハードウェアに組み込まれてるんだよな」とか思ったりしてましたけど, 無駄ではなかったんだと胸をなでおろしていたりします. シェーダプログラムとラスタライザ アプリケーションプログラムは, 描画する基本図形を指定した後, 頂点情報を GPU に送ります. 頂点情報はバーテックスシェーダの attribute 変数に格納され, これを用いて座標変換や陰影計算などを行います. 頂点の座標値はクリッピング座標系に変換して, バーテックスシェーダの出力変数 gl_Positio
本題のシェーダプログラミングになかなか戻れませんが,あと少し付き合ってください. 線画に引き続いて, 今度は三角形を並べて球を描いてみたいと思います. ここでは下図の左のように三角形を矩形状に並べて, それを丸めるようにして球を作ることにします. こうすると北極点や南極点, および, この矩形の両端で複数の頂点が重なってしまいますが, 実はこうしないと後で都合の悪いことになります. 三角形をこのように並べるので, 頂点数は (slices + 1) × (stacks +1), 三角形数は slices × stacks × 2 になります. 下図左の例では slices = 3, stacks = 2 であり, 頂点数は 12, 三角形数は 12 となります. この形状をもとに, 下図右のようなデータを作成します. それでは前回と同様に, この形状のデータを頂点バッファオブジェクトに設定
遅延レンダリング 学生さんに向けたフレームバッファオブジェクトの説明の続きです. どうも口で説明するより文章に書いた方が理解してもらえそうな気がするので, 目を "ひんむいて" よく読んでね. 君がやろうとしているように, レンダリング結果の画像を事後処理でコネコネしたければ, レンダリング結果を画面に出力せずに一旦どっかにとっておいて, それを使ってもう一度レンダリングする必要があります. そういうテクニックを遅延レンダリング (deferred rendering) といいます. んで, レンダリング結果を CPU を介さずに GPU 側にとっておく機能がフレームバッファオブジェクトです. しかし通常のレンダリングでは, フレームバッファのカラーバッファにカラーデータ, すなわちレンダリングされた画像だけが出力されます. これを事後処理でコネコネしようと思っても, これだけでは情報が不
バージョンアップ 自宅の iMac の OS を Snow Leopard にしました.OS をバージョンアップをすると定常状態に落ち着くまでしばらくかかるんですけど, 今回は更新前と全然変わりなく安定して動いています. いやぁ起動も速いし Firefox もサクサク動くし, Canvas X も Rosetta で一応動きます (日本語の入力ができないけど). あと, このブログを動かしていたマシン (Celeron 1.4GHz, 箱は10年物!) も, 元 M 君マシン (Athlon XP 3200+) に置き換えました. だいぶ軽くなりました. こいつの OS も VineLinux の 5.0 に更新したいんですが, なかなか取りかかれません. tDiary も 2.2.2 に更新したいんですが, なんだかエラーが出るのでちょっとペンディングしています. クリッピング空間 レン
シェーダで小細工 シェーダが使えるようになって,本当にいろんなことができるようになりました.バーテックスシェーダーにスキニングや変形アニメーションを実装するのも楽しいですし,フラグメントシェーダで色を重ねたりテクスチャのサンプリングに凝ったりするのも楽しくて仕方ありません.でも,やってみたいことはいろいろあるんですけど,自分にとってはどうも「遊び」の域を出ることができず,仕事に結び付けられずにいます.アイデア出てこい,どんどこどん(←わかるかなぁ!!,わっかんねぇだろうなぁ!!). あ,これは松鶴家千とせという芸人さんのギャグです,って説明しないと通じないかも.しかし,この人の Web ページがあるのも驚いたんですけど,この人のブログを見て更に驚きました.「DEC さんの Alpha が使用されていました」ってセリフが,どうしてもこの芸人さんと結び付きません. 前にやったトゥーンシェーディ
フレームバッファオブジェクト (Framebuffer Object, FBO) フレームバッファオブジェクトの使い方については, キューブマッピングで使ってみたり, シャドウマッピングで使ってみたり, デプスバッファを表示させてみたりしてきていますが, どうも使い方がよくわからんとおっしゃる学生さんのために, もういっぺん書いときます. じーっくりと読んでね. ティーポットを描くプログラム とりあえず, いつものようにティーポットを描くプログラムを作ります. ただし, モデルビュー変換行列や透視変換行列, ビューポートなどは, シーンの描画時にいちいち設定するようにします. このため glutReshapeFunc() のコールバック関数 resize() では, 開いたウィンドウのサイズの保存だけを行います. ティーポットを描くプログラム ... static int width, h
次のページ
このページを最初にブックマークしてみませんか?
『marina.sys.wakayama-u.ac.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く