読者です 読者をやめる 読者になる 読者になる

au版Galaxy Note3(SCL22)を買ってsimフリー化した

概要

メインで使っていたE-mobile回線のNexus5がバッテリーも消耗してきてmicroUSB端子が痛んで来たので代替機を検討していました。

どうやらそういう用途には、au版のGalaxy note3(以下SCL22)はsimロックも解除できて便利だそうです。
調べたところSCL22は白ロム価格も18000円程度まで落ちているので購入しました。

各種設定を行うことでE-mobileのsimで

が行えるようになりました。
5.7インチと大きなサイズで、おサイフケータイも付いていて、タッチパネル感度もNexus5やiPhone5s並みだったので、しばらく使っていこうと思います。

もしメイン端末を買い替えるなら2万円くらいの格安スマホを買うのも手ですが、SCL22の白ロムも十分以上に便利です。試していませんがdocomoや各種MVNOのsimでも動きそうです。

続きを読む

Unity本のおすすめ 2016年版

概要

izm-11.hatenablog.com この記事の内容をそろそろアップデートしておきたくなったので Unity5世代向けに書きます。
ドットインストールさんのUnity入門ビデオが、Unity4.2くらいで止まってるので、何か良い無料のビデオ教材があると嬉しいのですが…

始めの一冊

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity5の教科書 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unityも初めて、プログラミング自体も初めて。何ならゲーム作るのも初めて。という人に向けた一冊として素晴らしくお勧めです。
分かる人に言うなら「C#のひよこ本」みたいな立ち位置です。

Unityのコンポーネント志向の説明が丁寧で、

  • C# で書かれている
  • サンプルが平易で、無理に多機能を網羅せずにUnityの設計思想を説明している
  • スクリプトを「個別の振る舞い」「インスタンシング用」「マネージャ」と大別している。(これは、うまい説明!)

と言うことで、とても良い本です。

書かれているtipsも良く出来ています。

抜粋しますが 「エラーコードが英語で読みたくない」 f:id:izm_11:20160917125324j:plain

「セミコロンのつけ忘れエラーは直前の行をチェック」

f:id:izm_11:20160917125314j:plain

というレベルから書かれています。これはプログラミング自体の入門者をちゃんと対象にする、という著者の思いやりが感じられます。素敵!

余談ですが、全編を通してかわいい猫のイラストが散りばめられています。とても良いです! また、価格も3000円以下なので布教もしやすいです。

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発

始めの一冊で複数個のミニゲームを作りながらUnityの作法に慣れることが出来ます。
プログラミングはやったことある人がUnityを触るならこの本から始めるのをお勧めします。
Android端末が無くても一応エディタ上で確認出来るので安心です。

素晴らしい点としては

  • 初心者向けでも最初から C#
  • ライトマップから逃げていない

というところです。
しかしプログラミング自体をイメージできていない人がいきなり始めるのは少し敷居が高いかもしれません。
その場合は、上記Unity5の教科書を読んでおくと安心です。

「絶対にコードを書かないぞ!」
という場合はPlay makerと心中するのも手ですが、上記2冊を順に丁寧に追いかけると、プログラミング自体が初めての人でも十分になんとかなります。

中級者を目指す(ゲームを一個作る)

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

Unity5ゲーム開発レシピ ハマるゲーム制作のノウハウ

この本は逆引きtips集としても使えるのですが、頭から順番に進めていくとTPSなロボゲーが完成します。
(例えとして適切かはおいておいて)バーチ○ロンを自分で作る場合に、どんな要素があるのか、それはUnityではどう実現するのか。という事を一冊通して学べます。

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

で学んだ僕としては、 ロボ物のTPSには人生で大切なことが全部詰まってるんだ!!! と強弁して、これをお勧めしたいです。

あとはUnity4時代の本ですが、同じく一冊かけて一つのゲームを作る系のモンハン的なやつは

Unityゲーム開発-オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

Unityゲーム開発 オンライン3Dアクションゲームの作り方

も良い本でした。 セールなどで安くなった時に購入して、Unity5対応が無くて困った場合は

Unity5で追試したときの変更点まとめを以前書いているので、参考になれば幸いです。 qiita.com

中級者向け

ゲームの作り方 改訂版 Unityで覚える遊びのアルゴリズム

ゲームの作り方 改訂版 Unityで覚える遊びのアルゴリズム

ゲームの作り方 改訂版 Unityで覚える遊びのアルゴリズム

昔でもイチオシでしたが、フルカラーになってUnity5対応の改訂(mecanim,uGUI)が入りました!SBクリエイティブさんの英断に感謝します。 バンナム本です。 企画のペライチからキーとなる要素を抜き出し、実装して、ゲームを仕立てる。

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発 と本の構成は近いですが、こちらの本は「Unityの素直じゃない使い方をする」場合にも助けになります。

  • 無限スクロールする背景は?
  • コースやメッシュの動的生成は?

など、素直なUnity入門書では意図的に避けられているけど、使えると楽しい分野のトピックが含まれています。

uGUIではじめるUnity UIデザインの教科書

uGUIではじめるUnity UIデザインの教科書

uGUIではじめるUnity UIデザインの教科書

2016年現在において、OnGUIやNGUIを新規で覚える必要は殆どありません。uGUIから始めましょう。 uGUIの日本語解説本は、この本の他にも数冊ありますが、これだけやれば十分です。よくあるiOS風のUIの実現手法がちゃんと載ってるのでこの本は素晴らしいです。

ただしUnityを触るのが初めて、という人向けでは無いので事前に別の本でUnity慣れしておくと安心です。

Unityエキスパート養成読本

Unityエキスパート養成読本[ゲーム開発の現場で役立つノウハウ満載! ] (Software Design plus)

Unityエキスパート養成読本[ゲーム開発の現場で役立つノウハウ満載! ] (Software Design plus)

特にスマホ向けのエンジニアなら、この本の内容が分かっていると良いような気がします。僕自身はスマホ向け案件にあまり関わっていないのですが、周りでの評判も良い本です。
ググっても出てこない(出てきにくい)内容が多いので、目次を読んでドンピシャの人には凄く刺さる内容だと思います。

