2016年8月30日火曜日

Polygon Fill ~ SubStance Painter


SubStance Painterの Polygon Fill機能と Quick Mask機能で簡単にメッシュ面を塗る方法。

こんな感じのものを塗ってみます。




メッシュのエッジ線を境目にちょっと塗りたい時に便利です。

■環境

SubStance Painter2.3.0

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700K
MEM: 32GB
GPU: GeForce GTX960(4GB)

※Polygon Fill機能、Quick Mask機能はVer1.xでも同じだと思います。


■モデル

Blenderで適当に作った以下のモデルを使って作業していきます。
OBJ形式で出力しておきます。





■新規プロジェクト作成

SubStance Painter2.2を起動。
CTRL+Nで新規プロジェクト作成ダイアログを開く。
Mesh の Selectボタンから先のOBJファイルを選択。
他の欄も以下のように設定し OK で進む。



以下のような感じになります。
ここで最初からある LayersウィンドウのLayer1は削除しておきます。


File>Save as... で適当なファイル名で保存しておきます。



■作業

ベースのマテリアルを設定

  1. Fill Layerを作成(Fill Layer 1)。
  2. 作成したFill Layerを選択。
  3. Materialsウィンドウから、Plastic Glossy Pure を選択。
以下のようにモデル全体が青のマテリアルで塗りつぶされます。



Quick Mask、Polygon Fill で塗る色の準備


前項と同じ要領で Fill layer を追加(Fill Layer 2)、マテリアルに SciFi PVC Plasticを設定。

Fill Layer 2上で右クリック>Add black mask。
マスクに何も描かれていない為この時点でモデルには Fill layer 1が反映されます。


Quick Mask、Polygon Fill で塗る

Fill layer 2のマテリアルで塗っていきます。

  1. Fill layer 2の black mask の四角をクリックして選択状態にします。
  2. 左上のツールアイコンから、Polygon Fill アイコンをクリックして有効にします。
  3. すると3D Viewのモデルにメッシュのエッジ線が見えるようになります。 
  4. さらにProperties - Polygon Fillウィンドウの Polygon Fillアイコンをクリックして有効にします。


  1. 塗る際はProperties - Polygon FillウィンドウColorスライダをめいっぱい右に寄せて1.0にします。(逆に消す時は左に寄せて0.0にして使う)

  2. 右クリック+ALTでだいたい真横からみえる位置に回転、さらにSHIFTも押下すると視点が正確に真横にスナップします。右クリック+ALT+SHIFTで視点角度が90度単位でスナップ)。
  3. 3D view上でTキーを押すと「Using quick mask」と表示されます。

    モデルの中央のみを選択するようにマウスでクリック&ドラッグで四角く囲います。
    囲ったメッシュ面がblack maskに自動的に書き込まれ、Fill layer 2のマテリアルが適用されます。
  4. このとき奥のメッシュも全て囲い対象になってしまう為、4隅のポールも一部選択されてしまいます。
    Properties - Polygon FillウィンドウColorスライダをめいっぱい左に寄せて0.0にします。
    4隅ポールの塗られてしまった部分をマウスドラッグで横長の四角で囲います。




最終的に以下のように目的のメッシュ面のみに Fill layer 2を適用できる black maskが出来上がります。




この要領で、

  • Fill layer + black mask
  • Polygon Fill
  • Quick mask
を使うとSubStance Painter上の作業だけで任意のメッシュ面のみにマテリアルを適用できます。


ちょっと塗りたい&メッシュ面境界で良い場合は便利です。



以下、他も塗った状態。



塗り絵感覚なのが簡単で良いですね。


Unityにインポートするとこんな感じ。














2016年8月28日日曜日

SubStance Painter2.2で表示される [GPUIssuesCheck] The current TDR~ を解決する

SubStance Painter2.2を起動すると以下のようなログが流れる場合があります。



指定のURLからallegorithmicのサイトに行けば解決方法(英語)が書かれていますが、レジストリを直接書き換える必要があります。
(製品ソフト使用でいきなりレジストリ書き換えというのは少々敷居が高い気もします・・・)



■環境について

OS: Windows10pro バージョン1607(Build 14393.82)
CPU: i7-6700
MEM: 32GB
GPU: GeForce GTX960(4GB)


■何が起きているのか?

以下問題のログメッセージ

[GPUIssueCheck] The current TDR (GPU hang recovery) delay is low 2s.
See http://support.allegorithmic.com/documentation/display/SPDOC/GPU+drivers+crash+with+long+computations


