mieki256's diary



2013/05/01(水) [n年前の日記]

#1 [prog] DXRubyその他の動作速度を確認中

後でまとめるつもり。

#2 [anime] ロボットアニメが3本も見れて嬉しい

今期はロボットアニメが3本も ―― ガルガンティア、ヴァルブレイブ、マジェスティックプリンスが見れて、嬉しいなと思っていたり。

ガルガンティアは、未来少年コナンの世界にガンダム乱入!どうなっちゃうの!? みたいな設定でワクワクします。いや、考えてみたら、∀ガンダムもそういうアレだったか…。双方の科学技術レベルも文化も全く違うので、会話が時々噛み合わない、その様子を見ているだけで楽しいです。こういう状況ならどんなやり取りになるのか、生真面目に、しかし奇妙さが生まれるように、シミュレーションしていくその作りに、どこかSFマインドを感じたり。藤子F先生のSF作品でも読んでるかのような感覚が。

ヴァルブレイブは、巨大ロボットに乗ると ヴァンパイア&転校生になってしまう設定に感心を。その発想はなかったわ…。メカメカしいモノにゴシックだかセンチメンタルだかそのへんを融合、なのかな。まあ、先駆者としてFSS等がありそうな気もしますが。話の導入部分は、既存のサンライズロボットアニメを踏襲してるようにも見えて、そこもなんだか興味深いなと。最後までちゃんと作ってもらえそうなガンダムSEEDシリーズリメイク版、みたいな? まあ、途中からどんどん違う方向に行くのでしょうけど。

マジェスティックプリンスは、キャラの明るいやり取りとは裏腹に、ハードな世界設定がありそうなあたり、今後が楽しみ。ただ、脚本と演出と作画のノリが、噛み合ってない感じが…。脚本家の意図を演出陣が読み取れてないカットがチラホラあるような気もしたのだけど…。いや、そのように勘違いさせる作戦なのかもしれないか…。

何にせよ、3本とも先が全然読めないので、これからの展開が楽しみなのでした。とにかく、ロボットアニメというだけでかなり嬉しい。画面を拝みながら視聴しておりますです。

#3 [anime][neta] 巨大ロボットに乗ると○○になる話

ヴァルブレイブを見ていたら、なんとなく「ぼくらの。」を思い出したりもして。「ぼくらの。」の原作者さんは、「たいした才能もない少年少女が巨大ロボットに乗っていきなりヒーローになれるんだから、その代償として○○○ぐらいは貰わないと」的思考で設定を考えたらしいですが。

そういった、「巨大ロボットに乗る代わりに主人公は何を失うのか?」というお題をつけて設定を考えていくと、色々バリエーションが作れそうだなと、件の作品を見ていて気付かされたり。

巨大ロボットに乗ると、オカマになるとか。幼女になるとか。犬になるとか。…最後のは押井監督に作ってもらいたい。嘘。

話はずれるけど、むしろ最初から犬が巨大ロボットを動かすアニメがあってもいいのかも。豚が、戦車や飛行機を操縦する作品があったりするのだし。犬がシャーロックホームズやってるアニメもあったっけ。まあ、猫でもネズミでもいいだろうけど。黒いネズミは生まれた時から船を操縦していたし。ならば巨大ロボットも。

ネット上では猫画像の人気があるとどこかで聞いた記憶が。ここは一つブームに乗って、猫が巨大ロボットを動かすアニメを。てのは無理あるか。でもないか。ニャムロやニャアがニャンダムやニャクを動かしたり。「認めたくニャいものだニャ」とかそういう。CMに入る直前のアイキャッチは「ニャア!」で。…ガンダム漫画で既にありそうですかね。

「マジンガーZを手中に収めたものは神にも悪魔にもなれる」てな感じの台詞があったような気がするけど。神にも悪魔にもなれるなら、モンスターだの、イケメンだの、美少女だの、そういうのになってみてもいいよね。まあ、「神にも悪魔にも」は言葉のあやでホントにソレになるわけじゃないよ? と兜博士からツッコまれそうですが。

む。変身する設定ばかりを考えてるな…。何を失うか、で考えてみよう…。

戦うたびに記憶を失うのは…ロボットアニメじゃないけど、 テッカマンブレードがあったか…。

どろろは戦うたびに体のパーツを取り戻していったけど。逆に、ロボットに乗るたびに何か無くしていく設定は…。なんかソレ、放映できなくなりそうで怖いな。

時間を失うとか…。あっ! それをやったのが トップをねらえだったのか! 今頃ようやく気付きました。そういうことか…。「巨大ロボットに乗ると○○○を失う」という要素を、しっかり押さえてたアニメなんだな…。アレは、時間と一緒に色んなものを、主人公から奪っていた気がする。

やはり、無くなったら困るものを失ったほうが面白くなるんだろうか。当人が要らないと思ってるものが無くなっていく設定ではなあ…。

いや、それも使えなくもないか。要らないと思ってたけど話の最後のあたりで本当は必要なものだったと気づいて後悔したり。逆に、無くなったら困ると思い込んでたけど実際そうなってみたらむしろ心が自由になった・何かから解放されて次のステージに、とか。後者は、流血鬼とか幼年期の終りみたいなソレで。

無くなったら困るもの。あるいは、そんなの要らないと思ってるもの。それは何だろう…? 何が思い浮かぶかな…?

#4 [anime][neta] 巨大ロボットに誰を埋め込むのかという話

ガルガンティアを見ていたら、主人公の少年に、 兄弟だか幼馴染だかが居たのかもしれない、てなカットがチラリと出てきたのですが。そのキャラが、主人公が乗ってる巨大ロボットの頭脳パーツとして組み込まれていたら、なんだかアレだなあ。てな脈絡のない妄想を。悲しい別れ方をしたはずだったけど、実は主人公の隣にずっと居たんですよ、二人で一緒に戦ってきたんですよ、みたいな。まあ、その場合、思い出せるとしてもそれは主人公のほうだけで、ロボットに組み込まれたほうは、もう記憶が蘇ることもない、てなアレになるのかな。

考えてみたら、 主人公の家族が巨大ロボットに組み込まれている設定は、EVAがやってたか…。まあ、アレは、本当に組み込まれている設定なのか、自分には結局わからなかったのですけど。

ということで、巨大ロボットの中に、主人公にとって親しい人を組み込んでしまう設定って、なんだかエグくて面白いのかもなと。

少女パイロットが乗り込む巨大ロボットには、昔お互いなんだかイイ感じになった少年の脳が組み込まれていた、とか。

昔飼ってたペットの脳が組み込まれているとか。キャシャーンのフレンダーっぽい。巨大ロボットなのに、電信柱を見ると片足を上げて…。ギャグアニメになってしまうか。

歴戦の勇士だった御先祖様達がごっそり巨大ロボットの中で生き続けているとか。戦闘中に色々注文つけてきてウルサイ予感。「ワシが戦い方を教えてやる!」「爺ちゃんは黙ってて!」「そうだよ父さん。好きにやらせなよ」「そんなことより最近お供え物が少ないぞ!」とかそういう。

逆に、敵を埋め込んでしまったりして。例えば宇宙怪獣を埋め込むのは…それは リヴァイアスか。ロボットではなくて、宇宙船でしたっけ? よく覚えてないけど。

宇宙船繋がりでアルカディア号を思い出したり。ロボット以外のモノに組み込んでもいいよな…。

ライダーベルトに本郷猛の脳が組み込まれているとか。役に立つのかな、ソレ。喋ってくれたら役に立つかもしれないけど。

腕時計の中に恋人が、ってそれはパルスマンだったか…。

なんかこのへん、前にも似たような妄想をしてたような気がしてきたり。

2013/05/02(木) [n年前の日記]

#1 [prog] DXRubyその他の動作速度を確認した結果をメモ

以下の処理をするスクリプト。 さらに、それをいくつかの言語+ライブラリで書いた。 使ってるRubyとPythonのバージョンは以下の通り。 どちらもWindows版。

スクリーンショットはこんな感じ。

DXRuby版のSS

一応スクリプトも、zipでまとめて置いておくです。exe化してあるから、Ruby や Python が入ってなくても動くです。

_fullscrtest_20130502.zip (21MB)

それを3台のPCで動作確認。
種類CPUコア数クロックVideoMemoryOS備考
メインPCCore i5 250043.3GHzGeForce 9800GTGE8GBWindows7 x64自作PC
録画用PCAthlon II X4 605e42.3GHzRadeon HD 4200 (AMD785Gオンボード)8GBWindows7 x64自作PC
ネットブック機Atom N27011.6GHzIntel GMA950 (オンボード)2GBWindows XP Home SP3Lenovo IdeaPad S10-2

以下のような結果に。
ライブラリ描画内容表示種類ネットブック機録画用PCメインPC
HSP全てウインドウ14 FPS60 FPS60 FPS
フルスクリーン54 FPS60 FPS60 FPS
StarRuby全てウインドウ19 FPS60 FPS60 FPS
フルスクリーン19 FPS60 FPS60 FPS
BGのみウインドウ41 FPS60 FPS60 FPS
フルスクリーン41 FPS60 FPS60 FPS
DXRuby全てウインドウ11 FPS60 FPS60 FPS
フルスクリーン13 FPS60 FPS60 FPS
BGのみウインドウ20 FPS60 FPS60 FPS
フルスクリーン30 FPS60 FPS60 FPS
PyGame全てウインドウ11 FPS20 FPS60 FPS
フルスクリーン11 FPS20 FPS60 FPS
BGのみウインドウ25 FPS60 FPS60 FPS
フルスクリーン25 FPS60 FPS60 FPS
Ruby/SDL全てウインドウ1 FPS2 FPS60 FPS
フルスクリーン1 FPS2 FPS60 FPS
BGのみウインドウ2 FPS60 FPS60 FPS
フルスクリーン2 FPS60 FPS60 FPS

ライブラリフルスクリーン表示oggループ再生言語仕様処理速度
HSP× *2速い *4
StarRuby× *3速い
DXRuby× *1速い
PyGame遅い
Ruby/SDL非常に遅い

感想というか、思ったことをメモ。 まあ、スクリプトの書き方が間違ってる可能性もあるので…。もし、「そんな結果になるはずがない」と思った方は、スクリプトソースの添削をしていただけると助かるです。

2013/05/14追記。 :

DXRuby でフルスクリーン表示が上手くいかない問題ですが、DXRuby1.5開発版を使ったら改善されたことを追記しておきます。

ただ、同梱の、Atame/Ruby 0.0.2 に不具合があるようで…。一つ前の Ayame/Ruby 0.0.1 と組み合わせて使ったほうがいいのかもしれず。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#2 [prog] 今時のPCゲームのウインドウサイズってどのくらいが適切なんだろうか

仮にフルスクリーン表示ができなくても、デスクトップ解像度を800x600等にすれば、640x480のウインドウ表示も大きく見えるだろうし…。何が何でもフルスクリーン表示に対応しなきゃ、というわけでもないのかもと思えてきたり。

しかしそもそも、640x480、800x600といった4:3のサイズで作るのは適切なのだろうか…。ワイド液晶ディスプレイを使っている事例が増えてきたのだから、16:9等のサイズのほうが ―― 640x360、854x480、1280x720、1366x768等のほうが良かったりしないか。でも、4:3のディスプレイを使っている環境では、メリットがないだろうし…。

メインPC上で、フルスクリーンにできそうな16:9の画面解像度を調べてみたら、1280x720、1366x768 はあったけど、640x360、854x480は一覧に無かった…。

Windows8 は、1024x768 が最低解像度なんでしたっけ? そこにも対応しようとすると…640x480というウインドウサイズは適切ではないのだろうか…? Windows8上で、640x480の画面をフルスクリーン表示しようとすると、一体どうなるんだろう…。

ネットブックのように、1024x600の液晶を使っているPCだって存在するだろうし。となると、縦600ドットより大きいサイズは無理、なのかな。

どのウインドウサイズで作っておくのが妥当なのだろう? わからんなあ…。

_画面解像度 - Wikipedia を眺めつつ、悩んでしまったり。

#3 [prog] HSPの感想をメモ

あらかじめ、意見には個人差があります、と言っておきますです。

ほんのちょっとだけHSPも勉強したわけだけど。サンプルスクリプトをコピペして修正した程度の作業だったのに、なんだか…何かがツライ。言語仕様がしっくりこない。

なんでツライのか考えてみたけど、このへんかなあ…。 プログラミングをちょっとかじった人なら、「ああ、それは筋が悪いプログラミング言語だね」と言いそうな。

ところが、よくよく調べてみると、どうもその印象は勘違いだったようで。 そうなると、「アレ? 結構フツーのプログラミング言語じゃね?」と思えてきたわけで。

どうして前述のような勘違い・思い込みを持ってしまったのかと言えば、おそらくサンプルスクリプト群のほとんどが、そういう書き方をしているから、なのだろうなと思えてきたり。

おそらくサンプルスクリプトは、古い言語仕様でも動くように書いてあるのかもしれない。あるいは、古い言語仕様で書いてあったソレを少し手直しして、HSPに同梱しているのかなと。

ただ、初心者がHSPを勉強する際に、頼りにするのはサンプルスクリプト群…。その、お手本ともいうべきサンプルスクリプト群が、そういう書き方を続けていると、他の言語を全く知らない人は、「こういうことをしたかったら、こういう風に書くものなんだな」「これがプログラミングなんだな」と思い込んで、それが後々面倒なことに繋がらないか…と少し不安になったりもして。

例えばですが。Perl の世界では、「今時のPerlならこういう風に書くのがモダンだぜ」みたいな話があったりしたのだけど。おそらくHSPも、モダンなHSPソースの書き方がありそうだなと。

その、モダンな書き方に基づいた、初心者向けのチュートリアル記事なり解説記事が存在していて、それをお手本にしながら勉強するのであれば、HSPの印象も結構変わるのかもしれないなあ、と思ったりしましたよ、とメモ。

まあ、「動けばいいじゃん」で済ませるのもアリなのだろうけど。

#4 [prog] gotoについて思うところをつらつらと

HSPを勉強してるうちに、「gotoって…どうなんだろうなあ…」と思えてきたので、そのあたりをなんとなくメモ。ま、何十年も前に、gotoの是非については熱い議論があったらしいので、お前いまさら何言ってんだって感じの話ですが。

以下は自分の勝手な想像その他諸々なので事実とは大きく異なる可能性が高いです。

どんな高級言語で書かれたソースも、コンピュータ上で動くときにはバイナリになる・機械語レベルになるわけで。そして機械語レベルでは、ジャンプ命令 ≒ goto だらけになるわけですよ。そのことを考えれば、「gotoさえ知っていれば全てのプログラムは書けるんだ」という考えは正しいよなと。実際、全てのプログラムは、最終的にはそういう形で動いているのだし。

でも、それぞれの goto には、目的があって。 goto だらけのソースをプログラマーが読んで理解するときは、「はて、この goto は、どんな目的で使われているんだ?」と、goto が出てくるたびに推測しないといけない。…goto が出てくるたびに、毎回必ず、ですよ。これはシンドイ。面倒臭い。当然、勘違いも頻発する。バグの温床になる。

そこで先輩達は思いついた。「この goto はこういう目的で使っているんだよ、とソースにあらかじめ書いておくことにしようぜ」と。 そのうち気付くわけです。「アレ? goto なんか使わなくてもプログラム書けたぞ?」「gotoが残ってるということは、そのプログラミング言語・ソースの書き方は、何か間違ってねえか?」みたいな。

ところが、今度は色んな命令を覚えないといけなくなった。今までは、goto だけ覚えておけばどうとでもなったのに…。

そこで誰かが言い出すのです。「プログラミング初心者に、こんなにたくさん命令を覚えさせるのはよくない。絶対混乱するよ…。だから、goto だけ教えとこう!」

ということで。このあたり2つの主張が成立しそうだなと。 どっちもアリといえばアリですが。まあ、何十年も前から、後者の考え方が主流のような気がします。

後者の考え方がないと、高級言語なんてものは、生まれてこなかったであろう気もしてきたり。

PythonとRubyにもそういうノリを感じたり。 :

Python は、「gotoだけ覚えてればいいんだよ!」みたいなノリを感じますし、Ruby は、「何をやろうとしているか明確にしないとダメだよ!」みたいなノリを感じますな…。

例えば、「n回ループさせる」てな処理を書きたいとき。

Python なら、たぶんこうなるのかな。
for i in range(5):
     print i

Ruby なら、こうでしょうか?
5.times do |i|
     puts i
end

Python は、range() を使って一旦配列 *1 を作って、0から4まで数値を入れて、その配列個数分取り出しながらループをしろ、てなことを指示するわけで。…プログラマーは、配列を作りたいわけじゃないのですがね。n回ループさせたいだけなのだけど、なんで配列を作らなきゃいかんのか…。しかし、Python は、「命令の種類はシンプルに」「色んな書き方ができたらダメ」という信条で作ってる言語だから、「この方法でループ処理は書けるんだからコレ使え」「コレさえ覚えとけば、配列に対して処理をしたいときも同じように書けるだろ? 何にでも使えて便利じゃねえか」で済ませてる。それは、「goto使えば全部書けるんだから、gotoだけ使え」てな思考と結構近い気がします。

Ruby は逆に、n回ループさせたいと思ってるなら、一目でそれが分かる書き方じゃないとダメだろう、という信条があるんじゃないかと。だから、times というメソッドが登場するのかなあ、と。その代わり、どんなループ処理をさせたいかによって、書き方やメソッドがどんどん変わってくる。覚えなきゃいけないことが増えてくる。…まあ、「for i in 0..4 do puts i end」「(0..4).each do |i| puts i end」みたいな書き方もできるから、この例はあまり適切ではないんでしょうけど。

Ruby を覚えた人が、他の言語を触った時になんかしっくりこないのは、そのへんが関係してるのかな…と勝手に想像してみたり。プログラマーがその時何をしたいと思っていたのか、その思考のログがソースに残りやすいのが Ruby、なのかもしれないと。他の言語は、「このソースを書いた時の俺は、こう書くことで、一体何をしようとしていたのか…?」みたいな推測作業が細かいところでちょこちょこ要求されて、それが微妙に苦痛なのかなあ、と。

まあ、自分、プログラミング言語は全然詳しくないので、実際どうなのかは分かんないですけど。

色んな言語を触ってる人なら、もっと適切な事例を出して、各思想の違いをしっかり解説できると思うので、「お前が言ってることは違うよ! 全然違うよ!」と思ったら、自身のblog等で解説してくれるとありがたいです。

*1: 配列じゃなくてリストと呼ぶべき?

2013/05/03(金) [n年前の日記]

#1 [comic] 山賊ダイアリー(岡本健太郎著)を読んだ

妹が以下略。猟師を趣味(?)にしているらしい方が描いた体験漫画、という扱いでいいのだろうか? よくわからないけど。

この作家さん…一体何者なんだろう…いや、猟師だろうけど…たぶん…。

淡々と書いてるあたりが、実に面白いなと。体験をそのまま漫画として描ける人は、強い武器を持ってるなと改めて感じたり。絵柄というか、画力に関してはアレなのだけど、内容が内容なので、絵がどうとかそんなのはどうでもいいなと。これこそ、漫画という表現手法が持ってる底力。

昔だったら、こういう内容は文章で書かれた書籍の形でしか出せなかっただろうけど。おそらくは漫画家を志望する人が増えたこともあって、漫画で表現される範囲がグングン広がっていることを再確認というか。こんなジャンルの内容も、漫画で描けるのかと。いや、矢口高雄先生あたりも、このジャンルに踏み込んでいた気もしますが。

#2 [prog] SDLについて少し調べたり

そもそもSDLって何を使って描画してるんだろうと疑問が湧いたので。

_SDL - Wikipedia に書いてあった。
SDLは画面の描画にOSによって異なるAPIを使う。WindowsではDirectDrawないしGDIが、LinuxではXlibが使用される。

SDL - Wikipedia より

ただし、環境変数「SDL_VIDEODRIVER」を変更すれば、プログラムを書き換えることなく別のAPIを使って表示することも可能になっている。

SDL - Wikipedia より


_SDL_envvars によると、Windows の場合は、windib か dircetx が指定できるらしい…。

_Ruby/SDL Reference Manual には、Ruby/SDL利用時は SDL.putenv("SDL_VIDEODRIVER=windib") てな感じで書け、とある。

_SDL on Windows でハードウェアアクセラレーションが効かない問題 - nojimaの日記
ある種のラップトップ、64 bit の Windows 及び Windows Vista における問題を防ぐため、"windib" をデフォルトのビデオドライバにした。DirectXドライバはまだ利用可能であり、環境変数 SDL_VIDEODRIVER を "directx" に設定することで選択できる。

SDL on Windows でハードウェアアクセラレーションが効かない問題 - nojimaの日記 より

なるほど…。

Ruby/SDL で指定する方法は分かったけど、 PyGame で指定する方法が分からず。

ただ、SDL_VIDEODRIVER=directx にしても、メインPC上では処理速度が変わってるようには見えなかった。自分の環境では関係ないのかな…。もっと非力な環境なら、何か変わってくるのだろうか…?

DirectXについても調べてたのだけど。 :

DirectXを使ってフルスクリーン表示する際に、ビデオチップ側に、何かしらの機能でも必要になるのかなと。仮にそうだとして、その機能が自分の使ってる環境にあるかどうかをを調べる方法はないのだろうか…と思って検索してたのだけど。

ゴメンナサイ。何が何だかさっぱりわかりませんでした。DirectXを使ってプログラムを作るのって、めちゃくちゃハードル高いのですね…。そのあたりを簡単にするためのライブラリ等を開発してる方々に対して、ますます強い感謝の念が。

#3 [prog] PyGame+OpenGLを少しだけ勉強中

SDLを使ったアレコレを眺めていると、「描画速度が欲しいならOpenGL使え」てな言をやたら見かけるわけで。実際使うと、どの程度違ってくるのか、なんだか気になるなと。

まだ、線とか点とか四角とかティーポットを描いて試してる段階。

2013/05/04() [n年前の日記]

#1 [nitijyou] 某所にお邪魔してきた

ホームページビルダー17(以下、HPBと記述)の操作方法その他について確認というか、後ろから操作方法を見守りというか。

もしかすると HPB 17 は、サイト情報を開くのが速くなってたりするのだろうか…? 親父さんが使ってる HPB 15 と比べると、桁違いに速い感じがしたのだけど…。まあ、扱ってるファイル数が違うだろうから、実際どうなのか分からないけど。ただ、相手の方の話では、HPB 11 を使ってた頃は、サイトを開くだけで1時間ぐらいかかってたと仰ってたわけで。するとやはり何かしら改善を…? いやいや、メモリが2倍になってるから、それが効いている可能性もありそうな。どうなんだろう…。

詳細は GRP でメモ。

#2 [prog] PyGame+OpenGLを勉強中

PyOpenGLってのをインストールすればPythonでもOpenGLを使える、と考えていいのかな?

PyOpenGL を使ってアニメーションやらキー入力やらをしてたけど。それを PyGame を使って行うように書き換えてみたり。いや、描画するところは、PyOpenGL を使ってると思うんだけど。

テクスチャを表示する方法がちょっとよくわからず。なんだか逆さに表示されているような…。uv座標系(st座標系?)は上下がどうなっているんだろう…。

テクスチャの透明部分が塗りつぶされてしまっているので、そこも透明にしたいのだけど、どうすれば…。

2013/05/05() [n年前の日記]

#1 [prog] PyGame+OpenGLを勉強中

テクスチャを透過させる方法が分からなかったけど、以下のページが参考になった。

_OpenGL - OpenGLのための備忘録
_テクスチャでアルファ(透過)を使用する - 強火で進め

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)
# glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)
# glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glEnable(GL_BLEND)
このへんが関係してたっぽい。

間違ってるかもしれないけど。 そんな感じですか? 手元の環境で指定を変えたら、そんな感じに見えたけど。

ということは、いかにもな2DゲームをOpenGLで、と考えると、GL_REPLACE か GL_MODULATE を使うことになるのかな…。

teapotだけ特殊なのだな。 :

teapotだけ、照明だのカリングだのの結果が妙な感じになってたのだけど。何でも、cube や sphere とは、面の向きが逆だそうで。

_球とティーポット - ゲームが作れるようになるまでがんばる日記

上記のページに遭遇するまで、ハマってました…。ありがたや。

テクスチャ画像も、teapot には反映されるけど、cube や sphere には反映されないらしい。cube に貼ろうとして、ハマってましたわ…。

_11 Geometric Object Rendering
ルーチンはライティングへの利用に対して正しく法線を生成しますが, (ティーポットを除き)テクスチャ座標は生成しません.

11 Geometric Object Rendering より

#2 [game][neta] 横スクロールシューティングゲームの魅力は背景なのかもしれない

結論。横スクロールシューティングゲームの魅力は、背景なのかもしれない。何故かというと、人間は鳥じゃないから。

以下、余談。

思考過程をメモ。 :

昨今のスクロールシューティングゲーム(以下、STGと記述)は、えてして縦スクロールなわけで。どうして縦スクロールばかりかと言えば、弾幕ゲーがほとんどになってしまったから。

どうしてそうなるのか、自分はよく分かってないのだけど。上から弾が降ってくると避けやすいけれど、横から弾がワラワラ飛んでくると避けにくい。誰かこのへん、分析してほしいのだけど。何にせよ、そういう理由で、弾幕ゲーはほとんどの場合、縦スクロールSTGとして作られる。STG市場は小さくなってしまったけれど、その中でも、主流は弾幕ゲー。弾幕ゲーになりづらい横スクロールSTGはますます激減。ということかなと。

だけど、縦スクロールSTGには、背景に関して魅力的な見た目をなかなか提供できない、という問題があるように思う。