Unity 5 Game Optimization

Unity 5 Game Optimization

Unity 5 Game Optimization

プログラマの晴れ舞台(?)、最適化にフォーカスした本です。 特にパフォーマンスチューニングおじさんを目指したり、昔でいうとRPGツクールを買わずにDXLibでゲームを作りだすタイプの人なら、これを読んでおくと頼られると思います。
洋書ですが、根性で読む価値があると思います。
カスタムプロファイラの使い方が開始10ページくらいから出てくるので、そういう本です。

その他

エディタ拡張やシェーダに特化した本や「ライフゲームを作りたい」「タワーディフェンスを作りたい」みたいな各種ゲームに特化した本も出てきています。

そういった本まで流通に乗るというのは、知の高速道路を実感できてとても凄いですね…まさかUnity5時代にもこんなバンバン本が出るとは思わなかったです。

(OpenCVなどは古いバージョンの本がいっぱい出た後、最近のバージョンに対応した本が全然日本語では出なくて不便です…)

以前と比べて、最近は出た本全部読む、みたいなことが出来ていないので、良さそうな本が有ったら教えてください! (特にuNet周りの良い本が欲しいですorz)

デモ用のVR ready PC仕立てた

概要

今の自宅で使っているメインPCがパーツを継ぎ足しながら4年ほど使っていたので、VR Readyで「ある程度軽量で」「リュックに入り」「そこそこ速い」PCを仕立てました。

5kg程度で11.5リットル の容積に収まるような物が出来ました。
これはGTX980搭載の17インチノートの i71100(と巨大なACアダプタ)と比べて(モニタとかキーボード分だけ重いけど安価なので)トントンかなあと思っています。

(以下パーツリストですが、ツクモとかに足を運んで「重量が軽くて容積取らなくてVR Readyなやつ一式!」と頼んだほうが確実だと思います。あとはG-Tuneさんのリトルギア、よく出来てますアレ)

続きを読む

3000円で作るTwitter連動wifi体重計

概要

ESP8266系のボードと体重計をつなげて、体重計に乗ったら自動的にtwitterに投稿する仕組みを構築しました。

正直なところ、以下の2個の記事をまとめただけです。(先人に感謝) qiita.com

qiita.com

  • ESP8266だと例示の赤外線リモコン受信モジュールPL-IRM0101の 5Vが給電しづらい
  • twitter連携との組み合わせが分からない

みたいな方の一助になれば幸いです。

作った後はUSB-ACアダプタで適当にボードごと放置しておけば良いので、PC接続しなくても良くなり、WithThingsみたいな使用感を得られます♪

用意するもの

体重計(2100円)

上記記事にあるように、赤外線式で表示を飛ばしてくれる物が良いです。僕は同様にHashy SALUTEを買いました。2000円程度です。

ボード(700円)

ESP8266搭載の適当なブレイクアウトボードを購入します。VCCから3.3Vが出ている物が良いです。

僕はnodemcu v1.0互換のLolin v3を使いました。700円程度で買えます(届くまで時間かかるかも)(これはUSBシリアルがCH340になっててドライバのインストールが楽なのが好みです)

www.banggood.com

CH340のドライバはこちらです。   http://www.microcontrols.org/arduino-uno-clone-ch340-ch341-chipset-usb-drivers/

類似のボードだとAmazonでこんな風に売ってます。(動作未検証)

赤外線リモコン受信モジュール(100円)

赤外線リモコン受信モジュール PL-IRM1261-C438 akizukidenshi.com

この赤外線リモコン受信モジュールは5V以外にも、3.3Vでも動くのでおすすめです。

TwitterアカウントやThingSpeakアカウントやwifi

これはお任せします。注意点として、Twitterメインアカウントを連携すると 皆さまに自分の体重を大公開する ことになるので、別アカウントにしておく方が無難です…

こうなりますorz

作成手順

ボードセットアップ

まずはnodemcu v1.0をArduinoで書けるように開発環境をセットアップする必要があります。 Arduino IDE1.6.9をインストールして、ボードマネージャで以下のURLを入れてESP8266系を追加します。

  1. File→環境設定→追加のボードマネージャに入れてください。 http://arduino.esp8266.com/stable/package_esp8266com_index.json

その後Arduino IDEを再起動して、

  1. ツール→ボード→ボードマネージャでespと入れて追加(2.30でいいと思います) f:id:izm_11:20160730191946j:plain

こんな感じでNodeMCU 1.0 ( ESP-12EModule).を選びます。 f:id:izm_11:20160718005240p:plain

動作テストに

int count=0;
void setup()                    
{
  Serial.begin(115200);           
  
  Serial.println("Hello world!");  // prints hello with ending line break 
}

void loop()                       // run over and over again
{
 Serial.println(count);
 count++; 
 delay(1000);                                 
}

みたいなコードを書いて、書き込み(アップロード)してシリアルモニタで開いて文字が表示されるか見てみます。(文字化けするときはボーレートを確認してみてください)

この辺りは以下のサイトが詳しいです。

www.instructables.com

体重計読み取りテスト

NodeMCUのピン配置はこんな感じです。 f:id:izm_11:20160718010022p:plain ブレッドボードにNodeMCUとPL-IRM1261-C438を配置して PL-IRM1261-C438の正面から見て

  • 一番左はVCCなので3Vの印字と合わせて刺す
  • 中央はGNDなのでGまたはGNDの印字と合わせて刺す
  • 一番右は信号なので D2 の印字に刺す

と3本だけ結線します。(こんな感じ)

以下テストプログラムで、これを書き込んだ後にシリアルモニタを開き、体重計の信号が受信できそうな場所に置きます。 実際に体重計に乗って、体重が出力されることを確認します。

#define PIN D2

#define TIMEOUT_US 30000