このTDRTimeout Detection and Recovery の略です。

GPUドライバ側でGPUがハングアップしたと判断する時間値(タイムアウト値)が2秒を示しています。
GPUが何らかの原因(熱や故障など)で一定時間以上応答しない時ハングアップしたと判断しGPUにリセット(?)をかけるようです。

この判定時間=タイムアウト値が2秒になってるということです。

そしてSubStance Painter2.2にとって2秒では「タイムアウト値が短すぎるかもしれない」とログでレポートしているわけです。



SubStancePainter2.2はGPUコア(GPGPU的な利用?)を活用しているようで、大きなテクスチャを扱う等の際に、その処理に時間がかかることがあるようです。
(特にテクスチャExport時に長時間GPUを使用するようです)

その際先のTDR値の2秒を超えると、ドライバ側でGPUがハングアップしたと検知されてしまい、処理が中断してしまうようです。

つまりこのTDR値を適切な値に設定しすれば良いということになります。
(ちなみに2秒はドライバ内デフォルト値)


■適切なTDR値は?


ちなみにこのTDR値を0にするとハングアップ検出がされなくなります。
これは本当にGPUがハングアップした際にOSを抱き込んで固まる危険性があります。
その場合PCのリセットボタンか電源をOFFにするしかなくなるので少々リスキーです。

しかしどれくらいに設定すれば良いかの推奨値は先の公式ページにも特に書かれていません。
極論どれくらいの処理をさせるか=作業をするかに依存しそうです。

ひとつの目安としてテクスチャサイズが関係しているようです。
ちなみに巨大なテクスチャで(4k?8k?以上とか)あまりに複雑なことをやるとGPUメモリが3~4GBでも不足するといった事態もあるらしいです。
(そもそもExportができないらしい?)

フォーラム(海外)などの情報では60~240~480などといった数値が散見されます。

まずは30か60程度に指定しておき、作業中にExportがうまくいかない等の状況が発生したら120、240~等に増やしていけば良いかもしれません。



■レジストリ書き換え作業

まず概要ですが、

  • タイムアウト値の設定箇所(キー)は2つあります。
    • TdrDelay
      GPUスケジューラからのGPU処理中断(タイムアウト)されるまでの猶予時間。単位は秒。デフォルト2秒。
      この値秒以上GPUの応答が無いとGPUがハングアップとみなされる。
      今回はTdrDelay値120に設定してみます。
    • TdrDdiDelay
      OSのスレッド処理がGPUドライバ処理中断を判断する時間。単位は秒。デフォルト5秒。
      今回はTdrDelay値125に設定してみます。※TdrDelay<TdrDdiDelayとなっているようなので、TdrDelayより少し長い程度に設定してみます。どうせGPUハングを検出したらアプリ側で長い間待っていても意味がない気がするので。
  • この2つのキーは初期状態では存在していないかもしれません
    その際はキーを作ります。
    データは DWORD です。
    (キーが存在していない場合はデフォルト値が使用されます)




以下書き換え作業手順。
  1. スタートメニュー右クリック>ファイル名を指定して実行 欄で regedit と入力してENTERキー押し。
    「このアプリがデバイスに変更を加えることを許可しますか」のダイアログでは「はい」を選択。
    レジストリエディタを起動。
  2. レジストリエディタ画面左のツリーで以下を辿り右画面に表示させます。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers
  3. TdrDelayが無い場合は作成します(ある場合は次へ進む)
    右画面の空白部分で右クリック>新規(N)>DWORD(32ビット)値(D)
    作成した行の上で、右クリック>名前の変更 でTdrDelay に変更。
  4. TdrDelayの行の上で右クリック>修正。
    「表記」で「10進数(D)」をクリック。
    値のデータ(V)で120と入力します。
  5. TdrDdiDelay についても同じ要領でキーが無ければ作成し、名前変更、値の修正をします。
  6. レジストリエディタを終了し、PCを再起動します。
 これで書き換え作業完了です。

SubStancePainter2.2を起動して問題のログが表示されなければうまくいっています。




■参考サイト

msdn.micrfosoft.com: TDR Registry Keys









2016年6月26日日曜日

艦これAndroid先行運用版(激安運用)

最近忙しくてあまりやってなかった艦これ。

そういえば・・・と思ってしばらくぶりに起動したら