何故かと言えば、人間は、地面を歩いてる生物だから。鳥のように、上空から真下を眺める生活なんかしてないので、風景に対する選択眼や想像力が鍛えられてない。上空から真下を見下ろした際、どんな風景がそこにあればハッときてグッとくるのか、そのあたり容易にイメージできない。イメージできないから、お客さんが「おおっ」と思うような背景を、なかなか滅多に作れない。「こういう場所を上から見たら、たしかにこう見えそうだよね」と思える背景は描けても、それ以上の何かを ―― お客さんが「うわ、この背景スゲエ」と思える何かしらを、そこに付加できない。

「しょっちゅう飛行機に乗ってあっちこっちに移動してる人間なら、そのあたりの想像ができるんじゃね?」という意見もありそうだけど。そう上手くはいかないだろうと思う。何故なら、飛行機の窓は、真下についてなくて、横にしかついてないので。飛行機に乗っていたとしても、基本的には、風景を横から眺めてばかり。それでは、そのあたりの鍛錬に繋がらない。

その点、横スクロールゲームは、背景に関しては「おおっ」と思う見た目を提供しやすいような気がする。

自分達は常日頃、風景を横から眺めてばかり。電車に乗っても、車に乗っても、部屋から外を覗いても、そこから見える風景は、横から眺めた風景。だから、横から眺めた風景に対しては、毎日ひたすら鍛錬を続け、選択眼を磨いてるので、どんな風景を見せれば「おおっ」と思ってもらえそうか勘所が分かっている。

ということで、見た目の風景・背景でお客さんを楽しませたいなら、横スクロールSTGを作るといいんじゃないかなと。それなら、凡人でも日頃から訓練してるので、まだなんとかなりそう。

そして、真下を眺めた時にグッとくる映像を思い浮かべることができる人は、これは極めて貴重な人材だろうなと。

宮崎駿氏や板野一郎氏は、空中をビュンビュン飛ぶ何かしらを思い描くことに関して、天才ともいえる能力を持っているけれど。縦スクロールSTGで魅力的な背景を打ち出せる人材は、ソレに近い能力を持っている気がする。だってフツーの人は、そんな想像力を ―― 鳥に近い視点で映像を思い浮かべる能力なんか欠片も持ってないし、日頃の生活の中で鍛えようもないわけで。

てなわけで、そういうのを作れる・描ける人を発見したら、大切に扱ったほうがいいよなと。その人、たぶん貴重品ですわ。極めて特殊な分野でのみ発揮できる稀有な能力を持った変人さんです。その能力を活かさない手はないので、イイ感じな配置・活躍場所を与えてやってほしいなと。

てなことを思ったので書き留めてみたけれど、なんかコレ、誰かが言ってたことの受け売りのような気がしてきた…。

上から見た風景というだけでも魅力になるような。 :

自分達は日常的に、上から見た風景をほとんど目にしていないのだから、縦スクロールゲーの見た目は、ただそれだけでも「おおっ」と思うんじゃないか、という論も成り立ちそうな?

もっとも、それが成り立つとしても、他の縦スクロールゲーと見た目で差別化ができてるのか、という問題が残りそう。そういう場面でも、「こういう風景を見せたら驚いてもらえる」と思い描ける人がチームに居れば、差別化というか、商品の魅力を増すことも容易になるのだろうなと。

まあ、「どこにでもありそうな縦スクロールゲーの見た目しか作れない人」より、「誰も見たことないような縦スクロールゲーの見た目を作れる人」は、そりゃ強いでしょうよ、という話に過ぎないんだろうけど。ただ、そういう能力を持っている人を、そういう場所に配置しないと、能力発揮できないよなと。

単に、平面と立体の違いなのかな。 :

「アルプスの少女ハイジ」のロケ話で、「宮さん(宮崎駿)は写真をほとんど撮らなかった」「なのに日本に戻ってきたら、あらゆる角度からアルプスの山々を描いてみせた」「どうやら彼は、ロケの最中、頭の中に形そのものを叩き込んできたらしい」とキャラデザの人が言及してた映像を見た記憶があるのだけど。そういえば、宮崎駿氏は建物の設定を作ったりするのが得意、という話もあったっけ。おそらく、立体で捉えるというか、空間把握能力が優れているのかもしれない。

その話を考えると、もしかするとこのへんの話は、単に空間把握能力があるか否かの違いなのかな、という気もしてきたり。

横から眺めた風景は、平面。上から眺めた風景は、立体。…単に、そういうこと?

だとしたら、日頃3DCGでモデリング等をやっている、立体に強いはずの人達が、縦スクロールSTGの背景の案出し作業に加わると、高さを利用した名案をポンポン出してくれる可能性があったり…するのだろうか?

#3 [anime][neta] ロボットを動かす謎の○○の話

数日前に、スマホを差したら巨大ロボットが動く、みたいな妄想設定をチラリとメモしたのだけど。

考えてみたら、それって、戦隊シリーズの巨大ロボットでかなりやってるよなと今頃気付いたり。操縦桿に変身アイテムを「ガチャッ」と差し込むと巨大ロボット始動、みたいな映像をやたらと見てきた気がする。さらに昨今は、戦隊の変身アイテムがケータイやスマホだったりするわけで。つまり、スマホを差し込むと巨大ロボット始動、なんて映像を、自分は当たり前のように見ていたんだなと。

あのアイテムって…巨大ロボットから見て、どういう意味合いのアイテムなんだろう? そんな感じ?

それぞれ、どういう意味合いのアイテムなのかを想像すると、そこから話が作れそうな気もしたり。

動力源だったら。 :

被災地域で、車やケータイのバッテリーが切れて困ってる市民を見かけた戦隊が、変身アイテムで充電してやる光景が。…電流や電圧が違うから、車やケータイが「ボンッ」となるかな。ならないとしても、あまりにもたくさんの市民が群がってきて、充電してやってたら巨大ロボットを動かすエネルギーが無くなって戦隊ピンチ、とか。

味方の等身大ロボットのエネルギーが敵に吸い取られて動けなくなっても、変身アイテムを繋いで充電してやることもできそう。でも、変身アイテムは武器にもなるから、戦隊は苦戦。「俺のことはかまわずに、○○を使って戦ってくれ!」「馬鹿言うな! そうしたらお前が動けなくなるだろ! 皆! ○○の充電率がせめて10%になるまで踏ん張るんだ!」「おう!」「…よし、10%になったぞ! 待たせたな!」「そうか! ここから逆転劇の始まりだぜ!」「スマン。今立ち上がったら9%になった。もう動けない」「…。皆! 15%になるまで頑張るぞ!」「お…おう!」

戦闘中に、変身アイテムに被弾して破損すると大変なことになりそう。何せ、巨大ロボットをまるっと動かせるほどの動力源。おそらく街一つあっさり吹き飛ぶ。実際に爆発事故が起きて、市民が戦隊に対して反対デモを。「戦隊はー、東京からー、出て行けー!」「福島のようなー、ド田舎にー、 引っ越せー!」。そう言われても、敵がどこに出現するのかさっぱり分からないし。困り果てる戦隊。

変身アイテムが壊れてしまって使えなくなっても、代わりの動力源を確保できれば、巨大ロボットは動かせるんだろうな…。「一時しのぎですが、電源ケーブルを差したままなら動かせます!」みたいな。たぶん実況twitterは、「EVAかよ!」の書き込みだらけに…。巨大ロボットが敵の周りをグルグル回って、電源ケーブルで敵を縛り上げるという作戦を。巨大ロボットは途中で電源ケーブルが外れちゃって動けなくなるけど、敵も縛り上げられて動けない。…コレ、どうやって決着つけるんだろう? フツーのクレーン車で巨大ロボットの武器だけ釣り上げて、一発ズドーンでトドメを、とか?

車のキーみたいなものだったら。 :

たぶん、戦隊以外の人物がその変身アイテムを入手しても、巨大ロボットを動かせてしまうのだろう…。

子供が変身アイテムを拾ってしまって、巨大ロボットを動かしてしまうとか。サンライズのロボットアニメ ―― そのへんのどこにでも居る少年が巨大ロボットを、みたいな展開に近づきそうな…。見ている幼児達が、「ボクもあのロボットを動かせるのか…!」とワクワクしたり、するのかな、どうかな。

敵が変身アイテムを入手して、巨大ロボットを動かしてしまうとか。まさしく、「○○を手にした者は、神にも悪魔にも」な展開。

ライダー555みたいに、変身アイテムの争奪戦が始まるかもしれない…。

ハリウッド映画なんかでは、車のキーが無くても配線をゴニョゴニョして車を奪う、みたいな展開があるけれど。戦隊の巨大ロボットでもそういうことができるのかもしれない。操縦桿の下の板を外して中の配線をゴニョゴニョして、「動いた! これで戦えるぞ!」と。

STAR WARSで、R2-D2が宇宙船の電源ケーブルを繋いだものの電撃で吹き飛ばされる、みたいな描写があったけど。戦隊隊員が一人、巨大ロボットの電源ケーブルを繋ぐ行為に専念するのもアリだろうか。ビリビリする痛みに耐えながら、「頼むぞお前等…早く決着つけてくれ…クウッ…」と。で、その回のラストで、彼はそういう性癖に目覚めてしまう。嘘です。

頭脳部分だったら。 :

なんかそういう戦隊があったような気もする。巨大ロボットが「ドルドルー」とか言ってた戦隊は、変身アイテムのコアが頭脳部分だったような…。頭脳というか、魂が入ってる、みたいな設定だったかな…。

頭脳部分なら、喋ったほうが面白いだろうな。喋るということは、巨大ロボットにもキャラクター性が付加されやすくなるわけで。

倒した敵の残骸を片づける際に、「なんで俺がこんなことを…」とブツブツ文句言ってサボってしまう巨大ロボットとか。敵の攻撃でくすぐられて笑い転げて戦いにならない巨大ロボットとか。

とにかく幼女が好きで好きでたまらない、愛読書がアレな巨大ロボットとか。イケメン声にメロメロになる巨大ロボットとか。…アキバレンジャーだな。

幼女と巨大ロボットが心の交流を、とか良さそうだなと思ったけど、 攻殻SACでやってたなと気付いた…。まあ、 タチコマみたいな会話をする巨大ロボットなら、なんだか面白くなりそうだなとも思えるけど。人間の文化が分からないから頓珍漢な会話になったり。…別に巨大ロボットでソレをやらなくても、という気もするけど。等身大ロボットや戦隊のマスコットキャラで、フツーにやってそうな。

戦隊シリーズは歴史が長いから。 :

歴史が長いから、なんだかどのネタも、何かしらの戦隊で既にやってそうな予感。

2013/05/06(月) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、13:10-16:10までの間、自宅サーバ止めてました。申し訳ないです。

朝、ラジオで、地域によっては激しい雷が、と言ってたのでビクビクしてました…。

#2 [prog] OpenGL勉強中

Python + PyGame + PyOpengl を使ってまだ色々試してたり。テクスチャは複数枚使えるようになった。ついでにポイントスプライトも表示して試したり等。

#3 [pc] 居間のノートPCの調子がよろしくない

お袋さんが会社にノートPCを持っていきたいとの要望を。居間のノートPC、Gateway M-2408j を起動してみたら、やたらと処理が遅い。その上、再起動したらいきなり電源が切れた。とうとう壊れたか…。電源周り・バッテリー管理のハードウェアに恐らくは設計ミスを抱えてるらしい機種だから、いつか来るとは思ってた…。

と思ったが、単にバッテリー切れらしい。どうやらバッテリー残量の表示と実態が合ってない模様。バッテリーが寿命を迎えた可能性も十分あり得るけど、この機種のバッテリーはメーカ(Acer)にすら在庫がないと以前修理した際に言われたので、もう入手できないだろうし。バッテリーを外して、“ACアダプタ駆動のノートPCっぽい形をした省電力かつ非力なデスクトップPC”として使うしかないのだろうなあ…。

2013/05/07(火) [n年前の日記]

#1 [prog] まだOpenGL勉強中

頂点配列を試してみたりとか。

GLFWなるものが気になる。 :

ジョイスティックも読み取れるらしい。Python や Ruby で使えるようにした何かは無いのかな…。ググってみたら一応あるみたいだけど、 _Ruby bindings for GLFW library は 2008年頃で開発が止まってるらしく。 _pyGLFW は2007年頃。 _GLFW は2013年にも更新されてるようだけど…。というか、インストール方法が分からん…。

ちょっと気になるのは、文字描画が出来ないらしい点。動作確認用のアレコレを表示するのはちと面倒臭そう…?

まあ、自分は初歩の初歩の初歩を勉強してる状態だろうから、PyOpenGLで充分なのではという気もするけれど。

#2 [pc] 居間のノートPCをメンテナンス

MyDefrag でデフラグを。

Gateway M-2408jの、バッテリー表示値がなんだか変な感じなので、BIOSから較正をしてみたり。 _2010/10/04の日記 を参考に、Advanced → Battery Auto Learning を enable にして Exit Saving Changes。

2013/05/08(水) [n年前の日記]

#1 [prog] ruby-opengl を Windows7上で使おうとしてハマる

環境は、Windows7 x64 + Ruby 1.9.3 p392 mingw32版。

症状。 :

本来、以下だけで使えるはずだけど。
gem install ruby-opengl
実際にやってみると問題が。

ruby-opengl と一緒に、opengl というモジュール?ライブラリ?も入るのだけど。
opengl (0.8.0 x86-mingw32)
ruby-opengl (0.61.0)

ruby-opengl を使ったスクリプトを実行すると、その opengl.rb が大量の warning を出す。
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS
(以下略)