int read_bits(uint32_t *bh, uint32_t *bl) {
  int count = 0;
  uint64_t ret = 0;

  while (true) {
    unsigned long pulse = pulseIn(PIN, HIGH, TIMEOUT_US);
    if (pulse == 0) break;

    uint32_t bit = pulse < 750 ? 1 : 0;
    if (count < 32) {
      bitWrite(*bh, 31 - count, bit);
    } else if (count < 64) {
      bitWrite(*bl, 63 - count, bit);
    }
    ++count;
  }

  return count;
}

void setup() {
  pinMode(PIN, INPUT);

  Serial.begin(115200);
}

void loop() {
  uint32_t bh = 0;
  uint32_t bl = 0;

  int count = read_bits(&bh, &bl);

  if (count == 39) {
    Serial.println(bh & 0xFFFF);
  }
}

wifi接続、ツイッター投稿

手順としてはこのままです。

ESP-WROOM-02(ESP8266)からTwitter投稿 - Qiita

さっきの体重を測る部分と連携して、体重をツイートするコード例は以下の通りです。 ssidとpasswordとthingtweetAPIKeyは自分の環境に合わせて書き換えてください

#include <ESP8266WiFi.h>


#define PIN D2

const char* ssid = "Your SSID";//書き換えてください
const char* password = "Your password";//書き換えてください

char thingSpeakAddress[] = "api.thingspeak.com";
String thingtweetAPIKey = "ADDJNDKAHDK";//書き換えてください

WiFiClient client;

#define TIMEOUT_US 30000

int read_bits(uint32_t *bh, uint32_t *bl) {
  int count = 0;
  uint64_t ret = 0;

  while (true) {
    unsigned long pulse = pulseIn(PIN, HIGH, TIMEOUT_US);
    if (pulse == 0) break;

    uint32_t bit = pulse < 750 ? 1 : 0;
    if (count < 32) {
      bitWrite(*bh, 31 - count, bit);
    } else if (count < 64) {
      bitWrite(*bl, 63 - count, bit);
    }
    ++count;
  }

  return count;
}

void setup() {
  pinMode(PIN, INPUT);
  pinMode(LED, OUTPUT);

  Serial.begin(115200);
  Serial.println("Booting...");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while(WiFi.waitForConnectResult() != WL_CONNECTED){
    Serial.println("Connection Failed. Rebooting...");
    delay(5000);
    ESP.restart();  
  }

  Serial.println("Connected to wifi");
}

void updateTwitterStatus(String tsData)
{
  if (client.connect(thingSpeakAddress, 80))
  { 
    Serial.println("Connected to ThingSpeak.");
    Serial.println("Posting: " + tsData);

    // Create HTTP POST Data
    tsData = "api_key="+thingtweetAPIKey+"&status="+tsData;

    client.print("POST /apps/thingtweet/1/statuses/update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");

    client.print(tsData);
    client.stop();
  }
  else
  {
     Serial.println("Connection failed.");
  }
}


void loop() {
  uint32_t bh = 0;
  uint32_t bl = 0;

  int count = read_bits(&bh, &bl);

  if (count == 39) {
    int num=bh & 0xFFFF;
    float weight= (float)num/10;
    String twStr = "Tweeting from ESP8266. my weight: " + String(weight)+" kg";
    updateTwitterStatus(twStr);
    Serial.println(num);
    delay(30000);
    
  }
}

これを書き込んでしまえば、あとは体重計に乗って15秒くらい経って下りるだけで、勝手に連携したツイッターに体重を書き込んでくれます。 レコーディングダイエットや、twitter apiを使った可視化などにも使えそうですね。

補足

NodeMCU系のボードが手元にあったので試しましたが、技適問題があるのでご利用は自己責任でお願いします。 また、他のESP8266系でも実現できると思うので、是非おためしくださいませ。

VRZONE Project I can行ってきたので感想

汎用的な機構として2軸の電動シリンダーと振動ユニット(BASE Shaker系)を仕込んだ座面というのが

  • RealDrive
  • Train Meister
  • Argyle Shift

という3コンテンツで共通してました。おそらくFLEX-GP系っぽいシリンダーかなあと思います。

また、風の制御はほぼ2値っぽく感じますが、効果的に使われていました。

入り口でしのびやさんのVR体験用アイマスク 衛生布 http://store.shopping.yahoo.co.jp/moguravrstore/eiseinuno-gear-vr.html を配られます。衛生面配慮としては、すごく良いですが、もうちょっとだけ中央の目部分が広く空いていると更に嬉しいですね。
多くのコンテンツで共通でしたが、「ゆるっゆるにしたVIVEを手で支えてもらい、両サイドのベルクロ締め直し」の運用で、ピントの大外れが無いので安心でした。IPD調整は無かったので、大体65mmくらいに合わせてあったのかもしれません。

自キャラをしっかり描画するのではなく、IKを使って両手両足だけを半透明で描画、というのが目立ちました。やはり完全一致させるのつらいですよね。 以下各コンテンツの大雑把な感想です。

アーガイルシフト

UIの視線操作レティクルが、ちょろっとだけ遅れて付いてくるところが可愛かった。よくできています。あとはモニターグラフィクスはプロっぽい感じでとても好きです。

実質的にVRIDEと同じでボタン1個と頭部の視線操作のみでした。やはり初見でロボットもので、というと複雑な操作系は導入し辛そうですね。

高速移動も多かったですが、コクピットに十分な広さがあって、視線を引くUIや女の子が目立つので、意外とVR酔いはしにくそうです。
めっちゃ盛り上がるのですが、大変アツいシーンで「To Be Continuedなので、続きを早く!」という気持ちです。
自キャラの描画は腕と足のみ固定表示ですが、腕がレバー位置に合わせてIKで動くので、意外と体感が一致して楽しいです。
UE4製で、描画品質はかなりカリカリのチューニングが入ってそうです(テクスチャ解像度がキワキワまで落としてる雰囲気です)

Viveのスタンディングモードっぽい。

Ski RODEO