「艦これ 先行運用版」当選していました ヽ(´ー`)ノ

いくつかのデバイスで動作確認&しばらく運用中。
その辺についてついて少し書いてみようかと思います。
(主に激安系なデバイス)



動作確認したデバイス

タブレット機2台と激安スマホ1台をまずはWIFI環境で動作確認(モバイル回線は後述。

過去「無理やりブラウザで動作」させた状況に比べると総じて軽いです。

元々の艦これが解像度が800x600程度で綺麗に作られている為、安価な低解像度デバイスでもグラフィックがPC版同等で違和感全く無し。

  • Fireタブレット 8GB (Kindle Fire 第5世代。Android 5.1.1 )。
    アマゾンで8980円のデバイス(プライム会員は1台目のみ4980円)。
    ME-173Xよりも若干軽快。とりあえす普通に遊べる。
    余談:このKindle世代(?)からRootを取らなくてもあっさりGooglePlayが入るので「きのこれR」とかでも遊んでます。ただし課金などGoogleAPIまわりは動作しない可能性がありそうなので要注意(未確認。
      
  • Asus ME-173X (Android 4.2.2)
    もはや結構古い機種で艦これ推奨Android4.4以上に該当しない
    しかしあっさりインストール&動作
    今のところ特に問題なし。
      
  • Acer Liquid Z200 (Android 4.4.2)
    激安スマホで一時期話題になったデバイス。現行でも6000円ちょっとで売られている。
    3つの中では最も公式推奨動作要件に合致している(?)デバイス。
    4インチ画面はさすがに少々小さいか?と思ったが慣れれば意外とそうでもない(提督側スキルで補完)。
    遠征、演習、キラ付け程度は特に問題なく運用中。

過去「無理やりブラウザで動作」させた状況に比べると戦闘画面などを見てもどのデバイスでも圧倒的に軽い。
ただやはり母艦(PC版)と比べると微妙に戦闘画面の進行が遅い気はします。

母艦補助運用という意味では良く出来ていると思います。想像以上に軽い印象。



モバイル回線運用

本命のモバイル回線運用。

運用環境は以下の通り。

スマホ本体: Acer Liquid z200 (実売6500円位)
回線: OCN モバイル ONE (データ通信専用カード月額 972円 110MB/日)

※アマゾンあたりでSIMカードを買うと安い。


結論からいうとそれなりに遊べてます。以下にざっと所感記述。
  • 回線速度が結構影響する
    回線が遅いと激しくモタつきます。
    OCN ONEでターボOFFだとかなりきつくプレイ不能レベル。(ターボONだとそれなりに遊べる。
    思うにデバイス性能よりも回線速度のボトルネックが大きい印象。
    ※しかしクライアントは良く出来ている感じで、艦娘のグラフィックが未読込みでもある程度の操作は可能。キラキラなどは優先的に視認できる。
      
  • 通信トラフィックは少ない
    OCN ONEの最安プラン110MB/日で1日1時間程度遊んだくらいでは消費量がわからない位のトラフィック。艦娘グラフィック等は一度読むとキャッシュしている様子。
    ※追記:アップデート直後は50MB位消費。画像など再読み込みのせい?

      
  • 音楽/効果音/ボイスは止めて運用
    Z200はそれなりに非力なスマホなので。(出先でボイスが元気良く出て困る場合も?w
    PC版ではMP3ファイルをネット経由でダウンロード&キャッシュで再生していたはず。Android版もその辺は同じなのではないかと。
    つまり初回キャッシュさせずにトラフィック料金節約という意味では音関係はOFFの方がいいかも?。
    とはいえたまにBluetoothヘッドホン経由でボイス位は出してます。
イベントなどハードな運用は厳しそうですが、遠征、演習、キラ付け程度なら普通にできるので出先で合間に使うには良い感じですね。



運用コスト


とりあえず出先で「艦これ」が最低限できればいいということならば、

Acer Liquid z200 + OCN ONE(等のMVNO系)

が、私的には安価な感じです。

今日アマゾンで見た価格では、

Liquid z200(6140円) +OCN モバイルONEデータ通信専用SIM(400円)。

6540円で始められて、月額972円といった感じ。


※ただしz200はLTEには対応していなかったり、メモリ、ストレージ容量などがかなり少ないデバイスなので提督のデバイス運用能力というか工夫が結構必要です。安い分手間はかかる感じなのでその辺は自己責任で。 

プライム割引キャンペーン中の Kindle Fire(第5世代)は画面インチサイズ、性能ともにそれなりに良いのですが、SIMスロットが無いのがネック。(一応テザリング運用はできる

こちらはWIFIでベッドやソファでゴロゴロしながら運用などには良い感じです。
※一応公式動作保証外だとは思います念の為。
艦これはDMMランチャー管理下&サイトDLなので、GooglePlayは不要だとは思います。
課金まわりの動作が気になるので、その辺はPC版で操作する運用方針。




なんやかんやで、確保すべきはやはり回線速度ですかね。LTEだと挙動が早くなるか気になるところです。



2016年6月25日土曜日

UnityでCardboard SDK使用時エラー対処 ~ Failed to re-package resources.

CardboardのSDKを使ってみたら、いきなりエラーでつまずいたので対処法をメモ。


■問題点

Unity上でビルドすると、

 Failed to re-package resources. See the console. See the Console for details

というエラーダイアログが出る。
 

コンソールログはこんな感じ。



■開発環境


Windows10 Pro (x64)
Unity 5.3.5f1 Personal
Android SDK Manager Revision 25.1.7

アプリはこちらのをダウンロードして使用。

EmergentVR cardboard-unity

これに含まれる以下の2つのパッケージを空のUnityプロジェクトに放り込めばアプリの準備はOK。
  • CardboardDemoForUnity.unitypackage
  • CardboardSDKForUnity.unitypackage
※最新のCardbordのSDKはDaydream対応で名称が gvr-unity-sdk-master 等と変わっていたかも。とりあえずちょっとテストするには問題なし。



■原因

Android SDK Build-tools が最新版(Rev.24)すぎるとまずい模様。
Rev23以前を使えば良さそう。


■対処

Android SDK Build-toolsのRev.24を削除して対処。
Rev23以前を残すようにする。

Android SDKのインストール先ディレクトリから SDK Manager.exeを実行。
(例:インストール先ディレクトリ\android-sdk_r24.4.1-windows\SDK Manager.exe)

起動したら"Tools">"Android SDK Build-tools"の Rev.欄を見る。
Rev.欄が24の行が Installed になっていることを確認。


"Android SDK Build-tools"の Rev. 24の行にチェックを入れて、右下の"Delete 1 package.."をクリックしてアンインストール。

Not Installedになったことを確認。
※すぐ下のRev. 23.0.3 はInstalledになっていることを確認。なっていない場合は、チェックを入れて右下の"install 1 package"をクリックしてインストールしておく。



これでUnity上でコンパイルが通ります。


■機材(おまけ)

Cardboardはハコスコを購入。
6000円位で買ったスマホ AcerZ200で実験。

ちょっと画面サイズがずれたりしてますが、50fps位でていてそれなりにVRぽいです。
(かなり非力なスマホなので激しい3Dアプリは厳しいですが)

ちなみに7インチ以上のタブレットでは画面が大きすぎて両眼距離からかけ離れてしまいうまく見えませんでした。

2016年4月6日水曜日

視線検出センサー Tobii EyeX Controller(対応済みゲーム有り) in Unite2016

最近リアルでいろいろ変化があったりで、更新が滞ってましたが・・・。


Unite2016に行って参りました!(唐突


やはりというかVR、AR機器のデモの賑わいがすごいです。話題のPSVRも体験デモしてきました。



そこで超個人的に気になったのが、


トビー・テクノロジー株式会社が出展していた視線入力機器

つまり「眼球の動き」をトラッキングするというやつです。
 (昔、運転免許証の講習会映画上映で、ドライバーの視線トレースしていたのを見たような記憶)



今まさにVRブーム到来(?)寸前(??)だというのに、やや斜め上(斜め下?)なデバイスに、
つい食いついてしまうのはもう性分なのでしょうがないです(キッパリ
(KindleとかUOYAとか地味にマイナー方面なものをつい買ってしまうパターン)


いや、これはこれですごいんですよ! ヽ(`Д´)ノ

