2014年11月28日金曜日

ユニティちゃんディレクター杯 その2

Unityちゃんの Candy Rock Star がなかなか楽しい。

勢いでテクスチャをさらに改造。
2体分を調整してUnityちゃんず(?)を結成。




一応軽く服/目/髪/スキンを調整。
顔が平たく見える件の改善策で試験的に1体だけは顔スキンをさらに修正(最右。しかしほとんど差がわからない(笑)。


ステージがなかなか良く出来ていて、いじってるといろいろ勉強にもなりますねこれは。

今回は期限もあることだし、あまりいじりだすときりがないのでノリと勢いで進みます(笑


地味に問題なのはニコ動のアップロード必須な条件。
プレアカにしないとぐちゃぐちゃの動画しかアップできないんですよね。

うーん、1ヶ月だけプレアカにするしかないんですかねぇ。Youtubeでも可なら良かったんですが、タグの検索性がよろしくないのかな。




2014年11月26日水曜日

ユニティちゃんディレクター杯開催

しばらくUnityから離れていたらいつの間にか、

ユニティちゃんディレクター杯

が、開催中らしい。

あのCandy Rock Starステージがまるっとプロジェクトファイル公開されている。
これは良い、うんうん。

しかもUnity PRO版が開催期間中無料利用可。


ちょっといじってみたので以下少し雑感など。


追記:
ディレクター杯に投稿した作品はこちらから見れます。
【画質向上版 】ユニティちゃん3人で踊ってもらった

混雑で画質が落ちる場合は、こちらの低解像度/軽量版もあります。
【ユニティちゃんディレクター杯 】ユニティちゃん3人で踊ってもらった


■Unity PRO版

開催期間中のみではあるがメアドさえあれば「ユニティちゃんディレクター杯」の公式ページでライセンスキーがもらえる。
面倒なガチ登録はないのでほんとに即使えるようになります。

Candy Rock StarプロジェクトファイルはPRO版の機能を使いまくってるようで、PRO版で動かさないと効果半減なので注意(`・ω・´)b

■PRO版の威力

やっぱりPRO版すごいですね。無料版とは違う感。
(エンジニア的にはプロファイル機能とかも興味ですが)

Candy Rock Starでは床面鏡面反射、被写界深度表現、プロジェクション投影(?)、パーティクルのキラキラ(?)などサクサク動いてます。これは萌える(`・ω・´)☆
※ぱっと見紙ふぶきパーティクル源2系統 MAX8000+Unityちゃんの手から放出分で結構な量がでてると思いますがサクサクですね。

■Candy Rock Star

説明が少ないのでちょっとわかりにくい感はあります。

Candy Rock StarのGitHubのWikiなどに少し説明有り。
(最初リップシンクがうまく動かせず。こちらの説明でなんとかなった)

Unityちゃんのボーン構造は従来と同じものなので、顔や口のモーフアニメのObjectはBlenderで死ぬほど弄ってたのですぐわかる感じ。

特徴的なのはシーン上のUnityちゃん他機材モデルも動的生成している点。


Unityちゃんを複数出す

これは簡単にできます。
シーンMainを開いて、Hierarchy の Stage Director を選択。
Inspector の Prefabs On Timeline で動的生成を指定する作りになっているようなので、ここの Size を2→3に増やす。
増えた Element に Candy Rock Star を指定。
これだけでUnityちゃんが1体増やせます。


リップシンク

Unityちゃんを増やす要領で Element に LipSyncController を追加すればできそうですが、これだけではうまくいきません。

Unityちゃんモデルのクチのオブジェクト名 MTH_DEF をFind検索する作りなので同名Objectが存在することになってしまいうまく動作しない。

この MTH_DEF オブジェクトを特定しているスクリプト LipSyncController を修正対応すればできました。

今回はAsset上にUnityちゃんモデルを数種コピーし異なるモデル名としました。
スクリプト LipSyncController 内にモデル名を指定するPublic変数を追加、その子オブジェクト階層から MTH_DEF を見つけることでリップシンク先を特定。

ただこの方法だとUnityちゃんを10体出すとAsset上にも10体必要になるので、そういう場合は動的生成されている MTH_DEF をすべて見つけてスクリプトLipSyncControllerで制御するようにすればできると思います。
※もっと簡単な方法もありそうな気はしますが・・・。

とりあえずな技術的な雑感メモ(?)

アバターの身振りアニメーションとリップシンクは完全に別制御。
基本は曲の進行なので、リップシンクも時間軸を基準に動作。
身振りアニメもFBXに曲長さ分が収まってるようなので、外部ツールなノンリニア編集的な設計思想と思えばピンとくる・・・のか。
※そう考えていくとBlenderなどのノンリニア編集機能で時間基準で全て作りこんで最終的にUnityに落とす方が効率的に思えてきてUnity上でメインに作業するモチベが下がるので外部ツール編集云々はあまり考えないことにします(笑)

例えばAndroid等の低性能機で高負荷動作させると曲再生はスムーズに進みつつも、モデルのフレーム再生がついてこれない状況が場合によっては発生します(Candy Rock Starでも実際Android機では起こせます)。

ようはMP3、FBXアニメ、リップシンクがヨーイドンで再生開始し、きちんと再生していけば同期しているようにみえる。
しかし再生中に相互に同期する手段が難しい(ほぼムリ?)ので、何かしらの要因で再生が滞るとそこからズレが累積していく。ここらは一応覚えておくと何かの際に悩まず済むかもしれない(諦め/割り切りに即辿り着けるのでw。

Candy Rock StarをAndroidで動かす

とりあえず無料版Unityで動かしてみました。ほんと「動いただけ」ですけど。

元のプロジェクトの状態のままでは、
  • Android機でアプリ起動に分単位を要した。
    →アプリのipkファイルも60MB超えてますので・・・;
  • カクカクです
    →秒間nコマというより、1コマに何秒の世界がキミを待っているm9(・∀・)

ほぼ絶望的な状況ともいえますが、実は結構アッサリなんとかなります(動かすだけなら

Visualizerがとにかく重い原因です(人力的プロファイリングによる特定)。
なので Stage Director の Misc Prefabs あたりでVisualizer を切ったりなどで、とにかくVisualizerを切りまくります。それだけで急に激軽くなります。

無料版UnityだとPRO版の重い機能も自動的にOmitされるのでそこらは労せずカットできるという、超合理的な手抜きチューンも併用(笑。
AndroidのOpenGL2.0ESでは動かない効果が多いらしいのでどうせいらないと思われます。

これだけでME-173X程度の性能なら普通に30fps前後はでますのでAndroid4.x世代機ならおおむね動作可能域かと思われます。


あとはアプリの起動時間はいかんともしがたいので、テクスのサイズを切り詰めます。
  • テクスチャを全部切り詰める
    AndroidにターゲットをSwitchして個々のテクスチャ毎に Texture Typeを Advanced にしてサイズとフォーマットを軽量化。
    Unityちゃんモデルのテクスは原画2048、PC用で1024ぽいですが、これを512か256まで落とします。フォーマットもDXTとかETC2など適当に低サイズになるように変更。
    ※この時RGBとRGBAがあるので注意。
    他のステージのテクスチャもその要領で削り込む。

  • 切り詰めるコツ
    昨今のAndroid機はHD解像度が多いですが画面の物理サイズは小さいので人間が視認しにくそうなところはガツンと削ります。大きいものから先に削ると効果的。
    例えばステージ後ろ上部のタイトル部分などはもう256以下でもいいくらいに。Lightテクスとか256ですがこんなのはもう64とか32以下でもイイデス。Unityちゃんの髪とかもかなり落としてもごまかせます。

これでだいたい ipkサイズが50MBくらいにはまずは減らせます。
アプリ起動時間が15秒以下くらいになった感じ。テクスが小さくなった分読込&圧縮展開負荷が減った効果が大きいのかも?。

ちなみに再生fps的にはテクスのサイズを小さくしても効果薄です。この点はサイズよりもドローコール数の削減の方が影響が大きいかもしれない。

パーティクルの同時発生数も削っていくと若干軽くなります。

■さてと・・・

ちょっとだけモチベが上がってきたのでディレクター杯用に何か作ってみようかな・・・などとラブライブを流し見しつつ思ってみたり、みなかったり。
※アイマスは見はじめるといつのまにか作業が止まっていたので(笑

うちみたいなのが作るしょぼいのでも気軽に応募できそうな雰囲気が良い感じ。
(MMDとかアイマス方面は怖くてムリデス。ガクブル)


某記事でしょこたんのituneリストにゴレンジャーがあったのを見て「5人か」と思い立つ(謎
テクスチャ調整二人目で疲れたのでとりあえず3人。

モデル改造は日数的にきついし。「ディレクター杯」なので、ディレクションを主軸に(逃

このCandy Rock Starのモデルでダンスは良く動いてます。

ほんと作者の方すごいです、モチベ上がりますね。

ダンスもバンダイナムコ作らしいので、これまたよくできてます。


早くいろいろなディレクター杯応募作を見てみたいですね~。
(というか、自分も早く何か作れよ・・・なのですが;

2014年9月30日火曜日

ウェブマスターツールの構造化データで hatom エラーの解消


ウェブマスターツールの構造化データでのエラーを解消するメモ。

対象サイトはBlogger。



■問題点

ウェブマスターツール > 構造化データ を見たときに、


などと、大量のエラーが出ていた。

この行をクリックすると大量の「update がありません」がでてくる。





■解決策


Bloggerの テンプレート >html編集で、以下のような行を探す。

<abbr class='published' expr:title='data:post.timestampISO8601' itemprop='datePublished'>

そのタグの少し後に以下を追加。
<abbr class='updated published' expr:title='data:post.timestampISO8601'></abbr>



追加後の例:
<a class='timestamp-link' expr:href='data:post.url' rel='bookmark' title='permanent link'><abbr class='published' expr:title='data:post.timestampISO8601' itemprop='datePublished'><data:post.timestamp/></abbr></a>
<abbr class='updated published' expr:title='data:post.timestampISO8601'></abbr>


複数箇所あるので全てに追加する(試したテーマでは2箇所だった)。

修正後はテンプレートの保存を忘れずに。




■さらにまだエラー


updateのエラーは解消。

しかしよくみるとまだエラーがあった。

エラー: Page contains property "image_url" which is not part of the schema.
エラー: Page contains property "blogid" which is not part of the schema.
エラー: Page contains property "postid" which is not part of the schema.



どうも古いテンプレートを使ってると起きるらしい(2010頃のとか)。
直す手立てを調査・・・;
※ちなみにGoogle Product Forumでもこの件は1年くらい前にも取り上げられている。



■対策:Page contains property "image_url" which is not part of the schema.




テンプレート >htmlの編集 を開く。



以下を探す

      <meta expr:content='data:post.firstImageUrl' itemprop='image_url'/>


以下のように書き換える
      <meta expr:content='data:post.firstImageUrl' itemprop='image'/>



以下を探す
      <meta expr:content='data:post.thumbnailUrl' itemprop='image_url'/>


以下のように書き換える


      <meta expr:content='data:post.thumbnailUrl' itemprop='thumbnailUrl'/>



■対策:エラー: Page contains property "blogid" which is not part of the schema.


Googleのフォーラムでは「削除して解決」となっている。


この blogid というスキーマは無いので消して良いということらしい。
※つまり無駄なものを出力しているということになる(?)。近年いろいろ移行してきているようで対応しきれていないのかなんなのか謎。


とにかくGoogleのフォーラムでは英語圏で「俺は削除して解決した」とか、ロシア人も「А это можно вообще удалить」 と言っているので削除で解決。




以下を探して、行を削除する。 



    <meta expr:content='data:blog.blogId' itemprop='blogId'/>

多分2箇所くらいあるので全て確認する。



■対策:エラー: Page contains property "postid" which is not part of the schema.



これも削除で解決。


以下を探して、行を削除する。


    <meta expr:content='data:post.id' itemprop='postId'/>


多分2箇所くらいあるので全て確認する。


2014年9月29日月曜日

ウェブマスターツールにBloggerのsitemapを設定する

ウェブマスターツールに Blogger の sitemap を登録するメモ。


■サイトマップの設定


他のブログでは sitemap.xml を自動生成しているところもあり、それをウェブマスターツールで指定するだけなのだが、Bloggerでは生成していない。

そこで解決策として atomのfeedを利用した手が使えるらしいのでやってみた。

あと、sitemapの仕様(?)で1ファイル最大500軒までというのがあるらしい。
500軒を超える場合は複数回にわけてウェブマスターツールで登録する。


例:登録するサイトURLが http://example.blogspot.com


記事が500件以下の場合は以下をウェブマスターツールのsitemap登録欄に入力する。、
※実際にウェブマスターツールの入力欄に記入するのは、atom~以降のみ。
http://example.blogspot.com/atom.xml?redirect=false&max-results=500




記事が500件以上の場合
※実際にウェブマスターツールの入力欄に記入するのは、atom~以降のみ。
http://example.blogspot.com/atom.xml?redirect=false&max-results=500&start-index=1
http://example.blogspot.com/atom.xml?redirect=false&max-results=500&start-index=501



502件目以降も似た感じで複数行を追加していく。



■注意点


注意した点として、~jp ではなく、~com で登録したという点。

どうもウェブマスターツール関連は、

 http://example.blogspot.jp

のように jp ドメインで登録するとうまく機能しない場合があるようなので(クエリなど)。

なので、ここでも、

http://example.blogspot.com

のように、comドメインで登録した。

一応、Blogger Blogの大元はcomドメインのものになっている様子。
国別リダイレクトで、jp ドメインのページに飛ばされた結果日本では jp ドメインで見えている。
なので、大元を登録したほうが良さそうという感じ。


他、robots.txt にもサイトマップを書くことができる。効果の程はかなり低いらしいが、クローラ巡回に1%くらいは貢献できるらしい。




2014年9月23日火曜日

OUYAで日本語入力

何やら最近OUYA付いてる今日この頃。

OUYA で日本語表示はあっさりできるようになったものの、日本語入力ができない。

Google Play化も果たした今なら・・・なんとかなるのではないか!?

これは日本語IMEを入れれば解決・・・かも?

と、いうことでとりあえず 「Google日本語入力」のインストールを目指す。


OUYA で Google Play起動。

既にここで、日本語検索ができないので、とっても面倒な事態に・・・(笑。
「Google日本語入力」アプリがなかなかでてこない・・・。

なんとか「nihongo ime」と入力して、検索に引っかかったのでサクっとインストール。


出来ました!日本語入力可能!

やはり Google Play 便利だな~。


多分ATOKでもなんでもいけるのではないかと思います。