体感筐体がおそらく既成品?こういうのが用意できるのがバンナムさんの強いところですね。
スキー板のエッジ判定がリニアじゃないので、グイっと一定以上曲げないと全く効かないのを理解していないと(スキー経験が浅いと)曲がりにくく感じるかもしれません。

全コンテンツ中一番の自由度があり、一方でルートの目安も無いので若干の投げっぱなし感はありました。
気になる衝突時のVR酔い対策の挙動としては、急激にホワイトアウトして直前地点からのリスタート、という手堅い手段。
でも、酔う人は酔うかもしれませんね。

Viveのスタンディングモードっぽい。しかしセンタリング処理(前を向いて視線方向リセット)が、どうもOpenVRの現在のAPIだと、OculusのものよりもYaw軸がキマりにくい気がします。
スキー板の角度が斜めってしまって、スタート前に何度か処理をやり直してもらいました。

UE4製で、雪原は綺麗に出るので楽しいですね!

高所恐怖SHOW

高所恐怖SHOWで使われていたトラッキングはヘッドトラキングも含めてVicon製で、速い動きには追従しません。技術協力にクレセントさんの名前があるので、その関係でViconが使われているのかもです。
ラッキング外れが結構起きますね…

しかしハードウェアセットアップ含めて、すごく気合が入っていて、とても楽しかったです。
ネタバレになりますが、木の板が若干ガタつくようにしてあること、往路よりも復路の難易度が上がる仕組み、「命綱」として腰につけるものが、HMDのケーブリングも兼ねていることなど、とても考えられています。
エレベーターでの移動など、一連の体験の流れがとてもスムーズで、良いコンテンツです。これは体験しないと損ですね。

脱出病棟Ω

4人までの同時プレイ可能。ボイスチャットが常に入っているので、友達と遊ぶと楽しいです。
操作系は固定された(車)椅子に座って、左手が前進後退レバーで右手が常時給電しているHTC Vive のコントローラを懐中電灯に見立ててプレイ。

このコンテンツは技術的なところよりも、演出がとても良く出来ています。描画品質も一番高かったかもしれません。閉所と暗闇はレンダリングの親友!

Train Meister

単純に出来が良かったのと、僕はあまり鉄道に詳しくないのであまり記憶には残らず…
終了時に講評が出たり、チュートリアルが丁寧だったり、前述の揺れるシートを使っていたりで、良い仕事されているなあ…このまますぐに売れるなあ…という気持ち。

リアルドライブ

このコンテンツはHMDではなく、視野ほぼ180度を覆うプロジェクタとドームスクリーン。いわゆる手堅く動いていました。おそらく近いうちに全国のゲームセンターで稼働するのではないでしょうか。
描画品質的にはAsset Corsaとかを想定していましたが、もう少しトラディショナルな描画でした。おそらくATモードを選んだ方が普通の人は楽しめるのではないでしょうか。 これも良い感じに椅子が動いて楽しいです。

HTC Vive届いた&お出かけセット仕立てた

概要

HTC Vive製品版が無事届きました。

箱は結構大きいので、お外に持ち運べるように機材を追加購入しました。

お出かけセット

こんな感じです。

コンセプトとしては「Viveは手持ちのバッグ、PC類と三脚はバックパックに詰めて運べる」という感じです。
ちゃんとするならペリカンケースさんとかが良いですが、アルミケースに入れておくだけでも多少の雨や衝撃に安心感が違います。

以下の物を揃えても15000円程度で収まります。

SK11 アルミケース これのAT-15S (内寸の高さがちょうどヘッドセット部分とピッタリで、さらに安い) www.amazon.co.jp

中身のウレタン

これのブロックタイプ60mmと30mm。ブロックタイプの物は、自分でチギって好きな形状に出来ます。 (ちょっとフニャフニャなので、気になる方はもっと高くて丈夫なハードウレタン製とかをハンズで探すと良いかも) www.amazon.co.jp

三脚

ETSUMI ライトスタンドM ETM-83763 (このライトスタンドは展開時高さ2mまで上げられて、重さ1kg程度で軽い) www.amazon.co.jp

雲台

HAKUBA 自由雲台 BH-1(軽くても、ベースステーションをガッチリホールドしてくれます) www.amazon.co.jp

あとは、僕の趣味ですがコントローラの充電機が嵩張るので、標準のAC-USBアダプタとケーブルではなく、このセットを使っています。

AC-USBアダプタ

(コンセントの差込口を畳めるので好き) www.amazon.co.jp

安いケーブル

www.amazon.co.jp

コンパクトに収納して持ち運べると、いろんな人に見せられますよね!

他、小ネタ

Steam自動起動が面倒くさい

HTC ViveでSteam立ち上げてVR選んでヒョンヒョンと認識させるのが面倒くさいので
"C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\bin\win32\vrmonitor.exe"
をスタートアップに追加。Steamの自動起動を無効化すると、PC立ち上げたらそのままヘッドセットの認識が走ります。

ヘッドセットに追加パーツ付けたい

便利そうな場所にUSB3.0ポートがありました!

Oculus SDK1.3における開発制限問題について

概要

OculusSK 1.3が公開され、海外ではOculus Rift CV1が届いた人もいます。 ところが、SDK1.3を使うと「初期設定でOculusStoreからしかソフトがダウンロードできない」「開発者登録にDRMが必要」 というニュースがTLに流れてきました。

これについて、twitter上の話ではなく、元のソースを読み解いて現時点の意図を確認します。

結論から言うと(2016/3/30現在では)

  • Gear VRほど厳しい話ではない
  • 身内配布や野良アプリ開発は可能
  • 他ストアでの販売も可能
  • ユーザー側はAndroidの 提供元不明アプリ許可と同じでチェックボックスを一度入れたら野良アプリは入れ放題、起動し放題
  • 上記チェックボックスが入ってるPCなら、いきなりOculusHomeをすっ飛ばしてアプリが起動可能

という事です。

発端になったエントリ

Oculus社の公式SDK1.3リリースエントリ https://developer.oculus.com/blog/oculus-pc-sdk-1-3-now-available/

