キャラを配置する話

前回、キャラの表示部分だけ作った『キャラスロ』。
キャラが重なって表示されるようにしたら、位置がぜんぜん揃わなくなった。そもそも何故こういうことが起きるのか、解説。

まず表示の基本は、画面をキャラの数分に区分けすることだ。3 人表示なら 3 分割。5 人表示なら 5 分割だ。これは単純に(ブラウザの幅のドット数÷キャラの人数)で求められる。幅が 1920 ドットあってそこに 5 人表示しようとすると、1920÷5 で、一人あたり 384 ドットが割り当てられる。
この 384 ドットに収まるようにキャラを表示してしまうと、前回のようにキャラの大きさがまちまちになってしまう。何故かというと、キャラによって幅が違うからだ。
たとえば下の二人のキャラクタは、左は 929 x 1453 ドット、右は 547 x 1463 ドットある。

これを同じ 384 ドットの幅で表示してしまうと……以下の様にキャラクタの大きさがバラバラになってしまうのだ。

そこで、大きさはそのままに、表示位置をこの384 ドットごとを基準に表示したのが一番上のツイートのスクリーンショットだ。これを一キャラ毎に分解すると、以下の様な様子になる。

画面を 5 分割
分割線とキャラの左端を

ぴったり合うように配置して

いくと、こんな感じに幅が

大きいキャラほど
右にずれていくwww