opengl だけアンインストールすると…。
gem uninstall opengl
C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- glut (LoadError)
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from rubyopengltest1.rb:11:in `<main>'

試しに、ruby-opengl は入れず、opengl だけインストールすると…。
gem install opengl
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS
以下略
どうやら opengl をインストールするだけでも、ruby から opengl が使えるようにも見える。ただ、この大量の warning は困る。

原因。 :

Ruby/SDLが絡んでた。rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍してインストールする際、以下のファイルがコピーされるのだけど。ソレが、ruby-opengl 側の何かと競合するっぽい。
C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so


また、ruby-opengl のサイトから辿って入手できる ruby-opengl-0.60.1-x86-mswin32-ruby19.gem (「mswin32」がついてる点に注意)をインストールすると、色々不具合が起きるという話も見かけた。

原因が分かるまで、5時間ぐらいアレコレやりました…。トホホ。

解決方法。 :

  1. opengl、ruby-opengl をアンインストールしておく。(gem uninstall xxxx)
  2. Ruby/SDL がインストールした C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so を、リネームして使えないようにしておく。(opengl.so.sdl_ver とか。) これはこれで、もしかすると、Ruby/SDL使用時に問題が出るかもしれないけれど…。
  3. ruby-opengl-0.60.1-x86-mingw32-ruby19.gem を入手してインストール。「mswin32」じゃなくて、「mingw32」なことに注意。

ruby-opengl-0.60.1-x86-mingw32-ruby19.gem は、 _ruby-opengl gem for Windows の一番下のほうで、Trebor777さんが公開してくれている。 _opengl + ruby on Windows - 田舎でプログラミング で紹介されてました。助かりました。

ちなみに、Ruby/SDL の opengl.so をリネームするだけでも、gem install ruby-opengl するだけでスクリプトが動いてるように見える…。けど、不安なので mingw32 版の ruby-opengl を入れておこうかなと。

動作確認。 :

_RubyでOpenGLをやってみる - フリップフラップ で書かれてるスクリプトを使って動作確認してみたり。teapot、たしかに表示されました。

#2 [prog] PyGame + PyOpenGL をまだ勉強中

とりあえず、実験に使ったスクリプトを置いておこうかなと。

あちらこちらの解説ページで公開されてるソレをコピペしているだけなのでアップロードするのもなんだかアレなのだけど…。まあ、PyGame + PyOpenGL ならこんな風に書くらしい、てなサンプルがあること自体はマイナスにはならんのでは、などと言い訳をしつつ。

スクリーンショット。

平行投影
透視投影
ポイントスプライト有効


スクリプトソースは長いので、 _mieki256 @ ウィキ - PyGame+PyOpenGLのサンプルについて にアップロード。 _このページ で眺められます。

#3 [anime][neta] ジブリの鈴木Pを主人公にした漫画を誰か描かないかな

てなバカ妄想をもやもやと。当人が今まで困ってしまったであろうエピソードを列挙して漫画風に脚色していけば、面白い作品になるんじゃないかと…。例えば、ゲド戦記の原作者に、宮崎駿監督を連れて会いに行った時のソレとか。駿監督の発言に、「コイツ何を言い出すんだ!?」と驚くところはバックにベタフラ。てなことを妄想してたら、読んでみたいなーと悶々と。

ジブリのアニメーターさんに描かせてジブリから出したりしないかな。宮崎駿監督にも何ページか描いてもらったら尚ヨサゲ。東映動画時代に大塚康生さんを茶化して描いてた、あのノリで。 *1

高畑監督、押井監督、庵野監督、ゴロー監督、北久保監督の証言も元にして漫画化するのも面白そう。しかし北久保監督の担当部分だけが恨みがこもった雰囲気の笑えないエピソードに。…そもそもそんな話が来ても断りそうか。いや、ジブリ側が最初から話を持っていかないような気もする。でも、そんな風にブレーキかけ始めると、どんどん面白さが削られていく予感も。

ジブリのアニメーターさんが描くのは難しいか…。たぶん宮崎駿監督が、「そんなもん描く暇あったら原画描け!」と怒りそう。ジブリと親しい漫画家さんが居るなら、その人にお願いしたほうがいいのかもしれない。となると…。

柊あおい先生の描く鈴木P、みたいな絵を想像してしまって、何か違う感じがしてきたり。その鈴木Pはイケメン過ぎる気がする。鈴木Pはとても喜びそうだけど、関係者一同「誰だよコレ…」状態に。

ネタ集めでインタビューをするなら、そのインタビュー内容も本にできそうかも。…むしろそっちがメインの書籍で、漫画版はおまけ・お遊び・セレクションの扱いのほうがいいような気もしてきた。

笑える話ばかり集めたとしても、おそらくは読んだ後、映画を作る大変さが実感できる、ためになる本になりそうだなと。資金を出す人達をその気にさせる弁を捻り出せなければ、実制作というレールに映画を乗せることはできないだろうし。どの作品も企画が通るか通らないか、完成するかしないかという苦難を乗り越えてこの世に誕生してきたはずで、それらピンチだった場面を紹介することは、業界を目指す若者達にとっても得るものがあるだろうと。同じ苦境に立たされたとき、自分ならどんな弁・どんな策でその場を乗り切るのか、そんなシミュレーションをしながら読んでいくと、笑いがまぶしてありながらも、ある種の英雄譚にも見えてきそうな予感も。それは同時に、既存の映画作品に対してもこれまでとは違った印象を持たせて、映画鑑賞という行為をよりふくよかにしてくれることにも貢献できる、そんな可能性を秘めた本になるのだろうと。なんちゃって。

落語の登場人物にできないだろうか。 :

映画監督と映画Pのコンビが繰り広げる○○劇、てな落語のネタにできないかなと。そういう設定だと、現代落語という扱いになるのだろうか? 次々に話をでっち上げて苦境を脱したり苦境を呼び寄せてしまうPと、とにかく天邪鬼、かつ二言目には何でも「海に沈めるべき」と言い出す監督のコンビ。とか。

小説やドラマで言うところの、バディ物とやらの設定として使えないだろうか…。ちょっと間違えると「ラヂオの時間」になっちゃうかな…。

いっそジブリ作品の中に出せないか。おじさんコンビとしてそのまま描いちゃうとバレバレだから、ハウル並みの美少年二人組という設定にして。

天邪鬼少年は、気になる女子を目にしても素直に可愛いとは言えず、ブサイクだの何だのと本心と真逆なことを言ってしまって嫌われるのだろうな。そこらへんを突っついてからかう、あるいはキューピッド役を演じるもう一人の少年。しかし日頃からテキトーなことばかり口にする人物なのでさっぱり信用されず。みたいな展開を妄想。

モデルはあの御二方と分かった瞬間、気持ち悪い映画になりそうですかね。だけど、寅さんみたいに毎回失恋するなら全然アリのような気もしたり。

美少年二人組より、美少女二人組にしちゃうほうが、気持ち悪さ倍増で逆に面白くなるのかもしれない。監督をモデルにしたキャラのほうは、完全にツンデレ美少女になるだろうし。見ていてクラクラしてきそうな予感。

*1: 大塚康生さんの「作画汗まみれ」に掲載されてた記憶が。住宅造成地に入り込んで動けなくなった車を引っ張り出すエピソード、だったかな…。

#4 [anime][neta] 漫画やアニメの一シーンをリアルで体験できるアレコレが増えてる印象があってちょっと嬉しい

ガンダムとか、名探偵コナンとか、なんだかアレコレ増えてるような印象が。そのへんちょっと嬉しい気もする。

考えてみたら、ディズニーランドという大成功事例があるのだから、日本だってどんどんチャレンジしてみてもいいんだよな…。

日本国内でも成功事例はあるような気がしてきた。 スケールは小さいだろうけど、成功事例だよなと。

そういうアレコレが成立するのだから、手塚ランド、石ノ森ランド、鳥山ランド、サンライズランド、IGランド…色々作れそうではあるなと。

この漫画、このアニメの、このシーンをリアル体験してみたい、てなアイデアを募集したら、きっとたくさん集まりそうな予感も。まあ、技術的・経済的な問題も、たくさんありそうではあるけど。

サンライズランドを妄想。 :

何の変哲もない(?)公園のど真ん中に、トライダーG7の頭が。放送が始まるとドキドキハラハラ。早く逃げないと下に落ちて怪我をするのだろう…。

ザブングルやボトムズ(AT)にも乗れるのだろうか。ワクワクするなあ…。

イデオン発動編のソロシップ内の惨劇をリアル体験できる施設なんてどうだろう。どう考えてもお客さんにトラウマを植え付けてしまうか…。というか、どうしてそのシーンをあえてリアル体験なのかと絶対ツッコまれそう。

鳥山ランドを妄想。 :

お客さんが悟空になって何かしら体験するのは、その手の体験イベントとしては何かが違う気がする。なので、とりあえず、来場者は全員ヤムチャになって参加するという設定はどうか。右を見ても左を見てもヤムチャ。会場に集まった、たくさんのヤムチャ。そこに悟空の役が登場してイベントが進む…が、しかし、どんなシナリオなんだろう…。とりあえず悟空は、「おー、おめえ達、ヤムチャか? 久しぶりだなあ。しかし、しばらく見ない間に随分増えたな…。まあ、いっか」で済ますであろう気がする。ヤツはそういうキャラだ…。

悟空が登場すると思ってワクワクしていたら、ナメクジさんやクリリンが出てきて。会場のどこかで「チッ」と舌打ちの音が。ウ○コを棒の先につけて振り回すメガネ娘や、頭が尻割れしてる宇宙人が出てくる日に比べたら、全然アタリの日なんだけどな。

トトロの「風になってる!」を体験できる施設とか。 :

  • 球体の中にトトロの巨大人形(毛だらけ)がぶら下がってる。お客さんはその人形にしがみついて体験する。
  • イベントが始まると、久石譲先生作の、あのBGMが。テッテレ、テッテーレ。
  • 部屋の内部に、空中を飛んでいるかのような映像をプロジェクターで投影。
  • トトロの目の部分にも、こっそりプロジェクターが。猫バスのライト状態。
  • トトロ人形は上下左右前後に動く。しがみついてる客に疑似加速感を提供。
  • 部屋の壁には送風口がいくつもあって、映像に合わせて色んな方向から風を送り、飛行感を演出。トトロが回転(=周りの風景が回転)するときは、不思議な感覚を味わえるはず。
  • 足の先にはモータが。その先についてるコマが回転。気分を盛り上げる。
  • 腕力が弱いお客さんのために、トトロ人形の周囲には椅子がついている。椅子は、マックロクロスケを数珠繋ぎしたような装飾。
  • 子供がトトロの毛を時々むしり取っていくので、トトロの体はあちこちに十円禿げが。トトロにとって大変ストレスの高い職場であることが想像できる、などとデイリーポータルZの体験記事あたりでさらりと書かれそう。

個人的には、ナウシカのメーヴェ、ラピュタのフラップター、キキのデッキブラシを体験できる施設のほうが嬉しい気もするけど。

キキのデッキブラシはマズイか。上下に激しく動くたびに、「股が、股が裂ける!」「潰れる!○○潰れる!」と悲鳴を上げるお客さんが続出。地獄絵図だな…。ジブリ美術館以上に救急車がやってくる施設になりそう。

2013/05/09(木) [n年前の日記]

#1 [prog] PyOpenGLを使ったスクリプトをpy2exeでexe化しようとしてハマる

環境は、Windows7 x64 + Python 2.6.6。

pygameだけを使ったスクリプトなら、すんなりexe化できたのだけど。PyOpenGLも使ったスクリプトをexe化したら、実行時に win32 だの OpenGL.GL がimport できないとエラーが表示されてしまって。

解決方法が載ってそうなページを検索。

_PyOpenGL - py2exe.org
_HOWTO: freeze PyOpenGL programs with py2exe - Jef Mangelschots

英語なので、何を書いてあるのかよくわかりません…が、おそらく、 みたいなことが書いてあるのだと思う。自信ないけど。

_備忘録: windows7(32bit) pyOpenGLの実行ファイルをpy2exeで作成する に、解決策が全部記述されてました。ありがたや…。同じように作業したら、たしかにexe化できました。

しかし、dist/ フォルダの容量が50MBぐらいになってしまって、なんというか…。自分の場合、OpenGL フォルダだけコピーして、他のフォルダ・ファイルはコピーしなくても動いたけれど、それでも OpenGL フォルダが大き過ぎて…。プロパティを見たら 3,215ファイル、108フォルダ…。さすがに多過ぎ…。コレ、まとめる方法はないのかな…。

_PyOpenGL - py2exe.org には、「C:\python\Lib\ 以下からコピーしてきたファイルについては任意の .pyc と .pyo を残せる」と書いてあるようにも見えるので、試しに .py を削除してみたのだけど。.py を削除すると、その後しばらくして .py と対応していた .pyc が消滅しちゃう。何故? 何がそのへんを監視してるんだ? .pyc ファイルって、何なんだろう…。調べないと…。

できあがった dist/ 以下を別PCにコピーして実行してみたところ、以下のエラーが表示されて実行できず。
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutBitmap Character, check for bool(glutBitmapCharacter) before calling
ビットマップフォント用の何かがどうのこうのと言われてるっぽいけど…。もしかして、glut32.dll が無い?

メインPC上で which glut32.dll をしてみたら、"C:\Gtk+\bin\glut32.dll" が表示された。お前…そんなところにあった glut32.dll を使ってたのか…。ファイルの日付を確認したら、 _Nate Robins - OpenGL - GLUT for Win32 で公開されてる glut-3.7.6-bin.zip 内の glut32.dll と同じだった。

スクリプトが入ってるフォルダにも glut32.dll をコピー、かつ、setup.py 内で、dist/以下にも glut32.dll をコピーするように指定。そうしてできた .exe + 大量のファイル群を別PCに持っていったところ、今度は実行することができた。

一応スクリプトその他をメモ。 :

fullscreenopengl.py。pygame + PyOpenGLで、BG2枚 + 64x64ドット512枚を描画 + oggループ再生をするスクリプト。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

u"""
pygame + PyOpenGLでスプライトの表示テスト

"""

import pygame
from pygame.locals import *
import os

import sys
sys.path += ['.']

# if hasattr(sys, "frozen"):
#      if sys.frozen == "windows_exe":
#          main_dir = os.path.dirname(
#              unicode(sys.executable, sys.getfilesystemencoding())
#          )
#          sys.path.append(main_dir)
#          os.chdir(main_dir)
# else:
#      sys.path.insert(0, ".")

import math

# import OpenGL.arrays.ctypesarrays
# import OpenGL.arrays.ctypesparameters
# import OpenGL.arrays.ctypespointers
# import OpenGL.arrays.lists
# import OpenGL.arrays.nones
# import OpenGL.arrays.numbers
# import OpenGL.arrays.strings
# import OpenGL.platform.win32
# import OpenGL.raw.GL
# import dummy.Process
# import email.Generator
# import email.Iterators
# import numpy
import OpenGL.GL
import OpenGL.GLU
import OpenGL.GLUT
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *

from OpenGL.extensions import alternate
from OpenGL.GL.ARB.point_parameters import *
from OpenGL.GL.EXT.point_parameters import *

from ctypes import util
try:
    from OpenGL.platform import win32
except AttributeError:
    pass

SCR_RECT = Rect(0, 0, 640, 480)

tex = []

# 頂点配列を作成
vertices = [
            [  # ufo.png用
             0, 64, 0,  # 左下
            64, 64, 0,  # 右下
            64, 0, 0,  # 右上
            0, 0, 0  # 左上
            ],
            [  # BG用
             0, 512, 0,  # 左下
             512, 512, 0,  # 右下
             512, 0, 0,  # 右上
             0, 0, 0  # 左上
             ]
            ]

# テクスチャ座標配列を作成
texcoords = [0.0, 1.0,
             1.0, 1.0,
             1.0, 0.0,
             0.0, 0.0]

class MySprite:
    u"""スプライト管理用クラス"""

    def __init__(self, x, y, vx, vy, width, height):
        self.w = width
        self.h = height
        self.whf = self.w / 2
        self.hhf = self.h / 2
        self.fpx = float(x)
        self.fpy = float(y)
        self.fpvx = float(vx)
        self.fpvy = float(vy)
        self.rect = Rect(int(self.fpx - self.whf),
                         int(self.fpy - self.hhf),
                         self.w, self.h)

    def update(self):
        self.fpx += self.fpvx
        self.fpy += self.fpvy
        self.rect = Rect(int(self.fpx - self.whf),
                         int(self.fpy - self.hhf),
                         self.w, self.h)
        if self.rect.left < 0 or self.rect.right > SCR_RECT.width:
            self.fpvx *= -1
        if self.rect.top < 0 or self.rect.bottom > SCR_RECT.height:
            self.fpvy *= -1

def draw_bg(bx, by, texid):
    u"""BGを1枚分描画"""

    # 使うテクスチャを選択
    glBindTexture(GL_TEXTURE_2D, tex[texid])

    # 頂点配列、テクスチャ座標配列、カラー配列を指定
    glVertexPointer(3, GL_FLOAT, 0, vertices[1])
    glTexCoordPointer(2, GL_FLOAT, 0, texcoords)

    for ofs in [[0, 0], [512, 0], [0, -512], [512, -512]]:
        glLoadIdentity()
        glTranslatef(bx + ofs[0], by + ofs[1], -10.0)  # 平行移動
        glDrawArrays(GL_QUADS, 0, 4)  # 四角形を描画

def init_gl(w, h, fullfg):
    """OpenGL関係の初期化"""

    # OPENGL向けに初期化する
    modev = pygame.OPENGL | pygame.DOUBLEBUF
    if fullfg:
        modev |= pygame.FULLSCREEN
    screen = pygame.display.set_mode((w, h), modev)
    if not screen:
        return False

    glViewport(0, 0, w, h)
    glClearColor(0.0, 0.0, 0.0, 1.0)  # クリア色の設定

    # 隠面消去、カリング、照明を設定
    glDisable(GL_DEPTH_TEST)
    glDisable(GL_CULL_FACE)
    glDisable(GL_LIGHTING)

    glShadeModel(GL_FLAT)  # フラットシェーディングを有効化
    glEnable(GL_NORMALIZE)  # 法線の自動正規化を有効化

    # テクスチャの読み込み
    global tex
    glEnable(GL_TEXTURE_2D)  # テクスチャ有効化
    tex.append(loadImage('res/ufo.png'))
    tex.append(loadImage('res/bg1.png'))
    tex.append(loadImage('res/bg2.png'))

    # 座標系の設定
    glMatrixMode(GL_PROJECTION)  # 射影変換
    glLoadIdentity()  # 単位行列

    # 以後、平行投影で描画するよう指定
    glOrtho(0, 640.0, 480.0, 0.0, 0.1, 100.0)

    return True

def loadImage(image_fila_path):
    """テクスチャ画像をロード"""

    # pygameを使って画像ロード
    textureSurface = pygame.image.load(image_fila_path)  # 画像読み込み
    width = textureSurface.get_width()  # 横幅取得
    height = textureSurface.get_height()  # 縦幅取得

    # OpenGLに渡すために文字列化
    textureData = pygame.image.tostring(textureSurface, "RGBA", False)

    texture = glGenTextures(1)  # テクスチャを1枚生成
    glBindTexture(GL_TEXTURE_2D, texture)  # テクスチャとして登録

    # _S は横方向、_T は縦方向
    # テクスチャをリピートさせるかしないか
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP)
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)

    # _MAG_FILTER は拡大時のフィルタ種類, _MIN_ は縮小?
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)

    # glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL)
    # glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE)
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)

    # テクスチャを設定
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
                 width, height, 0, GL_RGBA,
                 GL_UNSIGNED_BYTE, textureData)

    return texture

def draw_text(x, y, st):
    """文字列をビットマップフォントで描画"""
    glRasterPos3f(x, y, -3.0)
    for s in st:
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, ord(s))

def draw_info(cap):
    """現在の状態をテキスト描画する"""
    glLoadIdentity()
    glColor3f(1.0, 1.0, 1.0)
    lx = 16
    ly = 16
    lyadd = 20
    for s in [cap, "F2: Full/Wdw", "F3: SPR ON/OFF", "ESC,Q: EXIT"]:
        draw_text(lx, ly, s)
        ly += lyadd

def main():
    fullscreen_flag = False

    pygame.init()
    pygame.display.set_caption("Full Screen Demo")
    init_gl(SCR_RECT.width, SCR_RECT.height, fullscreen_flag)

    # スプライトを作成
    pmax = 512
    x = SCR_RECT.width / 2
    y = SCR_RECT.height / 2
    sprgrp = []
    for i in range(pmax):
        rad = math.radians(i * 360 / pmax)
        vx = 3.0 * math.cos(rad)
        vy = 3.0 * math.sin(rad)
        sprgrp.append(MySprite(x, y, vx, vy, 64, 64))

    # BGM start
    pygame.mixer.music.load("res/bgm32.ogg")
    pygame.mixer.music.play(-1)

    clock = pygame.time.Clock()
    cap = ""
    frame_count = 0
    bgx = [0, 0]
    bgy = [0, 0]
    sprdraw = True

    running = True

    # main loop
    while running:
        clock.tick(60)  # 60fps

        # OpenGLバッファのクリア
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

        glMatrixMode(GL_MODELVIEW)
        glLoadIdentity()

        glFrontFace(GL_CCW)  # 頂点反時計回りを表として扱う
        glEnable(GL_TEXTURE_2D)  # テクスチャを有効に

        # テクスチャを透過にする
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glEnable(GL_BLEND);

        # 頂点配列、テクスチャ座標配列の有効化
        glEnableClientState(GL_VERTEX_ARRAY)
        glEnableClientState(GL_TEXTURE_COORD_ARRAY)

        # BG
        bgang = math.radians(frame_count)
        bgx[0] = -64 + (64 * math.cos(bgang))
        bgx[1] = -128 + (128 * math.cos(bgang))
        bgy[0] = (bgy[0] + 2) % 512
        bgy[1] = (bgy[1] + 6) % 512

        draw_bg(bgx[0], bgy[0], 1)
        draw_bg(bgx[1], bgy[1], 2)

        # スプライト座標更新
        for spr in sprgrp:
            spr.update()

        # スプライト描画
        if sprdraw:
            # 使うテクスチャを選択
            glBindTexture(GL_TEXTURE_2D, tex[0])

            # 頂点配列、テクスチャ座標配列、カラー配列を指定
            glVertexPointer(3, GL_FLOAT, 0, vertices[0])
            glTexCoordPointer(2, GL_FLOAT, 0, texcoords)

            for spr in sprgrp:
                glLoadIdentity()
                glTranslatef(spr.rect.x, spr.rect.y, -10.0)  # 平行移動
                glDrawArrays(GL_QUADS, 0, 4)  # ポリゴンとして描画

        glDisable(GL_TEXTURE_2D)  # テクスチャを無効に

        # 頂点配列、テクスチャ座標配列の無効化
        glDisableClientState(GL_VERTEX_ARRAY)
        glDisableClientState(GL_TEXTURE_COORD_ARRAY)

        # テキスト描画
        cap = '%5.2f FPS' % clock.get_fps()
        draw_info(cap)

        # pygameダブルバッファ交換
        pygame.display.flip()

        # ウインドウタイトルの文字列を設定
        pygame.display.set_caption(cap)

        # キー入力に対する処理
        for event in pygame.event.get():
            if event.type == QUIT:
                running = False
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE or event.key == K_q:
                    # ESCキーかqキーで終了
                    running = False
                elif event.key == K_F2:
                    # F2キーでフルスクリーンモードへの切り替え
                    fullscreen_flag = not fullscreen_flag
                    init_gl(SCR_RECT.width, SCR_RECT.height, fullscreen_flag)
                elif event.key == K_F3:
                    # F3キーでスプライト描画のon/off切り替え
                    sprdraw = not sprdraw

        frame_count = frame_count + 1

    pygame.quit()
    sys.exit()

if __name__ == "__main__":
    main()

setup.py。py2exeに渡す設定が書いてある。
#! c:/Python26/python.exe
# -*- coding: utf-8 -*-

from distutils.core import setup
import py2exe

option = {
    "compressed"   : 1,
    "optimize"     : 2,
    "bundle_files" : 3
}

setup(
    console = [
        {"script" : "fullscreenopengl.py"}
    ],
    options = {
        "py2exe": {
            "includes": ["ctypes", "logging"],
            "excludes": ["OpenGL"],
            }
    },
    data_files = [
                  ('res', ['res/bg1.png',
                           'res/bg2.png',
                           'res/ufo.png',
                           'res/bgm32.ogg',
                           'res/VeraMoBd.ttf']),
                  ('', ['C:\Python26\Lib\site-packages\pygame\libvorbisfile.dll',
                        'C:\Python26\Lib\site-packages\pygame\libogg.dll',
                        'C:\Python26\Lib\site-packages\pygame\libvorbis.dll',
                        'glut32.dll',
                        ])
                  ],

    # zipfile = "lib/library.zip"
    # zipfile = None
)

スクリプトと同じフォルダに、
  • glut32.dll
  • res/bg1.png
  • rse/bg2.png
  • res/bgm32.ogg
  • res/ufo.png
  • res/VeraMoBd.ttf
が入れてある。VeraMoBd.ttf は今回使ってないけど、他のスクリプトの動作時に必要なので入れてある。

mkexe.bat。exeを作成するためのバッチファイル。py2exeを呼び出している。
@rem make exe

@echo フォルダを削除します
rmdir /s build
rmdir /s dist

@echo dist\fullscreen.exe を作ります
python setup.py py2exe
pause

@echo dist\fullscreenopengl.exe を作ります
python setup2.py py2exe
pause

@echo 必要なファイルをコピーします
mkdir .\dist\OpenGL
xcopy C:\Python26\Lib\site-packages\OpenGL .\dist\OpenGL /e

@rem mkdir .\dist\ctypes
@rem xcopy C:\Python26\Lib\ctypes .\dist\ctypes /e

@rem copy C:\Python26\Lib .\dist

pause

#2 [prog] pygame+PyOpenGLのスクリプトを別PCで動かしてみたのだけど

録画用PCに持っていって動作確認したものの。なんだか微妙な結果に。描画内容その他、PCのスペックは、先日試していたスクリプトと同じ。 つまり…。 なんだか微妙…。まあ、スクリプトの書き方に無駄がある・何か指定を間違えてる可能性もあるのでアレなのだけど。書き方次第ではもっと速くなるのだろうか?

そしてもちろん、Python + PyOpenGL 等には、環境さえ整っていれば WindowsでもMacでもLinuxでもどれでもヌルヌル動くスクリプトがLLの気楽さで書ける、という大きなメリットがあるわけで。OpenGLを使った学習等には向いているような気もしたり。一々コンパイルをしないで済むし。

ただ、速度その他の面では、微妙…。

2013/05/10(金) [n年前の日記]

#1 [nitijyou] 部屋の温度が30度以上に

数日前は、夕方なのに5度前後の気温だった記憶が…。どうなってんだろ…。

この温度差を、発電に使えないものか。…どうやって?

#2 [prog] DXRuby1.5系開発版を試してみたり

1.5開発版は、フルスクリーン表示が改善されてるとの記述が。Ayame/Ruby も同梱されてるらしい。これは試してみないと…。

_DXRuby プロジェクトWiki - ファイル置き場 からDL。Windows7 x64 + ruby 1.9.3p392 mingw32 環境にインストール。先日書いたスクリプトをちょこちょこ修正して動作確認。

DXRuby 1.4 では、メインPC上でフルスクリーン表示をすると激しくチラついてしまったのだけど。DXRuby 1.5 ではそのような不具合は発生せず。しかも、メインループ中でいきなりウインドウ/フルスクリーン表示を切り替えてみても一見問題無し。素晴らしい…。ありがたや…。

しかし、別PCでも動作確認を、と思ったところでつまずいたり。

ocraでexe化できない問題。 :

ocraを使ってスクリプトをexe化しようとしても、エラーが出てexe化できず。以下のようなエラーメッセージが表示される。
> ocra --windows fullscrtestdxruby.rb
=== Loading script to check dependencies
C:/ruby193mingw/lib/ruby/1.9.1/uri/common.rb:860:in `block in <module:URI>': 内部エラー - DeleteAyameList (AyameError)
        from C:/ruby193mingw/lib/ruby/1.9.1/uri/common.rb:858:in `times'
        from C:/ruby193mingw/lib/ruby/1.9.1/uri/common.rb:858:in `<module:URI>'
        from C:/ruby193mingw/lib/ruby/1.9.1/uri/common.rb:12:in `<top (required)>'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from C:/ruby193mingw/lib/ruby/1.9.1/uri.rb:104:in `<top (required)>'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require'
        from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/dependency_resolver.rb:5:in `<top (required)>'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:474:in `const_get'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:474:in `block (3 levels) in attempt_load_autoload'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:468:in `each'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:468:in `block (2 levels) in attempt_load_autoload'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:466:in `each'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:466:in `block in attempt_load_autoload'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:460:in `loop'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:460:in `attempt_load_autoload'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:694:in `build_exe'
        from C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/ocra-1.3.1/bin/ocra:1153:in `block in <top (required)>'
「AyameError」なる文字列が気になる。DXRuby1.5開発版に同梱してあった Ayame/Ruby 0.0.2 で、Ayame/Ruby 0.0.1 を置き換えたのだけど、それが絡んでる…?

いくつか実験。
  • DXRuby は1.5開発版のままで、Ayame.dll、Ayame.so を、0.0.1 に戻してみた。 → ocra でexe化できた。
  • Ruby 1.9.3 ではなく、Ruby 1.9.2p290 mingw32版で、DXRuby 1.5開発版 + Ayame/Ruby 0.0.1 を使用。 → スクリプトは動作するし、ocra で exe化もできた。
  • Ruby 1.9.2p290 mingw32版で、DXRuby 1.5開発版 + Ayame/Ruby 0.0.2 を使用。 → スクリプト終了時に不正終了する。
ocra がエラーを出すだけならまだしも、スクリプトが不正終了してしまうわけだから、おそらく Ayame/Ruby 0.0.2 に何かしらの不具合がありそうな予感。

ちなみに。
  • スクリプトソース中のフラグ(?)一つで、Ayame/Ruby 0.0.1、0.0.2 に合わせて、ちゃんと処理が変わるようにして実験。0.0.2 は、prefetch、predecode が無くなったのですな…。
  • Ruby 1.9.3 と 1.9.2 の切り替えには pik を利用。gem list で表示される一覧が全然違うので、切り替えはちゃんとできているのだろうと思う。

それにしもて、Ruby 1.9.3 上では不正終了しないのに、1.9.2 上で不正終了するのは…なんでだろ…。自分の環境に何か問題が…? mingw版は速いという話をどこかで見かけて、 _RubyInstaller for Windows からDL・インストールしてるけど。 _ActiveScriptRuby を入れたら、結果が違ってくるのだろうか…?

別PC上でも動作確認。 :

とりあえず、当面、Ayame/Ruby 0.0.1 で実験をすることに。録画用PCとネットブック機に、Ruby 1.9.3 mingw版 + DXRuby 1.5開発版 + Ayame/Ruby 0.0.1 でexe化したファイルをコピーして動作確認。

どちらのPCでも、フルスクリーン表示時にチラつき無し。メインPCも含めて、自分の手元にあるPC3台では、どれも見た目問題無し、であります。

一応FPSもメモ。録画用PCは、ウインドウ表示もフルスクリーン表示も、60FPS。低消費電力CPU + AMD785Gチップセットのオンボードビデオでこれだけ動けば充分のような気もする。

ネットブック機は、ウインドウ表示が11FPS前後。フルスクリーン表示は30FPS前後。ふと思いついて、ネットブック機の画面色数を16ビットにして動かしてみたら、ウインドウ表示が16FPSぐらいに向上。フルスクリーン表示は結果変わらず。なんだかちょっとWin95時代を思い出したり。あの頃はPCスペックが低すぎて、そんな感じのアレコレをたまにやってたっけ…。

動作確認に使ったスクリプト。 :

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#3 [prog] pygame + PyOpenGLでフルスクリーン表示が上手くいかない

色々試してるけど、どうにも…。

pygame + PyOpenGLでフルスクリーン表示できない問題。 :

フルスクリーン表示をすると、画面の上部にウインドウ枠が残ったり、そこだけ黒い表示のままになったりする。メインPC上では症状が発生しないが、録画用PC上ではそういう症状が起きる。

以下の2点を加えたところ、症状は見られなくなったけど…。
  • フルスクリーン表示とウインドウ表示を切り替える際、pygame.display.set_mode() を呼ぶ直前に、pygame.display.quit()、pygame.display.init() を呼んでおく。
  • pygame.display.set_mode() を呼んだ後、glutInit() を呼んでおく。
他のPC上では違った結果になるのかもしれないので、このあたり、なんとも怪しい…。

glut32.dll がバグ持ちなのかと思って、glut32.dll を freeglut.dll で差し替えてみたけど、これは関係なかった模様。ただ、freeglut.dll で置き換えた際に、「glutBitmapCharacter() を使いたかったら glutInit() を事前に呼んでおけ」とエラーが表示されたので、glutInit() を呼べるなら呼んでおいたほうがいいのだろう。たぶん。

ちなみに、freeglut.dll は、 _freeglut Windows Development Libraries から入手できる。freeglut.dll を glut32.dll にリネームしてスクリプトのあるフォルダに置けば使えるみたい。

フルスクリーン表示すると画面の書き換えの様子が見えてしまう問題。 :

pygame + PyOpenGL でフルスクリーン表示をすると、画面内に横線が入っているかのような見た目になることに気付いた。おそらく、ダブルバッファを切り替えるタイミングが見えているのではないかと。ティアリングと呼ぶのでしたっけ?

メインループの書き方がよろしくないのだろうか。それとも、垂直帰線期間だか vsync だかそのへんが関係しているのだろうか。OpenGL関係でフルスクリーン表示をすると、画面書き換え(バッファ切り替え?)のタイミングが vsync で固定される、てな話を海外掲示板で見かけたりもしたわけで。

症状が出ている録画用PCは、液晶ディスプレイにHDMI接続しているのだけど、まさか、HDMI接続の場合はvsyncが正確に得られない、等の問題があったり…したら手の打ちようがないのだろうな…。そもそも液晶ディスプレイでvsyncがどうこうってのもなんだかおかしい気もするけど。ブラウン管なら原理からして、そのへんが絡んでくるけれど…。液晶ディスプレイの場合は、どういう仕組み・やり取りになってるんだろうか…。

pygame + DirectX利用時に不正終了する問題。 :

pygame は SDL を使って描画している。その SDL は、Windows 上で動く際、windib とやらを使って描画している。環境変数 SDL_VIDEODRIVER に 'directx' を指定することで、windib ではなく、DirectX が使われるはず、なのだけど…。

Ruby/SDL上ではそのあたりの切り替えが上手くいかなかったのだけど、pygame 上では反映されるようで、喜んで(?)設定してみたり。しかし、ウインドウ表示中はともかく、directx で一度でもフルスクリーン表示をすると、その後、スクリプトの終了時に、必ず不正終了してしまう。

検索してみたところ、海外掲示板でも同様の不具合報告を見かけた。しかし、どの報告でも、「pygameでDirectXを使うな。OpenGL使え」で話が打ち切られてるようで。…たしかに、マルチプラットフォームを意識すれば、DirectXを選択肢に入れるのはおかしい。でも、ちょっと前までは、SDLもDirectXを活用してた記憶があるわけで。

pygame の標準描画(= SDL = windib による描画)は結構遅いので、directx にして速くなるなら使ってみたい。が、directx にすれば必ず速くなるわけでもないようで。自分のメインPC上で、directx + フルスクリーン表示をすると、画面の書き換えが「ペロン、ペロン」という状態に。たぶん、1FPSすら出ていない…。pygame.HWSURFACE や pygame.DOUBLEBUF を指定してみても劇的変化は無く。

pygame だけで60FPSのゲームを、と考えること自体が無謀なのだろうか。かもしれん…。

pyglet とやらを使えば、また違ってくるのかな。どうなんだろ。

#4 [prog] pygameはナシな気がしてきた

pygame + PyOpenGL では 50MB・3,000ファイルになる処理を、DXRuby や StarRuby でやると 4MB・数ファイルで済んでしまう。これはちょっと…あまりにも差があり過ぎる気が。

PyOpenGL を使わずに pygame だけでやれば、ファイル数は少なくできるけど。pygame だけでは描画が遅いから、DXRuby や StarRuby と同じ処理ができないだろうなと。

そのあたりを考えると、真っ当な言語仕様のLL(Lightweight Language、軽量プログラミング言語)で、かつ、そこそこの速度で動く2Dゲームを、と思ったら、pygame (+ PyOpenGL) は選択肢としてナシではないかとうっすら思えてきたり。DXRuby や StarRuby を選んだほうが…。

まあ、pygame は、ヌルヌル動くリアルタイム系ゲームを作ることなんて最初から考えてないのかもしれないけれど。各種解説ドキュメントにもそのような忠告をチラチラ見かけるし。

2013/05/11() [n年前の日記]

#1 [prog] pygletを勉強中

pygletも気になってきたので勉強中。なのだけど、何かの拍子に描画結果が見えなくなってハマったり。環境は、Windows7 x64 + Python 2.6.6 + pyglet 1.2alpha1。

原因は、on_resize() だった…。on_resize() を書いてしまうと、何故か描画がされなくなる。いや、描画がされてないのか表示がされてないのか分からんけど、とにかく画面が真っ黒なままで。メソッドの中で何の処理をしているのかは関係なし。

どうやら、on_resize() の内容を上書きしてしまうのが問題だったらしい。自分で書いた on_resize() の最初で super(Window, self).on_resize(width, height) を呼べば画面が表示できるようになった。

2013/05/12() [n年前の日記]

#1 [prog] まだpygletを勉強中

勉強中。

ogg再生。 :

oggのループ再生もできた。
source = pyglet.media.load('res/bgm32.ogg', streaming=False)
self.player = pyglet.media.ManagedSoundPlayer()
self.player.queue(source)  # キューに入れる
self.player.eos_action = self.player.EOS_LOOP  # ループ再生を指定
self.player.play()  # 再生開始
こんな感じっぽい。

ジョイスティックへの対応。 :

pyglet は、ジョイスティックにも対応しているらしい。ただし、pyglet 1.2以降(1.2 alpha1 1含む)で対応、という条件付きだけど。