As a developer, you don’t have to be in the Oculus Store — you can sell outside,
 and when you do that you can you use your own IAP if you prefer, and we don’t take a cut. 
You can also request keys (royalty free) to sell your Oculus PC app on other stores, 
while making it available to the community through the Oculus platform.

で、つまりhumble bundleやDLSiteやDMMなどの別のストアでOculusRift用ソフトウェアの認証コードだけを売ることが出来ます。 という話のようです。

OculusSDKを用いた開発及び配布手法

外部ストアに関してのドキュメントがあります。

developer.oculus.com

配布形態については以下の4通りが取り得るはずです。外部ストアはSteamやHumbleBundleやDLSiteなどを想定しています。

  1. Oculusストアで配布する(Oculusの審査を通す)
  2. Oculusストアで配布する+外部ストアでも配布する(Oculusの審査を通す+外部ストアではDLコード的にOculusのDRMを使う)
  3. Oculusストアで配布しないが、外部ストアでのみ配布する(Oculusの審査を通す+外部ストアではDLコード的にOculusのDRMを使う)
  4. 野良アプリ(Oculusの審査不要、ただしOculusのSDK利用規約は守る必要がある)

Oculusの審査を一切受けずに配布したい場合は、"Unknown Sourceオプション"を入れたユーザー相手に、4を利用して、決済手段やDRMなどは自前(あるいはプラットフォーマーさんとか)にする事になりそうです。

伝言ゲームの結果

「開発者登録にPC紐づけのDRMが必要」みたいな感じになっているけど、そんなことはない。

開発者はSDKのダウンロード時の規約同意だけで、問題なく開発が始められます。

また、OculusHomeをすっ飛ばして起動するソフトウェアも開発可能で、ただしその場合はユーザー側が"Unknown Sourceオプション"のチェックを外しておく必要がありそう。(未確認) →13歳警告画面があるシーンは出るが、そこはAボタンスキップだったはず。(この警告シーンは「毎回ではない」)

2014/6/27 ジェミノイドを見ていたおばちゃんの観察記録

過去の日記を漁っていたら、科学未来館に行ってジェミノイドコーナーでプラプラしていた時の記録があったのでサルベージ。

今日はジェミノイド(以下、オトナロイド)を、一般のいわゆるおばちゃんがどう接するのかみたいなのを生で観れてとても面白かった。以下つらつらと書きます。
おばちゃん達は最初、オトナロイドを気味わるがったり、スマホで不躾に写真を撮ったりしていました。ところが、気味わるがっている発言を認識して、オトナロイドが悲しいと言い、悲しそうな表情になると「もしかしてこのロボットは会話が通じるのかな?」みたいな空気が醸成されて、以降会話が成立しました。

そんな感じでしばらくすると、コントロールルームから中の人が出て来て、遠隔操作であることを説明して、音声認識ではなく中の人がいることを知る訳ですが、その後もオトナロイドに対して気味わるがったりする感じは消えて、感心したりコントロールルームに誰もいなくても話しかけたりしていました。

これは僕の視点から見た話で、一般解だと見なすのは非常に危ういですが、ある地点で不気味の谷を超えると、その対象のロボットに対して「失礼なこと」をしなくなる。と言うような雰囲気を感じました。
そして不気味の谷と言うのは見た目や仕草だけでなくて、コミュニケーションが成立する(しているように見えるか)が、かなり大きな比重を占めているように思いました。似たような例だと、例えば「日本語が通じるとわかったガイジン」に対するような感じかもしれません。

見た目や仕草がちょっとぎこちなくても、意思が感じられたらオッケー!なのかもしれません。非常に興味深い光景。

(どうぶつとかのペットに対しての物と近いのかしら?)

部屋に作業机と光回線を引かないと死ぬような単身者向け都内への引越し

W.I.P

概要

最近引越しをして地方から都内に来ました。その際に得られた知見を共有します。 引越し日をxとして、時系列順にタスクとして書き出します。

x-30日

このタイミングから住む物件を探します。それ以前だと家賃を住まないのに払う期間が長くなります。
エアコンが極端に古い物件の場合、積もり積もった電気代でえらいことになるので、家賃以外にも気をつけること。(例えば入居前に新調してもらうとか、自腹で交換しても良いという確約を得るとか)

x-20日

引越し依頼

引越し依頼を掛けます。webからの一括見積もりサービスは各種ありますが、全然システマチックじゃないし電話が山ほど掛かって来て精神が滅入ります。

あと、極端に安い会社だと保障が弱かったりします。おすすめは「大手のどこか数個」と「アリさんマークの引越し社」の計3社程度の相見積もり。最安とはいかないかもしれないが、最安値プラス1万程度の相場に収まります。
アリさんのところは、大手の中では積極的な価格攻勢を掛けてくれるので、ここを是非とも相見積もりに加えると良いかと思います。

また、料金値引きが限界まで来た場合、梱包箱詰めを安価でやってもらうように交渉するのも良いです。自分で箱詰めするよりも丁寧だし緩衝材を入れてくれるので機材が傷まない。

x-14日

光回線インターネット工事の申し込み。最近は家電量販店の店頭で申し込んでもその場の値引きは無いので、価格.com経由で適当に申し込めば良いです。 マンションの場合は、だいたい申し込んでから2週間後に開通します。

固定IPが欲しい場合はso-netが月1000円程度の追加。あるいはASAHIネットが無償。

x-7日

家電類を新調するなら買い物をします。「無いと割と不便だけど、最新の必要は無いし、数年型落ちでも良いから安いのが欲しい」というニーズは、地方都市だとハードオフやリサイクルショップが良いです。 しかし都内だと、こういった店が無いので

  • ヤマダアウトレット南砂店
  • ヤマダアウトレット足立店

といった所がおすすめです。 例えば国内メーカーの冷蔵庫が中古の160Lで2万切ります。

配達日は引越し当日に合わせると良いです。

金を掛けるべき家電

  • ドラム式洗濯乾燥機(高くても良い)(楽)
  • 無線LANルータ(ASUSとかNetgearが良いと思います)