この状態を全キャラ重ねてしまうと、以下の様なひどい有様にwwww
汐(5 番目のキャラ)に至っては、髪の毛しか表示されていない(汗

そこでどうしたかというと、これまた手抜きな解決方法なのだが、キャラ画像の中心と、分割したエリアの中心を合わせるというものだ。図で示すと、分割された中心(青い線)と、キャラの中心(青い線)を合わせる。

こうすることによって、以下の様にだいぶマシになる。しかしこれでもやはり髪の毛などでどちらかに偏っているキャラクタは、表示がおかしくなる(三番目のつぐみと 5 番目の汐)。

三番目、5 番目のような偏ったキャラクタをちゃんと表示させるには、キャラの身体の中心に合わせるべきなのだが……。
残念ながら座標系の数値だけではキャラの身体の中心を求めることはできない。こればかりは一つ一つの画像を目で見て確認して、中心位置を決めるか、それこそ AI(機械学習)でやるしかない。


キャラの身体に中心線を置いた場合

←の中心線と合わせた場合

めんどくさいなー。
実はこれ、萌え時計でも同じ問題が起きている。以下の様にキャラクタが偏って表示されてしまうのは、上とまったく同じ現象なのだ(^^;

ちなみにこの問題はそもそもゲームでも起きているのでは? と気付いた方もいるとおもう。そう、その通り。これは当然、ゲーム内でも起きる問題だ。ゲームではどうしているかというと、CG さんが絵描きさん監修の元、一つ一つ表示位置を決めているのだ!
具体的には Photoshop でゲーム画面と同じ大きさのカンバスを作り(例えば 1280×720 ドットや 1920×1080 ドット)、そこにそのキャラの決まったポーズデータを重ねて、一人で表示したときの位置に配置するのである。ポーズごとに配置する理由は、ポーズが同じならば(基本的には)配置座標は同じだからだ。
そしてゲームのデータにコンバートするとき、その座標データも含めてコンバートして圧縮しているというわけだ。

今回のキャラスロや萌え時計はゲームと画面の大きさが異なるため、キャラの中心の出し直しが必要というわけである。

ちなみに 3D の世界ではこの問題はどうやって解決しているかというと、3D はそもそも作られるオブジェクト(立ち絵など)はすべて mm や  cm の単位で作られる。だからキャラの大きさというのはすべて正しく保たれた状態で制作されている。また 3Dモデルにはボーンというものがあり、キャラの身体の中心も、ちゃんとプログラム側で解るようになっているのだ。
なのであとは配置したあと、どこにカメラを置くかで勝手に絵が決まる。
3D ってこういうところは逆に楽できるのよね~。

話は変わって、ボクは仕事中に BGM をかけていることが多いというか、社会人になってからずっとそうして過ごしてきたのだが、30 代も半ばになって、動画をバックでかけるようになった。これは音楽だけでなく、ニュースやお笑い、映画など他のソースにも触れておきたいという「資料集め」の一環ではじめたことだ。

なのだが……。

やはりしゃべりのある情報は、文章を書くときやプログラミングでアルゴリズムを練っているときなどは、どうしても頭に入ってこない。見たものを憶えてないのだ。ボクの脳では、どうやらできないらしい。この辺、女性の方が得意だと聞く。

女性は電話しながら、手では家事をし、さらにテレビを見るということが普通にできる人が多い。

羨ましい。
ただこの並列作業、脳にはけっこうな負担らしく、痴呆を早めるという記事をどこかでみたが……今検索してもちょっと見付けられなかった。

ながら族、憧れの能力である。

キャラスロ、作ってみた

事の発端は、↓の記事である。そしてこちらのツイート

エロゲの立ち絵をランダムに並べたら、いろいろな役ができるというものだ。
これを実際に軽くではあるが、組んでみた。

立ち絵データは『萌え時計』のものだ。萌え時計は全身のデータがすでにあり、そこから切り抜いて貼り付けているので、キャラスロもこうしてほぼ全身で表示することが出来る。
惜しむらくはね、解像度がね……。
ホントはもっと高繊細なデータで出したいんだけど……作るのが滅茶苦茶めんどくさいのでとりあえず萌え時計と同じデータを使っている。

プログラムは単純にランダムな立ち絵を並べるだけだ。
それ以上のものではない。
今後の必要な処理として以下があげられる。

  1. 大きさや位置がバラバラ
  2. 演出
    スロットマシーンみたいにキャラがリール状に表示されるとか、当たり・外れの派手な演出とか。
  3. 役決め
    どうそろうとどれだけの価値があるのかとか。たとえば「同じ作品で揃う」「同じキャラで揃う」「幼馴染みキャラで揃う」「ロリキャラで揃う」「イモータル キャラで揃う」などなど。
    これ、真面目にやろうとすると確率を計算して、確率が低いものほど点数を高くしないと行けないとか、わりと面倒だったりする。
  4. ポーカーなのか、スロットなのか、麻雀(ドンジャラ)なのか
    ポーカーなら 4 キャラ、スロットなら 3 キャラ、麻雀なら 5 キャラでやるのがよいと思っている。

まぁ、いまめっちゃ忙しいので、果たして続きが作れるかは謎だけどw


立直

叶(同時に作品も統一)

これも立直

汐!全部制服だったらさらに役が上がってた

キャラは立直だけど、下着という役が成立

こちらは麻雀用。お嬢様という役(笑)

マックよ、モスライスの足許にも及んでないぞ

お店で発行しているポイントが目に見えて売上げにつながっているのがわかる様子の記事。面白い。
というのもボクってあまりポイントを気にしていない。その理由は一つの店で買うと言うことを余りしないからだ。オタク……というか古い秋葉民は欲しいものを買うとき、様々な店を渡り歩き、目星を付けた値段のお店で値段交渉し、最安値で手に入れるということをしてきた。20 年も 30 年も前のことだ。いや、もっと前から秋葉というのはそういう所だった。

そのクセが抜けないせいで、何か一つの店で買い続けると言うことはあまりしない。

だからポイントが付いたからといって、それっきりになる事が多いし、今のボクはいまだにそうだ。
また勤め先がコロコロ変わるので、ポイント カードを作っても職場近くの店が一定しない。ポイントカードについては整理した記事を以前載せたが、今の台場ではココカラファインも WAONも使うところがない。

それがボクの常識なので、こうしてポイントの威力というか、みんなポイントって気にしてるんだなぁって感心してしまった。

トートツだが萌え時計の解像度を上げたい。さすがに iPhone や iPad で表示すると、粗さが目立つ。
実はデータ自体は 2048×2048 ドットくらいまでは行けるはずだ……たぶん。ただそのデカい立ち絵を用意するのがめんどうくさい(ぁ
あと UI もより解像度が細かいものを作らないといけない。

それと機能の方も作品を選ぶだけじゃなく、キャラも選べるようにした方がイイのかなぁと思いつつ……。

さて、お昼ご飯だ。しかし今日はそこそこ忙しく、買ってすまそうなんて思っていた。
吉野家か、マックか、いや別にコンビニや成城石井で弁当でもいいかなんて思いつつ……ふとマックの前を通ったら、モスライス バーガーみたいな看板が。あぁ、そういえば期間限定メニューでマックも始めたんだっけ……。

というわけで買ってみる(ぁ

ただメニューを選んでるとき思ったんだけど、中に挟んであるものがハンバーガーと変わらない。それでいいのかマックよ?
そして食べたら、その思いは確信に変わった。
不味くはない。塩辛い味付けにテリヤキっぽい味付けがパンズ(ごはん)にしてある。だから味として間違ってはいないのだが、しかしこの具ではパンの方が美味しいと思った。モスバーガーがなぜモスライス用に専用の具を用意しているか、マックはもう少し考えた方が良かったかもしれない。

もっとも調理器具や材料の調達の問題があるのだろうが……。

というわけでごはんバーガー、ボク的にはイマイチだった。

ジト目が好き

特に話題がないので、Twitter から拾ってきたものなど……。

最近めっきりツイートする量が減った。いや、元から多くないが……。
なのでなんかのネタになると思って、萌え時計でジト目がでたらその時のシチュエーションを勝手に考えてツイートしている。

ジト目はいい。もともと三白眼が好きなのよね(ぇー。

E テレみてたら、高校講座が新しくなってた。あれって、何、毎年つくってるの?
だとしたら、すごいなぁってのと、教科書が書き換わるほどいろいろ変わったんならともかく、毎年作る意味ってあるのかなぁとか思いつつ……。

でね、今年の高校講座はやらしさがスポイルされていた。
高校講座はアシスタントの女の子が可愛い子ばっかりで、スカート着用者多かったし、ホットパンツはいてる子とかもいたし、ボクの中で勝手に「この先生役とアシスタントの女の子はヤってる」とか「このレポート先で、この子は輪姦される」とか「この子は実はフタナリ!」とかろくでもないことを考えながら見るのが楽しかったのに、今年の高校講座はあんまりやらしいシチュエーションがなかった。

夜、晩御飯食べるときに冷蔵庫にサルサがあったので出して見たら、白いカビが生えてた。
それらを取って食ったんだけど、彼らが生成したものは当然残っている。そしたら、朝方お腹がゴロゴロいいだしたwww

萌え時計を疑似アプリ化するとラッキーになれる

iOS というか、iOS 版 Safari にはウェブページをアプリみたいにする機能がある。ので萌え時計をアプリっぽくしてみた。仕掛けは簡単で、Javascript で設定を記憶しておくようにしただけである。縦と横の対応は CSS で行った。

最初はただ萌え時計を表示するだけのを作った。この段階では萌え時計の HTML をただ表示してるだけ。

それに CSS で縦横に対応し、作品やキャラの大きさを設定できる UI をつけ、最後に cookie に設定を保存するようにして完成。UI は普段は隠すようにするといいのかもと思い始めている。でもその場合、下の余白に何を表示すべき何だろうか(汗

ところで iPhone で横向きのスクリーン ショットがなぜかとれなかった。結局、アクセシビリティの AssistiveTouch という機能にスクリーン ショットを割り当てて撮った。なんだったんだろうなぁ。

今日行ったランチは、楽喜亭という昭和のラーメン屋というか、店屋物屋というか。ちなみに楽喜と書いて「ラッキー」と読むw
頼んだのは湯麺のミニ炒飯セット。この店はミニ炒飯と半チャーハンがあって、ミニは半のさらに半分くらい(汗)。半チャーハンにしとけば良かったー。ちなみにカレーの写真はミニカレー。給食みたいなカレーだと頼んだ同僚は話していた。

湯麺は塩ベースのオーソドックス。野菜たっぷりだが、この量を食い切るには少し飽きてしまう。途中で胡椒を入れるとよい。量は多かった。

南国亭の固焼きそば

今日は大門の方に飯屋を探しに出た。
気になる店はいくつか見つけたのだけど、なんとどこも満席!
やっぱり美味しそうな店は繁盛してるのね。

まぁでも店の位置は憶えたから、次回来るのだ。

今日入ったのは南国亭という中華料理屋。ここもけっこう人が入っていた。
そして中が広い。
ランチの種類もいろいろあるが、その中でも固焼きそばが目に入ったのでそれにした。

ランチで固焼きそば食べられるのって珍しくない? そうでもない??
出てきたのは具盛りだくさん!
すごいなぁ。

でも味は普通だった(ぁ

昨日、天津神本舗を SSL 化した。でね、ふと見てたら、萌え時計でキャラが表示されないことがあることに気付いた。ありゃー、なんか失敗してるのか。
すぐに思いついたのが、日本語のファイル名だ。1/2 summer のキャラだけ、ファイル名が日本語なのだ。サーバにアップするとき、文字コードを間違えてアップしてしまったのかも……。キャラが消えるのは深夜と夕方の外。
それに該当するデータを見に行ったら……そもそもそのパターンのファイルがアップされてないだけだった。ディレクトリが一つ足りないでやんの。

というわけで、アップロードしたら表示されるようになった。
もー……。

天津神本舗を SSL 化する話

今日はわりと遅めに食事に出たため、お店はだいたいどこも昼休み(?)に入ってしまっていた。個人経営の飲食店は、14 時頃から 17 時頃まで閉まってしまうことが多いのだ。その時間帯にやっているのはチェーン店かラーメン屋くらいなものである。

というわけでとんこつラーメン屋さんに入ってみた。
一瑞亭
食べログの店数が妙に高いが、とりたててこれはという感じではない。普通(ぁ
スープは真っ白ではなく、濁り系。博多ラーメンらしいあっさりした感じはでてて食べやすいと思った。
炒飯がしょっぱかったー。

ちなみにこの一瑞亭、前に食べた由丸と同じ並びにある。由丸は白くてミルキー系(北九州系なんだろうか?)で特色は全然違うので、その二つが味わえるのはいいなと思った。

ところで同人の方で使っている amatsukami.infoSSLHTTPS)化をしてみた。
世間はなんでもかんでも SSL 化である。Google Chrome に至っては SSL 化していないサイトにアクセスすると警告を出す始末。えー、たかが個人サイトに SSL 化って必要なの?? っていう思いは未だに変わらないものの、世の中がそういう流れになっていくので仕方なく(ぉ

といっても自分のサーバでやったのではない。
実は自分の所でやらない大きな理由がある。それはウチのウェブサーバである IIS7.5 が SNI にちゃんと対応してないのだ。暗号化されたウェブページを取り扱う HTTPS は、何もかも暗号化するため、amatsukami.info と言うようなドメイン名まで隠蔽してしまう。となると一つのサーバでいくつものドメインを運営しているサイトにはアクセスできなくなってしまうのだ(なんのドメインでアクセスしに来たのか解らなくなるため)。
そこで HTTPS で通信を確立する前に平文でドメイン名だけをやりとりする規格が SNI なのだが、ウチのサーバにはその機能が無い(正確にはないわけではないが、対応が中途半端)。
そのため、amatsukami.jp や amatsukami.info、他にも様々なサイトを動かしているウチのサーバは SSL 化ができないでいた。

まぁそもそもサーバ自体を更新しなくちゃいけないんだけどね。こっちは裏で少しずつ進行中。

とりあえず練習も兼ねてテキトーなホスティング サービスを契約した。月 300 円(ぁ
ファイル容量は 100GB、DB は三つまで。DB の容量は 100 MB まで。
DB の制限がきつすぎるなぁ、と思いつつ……。

まず一回目は失敗。どうしても WordPress が動かなかった。
DB の問題か? それとも WordPress のスクリプトの問題か??

それから一日おいて、もう一度試してみた
すると ASCII モードで転送していたのが問題だったようだ。とりあえず動いてエラーを吐くところまではきた(前回はウンともスンとも言わなかった)。そのエラーを見ると、今度は memcached 関連のところで動かなくなっていたことが解った。それらを取り外すと動き始めた。

次に萌え時計だ。これが動かないんだwww
原因はファイル名に日本語を使っているからというのは何となく推測できたのだが、それの何がいけないのかさっぱりわからない。ファイル名の文字コードソースファイル側の文字コードを合わせたりしたのだが、まったくダメ。

結局これはソースコードの UTF8 から EUC にコンバートすることによって動いた。

もっとも時間がかかったのがファイルのアップロードだ。FTPS でアップロードしたのだが、とにかく途中で止まるのだ。天津神本舗は 1.16GiB ほどのデータが有り、ファイル数は 6174 個。とまりまくってそのたびに再接続してまたアップするファイルを指定して……とかやってたんだけど、6 時間ぐらいかかった。
あほらしい……orz

これ、どうも NextFTP というソフトだとなるらしい。確かに一回目の時は CyberDuck というソフトを使ったのだけど、そちらだと三回ぐらいしか止まらなかった。もー、なんなの?? じゃぁなんで二回目も CyberDuck を使わなかったのかというと、同じファイルがあった場合にちゃんとした比較がなかったのと、バイナリ モードだけでアップする方法がよく解らなかったため。たぶんどっちもないわけじゃないとは思うんだけどね……設定を見つけられなかった。

ちなみに萌え時計はもっとデータがデカくて、7GiB オーバー。こっちもアップするのが大変だった~。

なんだかんだで Windows Server と Linux はけっこう違うなぁと実感した作業であった。