手持ちのデジタルパッドを接続して実験してみたら、たしかに読み取れている模様。であれば、描画が遅い pygame をわざわざ使わなくても済みそうな予感も。

スクリプト実行中にジョイスティックを引き抜いたらどうなるのか試してみたら、エラーが出て終了してしまった。「応答なし」になったりしないあたりは助かるけれど、終了しちゃうのもよろしくない。接続状態をチェックしてスクリプトの動作に反映させられるのだろうか。try - except を使えばどうにかなるのかな。そのへんまだ調べてない。

メインループの書き方がよくわからず。 :

メインループの書き方、というか、座標等の更新処理(update())と描画処理(on_draw())がどんな順番・流れで呼ばれているのか、そのあたりがちょっと分からなくて少しアレだなと。画面が時々カクッとなるのだけど、そのへんが絡んでたりするのだろうか。どうなんだろう。

exe化しようとしてハマる。 :

pygletを使ったスクリプトをpy2exeでexe化しようとしてハマる。ちなみに環境は、Windows7 x64 + Python 2.6.6 + pyglet 1.2alpha1。pyglet 1.2 alpha 1 は、 _Python Extension Packages for Windows - Christoph Gohlke から入手したもの、だったと思う。

不具合その1。モジュールが無い云々のエラーが出て起動しない。以下のようなエラーが出る。
D:\pub\exe_test\test_pyglet>fullscrpyglet.exe
Unexpected error loading library D:\pub\exe_test\test_pyglet\library.zip\pyglet\media\avbin: 指定されたモジュールが見つかりません。
Unexpected error loading library avbin: 指定されたモジュールが見つかりません。
Traceback (most recent call last):
  File "fullscrpyglet.py", line 35, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "pyglet\media\__init__.pyo", line 1469, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "pyglet\media\avbin.pyo", line 68, in <module>
  File "pyglet\lib.pyo", line 111, in load_library
  File "ctypes\__init__.pyo", line 431, in LoadLibrary
  File "ctypes\__init__.pyo", line 353, in __init__
WindowsError: [Error 126] 指定されたモジュールが見つかりません。
これは、avbin.dll が必要ということだったらしい。avbin.dll は、
C:\Python26\Lib\site-packages\pyglet\media\avbin.dll
あたりにあるので、exe化した .exe と同じフォルダにコピーする。音声の再生に使うのだろう…と思ったけれど、後になって、どうもそういう感じではなさそうな気もしてきた。

不具合その2。.exe終了時にエラーを吐く。エラーというか、正確には warning なのだけど。以下のようなログが出力されて、「ログを残したよ!」とダイアログが開いて鬱陶しいわけで。
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:118: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:119: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
C:\home\prg\_wk\PythonPygletTest1\src\dist\library.zip\pyglet\lib.py:120: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
これは、pyglet 1.2 alpha 1 に入ってる lib.py 内の記述がマズいらしい。
C:\Python26\Lib\site-packages\pyglet\lib.py
というファイルなのだけど。 _1.2 Alpha and Python 3 - Google グループ に報告があったので、試しに書き換えてみたところ、終了時にエラーが出なくなった。

エラーは出なくなったけど、現状では別PCに持っていっても動くところまでできていない。メインPC上ならexe化したファイルも動いてるように見えるけど、録画用PC上では画面全体の色がランダムに変わるだけで、スプライト等の表示が一切できず。しかしoggは再生されている…。pygame + PyOpenGL が動いてたから、OpenGL 関係は一切扱えないPCというわけではないのだろうけど。AMD 785G を乗せたM/Bなわけだし…。

また、ウインドウアプリではなく、コンソールアプリとして exe を作ったら、avbin モジュールが無いとメッセージが表示された。
D:\pub\exe_test\test_pyglet>fullscrpyglet.exe
Unexpected error loading library D:\pub\exe_test\test_pyglet\library.zip\pyglet\media\avbin: 指定されたモジュールが見つかりません。
何をどうすればいいのか、さっぱり分からず。

参考にしているページをメモ。 :


2013/05/13(月) [n年前の日記]

#1 [prog] pygletがダメなのかと思ったらどうやらRadeonが糞だったらしい話

結論を先に書くけど。pyglet を使うと Radeon 上では不具合が起きまくりな模様。

ここ数日 pyglet を勉強してたけど。pygletを使ったスクリプトをexe化しても、環境によっては描画が行われなくてハマってしまったり。自分の書き方が間違えているのかなと悩んでいたけど、どうもそうではなかったようで。
PC種類ビデオチップ描画結果
メインPCNVIDIA GeForce9800GTGEOK
録画用PCATI Radeon HD4200 (AMD 785G)NG
ネットブック機Intel 945GSE (GMA950)OK
NVIDIA と Intel は動いて、ATI(AMD)が動かない。となると、原因はATI(AMD)じゃねえの? と。

「pyglet radeon」あたりの単語でググってみたら、やはりそうだった。 _「Radeon上でpygletを動かしても描画されないよ?」 とか、 _「pygletのサンプルすらRadeonでは動いてねえよ」 という不具合報告が…。Radeon…お前か! お前のせいか! やっぱり未だにRadeonは、ドライバが糞というか、OpenGL関係がダメなのだなあ…。トホホ。

pyglet + Radeon 上での描画については、分かった範囲では以下のような状態になっているらしく。
pyglet.graphics.BatchNG
pyglet.sprite.Sprite.draw()NG
pyglet.image.AbstractImage.blit()OK
一応、 _Pyglet/examples/noisy を微改造して ―― 描画方法を切り替える処理を加えて試してみたら、たしかに blit()だけ描画できて、他の2つはダメだった。

高速に大量の描画ができる、バッチを使った描画が使えないのは痛い。自分のメインPC上ですら ―― スペックは結構そこそこなPC上ですら、バッチ描画とソレ以外で、明らかに処理速度の違いが分かってしまうわけで。そのくらい、バッチ描画は効果があるのだけど、ソレが使えないのは厳しい。

「Radeon がおかしいのではなくて pygletがおかしいのでは?」と一瞬思ったけれど、NVIDIA と Intel では動いてるからなあ…。不具合報告を眺めてると、頂点座標として int を渡すとダメで、float を渡せば違ってくる、みたいな話も出ているように見える。もしかしてソレは、PyOpenGL あたりも同様だったりするのだろうか? そういや、先日書いて試してたPyOpenGL使用スクリプトは、v?f しか使ってなかった。たまたまそうしちゃってたから、動いてたのかな…?

「最近のドライバでは直ってるかも?」てな話も見かけたので Catalyst13.1 をインストールしてみたのだけど。残念ながら変化なし。ちなみに、かなり昔のバージョンのドライバなら不具合が出ないという話も。どうなってんだろ…。

とりあえず、Radeon が載ってるPC上では何一つ描画できない、描画できてもSDL並みに遅い、なんて状態はダメダメ過ぎるわけで。この調子では、何かしらを作ろうとする際に、pyglet を選択肢に入れるわけにはいかんよなと…。Radeon が載ってるPCは多いのだし…。

余談。 _OpenGL Extensions Viewer をインストールして対応状況を調べてみたけど。GeForce 9800GTGE も Radeon HD4200 も 3.3 まで対応と表示された。レンダリングテストも一応見た目は問題無いように見える。こうなると、pyglet がおかしいという話に持っていかれそうな…。いや、たぶんおかしいのは ATI・Radeon だけど、おそらく他のアレコレは、不具合を回避する方向で、何かを犠牲にした実装をしてそうな予感。ATI に直してくれと要望出しても、どうせ期待できないし。あそこは昔からそのへん酷いから。

そういや昔の Shade も、「Radeon ユーザは、動くドライババージョンを自分で探してください…」みたいな注意書きをしてた記憶が…。

描画されるかどうかの確認用サンプル。 :

一応、前述の動作サンプルも置いておくです。

_noisy_drawtest_20130513.zip

  • 解凍して、dist/noisy_drawtest.exe を実行すれば動く…はず。たぶん。
  • スペースキーを押すとボールが増える。
  • Zキーで3種類の描画方法を切り替え。
  • Radeon系は描画方法を「blit()」にしないとボールが表示されない。と思う。ドライババージョンによって結果が違う可能性有り。

pyglet の lib.py も修正が必要らしい。 :

_Fix checking for unexpected errors while loading a library - 6aaa0e5 - mammadori/pyglet - GitHub
_History for pyglet/lib.py - mammadori/pyglet - GitHub

昨日、pyglet を使ったスクリプトを py2exe でexe化した際、.exe を実行するとエラーが出て困ってたのだけど。どうやら lib.py の該当部分を GitHub 上の最新版と同様に修正すれば、そのエラーは出なくなる模様。たぶん。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#2 [prog] pyinstallerも試用してみたのだけど。

Windows上で、Pythonスクリプト(.py)をexe化できるツールは、いくつかあるようで。

_py2exe
_PyInstaller
_cx_Freeze
_bbfreeze

英語圏の掲示板で、「pygletを使ったスクリプトをexe化するならPyinstallerがいいよ!」と言ってる人が居るみたいなので、ちと試してみようかなと。

ダメだった。
AccessInit: hash collision: 3 for both 1 and 1
と表示されて、処理が途中で止まってるように見える…。それとも自分の使い方がおかしいのだろうか?

巷の解説記事は、Pyinstaller 1.5 あたりのものがほとんどで。現在のバージョンは 2.0 だから、ちょっと中身があってないような。

インストール方法は…。pyinstaller-2.0.zip をDLして解凍してどこかに置いとけば終わり、らしい。後は、
python pyinstaller.py exe化したい.pyのパス
でOKっぽい。が、自分の手元では成功せず。

#3 [prog] pygletのサンプル

ここ数日弄ってた pyglet の動作確認サンプルも一応アップロードしておこうかと。やたら長くなったから、@wiki にアップしておくです。

_mieki256 @ ウィキ - pygletでフルスクリーン表示等をするサンプル
_fullscrpyglet.py
_setup.py
_ファイル一式(fullscrpyglet_20130513.zip)

ジョイスティックの読み取りその他、色々やってるです。

pygame 使うより pyglet 使うほうが高速に処理できるのでオススメ、と言いたいところなのだけど、しかし前述の通り、現状では Radeon が載ってるPC上で描画されないという不具合があるわけで…。NVIDIA か Intel のビデオチップ使ってる人しか利用できない。それが今現在の pyglet。みたいな。なんとも残念な結果に。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

2013/05/14(火) [n年前の日記]

#1 [prog] 「指定バージョンより上のバージョンを要求する」ってどう書いたらいいんだろ

例えば、「pyglet 1.2 alpha 1 以上のバージョンがインストールされてないとこのスクリプトは動かないよ」みたいなことを説明文書に書いておきたいと思ったりする時があるわけですが。そういう時、どんな感じに書いておけば、英語圏の人にも分かるのかなあ、と…。

たしか、Ruby関係で、「>」「<」「>>」「<<」を使った説明の付け方があったような気がするんだけど、具体的な書き方が思い出せない…。おそらく、記号を使って書けたほうが、英語圏でも日本語圏でも意味が通じるであろう気もするわけで。しかし、どういう記述だったかなあ…。

む。見つけたかも。例えば、 _markdown | RubyGems.org | your community gem host のページの下のほうに、それらしい書き方が。
kramdown >= 0.13.7
props >= 1.0.0
textutils >= 0.2.0
「kramdown は 0.13.7 以上のバージョンが必要だよ」と読めばいいのかな…?

#2 [prog] Ayame/Rubyのエラーについてメモ

Ayame/Ruby 0.0.2 を使うとocraでexe化できなかったり、Ruby 1.9.2上でスクリプトが不正終了する(というか、終了できずに固まって、Windows7が「どうする? 無理矢理終了させる?」と尋ねてくる)件。何をするとそうなるのか分かったかもしれず。Ayame#dispose を呼ぶと、起きるっぽい。そこだけコメントアウトしたら、exe化もできたし、Ruby 1.9.2上でも正常終了するようになった。

ただ、Ruby 1.9.3 上で ruby hoge.rb の形で実行する限りは、あるいは、Ayame/Ruby 0.0.1 を使った場合は、dispose を呼んでいてもexe化できるし、正常終了するわけで。なもんで、どうも釈然としない…。

dispose を呼んだ後、関連メソッドを呼ぶと例外が起きるらしいのだけど、0.0.1 使用時に例外が起きてないということは、dispose を呼んだ後、関連メソッドは呼ばれない作りになっていたはずで。であれば、dispose を呼んで不具合が起きるのは妙だなと。

まあ、何にせよ、dispose を呼ばなければエラーを回避できる模様。ということで。

気になって Ayame/Ruby付属のサンプルを眺めたら、dispose は一度も使われてなかった。となると、呼ぶこと自体が想定外というか、本来は呼ばなくても済むはずなのかなと思えてきたりもして。 ただ、そうなると、別の点が気になるわけで。dispose を一切呼ばない作りは、すなわち、読み込んだ音声ファイルを一度も解放しない作りを強制されるはずで…。

ゲーム等では、十数曲〜数十曲を順次鳴らしていく、てな場面もありそうだけど。解放しないということは、アプリ起動時にあらかじめ全曲読み込んでおいて、アプリ実行中はメモリ上にその全曲分の波形データをずっと持ちっぱなし、てな作りになるだろうと。しかしそうなると、音声ファイルは結構容量を食うので、メモリをやたらと使いそうな…。

まあ、今時のPCスペックなら、そのくらい屁でもないのかしら。メモリが少なくてヒイヒイ言ってる家庭用ゲーム機とは違うぜ、と。

よくよく考えてみたら、そもそもRuby等のLL使ってゲーム作ろうとする時点で、かなりの富豪的プログラミングだろうし。今更何言ってんだ、みたいな話かもしれん…。

あるいは、Ruby の GC が上手くやってくれることを期待した作り、なんてことも可能だったりするのだろうか。Ruby初心者なので、どうすればそれができるのか、よく分からんのだけど。

#3 [prog] pyglet + Radeon で描画できない件について

以下のページを眺めると、「Catalyst 12.4 (video driver 8.961.0.0)以降は直ってるはずだぜ。だからこの件は解決ってことで!」と書いてあるように見えるのだけど。

_linux - pyglet vertex list not rendered (AMD driver?) - Stack Overflow
_Issue 544 - pyglet - Batches are not being draw - Cross-platform windowing and multimedia library for Python. - Google Project Hosting

「それ、ホントかよ?」と思えてきたので、試しに自分の手元のPCでも実験。

結果だけど。

pyglet+radeon描画テスト結果画像

やっぱりダメだった。vertex_list.draw() や batch.draw() を使ったほうは描画されてない。…畜生! 直ってねえよ! 解決してねえよ! 今も Radeon はバグ持ちだよ!

そして、前述のページ内で言及されていた通り、「v2i」を「v2f」に修正してみたところ、正常に描画されてしまったわけで。うーん。

「"v2i"を"v2f"にするだけで描画されるなら、とりあえず全部、"v2f"にしとけばいいんじゃねえの?」と思ったりもしたけれど。本来の仕様や規格とは異なる呼び方、場当たり的な回避策で固定するなんて許されることなんだろうか、という気もするし。ATI/AMDがOpenGL絡みのバグを抱えたままだから、仕方なくそうせざるを得ないという話でしかないだろうし。

でも、こういうバグ持ちなバージョンのドライバを使い続けてる環境も多いだろうし。特定アプリのために、古いドライバに戻してくれなんて、フツーは言えないし。実際にどの環境でも動くようにと考えたら、場当たり的でもいいからとにかくソレをやるしかないのでは、という気も。

どういう選択が正解なのか、よくわかりませんな…。

環境や動作確認サンプルをメモ。 :

Windows7 x64 + Python 2.6.6 + pyglet 1.2 alpha 1。

ビデオカード(ビデオチップ)周りの情報は以下の通り。 _HWiNFO32 で取得。
ATI/AMD Radeon HD 4200 (RS880)
	 	
[General Information]
	Device Name:	ATI/AMD Radeon HD 4200 (RS880)
	Original Device Name:	ATI/AMD Radeon HD 4200 (RS880)
	Device Class:	VGA Compatible Adapter
	Revision ID:	0
	Bus Number:	1
	Device Number:	5
	Function Number:	0
	PCI Latency Timer:	0
	Hardware ID:	PCI\VEN_1002&DEV_9710&SUBSYS_97101849&REV_00
 		
[System Resources]
	Interrupt Line:	N/A
	Interrupt Pin:	INTA#
	Memory Base Address 0	D0000000
	I/O Base Address 1	D000
	Memory Base Address 2	FE9F0000
	Memory Base Address 5	FE800000
 		
[Features]
	Bus Mastering:	Enabled
	Running At 66 MHz:	Not Capable
	Fast Back-to-Back Transactions:	Not Capable
 		
[Driver Information]
	Driver Manufacturer:	Advanced Micro Devices, Inc.
	Driver Description:	ATI Radeon HD 4200
	Driver Provider:	Advanced Micro Devices, Inc.
	Driver Version:	8.970.100.7000
	Driver Date:	16-Nov-2012
	DeviceInstanceId	PCI\VEN_1002&DEV_9710&SUBSYS_97101849&REV_00\4&2417585A&0&2808 
Driver Version は、8.970.100.7000 なので、前述のページで書かれていた 8.961.0.0 より新しい…と思う。たぶん。

動作確認に使ったスクリプトは以下の通り。コピペしてきただけ…。
import pyglet

window = pyglet.window.Window(640, 480)
w, h = window.get_size()

vl = pyglet.graphics.vertex_list(4,
                                  ('v2i', (100, 0, 100, h, 200, h, 200, 0)),
                                  ('c3B', (255, 255, 255, 255, 0, 0,
                                           0, 255, 0, 0, 0, 255)))

batch = pyglet.graphics.Batch()

x = 220
y = 10
width = 70
height = 200
color = 127, 127, 0, 127
color2 = 0, 127, 0, 127

batch.add_indexed(4, pyglet.gl.GL_TRIANGLES, None,
                    [0, 1, 2, 1, 2, 3],
                    ('v2i', (x, y,
                             x + width, y,
                             x, y + height,
                             x + width, y + height)),
                    ('c4B', tuple(color * 4)))

x += w / 2

@window.event
def on_draw():
    window.clear()

    vl.draw(pyglet.gl.GL_QUADS)
    batch.draw()

    pyglet.graphics.draw(4, pyglet.gl.GL_QUADS,
                          ('v2i', (400, 0, 400, h, 500, h, 500, 0)),
                          ('c3B', (255, 255, 255, 255, 0, 0,
                                   0, 255, 0, 0, 0, 255)))

    pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES,
                    [0, 1, 2, 1, 2, 3],
                    ('v2i', (x, y,
                             x + width, y,
                             x , y + height,
                             x + width, y + height)),
                    ('c4B', tuple(color2 * 4)))

pyglet.app.run()

2013/05/15追記。 :

一応実行ファイルとソース一式も置いとくです。
_test_pyglet_v2i_20130515.zip
  • pyglet_v2i.exe を実行すれば、"v2i"指定版が起動。
  • pyglet_v2f.exe を実行すれば、"v2f"指定版が起動。
  • src/以下にスクリプトソース入り。

AMD Driverのバグについて :

_The AMD Driver Bug Thread - [H]ard|Forum にまとまってた。結構あるんだなあ…。

「昔のOpenGL仕様を使ったアプリを動かすとマズイことになる」てな話が気になる。今回の不具合も、そのあたりが絡んでるのだろうか。わからんけど。

なんだか ATI/AMD だけdisってる感もあるけど、NVIDIAのドライバも結構バグがあるはずなので…。一時期は、 _ビデオカードを熱で故障させちゃうドライバ を出しちゃってたし。ハードウェアを壊しちゃうのは、さすがにクリティカル過ぎる…。

なので、ATI/AMDはとにかく糞と言いたいわけでもなく。どれを選んでも何かしら抱えてるはずだろうと。…まあ、OpenGL使いたいなら、ATI/AMD は今でも避けるのがどうやら無難っぽいですなあ、ぐらいの話で。

ビデオチップは複雑な処理をするハードウェアだし、次々に新チップも出さなきゃいかんし、基本的には DirectX重視の市場だろうから、仕方ないのかも、てな気もしています。

2017/03/19追記。 :

Dropboxのpublicフォルダが死んだのでファイルの置き場所を変更。

#4 [nitijyou][pc][web] 使ってるオンラインブックマークを変えてみたり

ここ最近 Googleブックマーク + Firefox + _GMarks を使ってたのだけど、数日前から追加ができなくなってしまって。Googleブックマークのページを開いて追加作業をしても反映されず。10,000件を超えるか超えないかの数なので、登録数の制限に引っかかってしまったのだろうか…?

ということで、仕方なく(?)、はてブ(はてなブックマーク)を利用してみることに。複数のPCで作業する際は、どのPCからでも参照できるオンラインブックマークという仕組みが便利なわけで。

はてブの感想だけど。使い始めたばかりだから、軽くてイイ感じ。タグをオススメしてくれるあたりもグッド。

まあ、登録数が増えてくると、どんどん重くなるのかもしれないけれど…。Yahooブックマークも、登録数が増えたらガンガン重くなってしまって、実用に耐えない状態になっていったし。はてブはそうじゃないといいのだけど…。

Yahooブックマークと言えば。 :

Yahooブックマークも、2013年7月でサービス終了だそうで…。ブックマーク先をキャッシュしてくれるのが売りのサービスだったので、ブックマーク先が消滅してもちょっとは安心かなと思っていたけど、サービス自体が終了するのでは、使ってた意味が全然無かったなと…。

ブックマークしたページをオンラインストレージ上に溜め込んでくれるサービスでもあればいいのだろうけど。ネットバブルが弾けたらしい今現在では、実現は難しいのだろうな。

#5 [zatta] たぶん騙されるのは母ちゃんが圧倒的に多いんじゃないかな。たぶん

_警視庁、振り込め詐欺の新名称を「母さん助けて詐欺」に決定 -INTERNET Watch という記事に対するはてブで、たまたま目にした一言が、なんだか気になった。
新名称が実体を表してるなら、騙されんの母親だけなの?

はてなブックマーク - 警視庁、振り込め詐欺の新名称を「母さん助けて詐欺」に決定 -INTERNET Watch より


たぶん、そうなんじゃないかなあ、と根拠はさほどないけど思ってしまったりして。

例えば、原発反対派のデモの中に母ちゃんの姿はチラホラ見えるけど、原発推進派の顔ぶれの中には、基本的には父ちゃんしか居ないわけで。

戦時中も、赤紙が届いた息子に対して、「お国のために死んでこい」「これは名誉だ」とハッパかけてなんだかある意味喜んじゃってるようにしか見えない父ちゃんと、なんでウチの子がと泣きじゃくる母ちゃん、みたいな光景があちこちにあったそうだし。 *1

つまり、母ちゃん達は子供のことを心配してくれるけど、父ちゃん達は子供がどうなろうと知ったこっちゃない。てな全体的傾向が日本にはあるのではないかと。そのあたり、父ちゃんは基本的にあてにならないものじゃないのかなと。

もちろん、子供を殺す母ちゃんも居れば、子供が熱出したら会社休んでくれる父ちゃんも居るわけで、「ウチは違うぞ」と異を唱える御家庭は結構あるはずだけど。ただ、全体的な傾向としてはそういう感じなのかなあ、と個人的にはぼんやりうっすらと思っていたり。

なので、その「母さん助けて詐欺」というネーミングには、そのあたりの傾向も含めて、自分は「ああ、なるほど」と思ってしまったのでした。「父さん助けて」と電話が来ても、大多数は「そんなの知らんわ。自分でどうにかせい」で電話を切られそうなイメージ。

でも、実際の被害事例の割合としてはどうなのか、たしかにちょっと気になるところ。想像とは裏腹に、世の中の父ちゃんは意外と子供に冷たくない、そんな可能性もあるのでしょうか。

しかしそもそもそのあたりを調べられるデータがあるのかどうか。トライ回数と成功数、両方見ないと判断できんけど、警察が持ってるのは成功数のデータだけだし。おそらく、その詐欺電話をかけてる人達しか、全体的な傾向を述べられないのでしょうけど、そういう人達が滅多に表に出てくるはずもないし…。
*1: 伝聞に過ぎないので実際はどうだったのかわからんけど。

#6 [prog][editor] Sublime Text2を試用中

あちこちで名前を見かけるので気にはなっていたのだけど、有償製品とのことで避けてたのですが。一応試用もできるという話を今頃知り、だったら少し触ってみようかなと。

なるほど…。なんか色々と、カッコイイというか、オシャレというか…そういう感じのエディタですね…。今のPCのスペックならこのくらいできるだろ! みたいなガッツを感じました。や、今から vi や emacs を再発明したらこうなるんじゃね? てな印象も受けたのですが。

日本語のインライン入力ができないという話も見かけていたのだけど。IMESupportなるパッケージを入れたら、Windows7 x64 上ではすんなりインライン入力できました。素晴らしい…。いやまあ、標準ではインライン入力できないことのほうが、そりゃないべや勘弁してくれって感じな話ではありますけど。しかし、インライン入力にすら難があるということは、文字コード関係はさほど期待できないんだろうな。

メニュー等が全部英語なのは、英語赤点だった自分には、やはり厳しい…。

お値段、約8,000円か…。これでガシガシなんでも書けると考えれば安い気もするけれど、実際にはあらゆる場面で使えるのかどうか。もうちょっと試用してみないと、よくわからないな…。

2013/05/15(水) [n年前の日記]

#1 [nitijyou] 自宅サーバ止めてました

雷が鳴ったので、17:45-19:10、15日23:35-16日03:00の間、自宅サーバを止めてました。申し訳ないです。

夜中に鳴り始めて、なんだかなと思いました。フツーは夕方から夜の間に鳴ることが多いのですけど…。

#2 [windows] Notepad++が起動しない