金を掛けなくて良い家電

  • 冷蔵庫
  • 掃除機
  • 電子レンジ

x-5日

ガス開通申請

ガスの工事だけは、係の人が家に立ち入って確認することになります。工事立会のアポを取るならこのくらいのタイミング。 「◯◯区 ガス 窓口」などで検索して出てきた電話番号に掛けます。 引越し当日の荷降ろし中に来てもらう感じのスケジュールにすると並列処理出来て良いです。

Try Wimaxの申請

2週間程度の無償Wimaxルータレンタルサービスがあります。 光回線の工事が間に合わない場合や、新生活でパケットが死ぬ場合に使えます。

(気に入ったらそのまま契約すれば良いですし、ライフスタイルに合わない場合はそのまま無償で返却できます)

Try WiMAXレンタル|UQ WiMAX|超高速モバイルインターネットWiMAX2+

x以降

家具を購入

ニトリやホームセンターが都内は少ないので、ある程度まとめて買う必要があります。 ここは僕も詳しくない…

購入勧め

  • ダンボールカッター は数百円でライフチェンジングなのでオススメ。 (大物の家具や家電を買ったゴミのダンボールは本当に解体が大変) www.amazon.co.jp

  • 電動ドリル 家具の組立が楽になるので買うべき。手でドライバ回してるの本当につらい。

www.amazon.co.jp

  • 家具全般 木製家具の方が全般的に処分が楽なので、鉄製を買うか迷ったら木製を買っておくと良い。

RICOH THETA Sの動画機能を4k相当に拡張する(waifu 2x で)

概要

RICOHのTHETA Sは1920 x 960 30FPS(29.97)のEquirectangular形式のmp4動画を作ることが出来ます。素晴らしい!

しかし、この動画をHMDやパノラマビューアーで見てみると、「動画の解像度やビットレートがもっと高かったらなあ」と思うときもあります。
そこで、今年話題になった良い感じの超解像ソフトであるwaifu 2x を使って、擬似的に4k動画を生成してみようという試みです。

結論から言うと、多少時間は掛かりますが思った以上の効果を発揮するので、お気に入りのTHETAで撮った動画はアップスケーリング版を作りたくなりそうです。

作り方

waifu2x-caffeが 2015/7のバージョンから実写にも対応しました(すごい)

機械学習を利用した画像の高品質拡大ツール「waifu2x-caffe」が実写にも対応 
http://www.forest.impress.co.jp/docs/news/20150702_709790.html

しかもGUI版であっても、フォルダ内の静止画を一括変換できます(かなりすごい)

なので、今回はwaifu2x-caffeを使います。

作り方としては ffmpegでthetaの動画を静止画連番に書き出して、waifu2x-caffeに突っ込んで3840x1920にして再度ffmpegで結合する という流れです。これだけで分かった人は結論まで読み飛ばして問題ありません。

以下、入力をinput.mp4として、最終出力をoutput.mp4とします。

1.動画を音声と静止画連番に分離

ffmpegを使います。

Zeranoe FFmpeg - Builds http://ffmpeg.zeranoe.com/builds/win64/static/
からffmpeg-20151227-git-baf4c48-win64-static.7zを使いました(最近のバージョンなら他でも良いと思います)

音声を分離

ffmpeg -i "input.mp4" -vn "output.wav"

静止画連番ファイルをなるべく高画質に出力 (ffmepgのデフォルトjpeg切り出し、画質悪い…)

ffmpeg -i "input.mp4" -f image2 -vcodec mjpeg -qscale 1 -qmin 1 -qmax 1 img_%07d.jpg

2.waifu2x-caffeで連番静止画を拡大

waifu2x-caffeはこちら github.com

windows用実行ファイルの直接リンクはこちら https://github.com/lltcggie/waifu2x-caffe/releases/download/1.1.1/waifu2x-caffe.zip

GUI版で行うなら f:id:izm_11:20151231101845j:plain

こんな感じです。フォルダ単位で指定するのと、photoモードを選ぶのが肝心ですね。
仮に今回は .\res\以下に img000000.pngからimg000001.png img000002.png…という連番pngを出力することにしましょう。

処理速度としてはMaxwellGeforce GTX860M で大体一枚あたり6秒くらいでした。
一分あたり10枚のpngが処理できる感じです。めっちゃ不安になるくらいGPUファンが回ります。

1時間で20秒分のフレームが処理できるので、丸一日回して8分くらいですね!

3.ffmpegで再結合

エイっと結合します。

ffmpeg -r 29.97 -i .\res\img_%07d.png -i output.wav -s 3840x1920 -vcodec libx264 -b:v 50M .\res\output.mp4

このままガバっと2.で出力した連番pngと1.で分離した音声を合わせて4k動画をH264で生成します。
このくらいの解像度とビットレートで、手元のNexus 5(Android 5.1)でハードウェアデコード付きで再生出来ることを確認しました。

エンコードオプションは、ビットレートや2passなどの改善の余地がありそうです。詳しい人教えてください

これも良いかも(60Mbpsくらい)

ffmpeg -r 29.97 -i .\les\img_%07d.png -i output.wav -vcodec libx264 -pix_fmt yuv420p -crf 14 -preset veryfast -tune zerolatency,film -movflags +faststart .\les\output.mp4

結果

THETAのサイト内、公式動画サンプルで試してみました。 theta360.com

大体、解像度が足りないところがキュービックリニアっぽく補完されます。

http://izm.totheist.net/archive/theta_img/sample1.JPG

鉄塔付近や、ボーダー柄の服などのjpegノイズがうまいこと消えています。すごい。 http://izm.totheist.net/archive/theta_img/sample2.JPG

japanese karate(以下URLはリコーのサンプル動画への直接リンク)は、なぜかビットレートが5Mbps以下なので https://theta360.com/ja/gallery/sample/videos_s_3.mp4

こんな風に低ビットレート起因のjpegノイズが消えます。べんり。 http://izm.totheist.net/archive/theta_img/sample3.JPG