少なくとも一昔前に見たときは感動した記憶。
(一応私は発売元会社とは全く無縁です。念の為)



平たく言うと、マウスカーソルを「眼で=視線で」移動できるようなイメージです。
そんなデバイスが1万円程度で普通に買えるというのが驚きです(値段詳細後述。



マクロス フロンティアに出てくる視線追従の多重ロックオンみたいなこともできそうですが、これはこれでFOVEとか他社でHMD一体型があったと思うので、

やはりここは、


映画「マイノリティリポート」劇中のトムクルーズのあのUI

をMotion Leapと組み合わせてできないかという夢を感じます。

Unite2016のTobiiブースで配布されていたDMカードにはこう書かれています。

See the future
Create the future

(゚д゚)(。_。)(゚д゚)(。_。) コクコク

多分本気出せばもう技術的には夢ではないと思います。
(本気出す=リソース確保=金+時間+人材・・・ですかね・・・やっぱり夢?(笑)


無論SDKはUnityも対応してます。



■買うしか


結論、注文しました(超速

製品名: Tobii EyeX Controller


USB接続タイプです。(メガネタイプもありますが、そちらは業務用らしくお値段も高い)。


輸送2週間位とありますが、多分海をどんぶらこと流れてくるので1ヶ月~1ヶ月半位の心の余裕が必要です。

追記: ShippingのUPSトラッキング メールが来ました。Scheduled Delivery Date: Monday, 2016/04/11。って4/5注文で4/11予定表記(時差加味しても4/12)。正味1週間とかかなり早い気がしますがちょっとあてにしてみましょう( ̄ー ̄)
追記:発送元はスウェーデン、UPS便4/9に到着。早っ。

定価は139USD(119ユーロ)。本社はスウェーデンらしいのでユーロ圏ですね。

サイトを見ると4月はなにやらキャンペーン(?)期間らしく、

  • Assassin’s Creed Syndicateのゲームコードが無料(勿論Tobii EyeX Controller対応
  • 海外シッピング無料(これ結構大きい
  • Unite2016来訪者はブースでDMカード貰っていれば139USDが95USDになるクーポンコード有。


シッピング無料は結構太っ腹だと思います。
クーポン併用で119ユーロが83ユーロ。円換算で10871円でした。


購入サイト(海外本社サイト): http://www.tobii.com/xperience/
(ちなみに国内法人サイトはこちら: http://www.tobiipro.com/ja/




■対応ゲーム

数は少ないですが、一部有名タイトルのゲームも対応済みな様子。

サイトに対応ゲームの一覧があります。Assassin’s Creed やTom Clancy
ユーロトラック2等々。


対応アプリ一覧: http://www.tobii.com/xperience/apps/


何気にMSIが出しているゲーミングノートPCのGTシリーズにこのデバイス標準搭載品があったりします(ArienWareに似てる気がするのは気のせい?)。


対応ゲームがあるとすぐ遊べて使用感もわかるし、SDK使って何か作る際の参考にもなりそうです。





■Windows10の生体認証対応

Windows10は生体認証に対応で、それを「Windows Hello」と呼んでいるらしい。

ログイン時にパスワードが不要とあるので、生体認識でログインということだと思います。


Tobiiの本家公式サイトを読む感じでは(理解があっていれば、

  • デバドラ不要。Tobii EyeX Controllerのドライバ類はWindows10にビルドイン済み。
  • 認証には顔、虹彩(アイリス)を用いている。

らしいです。

虹彩は指紋同様に個人識別情報としては古くから有用とされてますが、実際どこまで識別強度が高いのかは気になるところ。

Windowsのログイン用途なら充分かもしれないし、これもちょっと面白そうではあります。

※追記: Windows10にしたので「Windows Hello」使用中。便利ですねこれ。




■技術的な(勝手な)考察

Tobii EyeX Controllerは赤外線LEDと受光センサーを用いているらしいです。
(受光センサーの詳細は不明ですが、画像用のCMOSセンサーかも???)

皮膚自体の温度によるサーモグラフ的なものと、眼球の赤外反射をうまく利用してそう?

眼球は赤外反射が皮膚とは特性が異なると思われます。
また、黒目と白目も眼の構造上反射率が違う気がします。
(猫の目が夜光って見えるときがあるのと似た話?)

ということを仮定して妄想すると。
  • 顔はサーモグラフ的なパターンでそこそこ認識できそう。
    ※というか昔CCDで赤外撮影してたような映像で捉えるのかも?
  • 皮膚と眼球付近の温度差で眼の面積部分を抽出できそう。
  • 黒目中央付近から入射した赤外と、白目付近に投影された赤外は反射の加減が異なるような気がする。
ということから、顔認識、白目面積内での黒目の位置などを割り出せそうな感じかも?





などと、妄想しながら到着を楽しみに待つことにしますヽ(´ー`)ノ

追記: TobiiもMotion Leapも赤外線ですね。同時使用は厳しいかなぁ・・・。Motion Leapも買えばわかるk(ry。