新しいバージョンが出ているみたいなのでインストールしてみようとしたら、起動直後に応答なしで。

以下のページが参考になった。

_Notepad++が起動しなくなった | digitalnomad::net

ウチもIME2010だわ…。またしても、IME2010か…。

FL Studio のインストール時も、IME2010 にしていると、インストーラが応答なしになるんだよなあ…。英語圏の人達は当然ながらIMEなんか使わないわけで、本家だの公式だのをいくら眺めてみても報告すら上がらず。まあ、仮に上がっていても、開発側で検証のしようもないわけだけど。

それはともかく、ウチの環境では、Notepad++ 6.3.2 なら起動してくれた。6.3.3 で追加された何かが関係してるのだろうか…?

#3 [nitijyou] 某所にお邪魔してきた

サーバ上のファイルを完全削除してしまったのだけど復活させられないか、とのお話で。自分がやれそうなことと言えば、ファイル復元ソフトの類で検索・復元ぐらいしかできないけれど、それでも良ければ、ということで、15:00-17:00の間、お邪魔してきたり。

準備作業についてメモ。 :

ファイル復元ソフトを使う場合、復元したファイルを別HDDへと書き出すのが鉄則。同じHDDに書き出してしまうと、書き出したファイルが、まだ復元してないファイル群を上書きして、復元できなくなる可能性があるらしく。だから、別HDDに書き出さないとダメ。

なので今回、USB接続外付けHDDを念のために持っていったほうがいいだろうなと。たぶんあちらには無いだろうし。

お邪魔する場所は、比較的古いPCばかりだった記憶があるので、おそらくサーバも古いOSで動いてそうだなと。であれば、外付けHDDをFAT32でフォーマットしておいたほうが安全かな、と考えて準備作業を始めたり。…この時点で、自分は勘違いをしてた。それはともかく。

フォーマットしようとしたところで困ってしまった。Windows7 は FAT32 でHDDをフォーマットできなかったのですな…。NTFS と exFAT だけをサポートしてるのか…。今まで知らなかった…。

Windows7上でも、 FAT32でフォーマットできるツールを検索。 _Fat32Formatter_I-O DATA ハードディスクフォーマッタ に遭遇。

しかし、どちらも動作せず。前者は、何かするたびにエラーダイアログが開くし、後者は、「実行」を押したところで無反応になる。外付けHDDのアクセスランプも光ってない。

OS再起動やら何やら色々試したのだけど。結局以下のことをして、Fat32Formatter が動くようになった。
  • USB3.0接続していた別の外付けHDDを外して、フォーマットしたいHDDだけ繋いだ状態にした。
  • Alcohol 52% Free Edition で設定していた仮想DVDドライブを無効に。
  • Dataram RAMDisk で作っていたRAMディスクを停止。
  • Fat32Formatter のデバッグバージョンを使用。
これでようやく、USB接続外付けHDDを FAT32 でフォーマットできた。ここまでの作業で1時間ぐらいかかってしまい、約束の時間を延ばしてもらうための電話を入れる羽目に。

…これを書いてる今になって気がついたけど。外付けHDDは、BUFFALO HD-H300U2 だった。白いケースだから I-O DATA製とばかり…。それでI-O DATAのツールが動かなかったのかな…。自分、アホだなあ…。

さておき。フォーマット中に気がついた。そもそも昔のサーバ用OSとなると、Windows NT だったりしないか? USB接続で外付けHDDを繋げるのだろうか?

調べてみたら、NT4.0あたりは、NTFSしかサポートしていないし、そもそもUSBには未対応、てな話が。…だったら FAT32 はかえってマズイじゃん。それに、HDD持っていっても繋げないかもしれん。どうしよう。

とりあえず、NTFSでフォーマットだけして、一応持っていくことに。FAT32フォーマットで悪戦苦闘した意味ないじゃん。トホホ。

USB接続できなかったら、その時は泣こう。嘘。その場合は、他PCで共有フォルダを作って、サーバ側から覗いてどうにかするしかないだろう。でも、操作方法を調べてる時間は無い。とりあえず現物を見てから考えよう…。

到着後。 :

サーバは Windows Server 2003 だった。良かった。全然新しい。だけど、USB接続できるのかな…。端子はついてるけど…。

繋いだら認識してくれた。助かった。

HDDには、あらかじめ _Recuva_Portable版 を入れておいたのでソレを実行。思いのほか、ファイルを救い出せた。ラッキーだった。

外付けHDDをクライアントPCに繋ぎ変えて、ファイルを選別してもらおうとしたけれど、サーバ機から外そうとしても使用中と表示される。困った。

仕方ないので、あくまで一時的に、クライアントPC上で共有フォルダを作成してもらい、そちらに転送。

転送直後に気がついた。最初から、クライアントPCに外付けHDDを繋いで、共有設定をしてサーバから覗いて作業したほうが早かったのでは…? 自分、無駄な作業ばかりしてるな…。いや、ネットワーク上のソレを実行するのと、直接接続されてる外付けHDDから実行するのでは、動作が違う可能性もあるか…。

またしてもコレを書いてる今になって気付いたけど。サーバ側で外付けHDDの該当フォルダを共有フォルダ化すれば、クライアント側で共有設定せずともファイルを持ってこれたのでは…? まあ、サーバ機の操作方法なんて自分は分からんし、かえって時間がかかったかもしれないか…。

知識のある人から見たら、おそらくはやっちゃいけないことをいくつかやらかしてそうな、そんな不安が。まあ、目的は果たせたはずだから、多少は勘弁してもらうしか…。

他の事項はGRPでメモ。

2013/05/16(木) [n年前の日記]

#1 [nitijyou] 自転車で買い物に

リオンドール横のダイソーで、フックロープやら、自転車のカゴ用のネットやら、電池やら、ライターやら、そのあたりを購入。ついでに、リオンドールで夕飯用の食材を。

木工用のノコギリが欲しかったのだけど、種類が少なくてヨサゲなものが見つからず。

半球ミラーを入れて持ち歩けそうな、巾着袋っぽいものを探したのだけど。外側はふわふわでも、中はビニール系のものばかりで。ミラーが傷つかないように、中がふわふわな材質なものが欲しいのだけど…。まあ、この手の袋で中がふわふわだと、入れたものを取り出す際に苦労するから、そういう品は、フツーはないよな…。自作するしかないのかも…。

雨が降りそうな天気だったので急いで帰ってきたけれど、家に着いた頃に晴れてきて、なんだか微妙に損した気分。

#2 [pc] CeVIO Creative Studio FREEを試用してみたり

いくつかの記事を目にして気になったわけで。

_ASCII.jp:ボカロじゃない音声合成ソフト「CeVIO」ってなんぞ!? (1/4)
_音声合成・歌声合成の新星「CeVIO」、その謎が解けた! (1/3) - ITmedia ニュース
_CeVIO Official Site

フリー版もあるらしいので試してみたり。

凄いわ…。かなり自然な音声合成、のように思える。感情を反映した声が出せるあたりにも感心してしまった。これは素晴らしい…。

2013/05/17(金) [n年前の日記]

#1 [pc] HDRI作成実験のために写真を撮影してきた

実験のための写真を撮影。以下の機材(?)を自転車のカゴに入れてウロウロと。 近所の道路脇と、地下道の出口、2ヶ所で撮影。HDRIを作りたいので、1方向につき、露出を変えて3枚撮影。それを90度ずつ4方向繰り返す。

部屋の中では大体手順が見えたような気がしていたけど、全然甘かった。

問題その1。セッティングが面倒臭い。写真を撮影できるようになるまでに、感覚的に10分以上かかってたような気がする。三脚を出して足を延ばしてデジカメを固定するところまではともかく、半球ミラーと固定用アームをつけた後、位置調整で時間がかかる。

問題その2。風にめっぽう弱い。これは自作アームの強度・設計の問題だけど、そよ風が吹いただけでも半球ミラーがふらふらふらふら。当然写真はぼやけてしまうし、位置も違ってくるので、後の露出合成作業が上手くいかない。根本的に、これではダメだと思えた。

問題その3。機材の輸送が面倒。特に、半球ミラーを持ち歩くのが大変。100円ショップで買った靴下っぽい袋に入れてみたものの、傷がつきそうでヒヤヒヤ。ちゃんとしたケースもどきを作らないといかんであろう気がしてきた。

問題その4。MFでのピント合わせは無理。日光の下では液晶ファインダーが見づらくて、調整のしようがない。AF頼りで撮影するしかないけど、それだと半球ミラーにピントを合わせられない。

問題その5。ハチ怖い。爆発原発を建ててたぐらいに田舎な県だから当然なのだけど、時期的にブンブン飛びまくりで。撮影中にまとわりつく。わざわざ手に止まりやがる。恐ろしくて恐ろしくて、撮影どころじゃない…。

てな感じで、たった2ヶ所で撮影しただけでも嫌気がさしてきた。

TVドラマの撮影は、役者にとってほとんどが待ち時間とどこかで聞いた記憶もあるけど。ちゃんとした画を撮ろうとすると、こんな感じに、機材のセッティングだけでやたら時間がかかってしまうのだろうなと、ぼんやりと素人想像で分かったかのような気分に。

帰宅後、写真を確認してみたけど、やはりボケまくりで半分ほど捨てるしかなく。

huginで合成しようとしてるけど、さっぱり上手くいかない。最初に各方向でHDRIを作らないとダメか…。

帰りにケーズデンキに寄った。 :

新パッケージの eneloop と、Victor販売のBD-R 5枚組を購入。

2013/05/18() [n年前の日記]

#1 [cg_tools] Huginで実験中

Huginは、パノラマ画像を作れるフリーソフト。

enblend という、画像を繋ぐプログラムがエラーを出して止まってしまう。そもそも -m 2048 -b 4096 といった、イメージキャッシュのメモリ使用量を指示するコマンドラインオプションが働いてないようで。「そのオプションはサポートしてねえよ。何故なら俺は…」と言われてしまう。

調べてみたところ、最近の enblend の Windows版は、OpenMPとやらを有効にしてビルドされてるそうで。OpenMPが有効になってると、イメージキャッシュ機能は無効になる。

OpenMPって何…? 並列処理・マルチコアCPUに対応させるための何かじゃないのかな。たぶん。並列処理をするとキャッシュの扱いが面倒になるので、どちらかが有効な時は、もう片方を無効にしている、らしい。たぶん。自信なし。

_Enblend bundled with Hugin no longer supports -m - Google グループ
_2011.4 win32 - out of memory - "compiled without image cache" - Google グループ

Hugin には、OpenMP版で問題が出る環境のために、enblend_noopenmp.exe、enfuse_noopenmp.exe というバイナリも bin/ 以下に同梱されてる。環境設定でそれらを指定すれば、OpenMPを無効=イメージキャッシュ有効版を使える。メモリ不足がどうこうでエラーが出てるっぽい時は、enblend_noopenmp.exe 等を使ってみるのもアリ、ただし速度は OpenMP版より遅いはず、と前述のMLで書かれてるように見えた。

No OpenMP版を使ってみたことろ、エラーを出さなくなったように見える。でも、気のせいか、随分時間がかかるような…。いや、今まではエラーが出て最後まで行かなかったので、速度的にどうなのか判断しようもないのだけど。

画像の位置合わせ。 :

_Fusion というソフトが使える。最新版は有償ソフトだけど、昔の古い版がフリー版として公開されてる模様。

_はやしのなか :: FusionというフリーのHDR合成ソフトがわりとすごい件について
_はやしのなか :: HDRソフトFusionのズレ補正とゴースト除去はスグレモノかも

上記の記事で知りました。ありがたや。

  1. 位置合わせしたい画像をD&Dして読み込む。
  2. 左側に、読み込んだ画像ファイル名が並ぶ。
  3. ツールバー上の、「Align Images」ボタンをクリック。しばらく計算して位置合わせをしてくれる。
  4. 左側の画像ファイル名をクリックして選んで、ツールバー上の「Save Result」ボタンを押して、別名保存。それを画像ファイル数分、繰り返し。
まとめて保存してくれないあたりはちょっと面倒な気もする。実はそういう機能がどこかにあるんだろうか?

Hugin関連で、位置合わせをしてくれるコマンドラインツールもあったような気がする…。 _2013/03/24の日記 でメモってた。align_image_stack というツール名だった。

_Photomatix Pro なる有償ソフトでも位置合わせができるらしいので、体験版を試しに触ってみたり。
  1. 「ブラケットした写真のロード」をクリック。
  2. ダイアログに画像ファイルをD&D。その際、「処理前に32bit HDRイメージを表示」にチェックを入れておく。
  3. 「前処理オプション」ダイアログで、「画像のズレを調整」にチェックを入れて、処理内容を選ぶ。
  4. 位置合わせをしたHDR画像が出来上がる。ファイル→名前を付けて保存。.hdr、.exr、.tif あたりを選んで保存する。
みたいな流れ、だと思う。

#2 [pc] VMware Player上のUbuntuを13.04にしておいた

ちと実験をしようとして Ubuntu Linux を起動したら「13.04が出てるよ! アップグレードしなよ!」的なダイアログが。てなわけで、一応アップグレードしておいた。何が変わったのか、よく分かってないけど。

あ。やっちまった。VMwareの共有フォルダが使えなくなった。VMware Tools を再インストールしてもダメ。ググってみたら、VMware Tools が Linux の新しいカーネルに対応できてないらしい。

面倒臭いので samba 入れた。以下の記事を参考に作業。

_Ubuntu 12.04 LTS - Sambaサーバー - フルアクセスの共有フォルダ作成 : Server World

どうせ仮想環境上で動かす実験用のソレなので、しばらくは、これでいいや…。

#3 [windows] WACOMタブレットドライバを再インストール

「タブレットドライバが見つかりません」てなメッセージが出てくるようになってしまって、困ったなと。環境は Windows7 x64。Intuos 3 使用。

ドライバを再インストールすることにした。前回、アンインストールせずに、上書きでインストールしちゃったような気もするんだよなあ…。なので今回は一旦アンインストールしてから、再インストール。これでしばらく様子を見ようかと。

#4 [cg_tools] Kritaをインストールしてみた

KDE関係から出てきた画像編集ソフト、でいいのかな? 16bit、32bit画像の編集も可能らしい。

_KRITA
_Krita - KDE UserBase Wiki

_ Windows版 もあるらしいので、試用してみようかと。krita_2.7.8.0.msi をDL。インストール。環境は Windows7 x64。

インストール先フォルダを選択できない…。また、インストール直後にOS再起動を要求される。なんだか怪しい…。

.exr や .hdr も読み込めるのかなと思ったけど、ダメだった。 _Luminance HDR_Picturenaut で開ける .exr を読み込もうとしても、ファイル選択ダイアログ上で表示されず。

VMware Player上の Ubuntu 13.04 でも Krita をインストールしてみたけれど。そっちだと、.exr が開ける…。Windows版は、.exrその他の読み込みに対応してないということなのかな?

ググってみたけど、16・32ビット画像の編集に対応しているフリーソフトって皆無なようで。なかなか厳しい。まあ、フツーは利用する機会が無い画像だろうから、当然編集ソフトも無いのだろうけど。

2013/05/19() [n年前の日記]

#1 [game][neta] ○○ゲー

夢の中でそういうゲームを見たのでメモ。

なめゲー。「ステージクリア条件: 5秒で10回なめろ!」

吹きゲー。「狙い吹くぜ!」「ブレスパワーで攻撃力アップ!」「群がる敵を吹き飛ばせ!」

噛みゲー。「迫りくるゾンビを噛み千切れ!」「噛み砕け! 悪魔を! 天使を! そして神を!」

尻ゲー。「夏の夜空に尻で描け!」「キセキを描け その尻で。伝えろ ラブ・メッセージ!」

腰ゲー。「プレイヤーセレクト: ピストンタイプ = 前方攻撃重視 / フラフープタイプ = 広範囲攻撃重視」

咥えゲー。「咥えて咥えて 振り回せ!」「東京タワーもスカイツリーも パックン&シェイク!」

揉みゲー。「基本は優しく、時には激しく。めざせ! モミマスター!」

…どれも自分が知らないか忘れてるだけで、もう既に存在してそうな気がしてきたり。

没案その他もメモ。 :

鼻ゲー、脇ゲー、耳ゲー、歯ゲー、なるアレも浮かんだけど、操作方法についてイメージが湧かず。語感(?)はイイんだけど…。誰でも動かせるものじゃないし、何かを発する部位でもないし。

チンゲーは、反応速度を考えたら操作には使えないなと思ったけれど。考えてみたら、セガから発売されて話題になってたことを思い出した。吹きゲーのアプローチだよな…。何かを放出することにも使える部位なら、利用できる可能性がある、ということだろうか。

屁ゲー。…いや、ソレは、自分の望むタイミングで出せるもんでもないし。

ファミコンの2コンマイクは、吹きゲー要素も多少入ってた気がする。もっとも、on/offしか取れなかっただろうし、後に削られた機能だから、それほど使いようもなかっただろうけど。音量を測定できたら、もう少し違う使い方があったのだろうか?

だったらスマホあたりでも、そういうゲームが作れそう。マイクに吹き込んだ声の大きさでプレイヤーキャラのパラメータが変化する、とか。でも、その仕様では、電車の中でプレイすることは許されないし、部屋でプレイしても壁ドンだろうから、プレイできる場所がほとんどないか。

そのあたりを考えていくと、昨今のゲーム商品は、お通夜みたいな状態でプレイできる内容が望まれる、ような気もしてきた。でもないか。一時期流行った音ゲーは真逆か。もっともアレは、ゲーセンでプレイするのがデフォとして考えられてただろうし。

電車の中で腰ゲーをプレイしてる人が居たら大迷惑な予感。

#2 [linux] VMware Player 上の Ubuntu 13.04 についてメモ

VMware-Tools をインストールしても共有フォルダが使えない問題。以下に解決策があったので試してみたり。なんか打ち間違いがあるとか、これでも正常動作してないとか書いてあるのが気になるけど。

_linux - No /mnt/hgfs in Ubuntu guest under VMWare Fusion - Super User
_Question #227866 : Questions : Ubuntu
_Ubuntu 13.04上でVMWare Toolsのshared foldersが有効に成らない場合 - c4se記:さっちゃんですよ☆

/mnt/hgfs/ 以下が見えるようになった。助かりました。ありがたや。

Ubuntuってペンタブレットが使えたのだな…。 :

Ubuntu上で Krita を試用する際、Wacom製タブレット等を使って筆圧の入力をしないと、ペン機能の実力のほどがよく分からんな、と。

ということで、Ubuntu でペンタブレットを使用可能にする手順を検索してみたところ、どうやら Ubuntu は最初からペンタブレットを使うためのアレコレが入ってたようで。知らなかった…。

_hikaruさんのブログ ≫ Blog Archive ≫ VM上のUbunru(Linux)でペンタブレットを使ってGimpで絵を描く方法 を参考に、VMware 上でペンタブレットを利用可能にするための設定を .vmx に書いた程度で、すんなりペンタブレットが動いてしまった。当然筆圧も検知されてる。素晴らしい…。

と思ったけれど。 _KO GmbH - Downloads には、Krita 2.6、2.7 はタブレット関係が壊れてる、みたいな一文があるようにも見える。Windows版限定の話なのか、それとも *NIX版も適用される話なのか。どうなんだろう…。

#3 [cg_tools] Kritaのバージョンを落としたりアンインストールしたり

タブレット絡みでバグがあるっぽい話が気になったので、Windows7 x64上にインストールした Krita 2.7.8.0 をアンインストールして、2.5.2.0 に落としてみたり。一応 2.5.2 が Windows 上での安定版という扱いらしいので。krita_2.5.2.0_msvc_13_09_2012.msi をDLしてインストール。

相変わらず、.hdr や .exr は開けなかった。やはり Windows版は対応してないらしい。そこの機能が一番欲しいのだけどなあ…。

2.7.8.0 に比べると、2.5.2 は動作がやたらと遅いような気がする。単に気のせいかもしれないけど。

インストールすると、いくつかのプログラム *1 がシステムに居座るらしいあたりも気になるので、結局アンインストールした。どうしても使いたくなったら、VMware Player + Ubuntu で使えばいいし。Ubuntu 上でペンタブレットが使えることも分かったし。
*1: klauncher.exe、kded4.exe、knotify4.exe、dbus-daemon.exe。

2013/05/20(月) [n年前の日記]

#1 [cg_tools] Huginで実験中

上手くいかない。

半球ミラー撮影画像を、 あらかじめ編集した状態で試してみたり。GIMPで円の形にトリミング、かつ、撮影者やデジカメや三脚を消去してpng保存。それを4方向 x 3露出=12回行って。そこまでした画像を Hugin に読み込ませてみたら、一発でイイ感じに配置してくれて喜んだり。しかし、HDRIとして出力すると、穴がボコボコと空いた謎画像、全てが透明になってる謎画像が出力されてしまう。なんでや…。

元画像を、あらかじめHDRIにした状態で試してみたり。Photomatrix Pro 試用版で、露出を変えて撮影した3枚を、1枚の .exr にして、Huginに渡す。ところがこれだと、自動でコントロールポイントを見つけることができない。仕方ないから手作業でコントロールポイントを打っていく状態に。この場合は、穴がボコボコ空いたHDRIが出力されずに済む。が、面倒臭い。

ミラーボール・半球ミラー画像をパノラマ画像にする手順が、間違っているのだろうか…。

そもそも、ミラーを使った撮影は、上に向かってカメラを向けて撮影することが多いようだし。それだと、Photoshop等の極座標変換で、一見それらしい平面画像に変形できるんだよな…。

#2 [anime][neta] ハートキャッチプリキュア、恐るべし

ハートキャッチプリキュアというより、馬越嘉彦キャラデザ恐るべし、ですが。

「聖闘士星矢Ω」の放送中、twitterを眺めると、未だに「プリキュアみたい」という書き込みがチラホラ。よく考えてみたら、それって凄いというか、恐ろしいことだなあ、と。

そこで言われてる「プリキュア」は、もちろん「ハートキャッチプリキュア」でしょうけど。であれば本来、「ハートキャッチみたい」「ハープリみたい」と書かれるのが正しいはずで。「ハートキャッチ」以外にも、プリキュア作品はたくさんある・「ハートキャッチ」だけが「プリキュア」ではないのですから…。

でも、「プリキュアみたい」って書かれちゃう。「プリキュア」=「ハートキャッチ」になってる。それ以外のプリキュア作品は、まるでこの世に存在してないかのような扱いを受けてる。あんだけオールスター映画も作ったのに…! ひどい!

「ハートキャッチ」は、ガンダムで喩えると「Gガンダム」だよなと。「G」は、シリーズ中、結構異端な作品。異端故、その手の会話の中で、「ガンダムみたい」=「Gガンダムみたい」と言い出す人は居ませんわ。ありえねえ。

しかし、プリキュアシリーズでは、そのありえねえことが起きちゃってる。「プリキュア」というシリーズ名を聞いた瞬間、異端であるはずの「ハートキャッチ」を最初に思い浮かべてしまう人が、意外と多いということじゃないかと。だからこそ、「Ω」を見て、「プリキュアみたい」と無意識に書いちゃうのではないかと。

世間様は、一体どんだけあの絵柄にハートキャッチされてしまったんだ、と…。たった一作品なのに、シリーズの絵柄の印象を上書き消去してしまった…。ハートキャッチ、恐るべし。ですよ。

たぶん、馬越キャラデザで、新しいメジャーなアニメ作品が作られたら、今度は「聖闘士星矢みたい」って言われそうだなと。初代の「聖闘士星矢」の絵柄 ―― 荒木伸吾キャラデザ+姫野美智作画は無かったことになって、「聖闘士星矢」=「Ω」になってるのではないか…と予言しておきます。「いやいや、そんなわけないから」と思うでしょ? でも、「プリキュア」の事例を鑑みれば…ねえ?

馬越キャラデザは凄い。気がする。 :

例えば、「ジャイアントゴーグ」「クラッシャージョウ」の安彦キャラデザを見て、「ガンダムみたい」って言い出す人は、まず居ない、ような気が。

例えば、初代「聖闘士星矢」の荒木キャラデザを見て、「ベルばらみたい」「バビル二世みたい」って言い出した人も、さほど居ないだろうと。

例えば、「ウェディングピーチ」の只野キャラデザを見て、「セーラームーンみたい」って言い出す人も、そんなに居なかったんじゃないかなあ。

でも、馬越キャラデザは違う。「ハートキャッチ」の時は、「どれみみたい」「キャシャーンみたい」と言われて。 *1 「聖闘士星矢Ω」が始まったら、今度は「プリキュアみたい」と言われて。結構絵柄を変えているように見えるのだけどなあ…。

毎回こんな感想を持たれるキャラデザの人って珍しいのではないかと。どんだけ飛び抜けた、個性的な画風をお持ちなのかと。パッと見で絵にパワーがこもってるのかと。それでいながら他作品にもフツーに原画として参加して、そこだけ浮いたりせずに溶け込んじゃってるし。「ママレードボーイ」「ベルセルク」などのキャラデザもやってましたし…。

試しに、ガンダムシリーズの新作があり得るなら、馬越キャラデザにしてもらいたいなあ、と思えてきたり。馬越キャラデザが、1st、Z、V、G、W、X、∀、SEED、OO、AGE、全部上書き消去して、「ガンダム」=馬越キャラデザのガンダム、になるんじゃないかと妙な期待を。もちろん放映中は、「このガンダム、聖闘士星矢みたい」って言われ続ける予感。

マクロスシリーズのキャラデザでもいいなあ。と思ったけど、あっちはその時々で、エロスを感じる娘さんキャラを描いてくれそうなキャラデザの人を、というポリシーがありそうな気もしてきたり。となると…それはちょっと微妙に違ってくるのかな…。

*1: 既にあの段階で、「キャシャーン Sins」が「キャシャーン」を上書き消去してたような気もしてきた…。

2013/05/21(火) [n年前の日記]