まともに4kパノラマを作るなら、ハードウェアが安いので10万くらい、ソフトウェアが安いので3万くらいするので、theta sだけでアプコン出来るのはコストメリットも、撮影の手間も少なくて良い感じです。

結論

  • waifu2x-caffeの超解像はphotoモードを使うと実写画像にも効果がある事を追試した
  • waifu2x-caffeの超解像はEquirectangular形式の画像でも効果がある事を確認した
  • 4k相当のパノラマ動画を安価に作れる可能性が出てきた
  • 各種動画サイトで配布されているパノラマ動画が低画質な時も、この方法で画質を向上させられる可能性が出てきた

  • いろいろ追試中です。意外と動画で確認したら、画質改善の効果を確認しにくいかも。そして、もしかしてRGBモードで非フォトの方が効果が分かりやすいかも…

参考URL

waifu2xでアニメをアップコンバートする - unsuitanの日記

ffmpegの使い方:tech.ckme.co.jp

最後に

私事ですが、引越しと転職を最近しまして、それに伴う出費により、食糧事情が悪化しております。 なにとぞ下記URLのウィッシュリストからご支援頂けると、めちゃくちゃ豪華なスパゲティを食べられます('-' *)

www.amazon.co.jp

RICOH THETA SのUnity上でライブビューパノラマ展開まとめ(メモ)

1.概要

前回のまとめ以降、ようやく触る時間と機材が出来たのでUnity上でTHETA SのHDMI Liveviewを追試しました。

イメージとしては凹みさんの

tips.hecomi.com

です。

  • THETA Sの取得できる画像、動画フォーマット一覧
  • HDMIキャプチャ方式のハードウェア紹介
  • Unity上でのHDMIキャプチャ経由の動画読み込み方法
  • Unity上での Dual Fish Eye → Equirectangular変換

みたいな内容です。

2.THETA Sの取得できる画像、動画フォーマット一覧

こんなイメージです。 f:id:izm_11:20151105014235j:plain 今回はHDMI Dual FishEyeを使います。

非リアルタイム

  • 静止画 5376 x 2688 Equirectangular
  • 動画 1920 x960 Equirectangular

リアルタイム

  • Dual Fish Eye (HDMI 1920 x 1080 インタレース60FPS)
  • Dual Fish Eye (USB2.0 UVC 1280 x 720 30FPS)
  • Equirectangular (スティッチ済みライブビュー、THETA API 640x320 MJPEG ストリーム)

3.HDMIキャプチャ方式のハードウェア紹介

HDMIからのキャプチャボードは色々な種類があります。最近だとスプラトゥーンの録画などでも皆さま買われてますが、あれも使えます。 OSから見た時に

  1. UVC(Webカメラ)として見える物
  2. キャプチャボード(direct showフィルタ)で見える物

という2種類の物が今回は使えます。 市場に出ているのは殆どすべてが2.です。

a.UVC-HDMIキャプチャボード Febon198(今回の秘密兵器!)

以下の2個をセットで買いましょう!

Febon198 www.amazon.co.jp

HDMI Signal Converter

www.banggood.com

Febopn198は OSからはUSB3.0の1080Pで60FPSなWebカメラとして見える、遅延は50-80ms程度(*1)、というトンデモないスペックの一品です。

デメリットは

などです。

Febon198はプログレッシブ信号しか受け付けないので、THETA含むデジカメからのインタレースな1080iなHDMI信号を読ませるには

HDMI Signal ConverterみたいにHDMI信号をなんでも1080Pに変換してくれるオモチャボードを通しましょう。

PCモニタ出力やXBOXの出力は1080Pなので、そういうのをキャプチャするだけならオモチャボードは不要なのですが、デジカメからの信号はインタレースが多いようです。ご注意ください。

セットで買わないと、こんな風に寝込む羽目になります。

b. 定番:BlackMagic Intensity Shuttle

ご存じ定番のBlackMagic!
なんでも読めるし、SDKも公式配布でフレームごとガバっと持ってこれて最高です。

www.amazon.co.jp

これを使えば大体のHDMI信号は読めます。ド定番!最高!!

b. その他キャプチャボード

遅延が大きいハズレもあったりする印象。2万円程度?

TL見てて動いたという話があるのはGC550など

www.amazon.co.jp

4.Unity上でのHDMIキャプチャ経由の動画読み込み方法

a. UVCキャプチャボード

Unity標準のWebCamTextureを開いて再生するだけです! こんな感じのスクリプトを、適当にUnityのPlaneにアタッチします。 Thetaの再生用 · GitHub

b. DirectShowフィルタキャプチャボード

ここが結構大変な印象です。

BlackMagic系や、一般的なキャプチャボードなら AVPro Live Camera

https://www.assetstore.unity3d.com/jp/#!/content/3683 を使えば大丈夫だと思います。トライアル版で必ず事前に動作は確認してください。

尚、このアセットですが 200ドル と、比較的お高いです

(だからこそFebon 198を今回お勧めしてます。こっちは読むのタダですからね!) (他に安価な手段があるかもしれません。情報お待ちしてます!)

5.Unity上での Dual Fish Eye → Equirectangular変換

凹みさんの方法(前述)と

Stereoarts(Noraさん )の方法があります。 Stereoarts Homepage (Theta Shader Pack)

今回は後者のNoraさんのTheta Shader Packを試しました。

手順を念のため録画しました。一発撮りです。

www.youtube.com

Theta shader Packと、このスクリプトで作業しました。(部屋が散らかっていてお恥ずかしい) Thetaの再生用 · GitHub

Unity上でビルドしたexeを動作確認用に置いておきます。 Febon 198か、USB接続のLiveviewモードなら、再生できると思います。 https://copy.com/L6wAq9dYdIOrIHp1

6.今後やりたいこと

生放送時のパノラマ配信インフラがどこかにないかなあと気になってます。ちゃんとした法人契約じゃなくても、個人でちょろっと試せる場があると嬉しいです。

補足