#1 [cg_tools] panotoolsとGIMPとPhotoshop Elementsの謎

_Gimp - PanoTools.org Wiki を眺めてたら、 _Panorama Gimp plug-in なるものがあると知り。おそらくは、 _GIMP パノラマツール だと思うけど。これを使えば、ミラーボール撮影画像を展開できるのでは、と思えてきたり。 _Final Render tests なるページで、それが出来ているように見えるし。

展開さえできれば、GIMP上で撮影者その他が消えるように重ねることもできるんじゃないかと。

しかし、上手くいかない。環境は、Windows7 x64 + GIMP 2.6.12 or Photoshop Elements 8.0。

分かったことだけ先に書いとくけど。
Windows7 x64 + Photoshop Elements 上で panotools plugin を動かす際の注意事項については以下の通り。

GIMP上での不具合。 :

作業した流れだけど。まず、ミラーボール部分だけが残っているかのような、正方形の形にトリミングをして。

GIMP上では、フィルタ → Panorama Tools → Remap を選んで、PSphere に変換するところまでは大丈夫っぽい。Convex mirror → PSphere を選んで、HFOV、VFOVを360度にしてOKを押せば、上下左右がむちゃくちゃになった展開図っぽいのが出来上がる。ちなみに、 _Panotools plugins Readme - PanoTools.org Wiki によると、Remapで変換できる組み合わせには制限がある模様。

これを、フィルタ → Panorama Tools → Adjust で、真っ当な向きに戻してやればいい…はずなのだけど。

開いたダイアログで、setボタンを押して、元画像の形式を選ぶけど、そこがおかしい。PSphere に変換したわけだから、元画像の形式は PSphere を選ばないといけないはずが、何故かラジオボタンが反応しない。押しても押しても別の何かが選ばれる。

バグ持ちバージョンなのかと思って、 _Panorama Tools - Browse /gimp plugin/gimp-2.0 at SourceForge.net から古い版をDLして入れ替えてみたりもしたけれど、状況は同じ。どうなってるんだ…?

_GIMP パノラマツール から入手した pano12.dll を、GIMPのプラグインフォルダに入れちゃってるのだけど、それがマズいのだろうか? ならばと、本家のバイナリを入れて試してみたり。 _Jim Watters - PanoTools から、PanoTools12_2007Apr25.zip をDLして、解凍、setup.exe を実行してインストール。C:\Windows\SysWOW64\ 以下に、pano12.dll がコピーされたように見える。ファイルは、2007/04/23、バージョン 2.8.6.0。今まで入れてた pano12.dll は、2006/12/16、バージョン 2.8.0.0。

しかし、GIMPの動作に変化なし。コレが原因ではない、ということかな…。

Photoshop Elements上での不具合。 :

Photoshop 上なら panotools もちゃんと動くのだろうか? Photoshop Elements 8.0 上で試してみたり。

PanoTools12_2007Apr25.zip をインストールした際、C:\Program Files (x86)\Panorama Tools\Photoshop plugins\ 以下に .8bf がコピーされてるので、それを Photoshop Elements のプラグインフォルダに ―― 自分の場合は、マイドキュメント内に、プラグインを追加するためのフォルダを作成して設定してる ―― に入れる。

Photoshop Elements 上で、フィルター → Panorama Tools → PTRemap を実行してみたところ、「pano12.dll がロードできねえ」と文句を言われて動かない。… SysWOW64 以下に入ってるんだけどなあ。 .8bf と同じフォルダにコピーしてみたけど、それでもダメ。

_Panorama-ダルマのつぶやき Windows 7 64bit 環境下での パノラマ作成−誰か試しましたか? というページで、「 _PTGui をインストールしないと動かないよ」という話が。PTGui は、有償ソフトなんだけど…。とりあえず、PTGui Proの体験版を試しにインストール。ちなみに体験版は、作成画像にウォーターマークが入る。

今度は、Photoshop Elements 上でも、Pannotools が動いた。しかし、Remap が正常動作しない。横方向に、微妙に縮小されたかのような結果画像が出てくる。どういうことやねん。

ちなみに、PTGui をインストールしても、SysWOW64 以下の pano12.dll は変わってなかった。PTGui は、一体どこに何をコピーして、どんな設定をしているんだろう…?

PTGui をアンインストールしてみた。…やっぱり動かなくなる。うーん。

関連ドキュメントを眺めていたら、アプリと同じフォルダに pano12.dll を入れるのもアリ、と書いてあった。Photoshop Elements のインストールフォルダに pano12.dll をコピー。…動いた。そこに置いとかないとダメなのか。

しかしやっぱり、各フィルタを実行すると、正常動作しない。どうも設定したパラメータが、「OK」ボタンを押した瞬間、毎回必ず初期化されてるように見える。

_Jim Watters - PanoTools をよく読むと、「Windows Vista の場合は、『管理者として実行』しろ。設定をファイルに書き出す必要があるのだ。管理者権限で実行しないと、dllと同じ場所にファイル書き込みできんのだ」と書いてあるように見える。古いから仕方ないのだろうけど、とんでもない糞仕様…。そこはユーザフォルダあたりにしておけよ…。いや、自分も他人のことは言えない。ちょっと前に公開したプログラムも、同じフォルダに設定ファイル書き出してたっけ…。ヤバイな…。

とりあえず、Photoshop Elements を管理者として実行。すると、また、「pano12.dllがロードできねえ」と言ってきた。いいかげんにしろ。

そもそも Photoshop Elements のインストールフォルダが謎な状態であることに気付いた。スタートメニューのショートカットファイルは、
C:\Program Files (x86)\Adobe\Elements Organizer 8.0\Photoshop Elements 8.0.exe
を呼び出しているけど、実体は、
C:\Program Files (x86)\Adobe\Photoshop Elements 8.0\PhotoshopElementsEditor.exe
のように見える。なんで2つもあるの?

前者で実行すると、「ロードできねえ」が出ることに気付いた。後者を「管理者として実行」してみたり。

動いた。ようやく意図通りに動作した。

「管理者として実行」を強要するのはいかがなものかと思うけど、もうメンテナンスされてないツール群らしいので、仕方ないのだろうな。せめて、GIMP上で動いてくれればスッキリするのだろうけど、どうして GIMP上では、PSphere が選べないんだろう…?

PSPIを使ってみた。 :

閃いた。GIMP側でPhotoshopのプラグインを使える、 _PSPI を使ったらどうなるだろう。Photoshop Elements ではプラグインが動いているのだから、それをGIMPから呼び出して使えば…。

ダメだった。PTRemap はそれらしく動作するのだけど、PTAdjust は、RGBチャンネルがおかしくなったような画像が出来上がってしまう。なんでだろ。

#2 [cg_tools] GIMPのMathMapのインストール方法がよく分からず

数式を書けばそのようにフィルタ処理をしてくれるプラグイン、らしいのだけど。

_MathMap | GIMP Plugin Registry
_The MathMap Image Processing Application

Windows7 x64 + GIMP 2.8.4 にインストールする場合は、どうすればいいんだろう…? mathmap-1.3.5-setup.exe をDLして実行しても、C:\Users\ユーザアカウント名\.gimp-2.6\ にインストールされてしまうのだけど…。

とりあえずインストールしてみたら、C:\Users\ユーザアカウント名\.gimp-2.6\ 以下に mathmap\ と plug-ins\ ができていた。面倒だから GIMP 2.8.4 用のユーザフォルダに中身をコピーしてみる。一応動いたっぽい。フィルタ → 汎用 → MathMap。

動いたから、MathMap はアンインストール。…フツーに .zip 版も置いといて欲しい気もしたり。

2013/05/22(水) [n年前の日記]

#1 [cg_tools] Huginで実験中

いつまでやってんだという気もするけど。

Photoshop Elements 8.0 + Panotools でミラーボール画像を展開して Hugin に持っていったけど、もう無茶苦茶な画像になった。どうやら Panotools のソレは、手作業でレタッチしてパノラマ画像を作る時には使える、みたいなフィルタなのかもしれないと思えてきたり。

今まで、ミラーボール画像を魚眼レンズ画像として読み込んでたのだけど。 _Projections - PanoTools.org Wiki を眺めてるうちに、どうも違うんじゃないかと。Equisolid、等立体角、てのがソレじゃあるまいかと。
Huginで選べる投影の種類
…まあ、その設定で読み込みをしてみたところで、結果が劇的に変わってるようには見えなかったのだけど。

Luminance HDR にも、Projective transformation なる、変換機能がついていることに気付いたり。Edit → Projective transformation で実行できる。ただ、種類が分からない。
Luminance HDR Projective transformation 種類
Polar、Angular、Cylindrical、Mirror Ball、の4種類があるけれど、どれがどういう投影なのやら…。試してみたけど、よく分からなかった。


2013/05/23(木) [n年前の日記]

#1 [cg_tools] Huginで実験したことのとりあえずの成果

とりあえず、ミラーボールを使ってHDRIのパノラマ画像が作れたので、いいかげん実験はこのへんにしとこうかと。

場所その1のLDRサムネイル画像。
場所その1
_RyubinPanoPlayerによる表示

場所その2のLDRサムネイル画像。
場所その2
_RyubinPanoPlayerによる表示

_exr_zip_20130523.zip (HDRI画像 x 2, 73MB)

Public domain だか CC0 だかで置いときますので自由に使ってください。

と言っても、ミラーボール撮影画像から作ったせいもあって、あまりに画質が悪過ぎてアレなんですが。

感想。 :

ミラーボール撮影画像を使って、IBLレンダリングにも使えそうなHDRIを作るのはシンドイなと。というか、ちと無理だなと。
  • 撮影が大変。
  • 撮影後のスティッチも大変。
  • 撮影者やデジカメや三脚を切り抜くのも一苦労。
  • それでいて、画質は酷いし。
こんな結果しか得られないなら、フツーはやらないよなと。でもまあ…
  • 低コストでやれる。
  • これでもまだ、撮影時間が比較的短くて済む。
この2つはメリットだろうけど。
  • フツーのコンパクトデジカメだけでやろうとしたら、ゴイスな画質は得られるけど、何十枚も撮影することになるので手間と撮影時間が大変。
  • 一眼レフデジカメ + 魚眼レンズ + ノーダルポイントを設定できるパノラマ撮影専用雲台なら、そこそこの画質が比較的短い撮影時間で得られるけど、お金がかかる。
貧乏人はミラー撮影ぐらいしか手が無い感じ。「金額」と「手間・画質」は、比例してる気が。

スティッチ作業の大変さは、有償ソフトでもあれば ―― 例えば _HDR Shop 等を使ったら軽減されるのかもしれない。体験版すら存在しない・入手できないようなので、どのくらい違うのかは分からなかったけど。フリーソフトの _Hugin で無理矢理やり遂げようとして、ますます大変なことになってたような気もする。

画質の悪化には、ミラーボールの品質も関係してるのだろうか。何せ、赤ちゃん用の玩具、 _「5分はもちますゴハンまで」 から取り外したソレで実験してたので。コレ、値段は安いけど、表面が波打ってるので、もうその時点で画質は…。いや、デジカメの画素数のほうが問題かしら。Canon PowerShot A570 IS は700万画素程度だけど、1600万画素等のコンパクトデジカメなら、もうちょっと違うのかな? たいして違いはないかな?

ゴイスな望遠レンズを使えたら、撮影者が小さく写って、各作業が楽だったかもしれない。コンパクトデジカメだったから、それは無理だったけど。

フォーカスを合わせるのも大変。マクロ撮影で合わせてたけど、オートだとボケボケになるので、そこからさらにMFを使って合わせないと…。でも、太陽光の下では、液晶画面は見えない。調整のしようがない。ほとんど当てずっぽう。

まあ、問題山積みってことで。

ミラーボール撮影時のアレコレをメモ。 :

ミラーボールを4方向 x 3露出で撮影。こんな感じ。

場所その1。

4方向x3露出の例その1

場所その2。

4方向x3露出の例その2

ちなみに、こういうアームを自作して撮影してました。
ミラー固定用の自作アーム
三脚に固定してたので、デジカメとミラーの位置は、一度設定すれば後から変更する必要はないのだけど。強度が問題だった…。

方向に関しては、どうも4方向では足りないような気もする。5〜8方向ぐらいから撮影しないと、画質の面ではダメな印象も。

あるいは、「画質が悪くてもいいから、とにかく早く撮影を終わらせるぞ」と割り切って、1方向だけ、もしくは90度だけずらした角度で2方向のみ、撮影して済ませるのもアリかも。ミラーボールは、周辺の歪みはともかく、一応360度分の風景が映り込んでるし。どうせミラーボールを撮影してる時点で画質は期待できないのだし。IBLレンダリング用の光源画像として使うのだと割り切れば、それでもOKかも。

ミラーボールは、球が全部入った形で撮影したほうがヨサゲ。そのほうが、後の作業が楽。中途半端に球が切れちゃってると後々面倒臭い。今回はそのへん失敗した。

ミラーボールの固定部分は、ガッシリしたものが必要。そうじゃないと、ブラケット撮影(露出を変えて撮影)した際、各画像の位置がずれてしまう。今回は、固定アームの強度がダメダメで、そよ風が吹くだけでフラフラして、撮影画像の位置合わせ作業が入ってきてますます面倒なことに。

方法はなんでもいいから、自分 + デジカメ + 三脚が小さく写る状態を実現するよう心掛けたほうが後で楽。
  • ゴイスな望遠レンズを使って遠くから撮影するとか。
  • 撮影する瞬間、三脚の後ろからミラーボールの後ろに、マッハで移動するとか。…ちゃんと撮影できたのか確認する手間が増えるけど。
  • 三脚の足と同化して見えるような、JoJo立ちっぽいポーズを新発明しながら撮影するとか。
なんだか馬鹿馬鹿しいけど、一番綺麗に写る部分に、自分の姿がいつも写ってるのは、画質的にもったいないので。

画像編集作業のアレコレをメモ。 :

まず、画像の回転や左右反転をする。ミラーだから左右逆なので反転させないと。今回は、 _XnView の「高画質JPEG変換」を使って済ませた。まあ、この作業は、どこの段階でやっても構わないですけど。

撮影画像の位置合わせ。 _Fusion Free版 を使った。ずらした分、周辺に黒枠ができることに注意。…もし、三脚やミラーボールがガッシリ固定されて、ブラケット撮影時も位置が全然ずれてないなら、この作業は必要ないはずですが。

画像を GIMP等でトリミング。ミラーボールがまるっと入った、縦横幅が同じ画像 = 正方形の画像を作る。
4方向x3露出の例、トリミング後

ここからは、Hugin で作業。

トリミングした画像群を、Hugin で読み込む。ミラーボール撮影画像の場合、「Equisolid、等立体角」を選ぶのだと思う。水平画角は適当で。どうせ後で自動調整されるし。180〜360とか打ち込んどけばいいのでは。わからんけど。

Hugin 上で、露出の違う画像をまとめて「スタック」にしておく。スタックを使うことで、「この画像達は、撮影位置は同じで、露出が違うだけだよ」と Hugin に教えてやる、らしいですが。スタックの指定の仕方は、画像タブで、画像を複数選んで「新規スタック」だったかな…。

とりあえず「配置」をさせてみる。邪魔なものがたくさん入った状態のプレビュー画像が見れるはず。
  • マスクを設定。邪魔な部分を除外していく。
  • コントロールポイントが足りてなかったら、手作業で追加したり。
  • 「最適化」タブや「露出」タブで、アレコレ選んで最適化。
  • 「カメラとレンズ」タブで、画像ごとに露出(EV)が変わってることを確認したり。

イイ感じになったら、スティッチャータブでスティッチする。本来は Hugin からいきなりHDR画像を出力できるのだろうけど、今回、いくらやっても、まともなHDR画像が出力できなかった。仕方ないので、全画像の再マッピングだけをして出力することにした。「再マッピング: 露出補正なし、普通のダイナミックレンジ」にだけチェックを入れて「スティッチを実行」。
スティッチャー設定

4方向 x 3露出の、再マッピングされた画像群(RGBA、8+8+8+8bit)が出力される。
再マッピング後の画像群

これを、enblend を使って合成する。露出がほぼ同じ4枚(=4方向分)を、1枚にする。
enblend.exe -w -l 29 -o m0.tif 00.tif 03.tif 06.tif 09.tif
enblend.exe -w -l 29 -o m1.tif 01.tif 04.tif 07.tif 10.tif
enblend.exe -w -l 29 -o m2.tif 02.tif 05.tif 08.tif 11.tif

結果、露出が違う3枚が得られる。GIMPで開いて、見た目がおかしいところをレタッチ。
enblendで合成した画像

露出の異なる3枚の画像から、HDR画像を作成。今回は、 _Photomatix Pro 体験版 やら、 _Luminance HDR やらを試した。 _Picturenaut でも作れると思うけど、Hugin が出力した再マッピング画像は、どうも細かいところで位置が合ってない感じなので、位置合わせをしてHDRにするソフトのほうがいいのかなと…。

HDR画像からLDR画像を作るのは、Picturenaut や Luminance HDR を使った。

ということで。 :

どう考えても面倒臭いです。馬鹿馬鹿しいです。

ボタン一発で360度をブラケット撮影できる低価格なカメラ or 撮影機材とか出てこないかな。まあ、低価格ではミラー方式になって低画質、てなことになりそうだけど。

2017/03/19追記。 :

DropboxのPublicフォルダが死んだので自宅サーバにファイルを置き直し。

2013/05/24(金) [n年前の日記]

#1 [cg_tools] IBLレンダリングについて実験中

せっかくHDRIを作ったのだから実験を、と。

Shade 12 でIBLレンダリング。 :

本当にIBLレンダリングできているのか自信ないけど。
ShadeでIBLレンダリング

Shade 12 でIBLレンダリングする場合は、以下のような設定でいいのかなと。
IBLレンダリングする際の設定
  • 背景 → 光源としての明るさを1.0より大きく。
  • 無限遠光源 → 明るさを下げる。影をぼやかしたいなら、ソフトネスを0.0より大きくする。
  • レンダリング設定で、手法を「パストレーシング」に。大域照明を「パストレーシング」に。
何か間違ってるかもしれないけど。でもまあ、見た目は変わってるし、たぶん合ってる…のかな…?

vidroでIBLレンダリング。 :

vidroレンダリングテスト
今現在入手できる版はメニュー項目が英語表記になっていて、設定の仕方がよくわからなかったのだけど。どうにかできた、かもしれず。
vidro IBLレンダリング設定
  • Scene → Volumes を選択。
  • Sky Light の項目で画像ファイルを選択。
本当に合ってるのかな…? 自信なし。

影を落とす方法は、以下の記事が参考になりました。ありがたや。

_Aether 「哀愁の昼休みモデラー」のブログ IBLとオブジェクトの親和
_Aether 「哀愁の昼休みモデラー」のブログ IBLとオブジェクトの親和2

  1. 背景だけをレンダリングして画像保存。背景だけレンダリングするには、Clip設定を使う。Scene → Eye → Clip に 10000ぐらいの値を指定。これで、0〜10000の間はレンダリング対象から除外される。
  2. Clip を 0 に戻して、本番レンダリング。
  3. View → Background → Enable にチェックを入れて、先ほど作成した背景だけのレンダリング画像を指定する。かつ、影だけにしたいオブジェクトを選択して、Background と Compsite Illumination の両方にチェックを入れる。
そんな感じですか? たぶん。
影だけを落とす方法

#2 [zatta] 事故の死者数だけ見て判断を下すのは賢くないと思う

/.Jあたりを眺めてると、未だに、「各発電方法の事故時における死者数のデータ」を持ち出してきてドヤ顔してる人が居るみたいなのだけど…。

結論だけ書きますけど。そのデータ「だけ」眺めてみても、さっぱり役に立たんですよ。

以下は余談。

性質の違いも考えないと。 :

原発事故の特徴として、「広範囲、かつ、長期」に渡って事故の影響が残るという点があるわけで、そこが鑑みられてないのはいかがなものかと。原発に比べたら、他の発電方法の事故は、「局所的、かつ、短期」で終わると言える。 *1 原発は他の発電方法と色々違う面があるわけですが、事故時の性質も違うわけですよ。

そういった、議論する上では基礎知識レベルの部分も見ずに、一方向だけから見た数値データを持ち出して判断を下しちゃうのは、これはもう暴論というか、思考としてあまりに杜撰というか。…ぶっちゃけ、実にいやらしい手口ですなあと。似非科学だのインチキ健康食品だのでよくやるアレですよね。全体を見ず、一部にだけ注目したデータを持ち出して、相手をその気にさせるやり口。詐欺師の手口ですわ。 *2

どうしても数字で比較したいなら、事故が完全に収束するまでにかかるコストを並べて比較するのが妥当じゃないかと。
  • 死者数云々も、遺族に対する補償金等の形で組み込めるはず。
  • 農作物に対する補償、除染費用、長期に渡ってそこに住めなくなった人達をどうにかするためのコストやらも、計算に含められるはず。
「全部でいくらかかるのか」で計算すれば、範囲と期間まで網羅した、つまりは事故の性質の違いまで吸収した、全体を眺めた数字が得られるだろうと予想しますが。

もっとも原発関係は、金がかかるはずのアレコレを計算に含めないよう画策するのが常なので、出てきたデータの中身を精査して、抜けがないか粗探しをしないと、本当のコストが見えてこないあたり面倒臭いですが…。

そもそも、廃炉作業すら未来の新技術をあてにしてる状態なのに、正確性を持ったコスト計算ができるのかね、という気もしてきたり。

そんなことを考えていくと、原発関係で何かしらの具体的な数字を元に、切れ味のいい主張を出してきた時点で、「ああ、コイツは俺を騙そうとしている」と疑ってかかるのが正解のような気もするのでした。現状が分かってる人なら、「おそらくは」とか「たぶん」とか、実にぼんやりした言い方しかできないはずなので。低線量被ばくの問題もそうですけど、「分かってない人ほど分かってる振り」をして「本当に分かってる人ほど『分からない』と答える」のが現状の原発関係のアレコレ、ではあるまいかと。や。わかんないですけど。

ポイントは「とばっちりがくるかどうか」なのだと思う。 :

これからちょっと酷いこと、脈絡のない思考を、書き留めておきますけど…。

原発が許容されないのは、事故発生時、一般市民に対して「とばっちり」がくるから、ですよね。どうして原発を田舎に建てるのか。事故が起きても、都会はその被害から免れたいからで。電力の利用者側は、「何か問題が起きるとしても、俺には関係ないところでやってくれるなら、別に構わんよ」と常に思ってる。

原発は、今まで「とばっちり」は来ないだろうと思われてた。田舎に作っとけば大丈夫だろ、被害を受けるのはどうせ田舎者だけだ、俺達には関係ねえやと。もちろん、知識のある人達は、自分達にも「とばっちり」がくるとちゃんと分かってたから反対してたけど、ほとんどの人は無知だったので、「とばっちり」はないと信じ込んでた。

でも、事故が起きて、「とばっちり」があるのだと分かった。おいおい、話が違うじゃねえか。俺が口に入れる水や魚にまで毒を入れられるなんて聞いてねえよ。だったら原発はねえわ。

…という話なのだろうと思うわけですよ。

今後、世間様はそこらへんを多少考えて、各発電方法の是非を考えていくのだろうけど。そこに、事故の死者数データを持ち出してみても、意味ないよなと。大半は、「現場がどうなろうと知ったこっちゃねえ」「俺にとばっちりが来るかどうかが問題なんだよ」と思ってるんじゃないかと。事故の死者数なんて気にするのは、よほどのオヒトヨシぐらいなもんだろうと。…まあ、そこにオヒトヨシしか居ないなら、見事に騙されてくれるのでしょうけど。

それはともかく。その「とばっちり」云々を逆に考えると、事故が起きても敷地内だけで影響が収まる原発が発明されたら、原発は肯定されるだろうなと予想するのです。極端な話、敷地内の全員が即死する、トンデモで恐ろしい仕組みだったとしても、そこから外部に影響が出てこないなら、世間様は原発を許してしまうだろうと。

まあ、そんな技術・設計は、今現在存在しないわけですけど。ただ、目標地点としては設定できるはずで。いかにして「とばっちり」を減らす仕組みを実現するか。そこが達成されていくかのように嘯いていけば、原発は「アリ」になる。だから、原発政策を継続していきたいなら、そのあたりが目標として見えてくる方針を打ち出さないと。そうじゃないと世間様が、「そういう仕組みなら、まあいいか。俺には関係なさそうだ」と思ってくれない。

でも、ベントフィルタつけたくないとか、活断層の上にある原発を使い続けたいとか、そういうこと言われちゃったら、いくらなんでも反対するしかないですわ。「とばっちり」を減らす気ゼロじゃん。わけがわかりませんよ。本当に原発政策を続けたいと思ってんの? 続けたいならポーズぐらいは取れと。建前すら守る素振りを見せないって何だソレ。…まあ、アイツラ、福一事故を、自分達には関係ない出来事と思い続けてるから、そういう主張をするのでしょうけど。「チェルノブイリは俺達に関係ない」という思考が、「福一事故は俺達に関係ない」に変化してるような気がします。

結局、「どこか遠い場所で起きてる、自分達には関係ない出来事」と一度思い込んでしまったら、状況改善するために役立つ前例やヒントも見事にスルーしちゃうのだろうなと。まあ、原発に限らず、なんでもそうなんでしょうけど…。

*1: 「局所的」「短期」という見方は、あくまで、原発と比較したら、の話ですけど。どの発電方法も事故時は大変なことになるはずなので、局所的だの短期だのそういう言葉は心理的に出したくないのですが。しかし原発だけは、事故が起きた後の展開が、あまりに突出して違い過ぎるので、原発と比較したらどの発電方法もそういう言葉を出すしかなくなるわけで。
*2: まあ、自分も他人のこと言えないけど。僅かな事例からトンデモ総論捻りだすとかよくやってますから。ずる賢い人間は意図的にソレをやるけど、頭が悪い人間も無意識にそういう思考に陥っていくから性質が悪いですね。自分も含めて。

2013/05/25() [n年前の日記]

#1 [windows] ActivePerlをアップデート

環境は Windows7 x64。 5.14.2 build 1402 から、5.14.4 build 1405 にアップデート。ActivePerl-5.14.4.1405-MSWin32-x86-296746.msi をDL。

上書きインストールできないかなと思ったけど、なんか色々と面倒なことになるらしいので、一旦アンインストールしてからインストールすることに。

アンインストールする前に、インストール済みモジュールの一覧をメモ。ppm を使う。
ppm query * > hoge.txt

最初、単に ppm と打ち込んだらGUI版ppmが起動して面食らったり。ActivePerl の ppm は、標準でGUI版になっちゃってるのだな…すっかり忘れてた…。ppm-shell と打ち込めばCUI版が起動する。

インストール後も同じように、インストール済みモジュールの一覧をテキストファイルに出力して、 _WinMerge で比較。

以前は以下のモジュールを入れてたらしい。
perltidy
Jcode
HTTP-Server-Simple

#2 [windows] phpをインストール

環境は Windows7 x64。php-5.4.15-Win32-VC9-x86.zip をDL。解凍して C:\php\ を作ってコピー。以下を参考にして作業。

_PHPインストールと初期設定(Windows)
_HTTPサーバーにPHP5を導入しよう

以下のように各行を指定・修正・有効化。
04WebServerを起動。サーバ設定 → CGI、SSIの設定 → php の項目を追加して設定。

以下の内容を phpinfo.php として、04WebServerのドキュメントルートに保存。
<?php phpinfo(); ?>
ブラウザで http://localhost/phpinfo.php を開いて動作確認。

500が返ってきた。うーん。

_PHP: CLI と CGI - Manual
PHP 5 では、CLI および CGI のファイル名にいくつかの変更があります。 PHP 5 では、CGI版は php-cgi.exe に変更されました。 (以前は php.exe) CLI版はメインディレクトリに 置かれるようになりました。(以前は、cli/php.exe))

PHP: CLI と CGI - Manual より

なるほど。php.exe じゃなくて、php-cgi.exe を設定。動いた。

2013/05/26() [n年前の日記]

#1 [prog] XAMPPをWindows7 x64にインストールしてみたり

試用してみたいCMSがあるのだけど、どうもMySQLとやらが必要らしくて。その手の実験環境を手っ取り早く揃えることができるらしい XAMPP をインストールしてみようかと。環境は Windows7 x64。

_XAMPP てのは、以下をまとめたパッケージ。 これさえ入れちゃえばWeb開発はバッチリ! ということらしい。頭文字を並べて、XAMPP と呼ぶようで。

_apache friends - xampp for windows から、xampp-win32-1.8.1-VC9-installer.exe をDL。実行。インストール先フォルダは C:\xampp で。ちなみにインストール時、「Windows Vista/7/8 は、C:\Program Files あたりにインストールするとドハマりするぜ! やめとけ!」とダイアログでわざわざ警告された。親切だな…。

XAMPP Control Panel を起動すると、各サーバをスタートさせたりストップさせたりできる模様。とりあえず、Apache と MySQL を Start。 _http://localhost/ をブラウザで開けば、ページが見れる。

htmlファイル等は、C:\xampp\htdocs\ 以下に置いて実験する。

初期設定。 :

ポート番号について。 :

場合によってはポートの80番その他を既に使ってしまっている時もあるそうで。

_ポート番号の確認 - XAMPPの使い方

C:\xampp\install\portcheck.bat を実行して、C:\xampp\install\portcheck.ini の内容をチェックすれば、既に使われてるかどうかが分かるらしい。もちろん、Apache等動かしてる状態で実行すれば「BLOCKED」になるけど。

バーチャルホストやhostsファイル。 :

Windows7 x64 上で、バーチャルホストを使おうとして hosts ファイルを書き換えるときは、若干注意が必要らしい。

_hostsファイル(Windows7 64bit版)|まりっくのブログ
現在SP1のWindows7のnotepadもいつも間にか64bitアプリ化されたようで、もはやsysnativeへのアクセスは不可能である。で、現在の私の環境では結局Windows\System32\Drivers\etcのhostsファイルが使用されていた。つまり32bit版と同様であった。

hostsファイル(Windows7 64bit版)|まりっくのブログ より


_64bit版Windowsのhostsファイルって、どうなってんの? - 銀の鍵 (The Silver Key)
_VirtualHost(バーチャルホスト)の設定 - XAMPPの設定 - Web77
_windows7のXAMPPでバーチャルホストの設定をする - YATのBLOG

「sysnative」という単語が書いてある解説記事は現状と合ってない、ということで。

phpMyAdminを最新版にしようとしてハマった。 :

面倒臭がって、4.0.2のファイルで上書きしたら、アイコン表示がめちゃくちゃになった…。面倒臭くなって、もう一度 XAMPP を再インストール。

MySQLから取り出した文字列が文字化け。 :

以下のページを参考にして、php.ini や my.ini を変更。改善された。バージョンによって記述が違ってるらしいので注意。

_php.iniファイルの確認と修正 - XAMPPの使い方
_XAMPP on WindowsでMySQLの文字化け対策: T-1000の日記

phpMyAdmin 上でテーブルだの何だのを作成する際に、照合順序で utf8なんたらを選んでおかないと、phpMyAdmin 上でも文字化けするっぽい。

#2 [prog] CMSを3つほど試用

導入を検討してる場所・相手先は、 という制限があるので、 という条件を満たしそうなCMSを探したり。

MODx は、エクスポート(静的HTML生成)しても、各ページへのリンクが妥当な相対パス指定になってくれなくてダメだった。

AD-EDIT3 は、そもそもWindows上では動作しなかった。管理画面すらまともに開けず。Firefox上では、何かしらのhtmlを表示しようとするたびに、「ダウンロードする?」と尋ねてくる。どうやら *NIXサーバ上じゃないと動かない模様。

Drupal6、Drupal7 は、何か変更するたびにやたらHDDがガリガリ鳴ってとても不安な上、HTML Export モジュールを導入しても、0byteのhtmlしか出てこない。元々、静的HTML生成に未対応のCMSなので仕方ないのかもしれない。

2013/05/27(月) [n年前の日記]

#1 [zatta] どうして日本人は「タイトル」をつけられないのだろう

Google Play のアプリレビューを眺めていたら、ほとんどの日本人がまともなタイトルをつけていないことに気付いてしまい、なんだか考え込んでしまったり。

どうして日本人は、これほどまでに、「タイトル」「件名」をつけるのがヘタクソなんだろう…?

もちろん自分も、他人のことは言えないのだけど。この日記ページも、件名に関してはボロボロだし。や、内容もボロボロですけど。

日本人は、義務教育期間中に、そのあたりの訓練を一切行ってないということだろうか。いや、仮に行っていたとしても、その訓練で身に着けた能力は活かされないか。誰もが、学校で勉強したことは、日常生活の中で全く使えないと思い込んでるだろうから、教室を出た瞬間、自分がそんな能力を持っていることを忘れちゃうよな。

英語圏の人達の投稿を見ると、適切なタイトル・件名がつけられている事例が多い印象があるのだけど。英語圏では、一体どんな教育・訓練内容を用意してるのだろうか…。

#2 [zatta][windows] どうして日本人は方眼紙大好き民族なのだろう

_ Excelをレイアウトソフトとして使ってしまう悪例について言及してる記事 を眺めていて、不思議に思ったり。グリッド / テーブル / マス目を欲してしまうのは、日本人という民族の性なのだろうかと。

まあ、そのあたり、Wordが使いづらいからExcel使うんだYO! という人が多いだけ、なのかもしれんか…。

どんなソフトがあれば、Excelを使わずに済むのだろう。 :

Word が、細かいテーブルをたくさん作って、全体グリッドに沿って配置する機能を推してたら、Excelで無理矢理レイアウトをする事例は減ったかなと想像するのだけど。そういう機能を要求するのって、日本人だけなのだろうか…。

見た目は Excel とクリソツだけど、表計算ソフトじゃなくてDTPソフト、てな感じのソフトを作ったら、日本国内で大ヒットするのだろうか? Excelでレイアウトする際に使う機能ってそんなに多くないだろうから、作れないことはないだろうと思うけど。どうせ、セルの結合とかそのくらいだよね…? いや、セルの結合って、意外と実現が難しいか。でもないか。HTMLのテーブルでも、やれてるのだから、わざわざ土台から作らなくても、流用できるアレコレはありそうな気もする。

それにしても、どうして日本人はテーブルレイアウトが大好きなのだろう…?

内容を変更しても、他の要素との相対位置 ―― 縦横の配置が狂わないし、幅を自動調整してくれるから、だろうか? いや、幅は、各自手作業で調整してる事例が多そうな気もする。だとすれば、各要素を縦横に自動で綺麗に並べてくれるあたりが好まれてしまうのかな?

であれば、Word等も、配置・alignの機能さえ充実してれば、Excelを使う必要はなくなるのかもしれないか。この要素と、この要素は、縦に綺麗に並ぶのだ、みたいな属性を持たせておいて、そういうレイアウトを…。まあ、一々そういう設定をするのは面倒臭いだろうから、「ここからここまでの要素はグリッド上に配置」みたいな機能でもあればいいのかな。デスクトップアイコンの自動整列機能に近い感じで。

行で管理するのではなくて、セルで管理してるように見せかける必要もありそうな。内部では、セルと呼ばれる段落、あるいはテキストボックスとして扱われるのだろうけど。

全体にグリッドを表示・スナップする機能は、Word 98 あたりでも既にあった気がするのだけど。Word 2007 で確認してみたら、グリッド線=横線のみ、に見えた。機能を削っちゃったのかな…? それとも隠してあるのだろうか…? 原稿用紙設定、てのもあるけれど、それはちょっと違うな…。

まあ、そういったことをいくら考えてみても、「Excelあるからいいじゃん」と言い出す人が出てきて、さっぱり解決しないのだろうけど。

Excelは、「表やセルの見た目に関して、バージョン間の互換性を持たせませんよ」「例えば印刷結果はバージョンによって全然違うけど、最初からそういう仕様として作ってますよ」「これは表計算ソフトで、DTPソフトではありません」とMicrosoftが明言してるソフトなので、Excelだけあっても全然ダメダメなんですけどね。あくまで「表計算ソフト」。印刷文書を作るためのソフトじゃないわけで。

Wordで本当に作れないのか、試しに実験。 :

例えば。

_美文書作りには「方眼紙」シートを使う:日経ウーマンオンライン【仕事が早くなるエクセル術】

上記のページで示されてる作例。これは本当に、Wordその他で作れないのだろうかと。

_Word 2007 で試してみた。 SkyDriveに置いてみたけど、見れるのだろうか…? それはともかく、フツーに作れてしまった。まあ、この程度なら当たり前か…。「表」を作って置いてることに違いはないし。

Word 2003、2007は、PDF出力するとなんだか変な線が入るあたりが少し気になった。CubePDFでPDF化すると、そういうゴミは入らないのだけど。

さておき。表の各列幅を調整するあたりは、Word を使うほうが、はるかに自由自在で。その点 Excel は不自由極まりない。不自由だからこそ、「方眼紙シート」なんてアホなことを始めるのだろうけど。

人間、枠だの制限だのを与えてしまうと、その枠の中だけでどうにかしようと馬鹿げた部分最適化を始めてしまう。その一例が「方眼紙シート」なのだろうと思えてきた。

ただ、Wordのデメリットにも気付いたり。
  • Excelは、セルの書式設定を指定できる。例えば、売上の列に「通貨」を指定すれば、「54000」等、数値を打ち込むだけで表記を「\54,000」にしてくれる。しかし、Word は、セルの書式設定が指定できないようで、手打ちで「\54,000」と打ち込まないといけない。実に馬鹿馬鹿しい。修正作業が入ってきたら大変。
  • Excelは、オートフィル機能があるので、少ない手順で大量のデータを入力することができる。Word ではソレができない。全部手打ちかコピペするしかない。
  • Excelは、セル内容を使って計算結果を出せる。Word では、できない。
もしかすると、Excel と Word を連携することで、上記の問題は解決するのかもしれないけど。Wordだけでは、どうにかできそうにないなと。…まあ、解決策を自分が知らないだけかもしれないですが。とりあえず、「入力作業」「データの活用」という面を考えると、Word はちょっとアレですなと。…当たり前か。ワープロソフトだもの。

ついでに、Libre Office (Writer) 4.0.2.2 でも同じ作業をしてみたけれど。こちらは、表のセルに対してフツーに書式設定ができるどころか、合計を求める計算まで、まるで表計算ソフト並みにフツーにできてしまった。Libre Office、スゲエ。しかも無料で使えるし。惚れた。…さすがにオートフィルはできないみたいだけど。それと、表内で文字列を縦書きにする方法が分からなくて困ったり。セルを選択して右クリックして「表」を選んで、とかフツー分からないですわ。

ちなみに、Libre Office Draw でも試してみたけど、これはさすがに無理だった。表の中を縦書きにする方法が分からん…。

とりあえず。Word にしても Libre Office Writer にしても、マス目を作って埋めていくというレイアウト方法ができるようには見えず。Excel でテーブルレイアウトを使うやり方に慣れ過ぎてしまうと、やはり Word等は使いづらいのだろうかと想像を。

階層・入れ子より、テーブルレイアウトのほうが分かりやすのだろうか。 :

前述の作例とは関係ない話だけど。

複雑怪奇なレイアウトをやろうとすると、
  • 各要素が奥から手前に積み重なって表示されている「階層」「レイヤー」「Z軸」「奥行」を意識したり
  • 何か大きな枠組み、例えばグループ化などで「入れ子」にしていくことを意識したり
そこらへんを作業中にイメージできないと厳しい場面も出てくるかなと思うのだけど。一般の人は、このあたり、あまりイメージできないのかなと邪推したりもして。そういう方々は、全てがマスの中に納まってるはずのテーブルレイアウトが ―― マスをクリックすればそこに何かあるはずだし、マスを空欄にすればスペーシングもできるはず、というやり方が分かりやすいのだろうかと。

各アプリの見た目だけでは、階層や入れ子がそこにあるとは分からないので、イメージしづらいのも仕方ないような気もする。かといって、それらを示す情報を表示してしまうと、WYSIWYGから離れてしまうし。

WYSIWYG…。そうか、なるほど。Excelは、WYSIWYGではないのに、WYSIWYGと勘違いされてるあたりが問題なのだな。

だとすれば、Excelの見た目と印刷結果が、著しく乖離する仕様にすれば、状況改善に繋がりそうな気もしてきた。中途半端に、見た目と印刷結果を一致させてるから、勘違いする人が出てくるのだろうと。

Word 2007でも方眼紙のようなグリッド線を出せるらしい。 :

_121ware.com > Word 2007で方眼紙のようなグリッド線を表示する方法
_☆ノートや方眼紙(ワードのグリッドの設定) - Office2007(Word2007 Excel2007)を楽々使おう!

わかりづれー。そんなところにあったのか…。

グリッド線を表示して、テキストボックスをガンガン挿入して配置していったら、Excelレイアウトっぽいことができた。これでいいんじゃないのかな…。

3日後には、やり方忘れてそうな予感。

Microsoft Publisherという選択肢はどうだろうか。 :

触ったことないからさっぱり分からんのだけど。印刷前提のチラシ等を作るならイケてるらしいとも聞くわけで。

_Microsoft Publisher | デスクトップ パブリッシング ソフトウェア - Office.com
_Microsoft Publisher - Wikipedia
_PowerPoint/Illustratorユーザから見たMicrosoft Publisher - 情報科学屋さんを目指す人のメモ(FC2ブログ版)

相手先にファイルを渡して、眺めてもらったり、修正してもらう、みたいな使い方は、普及率の問題で無理だろうけど。

体験版、ないのかな…。考えてみたら、Microsoft Office の製品群って、体験版は皆無だよなあ…。システムにがっちり食い込んでくるから、迂闊にインストールさせられない・インストールしたからにはOSと一蓮托生、等の事情もあって、体験版なんか作れないのかもしれないけど。

#3 [cg_tools] Scribusをインストールしてみたり

_Scribus - Wikipedia

フリーのDTPソフト、という扱いでいいのかな…? Windows、Mac、Linux等で使えるらしい。とりあえず、 _Scribus.net から scribus-1.4.2-windows.exe をDLしてインストールしてみた。

_DTPページレイアウト・ソフト「Scribus」の使い方 を参考に、日本語を使えるように設定。

以下の記事を参考に色々触ってみたり。

_はじめての Scribus - オープンソースの DTP ソフト | すぐに忘れる脳みそのためのメモ
_ワード感覚で小冊子が作れるオープンソースのDTPソフトウェア『scribus』

今のところ、なかなかイイ感じ。テキストフレームを回転させて感心したりして。ちょっとしたチラシ作成なら使えそうな予感も。ただ、縦書きは使えないらしい。海外製ソフトだから当たり前か…。

普及率やファイルフォーマットの面を考えると、導入するのもどうなんだろうという気もするけど。まあ、pdfでエクスポートして、印刷物用のデータが最終ファイル、という形で扱えばいいのかな。それに、フリーソフトなのだから、作業に使いそうなPCに、手あたり次第にインストールしちゃえばどうにかなるかもしれず。

2013/05/28(火) [n年前の日記]

#1 [anime] 刀語7話を視聴

ノイタミナ枠で刀語というアニメが放映されていて、毎週楽しく見ていたり。パッと見、まんが日本昔ばなしに出てきそうなほんわかした絵柄 / キャラクターデザインなのに、超絶カッコイイアクションシーンが次々と出てきて、なんだかクラクラするあたりがイイ感じ。なんとなくだけど、 そのあたりを連想したりもして。「その絵柄でソレやっちゃうんだ…スゲエ」みたいな。

7話は、シリーズ中で重要な回だったらしく。田中基樹さんというアニメーターさんが、コンテ・演出・作画の全てを頑張った回だそうで。ところどころに作家性が垣間見える、屈指の出来のように思えたり。集団作業で作られるはずの商業アニメの中で、スタッフの個性が見えると、作品の魅力が増しますな、と再認識。

おそらくはお遊び感覚も多少はあるのだろうけど、TVゲームのよくあるレイアウトを積極的に導入していたあたりに感心したり。散々見慣れているはずのレイアウトなのに、あえてアニメでソレをやると、新鮮さを感じてしまうのは何故だろうと考え込んでしまったりもして。

考えてみれば、今の日本のTVアニメは、毎週の放映にどうにか間に合わせるために、リミテッドアニメと称する手抜き作画を積極的に導入したその延長線上にあるのだよなと。周囲からは紙芝居と揶揄されながらも、その枠の中で、できる範囲で魔改造を繰り返しているうちに、当初のソレとは随分違った、独特な表現を多数身に着けてきた経緯があって。

TVゲームも、ハードウェアスペックの足りなさをカバーすべく、徹底した記号化表現や、そのハードで実現可能なレイアウトの追及を続けてきて、結果、他のメディアではなかなか見られない、実に独特な見た目になっていった経緯がある、と言えそうな。

アニメとTVゲームは、制約の中でその形になってしまったという共通点があるのだなと。その、独自進化してしまった最終結果だけを取り込んで、メディアに合わせた更なる魔改造をしてみることで、新たな表現手法を得られるのではないか…。そんな予感をさせるシーンがたくさん盛り込まれていた興味深い回だったような気もしたのでした。

要するに。刀語アニメ版、面白いです。

#2 [anime] 手描きの絵に3DCGを載せるのってまだ難しいのだろうか

進撃の巨人アニメ版関連の記事を眺めていたら、「ナントカ機動装置なるものの設定が原作より細かくなっちゃった」「アニメーターさんが悲鳴を上げている」てな話を見かけたのでした。ところが、その記事のコメント欄で、「ナントカ装置は3DCGモデルが作ってあるんですけど…?」みたいな話も見かけたわけで。

素人考えでは、「3Dモデルが作ってあるなら、手描きの原画 or 仕上げ後の画の上に、そのモデル載せればいいじゃん。なんでわざわざ手で描いてるんだろう?」と思ってしまうのだけど。一体何が障害になって、ソレができない状態になっているのかなと。

マルチョンでやれないのかな。 :

風の谷のナウシカにおいて、巨神兵の作画を庵野氏が担当してたわけですけど。庵野氏は、人物を描くのがとにかく下手だったので、最後のあたりは宮崎駿監督が、「もうお前はキャラの顔を描くな! マルチョンだけ描いとけ! 後で俺が描く!」と怒ってた、という話があって。…宮崎駿監督を原画アシスタントとしてこき使っちゃう庵野さんパねえス。

それはともかく、その、「マルチョンだけ描いとけ!」方式を、3DCGでやれないのですかねえ…。

例えば、ベルセルク劇場版では、3DCGで出力した画の上に、アニメーターさんが手描きで修正作業をしていったらしいですけど。ソレの逆はできないのかなと。

手描きで描かれた何かしらの上に、3DCGを載せてく作業って、その作業担当者に、技術をさほど要求しないですよね…。
  • 3DCGモデルは、スーパーモデラーの方が既に作ってるから、モデリング能力は要求されないし。
  • 自分で絵を描くわけでもないから、原画を描いてる人達のように高い作画能力を要求されるわけでもないし。
原画に描かれたガイドに沿うよう、3DCGモデルを配置して、場合によっては、せいぜいマスクを切るぐらいなものだろうと。だったら、全コマに対してそれを繰り返す根気さえあれば、誰にでもできる作業じゃないのかと。

でも、そういう作業ができている現場はあまり多くないのかなあ、と。やれてたら、進撃の巨人みたいな話は出てこないであろうと。既にノウハウを持ってるスタジオもあるのでしょうけど、まだ持ってないスタジオも多いのかなと勝手に想像しているのですけど。実際はどうなんでしょうね。

もしかすると、その「マルチョン」「ガイド」のフォーマットが考案されてないのかな、とも。

どういうガイドを描かせるかを、プログラマーなり、3DCGソフトを使ってる人に提案させると、たぶん絵描きさんがゲロ吐きそうな決まりになって、「手で描いたほうが早い」と言われて、結局誰も使わないであろう予感も。

なので、絵描きさん側から提案してもらわないとマズイだろうなと。実際にスイスイと手を動かしてみて、「ここに3DCGがポンと入ったら楽だよなー」と夢想できそうな、そういう形のガイドじゃないといかんような気がしたり。…それって、どういうガイドなんだろう? 自分は、絵描きとしての能力が低いので、今一つ想像できないのですが。

3DCGを扱う側からすれば、x,y,zの角度、大きさ、画角が瞬時にわかるガイドじゃないと困るでしょうな…。最低限、線分がいくつ描かれたら、角度、大きさ、画角、この3つを算出できるのでしょうかね…。線を2本描くだけでもイケないか? という気もしてますが。無理かな。どうなんだろ。

タブレットで、スッ、スッ、と線を引いて。あるいはマウスで、カチカチカチカチ、と数回クリックして。たったそれだけで、その位置に、3DCGモデルがポンと置かれたら楽なんじゃないのかなと夢想するのですが。…既にそういうツールはありそうな気もするけれど。

何にせよ、アニメーターさんが楽できる仕組みが登場することを願うのでした。そんな細かい絵は機械に描かせて、アニメーターさんには、人間様にしか描けない絵を描くことに専念させてあげてほしいなと。でもまあ、何か問題がそこにあるのだろうなあ。

2013/05/29(水) [n年前の日記]

#1 [cg_tools][neta] 手描きの絵の上に3DCGモデルを配置するソレについて夢想

こういうことができたりしないかなあ、とバカ妄想。

操作イメージ


こんな感じにサクサク配置できれば、進撃の巨人のアニメーターさんがナントカ装置をわざわざ手描きせずに済むんじゃないのかな…。でもまあ、今時の3DCGソフト ―― アニメ制作の現場で使われるソフトなら、きっと何十万円もするのだろうし、こういうことできんじゃないの? とも思いますが。実際はどうなんだろう。

2つの疑問点。 :

前述のgifアニメを作ってて、疑問も湧いたり。

コレ、技術的に可能なんですかね…?

例えばコレが手描きのパース図なら、4つの点座標から、消失点を2つ+モデルの中心点、を求めるところまでは可能でしょうけど。
消失点は2次元座標の計算でも求められるはず
パース定規機能がついてるお絵描きソフトなら、似たようなことができた記憶もあるし。ただ、2点透視ならともかく、3点透視で描画したいなら、線分の指定がもうちょい欲しいのではないか、3つ目の消失点も必要になったりしないかと。…まあ、そこは、2点透視+画面の回転(Z軸の回転?)で済ませちゃう、という制限を設ければなんとかなるのかな? しかしどうせなら、3点透視の見た目にしたいですわな…。そもそも手描きのパース図を描く時の手順を、いかにもな3DCGの計算に変換できるのかしら? どんな計算をすればいいのやら。

もう一点。コレ、絵描きさんにとって、本当に楽な指定の仕方になるのかねえ? と。

絵描きさんにとっては、まだ箱を描くほうが楽だったりしないかと。ただ、おそらく、箱を描いて指定するなら、厳密な描き順を要求されそうな予感も。どの線が「前」なのか。どの線が「奥行」なのか。そういうところを描き順で規定するはず。すると途端に面倒臭くなる。やってられないよなと。

ひょっとすると、3DCGを専門にやってる人ならば、「まだこういうマルチョンのほうが俺達楽だよ」「こういうガイドが描いてあれば、全キャラのアイテムを逐一配置していくのも夢じゃないね」てな別の解もあるのかなと想像したりもして。自分は3DCGに詳しくないので、イメージが湧かないですが。

技術的にできるのか。手順として本当に楽なのか/使ってもらえそうなのか。そのあたり怪しいなあ、と思ったのでした。