HDMIキャプチャボード越しの遅延チェック

*1:本家スペック表による。 Thetaでの遅延はこんな感じで測ると200-300ms程度です。どうやらThetaの絵を読み込んでHDMIから出すまでは、100ms以上のタイムラグがあるようです。

THETA SのUSBライブビューモードの認識手順

USBケーブルをPCとつながずに 写真動画切り替えボタンを押しながら電源を入れる→LiveviewモードになってからPCにUSBケーブルを刺す

という順番です。意外と忘れがちです。

ライブビュー経由で見る時の画質劣化

Dual Fish Eyeの時の実効解像度から考えて

  • HDMI経由で130万画素相当
  • USB経由で50万画素相当

くらいまで欠落してます。1920x960のスティッチ済み動画と比べるとHDMI経由でも3-4割くらい落ちてる雰囲気です。

RICOH THETA S 発売したので、個人用メモ

概要

ついに念願の動画も取得できる安価で安心な全球カメラが出ました!

TL上ではハックが進んで有益情報も多いですが、twitter上の内容で散逸してしまうと勿体ないので、メモとして記載します。

Unity上で見る方法

tips.hecomi.com

USBキャプチャ(720P 15FPS)

UnityのWebCamTextureからそのまま読めたと思います。
後は上記凹みtipsさんの記事を確認すれば大丈夫そうです。

HDMIキャプチャ(1080P 30FPS)

まずハマりがちなのが、「Modeボタンを押しながら電源ONでLiveモード(HDMIパススルー)」を選んでやること。

BlackMagicのIntensityとかのキャプチャボードで良いやつを買って Blackmagic Design: Intensity

AVPro Live Camera(200ドル) https://www.assetstore.unity3d.com/jp/#!/content/3683

を買うと言うのが一番楽なようです。少しお高いですが、安心感があります。

この時の遅延は最小で200ms位?

また、directshow互換で絵を持ってくることが出来るキャプチャボードもあるので、

www.amazon.co.jp

これもwindows上だと何とかしやすそうです(2万円程度) ただ、WebcamTextureでは読めないはずなので、上記AVPro Live Cameraが必要?

個人的に安くて気になるのがUVC互換のUSB3.0-HDMIキャプチャボード

FEBON: FEBON198 USB3.0 UVC HDMI Grabber Card User Manual

www.youtube.com

このキャプチャスティックが額面通りの性能なら、OSからはUVC対応のwebカメラとして認識されるので、UnityからそのままWebCamTextureとして取得できる気がします。

USB,HDMI併用時の3脚固定方法

スマートな方法だとこれが良さそう?

これを買って上のプラ部分を外す感じで www.amazon.co.jp

「いかにも使えそう」な、これは各端子と微妙に干渉するので不適

www.amazon.co.jp

360度配信向け機材

適当なスマホ+Cerevo LiveShell + THETA Sが今のところ良さそう。

ケース

純正ケースがギッチギチで凄く機動性を損ないます。
(一日差し込んで伸ばすと大丈夫という意見もあり)

最高にお勧めのケースは現在絶賛売り切れ中みたいです

www.amazon.co.jp

その他tips

Blenderのスフィアマップ適用

パノラマ合成

長時間HDMIパススルーで使うには、USB給電にして1A以上出るモバイルブースターに繋ぐのも必要ですが、    その前に本体を満充電にしておく。そうしないと、充電の熱で10分くらいで映像が止まったりする…
(逆に、満充電にしてUSB給電モードで使うと30分は連続で動きました)

2015/8現在のOculusRift+UnityのノートPC対応 開発動作環境構築

概要

OculusRift CV1(コンシューマ向け)の発表も近づいてきたので、OculusVR社は自社OculusSDKやOculusRuntimeを積極的にアップデートしています。

また、最新版の各種ゲームエンジンでは組み込みでOculusRift対応を進めています。(UE4は前から、Unityは5.1から)

そんなタイミングですが、最新のOculusSDK0.7以降では動作未保証になってしまったOptimusノートPC+Unity5.1でOculusRiftDK2の動作環境を作ってみようと思います。 色々検討した結果、今回はExtendModeなら最低でも動きそうな0.5.0.1環境にします。

プログラマ向けの手順をこれから書いていくので、分かる人は読み飛ばして「最後にまとめ」だけ読んで頂ければと思います。

(主婦ゆに本の、Unity5対応版も購入者は手に入れられるはずなので、ご検討ください)

このエントリに書かれていない事

  • 最新のUnity5.1以降で導入されたUnityネイティブのVR support
  • OculusRuntime 0.7対応

準備する物(もしくは、動作環境)

UnityとOculusRuntime0.5.0.1はインストールしておいてください。 下の2個はダウンロードだけしておいてください。

環境構築

一発撮りで申し訳ないですが、Unity上での操作手順を動画で撮ってみました。 8分程度です。

www.youtube.com

上の動画で作った動作確認用exe

OculusRuntime 0.5で動作確認済みです。
このexeの価値は、Optimus環境でOculusConfigUtilityの机と椅子のデモ(Show demo scene)が、クラッシュする事が多いので、 Optimus機の方は、机と椅子のデモ代わりの普通の動作確認にお使いください。

https://copy.com/Y22DH1oo7bXSSvuB

最後にまとめ

  • Optimusノートで動かす可能性があるコンテンツは、現時点でSDK0.5.0.1で作るしかないので、その環境を作る
  • Unity5.1以降であっても、VR Supportを使わなければ、普通に OculusUnityIntegration.unitypackage をインポートできる
  • 0.5.0.1対応のOculusUnityIntegrationをUnity5.1で使う場合は、パッケージをインポート→自動のUnity5向け変換をした後に、Assets/OVR以下のスクリプト内で #if UNITY_5_0 という定義があるので、そこを UNITY_5_0 || UNITY_5_1 などに書き換える必要がある
  • Optimus機の場合は DirectToRift.exeを右クリックして、グラフィックプロセッサと共に実行→高パフォーマンス で起動する必要がある