後者はともかく前者については、プログラマーに対するクイズみたいなもんですな…。こういう仕様を実現してくれと言われたら、自分は馬鹿だから頭抱えますけど。どうやればいいんだ、コレ。

実写と3DCGの合成テクニックが流用できないものかと。 :

_C4D 3Dオブジェクトを実写に合成したいのだ… プラグインPhotoMatchがなくても、ある程度カメラを調整: 村人とC4D
_C4D 3Dオブジェクトを実写に合成したいのだ… 消失点が背景画像の外にある場合はどうするんだい…: 村人とC4D

上記の記事では、実写と合成するための座標軸の設定を、手作業でやってるわけですけど。コレを自動でやれたら…基準になる矩形を描くだけで座標系をぐるりと合わせてくれたら、随分楽になりそうだなと夢想するわけですよ。…自動的にやってくれるプラグインとか無いのかな。いや。単に自分が無知なだけで、当たり前のように存在してそうな気も。

実写合成の場合、マッチムーブだかトラッキングだか、そういう技術が使われるそうですけど。そういうのって、アニメ制作にも流用できないんですかね…。と思ってググってみたら。

_カメラトラッキングからマッチムーブまでをAfter Effectsで自動処理するプラグイン:CameraTracker on Vimeo

凄いな…。コレ、手描きアニメには使えないのかな。だけど手描きアニメって、カメラで撮影したような厳密な絵にはなってないから、おかしな結果になったり…いや…どうなんだろう…。

余談。CLIP STUDIO PAINTを触ってみて。 :

前述のgifアニメの元画像は、CLIP STUDIO PAINT で作ったのですけど。3DCGモデルをD&Dして回転させた際にゲンナリしてしまったり。角度で見え方を調整していくのはやはりシンドイなと。ココにこの方向で置きたいのに、何故そっちを向く…!? みたいな。このあたり、何かいい手はないものかと。

もっとも、CLIP STUDIO PAINT のソレは、あくまで下絵の参考用として描画するソレだから、3DCGをポンポン置いてく作業を改善してもあまり意味は無いような気も。大量の画像を扱わなければいけないソフトでは、そういう改善も必要になるのかもしれないけど。

そういや、コミPo!の体験版を触った時も、似たような違和感があったような。漫画のネーム描く時に、こんな手順を要求されるかなあ? フツーはマルチョンでやるもんじゃないの? みたいな。

一時期、3DCGソフトが流行りそうだったのに今一つ流行らなかったわけですけど。なんかこのあたりも絡んでそうな気もするのでした。フツーの人は、目の前の物体が、x、y、z軸上でどのくらいの角度で置かれているか、なんて考えながら生活してないわけですし…。

#2 [zatta] 国連科学委員会ってどういう組織なんだろう

_原発事故 国連委「健康影響考えにくい」 NHKニュース

ニュースを見て、頭の中に「???」が。 前提知識を持ってないので、何が何やら。

_原子放射線の影響に関する国連科学委員会 - Wikipedia には、核実験の停止要求をかわすために設立された組織、という記述もあるけど、Wikipediaだからなあ…。他の解説をあたってみないと、なんとも…。

とりあえず、これから内容を検討して9月以降に正式な発表をする、と書いてあるから、その時出てくる内容を眺めるほうがヨサゲですかね。

それにしても。権威や肩書にめっぽう弱い日本人という民族の性質をしっかり把握した、巧みな手を打ってくるものだなと、いたく感心してしまったり。コレ、発表内容の信憑性とか、もうどーでもよくなっちゃうよな…。仮に、発表内容を精査して、「アレレー? おかしいぞぉー?」と言ってみたところで、世間の皆様は「バカもん! あの国連様が仰っておられるんだぞ。間違ってるわけないだろーが!」と思考停止して怒鳴り散らして議論にならんだろうなと。いやはや、権力を持ってる方々には敵わんな。こういう手を打てるのか。参った参った。てなことを思ってしまったりもして。

何にしても、今から自分達にもできることと言えば、データをコツコツと貯めていって、全体の推移をのんびりと観察していくことしかできないわけで。どんな発表がなされても、やること・やれることは変わらないのだから、まあいいや、という気も。

データさえ残しておけば、そこで何が起きていたのか、後世の人達が検証できる。もし、データが無ければ、「お告げ」が正しかったのか、間違ってたのか、その検証すら不可能になる。「危険だ」と主張する人も、「安全だ」と主張する人も、主張の正しさを科学的に証明するためには、データを集めていくしかない。だから、今後もサボらず集めていきましょうや、としか。

言い方はアレだけど、こういった調査ができるチャンスは滅多にないのだし。せめてモルモットとして人類の科学の発展に多少なりとも寄与しなきゃ、やられ損というか、被ばく損なので、せめてデータだけでも残して、ちょっとは違う形で元を取らないと、てなことを思うわけですけど。

しかし、日本人って、核関連のモルモットになりっぱなしだなあ…。呪われてるんじゃねえの? そういう意味でも、 _原発神社 作ったほうがいいんじゃないかと…。

他に気になる話をメモ。 :

以下のページが興味深かった。

_速報! 国連科学委員会 福島事故最終報告書 「福島はチェルノブイリではない」: 農と島のありんくりん
_国連科学委員会議長の福島第1原発事故の人体に対する影響の見解: 農と島のありんくりん
_国連放射線影響科学委員会(UNSCEAR)ウォルフガング・ワイス委員長の現時点でのコメント: 極東ブログ

  • 去年の2月ぐらいから出ていた話なので、今になって急に出てきた話ではない。
  • 「事故時の測定データが不足してるので、不確定要素はあるよ?」との言及もついている。
後者の話を聞いて、なんだか信憑性が増してきたなと。本当に分かってる人は、どこらへんが怪しいのか、ちゃんと言及してくれるので…。分からない部分をさっぱり口にしないで「危険だ」「安全だ」と断言しかしない人はあてにならないけど、分からない部分・不明な部分をわざわざ説明してくれる人は結構あてになる、ような気がしますよ。 *1

*1: もちろんそれを「騙しのテクニック」として活用できちゃう人も居るだろうけど、そこまで上手にやってくれるなら、聞いてる側はまず勝負にならない・歯が立たないので、自分的には全然OKです。

2013/05/30(木) [n年前の日記]

#1 [nitijyou] 若干風邪気味

数日前から、鼻水が出たり、咳が出たり、クシャミが多かったりで。風邪だろうか。

まさか、PM2.5が…と思ってググってみたけど、これからの予測は見れても、過去のデータは見れないのだな。ちゃんと記録を残してるんだろうか…。

と思ったけど、 _大気汚染物質広域監視システム(そらまめ君) を見たら載ってた。今一つ地図表示が分かりづらいけど、測定場所ではこの値だった、他はどうだったか知らん、という見せ方をしようとすると、こういう表示にするしかないんだろうな。

あちこち眺めてみたけど。今現在も相変わらず、凄いことになってるんだな…。というか、 _4〜5月はヤベエよ と言われてた。自分、無知でした。

#2 [cg_tools] blender 2.67.1を導入しようとして少しハマる

環境は、Windows7 x64。

_blender.org - Get Blender から、Windows x64版 2.67.1 をDLしてきたり。 _GraphicAll.org から、 Blender 2.67.1 - Fastest build: All CUDA kernels + OSL 版をDLしてみたのだけど。

起動時に、「R6034」がどうとかのエラーが出る…。公式サイト版ですら出てくるのは、参ったな…。

_起動時にR6034 Runtime Errorが表示されてしまいます。 | イーフロンティア に気になる情報が。
・回避方法:

(中略)

 (b)環境変数 PATH に指定されたフォルダーの先に「MSVCR90.DLL 」が存在するフォルダ−があった場合、環境設定から該当のパスを削除する。

起動時にR6034 Runtime Errorが表示されてしまいます。 | イーフロンティア より

自分の環境で which msvcr90.dll を試してみたら、GraphicsMagick、LuxRender が MSVCR90.DLL を持っていて、そこにPATHが通ってた。試しに環境変数PATHから削除。…変化なし。相変わらず blender の起動時にエラーが出る。

_Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x64) からDLしてインストールしてみたけど、変化なし。

色々試してみたけれど。 _Blender 2.67.1 + OpenMP + OSL + CUDA - GraphicAll.org からDLした版なら、エラーは出なかった。コレを使うしかないのかな。最適化とやらはされてないみたいだけど。

とりあえず、公式にも導入されたという FreeStyle 機能を少し試用してみたりもして。Render設定の下のほうに FreeStyle という項目があるのでチェックを入れていけば使える。たしかに、輪郭上に線が描かれる。マテリアル設定を工夫しないと、それっぽく見えないのがアレだけど。

ImageMagick、GraphicsMagick、LuxRenderをアップデート。 :

MSVCR90.DLL についてアレコレ試してた際に、最新版をインストール。古い版をアンインストールしてから新版をインストールした。
  • ImageMagick-6.8.5-8-Q8-x86-dll.exe
  • GraphicsMagick-1.3.18-Q8-win32-dll.exe
  • LuxRender 1.2.1 x64 NoOpenCL Setup.exe
LuxRender は、MSVCR90.DLL を使わなくなった模様。

ImageMagick、GraphicsMagickは、もしかすると x64版や Q16 を入れたほうがよかったのかもしれないけど。何かしらのLLで書いたスクリプトをexe化して他のPCに持っていく際、もしこのへんから必要なファイルを持ってきて混ぜられてしまうのであれば、一番無難な版を入れといたほうがいいのかなと。でも、そういう場面あるかな…。あったとしても、黙ってファイル持ってきちゃうものなのかな…。

#3 [anime][neta] ハートキャッチの青いほうって男の娘だったっけか

夢の中に、ハートキャッチプリキュアの青いほうが男の娘設定になってる少女漫画が出てきて。目が覚めてから、「アニメ版はどっちも女の子だったはずだけど、原作漫画って、青いほうが男の娘だったかなあ…?」と寝ぼけてしまったり。そんなわけあるかい。

こういう感じの話だった、とメモ。何かに使えんかな…無理か…。
赤は、男子が苦手。
緊張して何も喋れなくなり挙動不審にもなる。
引っ越し・転校で不安を抱えていたが…
転入先のクラスには、元気いっぱいで破天荒、
ガサツなようでいて気配り上手な青が居た。
男子への態度についてフォローしてくれた青と、
友達になれそうな流れになり安心するが。
実は、青は、男の娘と判明。
てのが1話。
(雨でびしょ濡れ → シャワー浴びなよ風邪ひくよ
 → うっかり脱衣所のドアを → 股間を凝視 → 悲鳴、
というテンプレ展開で。)

青が男子と知り、避けはじめる赤。
しかし青は何かとまとわりつく。
最後には赤がキレる。
「私、男子の前では何も喋れなくなるの!
 だからまとわりつかないで!」
「え? 今こうして喋れてるじゃん」
「…アレ?」。
友達になろうよとの青の申し入れを受け入れる赤。
てのが2話。

赤は、メガネをかけてる自分の容姿は醜いとか、
真面目すぎる自分が嫌いとか、
それでいて○○を許せないとか、
コンプレックスや固定観念等、その手のアレをたくさん抱えてるけど。
それを青が一つ一つ解きほぐしていく、
てのがその後の話。

青がどうして男の娘をやってるのか、設定を明かす回もあり。

しばらく経って、赤は、
他の男子ともフツーに話せるようになったことに気付く。
青のおかげだ、男子に慣れたのだ、と喜ぶ赤。
青も一応喜んでくれるが、少し複雑な表情。

他の男子から告白される赤。
ついつい青に相談してしまうが、青は大反対。
感情的な反応を見て、赤も反発。大ゲンカに。

なんやかんやあって…

赤は、青を異性としても好きになってることに気付いて(以下略
という少女漫画を夢の中で読みました。とメモ。

黄色いのや、お婆ちゃんを、全部青にまとめたような感じの設定だなと。それと、既存少女漫画のテンプレ展開が並んでるだけで新規性が全然ない夢だったなと。まあ、夢の内容にダメ出ししてもアレなので、それはともかく。

男の娘設定もなんだかアリのような気がしてきた。 :

目が覚めてから、少し考えた。

昔どこかで、「そろそろプリキュアにも男の娘が登場すべき!」という意見を見かけて、「いやいやいや。それは無理だろう」と思った記憶があるのだけど。こうして、夢の中で見たソレを書き留めてみたら、男の娘設定も意外とアリというか、全然イケるんじゃねえの? と思えてきたり。ベタな展開並べてくだけでも、まとめられるんじゃないのかな…。

考えてみれば…。視聴者は、1年間描かれてきたプリキュア娘達に、かなりの親近感を持っているはずだよなと。何十回も敵とバトルをする中で、あるいは学園生活を送る中で、お互いを助け合い、支え合ってきたキャラ達の、性格だの信頼感だのを知っている。

であれば、最後に、そのキャラ同士がラブラブカップルになることは、視聴者にとってはこれ以上もなく自然な展開であり、実に納得できるラストになりそうだなと。…まあ、長期連載の少女漫画なんかは、ほとんどがそういう構成なので、珍しくもなんともないよくある構成ですけどね。

例えば、いきなり出てきたゲスト男子キャラに、プリキュア娘がほの字になっても、プリキュア娘に思い入れを持ってしまっている視聴者としては、「お前は一体何者なのだ。どこの馬の骨ともわからんヤツに娘はやれん!」という気持ちになるだろうと。1〜2話程度では、その男子キャラの魅力・性格等、なかなか描き切れないですし。しかし、1年間一緒に戦ってきたキャラと結ばれるなら、「お前になら安心して娘を嫁に出せる…。どうか娘を幸せにしてやってくれ…」という気持ちになりそうだなあ、と。…まあ、それは、プリキュアをお父さんみたいな気持ちで見ている、大きいお友達ならそうなるんじゃないの、という予測ですけど。

本来のターゲット層である、幼女達はどう思うのだろう? たぶん、「よかったねえ」とニコニコして終わるのであろう気もしたり。途中でちょこちょこと、ラブ展開になるのかな、どうかな、と、うっすら匂わせながらさらっと流してヤキモキさせておいて、最後はやっぱりそうなるわけだから、落ち着くところに落ち着いた、的安堵感を得て満足してくれそうな。一番仲良しだったんだから、そのままカップルになる。コレ、何かおかしい流れかな。全然おかしくないよなと。…もちろんソレを同性同士でやったらギョッとさせちゃうだろうけど。男の娘なら、大丈夫。

ただ、問題があるとすれば、男の娘設定に対して生理的嫌悪感を最初から持たれて、番組を見なくなってしまう可能性がありそうなことで。

しかしそのあたり、成功事例もあるわけで。東映出身の演出家である佐藤順一監督が担当したファイブレインというアニメでは、男の娘キャラがメインキャラとしてフツーに溶け込んでた。NHK教育で全国放送したアニメなのに…。子供達もたくさん見てたのに…。佐藤順一監督のバランス感覚、メジャー性、スゲエですよ。

であれば、今の東映アニメ演出陣も、やれるんじゃないのと。先輩がやってみせたんだぜ? だったら、後輩だって…東映で育ったなら、できるんじゃねえの? と。 *1

本来マイナーだったはずのアレコレを、メジャーなものに転換してみせるあたりは、東映の演出家陣の十八番だし。そもそも、セーラームーンやプリキュアだって、女の子がバトルするという、マイナー作品にありがちなソレを、メジャー作品に見事転換してみせた実例。であれば、男の娘設定も、上手に組み込んで使いこなしてくれるのでは、と期待してしまうわけですよ。マイナー性にどっぷり足を踏み込んで視聴者をドン引きさせる、その直前で踏み止まり、美味しいとこだけ取り込んでみせるバランス感覚を持ってるから、東映アニメを作れてるはずだし。東映の演出家陣なら、やれるやろと。絶妙なさじ加減を見せてくれるんじゃないの、と。

と言っても、プリキュアシリーズにラブ要素は御法度、という方針もあったか…。

そこも、ちょっと違うんじゃないかと思うのだよなあ…。視聴者が納得できるカップリングが実現できないならやめておけ、という話じゃないのかという気もしていて。見ている人達が、そうなるのが自然だよね、そうなってくれて嬉しいな、と思える見せ方・話の流れが作れたら、特に禁止事項にはならないのではと思えたり。

結局は、幼女がニコニコしながら見てくれそうならどれもアリ、なのかなと。幼女が渋い顔しそうならブレーキかける、みたいな。…男の娘設定やラブ要素は、どうなんだろう。渋い顔するのかな。見せ方次第のような気もするけれど。

別に、男の娘プリキュアを見たいわけではないのですけどね…。無理だろうと思い込んでたけど、やろうと思えばできるんじゃないかと、自分はちょっぴり思えてきました、というだけの話でして。

そんなことをもやもやと考えましたよ、とメモ。

*1: まあ、同じ東映出身でも、幾原監督のような事例もあるので。先輩がやれたんだから〜、という言は無茶苦茶な気もしますけど。佐藤順一作品風を目指してたはずが幾原作品風になってしまったら、局に呼ばれて偉い人たちの前で正座させられそう。…や。幾原作品、自分は好きですけど。しかし日曜の朝から、あのノリはキツイ。好きだけど。

2013/05/31(金) [n年前の日記]

#1 [cg_tools] XnViewを2.03にアップデートした

full版をインストールすれば XnView Shell Extension (XnShell) も入ってくれるかと思ったけど、そうではなかったようで。Windows7 x64 上では、XnView をインストールする際に XnShell のチェックは外しておいて、後から XnShell x64版を別途インストールする必要があったらしい。とメモ。

#2 [cg_tools] blenderでIBLレンダリングの実験中

blender 2.67.1 で、IBLレンダリングを試しているのだけど。オブジェクトの影だけを落とす床、のマテリアル設定がどうも上手く行かない。

床のマテリアルを作って、Material設定 → Shadow → Shadows Only にチェックを入れて、その下の選択で Shadow only (「影のみ」)を選べば、影だけが描画される床になるはず、らしい、のだけど…しかし、影がついてるように見えなくて。

Shadow and Distance を選べば黒々とした影が、Shadow and Shading を選べばかすかな影がついてくれるのだけど。Shadow Only では、全然つかないのはなんでだろ。
Shadows Only 無効
Shadows Only 有効 - Shadow and Distance
Shadows Only 有効 - Shadow Only
Shadows Only 有効 - Shadow and Shading
ひょっとして、点光源その他を置いとかないとダメなのかな。環境照明だけでは、影が落ちてくれない…? 考えてみれば、Shadeでも、全体光源を設定しないと影が落ちないもんな…。

光源を置くと言っても、HDRIから向きを算出してやらないとおかしなことになるのでは。まあ、HDRI中の影を参考にして、テキトーな向きにしてしまってもいいのかもしれないけど。

Shade なら、自動算出できるスクリプトがあったりするのですが。 _Shade 13 公式サイト | 第9回 HDR画像を使ったレンダリングの初歩(2) | イーフロンティア 中の、「背景から無限遠光源を設定.py」を時々使わせてもらってます。ありがたや。

それはともかく。2.67.1 はバグ持ちで、それ故に影が落ちないのかな? と思って、2.66.1 や 2.64 で試してみたけど結果は変わらず。2.64 に至っては背景にHDRIが表示すらされず。2.64 は、このあたり、もっとバグ持ちだったのかな…。

ちなみに、以下のような設定で、IBLレンダリングが使えるらしい…。
Sceneパネルでの設定

Textureパネルでの設定
World設定で、環境照明(Environment Lighting)にチェックを入れて、Sky Texture を選んで。Texture - World設定で、HDRI等を指定して、Horizon にチェックを入れる、のかな。たぶん。

Cyclesレンダラーでも同じことをしたいと思ったのだけど。解説記事を探してみたら、どうもノードとやらを大活用しないといかんようで。まるで蜘蛛の巣のように張り巡らされたソレを眺めて、なんだか諦めモードに。ノードは、まだ全然触ったことないからさっぱり分からない…。

参考記事。 :

#3 [zatta] コシアブラだけ異常にベクレル値が高いのはどうしてなんだろう

恥ずかしながら今頃知ったのですけど。全国各地で、コシアブラの放射線測定結果が、 _ドコーンと突出して基準値超えになってる そうで。まあ、タラノメだの、ワラビだの、タケノコだの、山菜類はかなり超えちゃってるようですけど。

「基準値ってあてになるの?」「甘い見通しの数値じゃねえの?」と元々言われちゃってた「基準値」なわけですけど。それを軽々と飛び越えていくんだから、かなり酷い状態、なのだろうなと。「アムロがガンダムで空中戦をしてる!」状態かも。どこまでジャンプするんだ、コシアブラ。

浜通りや中通りと違って結構大丈夫だろう、と思ってた会津地方でも、フツーに基準値超えちゃってるし。八重の桜どころじゃねえよコレ…。まあ、宮城県、岩手県、山形県、栃木県、その他でも超えちゃって出荷制限がされてるようですけど。

こないだ、コシアブラ、食べちゃいましたよ…。「山形県産だから大丈夫だ」って言われて、いくらなんでもあっちは大丈夫だろう、と思ってしまったけど、実は全然大丈夫じゃなかったのだなと。まあ、自分はおじさんだからアレですけど。うっかり子供に食べさせてる御家庭もあるのだろうなあ…と思ったけど子供が山菜をガツガツ食べてる図ってあまりイメージできないな。基本的に苦いし。

他の農作物が、10〜20ベクレルとかなのに、コシアブラは、最大12,000ベクレルですからねえ…。スカウター使って戦闘力を見たベジータが絶句するレベルじゃないですかね? DB読んだことないから知らないけど。進撃の巨人で言えば、コシアブラは、赤くて一番でっかい巨人なのかなあ。鎧の巨人は、タラノメ?

コシアブラはカレーのルーみたいに元々そういうの高いんじゃないの? とも思ったのですが。測定結果の表をじっくり眺めたら、低い測定結果もあるようだし、カリウムじゃなくてちゃんとセシウムを測ってるみたいだし。てことは、コレはどう考えても汚染、なのでしょうな。

にしても、どうしてコシアブラだけ、そんなに高いんだろう…。山菜は数値が高くなるぞー、チェルノブイリではそうだったからなー、とは予想されてたけど、ここまで違うとは。

もしかして日本人は、放射性物質の測定に利用できる、優秀な植物を発見できたのではあるまいか? これを利用すれば事故時のデータ収集にも役立つのでは? …などと夢想したのですけど、どこでも栽培できる植物でもないのでしょうから、過敏に反応する植物だと仮に判明しても利用は難しいのでしょうな。でもまあ、それでも、何かしらの研究材料にはなりそうな気もしますけど。どうなのかな。

事故から2年経って、セシウム134君の半減期ぐらいは過ぎつつあるわけですけど。それでもこうして出るんだなあ、と。まあ、今までは「ヤバイ」と言われてたから積極的に採ってなかっただけで、そろそろ大丈夫かなー、と思って採ってみたら全然大丈夫じゃなかったYO! という展開じゃないかと勝手に想像してますが。

何にせよ、東日本においては、山の幸とは数十年ほどオサラバ、ってことでしょうな…。自分達が生きてる間は食えないッスよ。こんなに値が高かったら。

海原雄山に怒ってもらいたいですな。「原発のせいで山菜が食えなくなった! どうしてくれる!」って。でも海原雄山のことだから、「西日本の山菜を食べればいい。そもそも東日本の山菜などマズくて食えたもんじゃない」と平気で言い出しそうな印象も。いや、そういうこと言い出しそうなのは山岡さんのほうか。

でもまあ、フグを食べて死んじゃう人も居るし。自分の尿を飲んだり、ウンコ食べてる人も居るし。そういうのに比べたら、食えなくはない、という気もしてきたり。食べたその晩にコロリと逝くわけでもないし…。「このセシウム成分がホメオパシー的には健康にいいンだ。はふぅ、はふぅ」「うおォン 俺はまるで人間原子力発電所だ」と食べちゃうのもアリなのですかねえ。

でもなあ。山菜食べるたびに、「ウンコ食うより…マシだ…ッ!」と自分に言い聞かせながら食べるってのも…どうなんだろ。そうまでして食べなきゃいかんものかな。まあ、好きな人は好きなんでしょうけど。自分はあんまり…。基本的に苦いし。って子供かよ。おそらくは、珍しいものを食べているというプレミアム(?)感で好まれてるところもあるんじゃないかな、と思っていたり。

あ。そうか。プレミアム感だけで好まれてるなら…。検査・選別して、大丈夫そうなのを10〜100倍ぐらいの値段にして出荷すれば、出荷量が少なくなっても商売になるかもしれないか。希少性をさらに煽って、海原雄山レベルしか食べられない食材にしちゃえばいいのだな。東電や国が補償してくれないなら、そういう方針もアリかも。

記事タイトルと全く関係ない話になってますね。

#4 [neta] ちんこ事業

ちょっと前にゲーム業界の決算について解説してる記事を見かけまして。とある企業について解説してる項の中で、「ちんこ事業」という文字列を見かけたのです。

「なんだソレ…どういう事業だよ…。待てよ? そういやこの会社、トイレで遊べるゲームを出してたな。事業と称せるほどに売り上げ出してるのか。いやはや凄いな。まだまだ探せば、ヒット商品を産み出せる隙間はあるのかもしれない…!」

と感心したのですけど。御察しの通り、よくよく読んでみたら、「ぱちんこ事業」と書いてありました。自分の脳はもうダメだ。

コレ、前にもメモしたっけ? 思い出せないや…。そういう意味でも、もうダメかも。

というかなんで「ぱちんこ事業」なんだよ。「パチンコ事業」と書いてあれば読み間違えせずに…いや…どうだろう…。ゴメン。なんだか自信無くなってきた…。

それにしても、仮に実在するとしたら、どういう事業なんでしょうね。「ちんこ事業」って。…エロマンガやエロゲのネタしか思いつかないや。やっぱりこの脳はダメだ。

以上、31 日分です。

過去ログ表示

Prev - 2013/05 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project