強火で進め

このブログではプログラム関連の記事を中心に書いてます。

ECS の環境準備中に 'Unity.PerformanceTesting' のエラー発生

Package Manager から ECS ( Entity Component System ) の環境をインストールすると以下のエラーが発生しました。

Assembly has reference to non-existent assembly 'Unity.PerformanceTesting' (Packages/com.unity.entities/Unity.Entities.PerformanceTests/Unity.Entities.PerformanceTests.asmdef)

 検索するとこちらがヒット。

0.0.12-preview.23: non-existent assembly 'Unity.PerformanceTesting' · Issue #95 · Unity-Technologies/EntityComponentSystemSamples https://github.com/Unity-Technologies/EntityComponentSystemSamples/issues/95 

 対応方法としてはプロジェクトフォルダ内の Packages フォルダに有る manifest.json  に "com.unity.test-framework.performance": "0.1.49-preview" を追記するというものです。

 

この様に追記します。

{
"dependencies": {
"com.unity.test-framework.performance": "0.1.49-preview",
"com.unity.ads": "2.3.1",
"com.unity.analytics": "3.2.2",
"com.unity.burst": "0.2.4-preview.41",
"com.unity.collab-proxy": "1.2.15",

(以下省略)

 

Android アプリの64bit必須化の続報

2019年8月1日より、Google Playで配布されるアプリのアップデートは、ネイティブコードを含むアプリについては、64bitに限定される(追加で32bitコードも可能)。ただしUnity 5.6以前で作成された32bit対応ゲームに関しては、2021年8月までアップデートを受け付ける。

 2021年8月1日より、Google Playでは64bitに対応可能なデバイス上において、ネイティブコードを含むもののなかで、64bit非対応のアプリについては配信を停止する。つまり、これらのアプリは64bit対応デバイスGoogle Play上から提供されなくなる。これにはUnity 5.6以前で作成された32bitのゲームを含む。

Androidが8月から64bitへの移行を本格化 - PC Watch
https://pc.watch.impress.co.jp/docs/news/1164859.html

Google の公式リリース。

Android Developers Blog: Get your apps ready for the 64-bit requirement
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

「AR Developer Meetup #1」に参加して来ました(その2)

(※その1からの続き)

AR三兄弟とSDKの話

  • 川田十夢さん(Twitter:@cmrr_xxx)


  • 情熱大陸に出演した後に見かけた知恵袋での質問


  • 会社員時代は特許開発に携わる



  • 独立後もいくつも特許を取得している


  • 有名なジャミロクワイの「Virtual Insanity」のPVの椅子の部分をARで再現。音楽に合わせて現実世界で椅子が滑って移動行く




  • 絵からホログラムが出てくる


  • 床に置くとそこから生えてくる



  • 展示されているものを観るだけではなく、持って返って欲しい
  • 拡張現実オーケストラ。指揮者になってオーケストラを指揮できるコンテンツ。指揮棒を速く振るとテンポが速く、遅く振るとテンポが遅くなる



パネルディスカッション

SDKの選定基準は?

  • Swiftが得意なのでiOSで動くかどうかを重視
  • 達成できるかを基準に選定
  • サーポートの観点からOSメーカーが提供しているものを選択
  • 値段。Vuforiaは高い
  • オクルージョンが必要な時などは6D.ai

■どうすればARのSDKを使えこなせますか?

  • やはりドキュメント
  • ここさえマスターすれば他はどうにでもなるというところをやる
  • 自分でシンプルなサンプルを作ってみる
  • 入力補助に出てきたものをトリガーにこんなものがあるんだと調べていく
  • 海外の人のデモ動画を見て、どうやって実現するかを考えてみる

■今後出てきてほしいARのSDKや機能は?

  • 認識精度が上がって欲しい。ドリフトしないようにして欲しい
  • SAOのオーグマーが欲しい
  • オブジェクト認識。「これはテーブルです」など
  • 平面に置くという制限の撤去。オブジェクトに置きたい


RADiCAL(iOSアプリ)。ボーンの情報をUnityに持ってこれる

RADiCAL – AI-powered 3D animation
https://getrad.co/

  • 使用例

https://twitter.com/inoichan/status/1032543179348697088/video/1


■いま一番注目しているARのSDKは?
※司会者から「ARKitは除く」という制約が付く

  • 8thWall。WebでARを実現できるのが良い。アプリのインストールを行わずに体験できる
  • A-Frame(https://aframe.io/)
  • Webページを見る速度で提供したい。QRコードを置いておいてもアプリはなかなかダウンロードして貰えない

■ARのSDKを使ったデモで注目しているものや気になったものはありますか?

  • 部屋をまたいだ対戦ゲーム
  • 藤井先生のSRコンテンツ
  • クラインの壺。SR的なぞくっとする話も有る

クラインの壺 (新潮文庫)

クラインの壺 (新潮文庫)

■2019年のARはどんな事に期待しますか?

  • 機能はそろってきてる。精度を高めて欲しい
  • 他の開発者にそうきたかと思わせるようなもの
  • スマホARのヒットアプリ。そして、それを僕が作る
  • 「これはARじゃないとできないね」という視点の作品
  • 音のAR。サポートなどを行うもの。インフラとなるようなもの
  • 企業が熱意をそそぐ事

スポンサードセッション(Asteroid ARの紹介)

Asteroid ARの公式ページ
http://asteroid.zone/

  • AsteroidはARにフォーカスしたIDE
  • ARには2つの要素があると考えている。ML(マシンラーニング)とAR
  • ノードを繋げるだけでコンテンツを作成可能

  • 現在はARKitで実装
  • 将来は全てのプラットフォームに

「AR Developer Meetup #1」に参加して来ました(その1)

募集ページ

AR Developer Meetup #1
https://ar-japan.connpass.com/event/109139/

Togetterまとめ

AR Developer Meetup #1 まとめ - Togetter
https://togetter.com/li/1296717

Placenoteで簡単共有AR

  • 釜阪一歩さん(Twitter:@1pp0qq1)

■スライド資料

Placenoteで簡単共有AR.pdf - Speaker Deck
https://speakerdeck.com/1pp0/placenotetejian-dan-gong-you-ar

■Placenoteとは?

  • MapのSave/Load/Localizationを簡単に実現できるSDk

■特徴

  • ARコンテンツを永続的に正確な場所に保存
  • サーバレスでアプリケーションを素早く展開
  • 迅速なプロトタイピングツール

■Placenoteの公式サイト

Placenote | Build Persistent AR apps
https://placenote.com/

■なぜPlacenote?

  • 超簡単に使えるから
    • サンプルシーンを参考に簡単に実装できる
    • 自分でサーバを準備する必要無し

サンプルシーンはシーン共有されていなかった

  • Firebase(のRealtime Database)を使って共有することに

Firebase Realtime Database  |  Firebase Realtime Database  |  Firebase
https://firebase.google.com/docs/database/?hl=ja

  • タップした瞬間に直接表示させるのではなく、DBを更新。続いて全てのクライアントに更新を通知
  • 現在は共有部分は自前で実装する必要あり

Vuforiaを用いたARコンテンツ制作

  • 箕輪 敬太さん(Twitter:@3nowa)






  • Blender + Unity + Vuforiaの組み合わせで作成


  • Extended Trackingは結構性能が良いのでチェックを付けておくべきとの事

Extended Tracking
https://library.vuforia.com/articles/Training/Extended-Tracking

  • 講演中の実機デモ


HADOにおけるVuforiaとARKit

  • 増田博志 (まっすー。)さん
  • スライド資料

  • HADOの現在の仕組み。Vuforiaを使用したマーカーベースの仕組み。iPhoneがマウントされたHMDを装着し、腕にはジェスチャー感知用のデバイスを装着


  • 壁がマーカー、幅は6mくらい
  • ARKitの導入を検討した所、ドリフトが発生

※ドリフトとはトラッキングが外れて世界が流れていく事

  • 壁や床が白いとまったくトレッキングできない
  • HADOではプレイヤーの動きが激しい
  • 内部でIMUを使ってるのでドリフトする


  • その他にも逆に基本はマーカーベースで処理を行い、マーカーから外れたらARKitを活用するという方法もテスト。
  • しかし、補正をかけても元に戻す処理の時にドリフトする

■ARKitとVuforiaを性能比較

  • テスト内容:振る、傾き、マーカーの一部を隠す
    • Vuforia:粘り強く頑張る。その代わり、オブジェクトがプルプルしたりすることがある
    • ARKit:綺麗に諦める


ARCoreとSceneform

  • スライド資料

ARCoreとSceneform - Speaker Deck
https://speakerdeck.com/ktaka/arcoretosceneform

  • AR/VR本の翻訳や技術系雑誌へ解説記事を寄稿。

Unityによるモバイルゲーム開発 ―作りながら学ぶ2D/3Dゲームプログラミング入門

Unityによるモバイルゲーム開発 ―作りながら学ぶ2D/3Dゲームプログラミング入門

UnityによるVRアプリケーション開発 ―作りながら学ぶバーチャルリアリティ入門

UnityによるVRアプリケーション開発 ―作りながら学ぶバーチャルリアリティ入門

UnityによるARゲーム開発 ―作りながら学ぶオーグメンテッドリアリティ入門

UnityによるARゲーム開発 ―作りながら学ぶオーグメンテッドリアリティ入門

ARCoreはiOSでも使える

Sceneform Overview  |  ARCore  |  Google Developers
https://developers.google.com/ar/develop/java/sceneform/

  • Sceneformは2018年5月にGoogle I/Oで発表された高レベルなライブラリ
  • Sceneformの登場前はobjファイルをロードし、OpenGL ESで描画
  • 物理ベースのレンダラが組み込まれている
  • 3DデータはAndroid Studio上でインポートして変換




  • 1.5からはglTFに対応。glTFはAndroid Studioにインポートする必要が無く、直接読み込むことが可能


  • 3D空間にUIを配置するのも通常のUI作成と同様に行える






6D.ai(β)で簡単なゲーム作りました

加藤友雅さん

  • 今までに制作したもの

ARを使った脱出ゲーム「ノンフィクション・レポート」のティザーサイトが公開。iOS版のクローズドβテスト参加者も募集中 - 4Gamer.net https://www.4gamer.net/games/420/G042043/20180524045/

  • 6D.aiを使うきっかけ


  • 部屋の中でボールを転がしてみる。椅子の当たり判定なども良い感じ



8th Wall WebでOptimized Reality

  • @ash_yanagisawaさん(Twittter:@ash_yanagisawa)


  • Extended Reailty = XR(情報を追加)


  • Diminished Reality = DR(情報を減らす技術)


  • XR + DR = ?
  • Optimized Reality。必要な情報を強調し、必要の無い情報を隠す


  • 必要の無い情報をモノクロ化して、必要な情報を強調
  • このデモは「8th Wall」( https://8thwall.com/ )で作成

※長くなったので記事、分割します。その2に続きます。

Unity 2018.3.0b11 から JavaScript(UnityScript) と Boo が使えなくなりました

Unity 2018.3.0b11(現在はまだベータ)から JavaScript(UnityScript) と Boo が使えなくなりました。

What's new in Unity 2018.3.0 Beta 11 - Unity
https://unity3d.com/jp/unity/beta/2018.3.0b11

Editor: Removed support for compiling UnityScript and Boo scripts.

「えっ?既に使えなく無い?」と思う人も居るかもしれませんが今までは .js ファイルや .boo ファイルを別途作成して、 Unity のプロジェクトに追加すれば何の問題も無く使えてました。
※メニューから新規作成は出来なくなっていました。

今回からはコンパイル対象のファイルと見なさなく成りました。


試しに既に使用しているプロジェクトを開いてみた所、 Inspector には以下の様に表示されました。もちろん、コードは実行されませんでした。

The associated script can not be loaded.
Please fix any compile errors and assign a valid script

新規に Project ビューから Hierarchy ビューにスクリプトをドラッグした場合にはこの様なダイアログが表示され、追加出来ませんでした。

Can't add script behavior AssemblyInfo. The script needs to derive from MonoBehaviour!

今では C# でプログラムしている人がほとんどだとは思いますが昔作成した自作ライブラリ、 AssetStore で昔買った Asset などには JavaScript のコードが含まれている可能性もあるかと思いますのでその辺りに問題が無いかベータ版のうちにチェックしておくと安心できるのでは無いでしょうか。

JavaScript(UnityScript) を C# に変換

JavaScript(UnityScript) については Unity が公式で unityscript2csharp という変換を行うツールを提供しているのでこちらを試してみるのも良いでしょう。

Unity-Technologies/unityscript2csharp: Tool to convert UnityScript (a.k.a, Javascript in Unity parlance) to C#
https://github.com/Unity-Technologies/unityscript2csharp

【Unity】UnityScriptをC#に変換する unityscript2csharp - テラシュールブログ
http://tsubakit1.hateblo.jp/entry/2017/10/31/223210

「Unity ECS完全に理解した」に参加して来ました

投稿が遅くなりましたが「Unity ECS完全に理解した」に参加して来たのでブログにまとめときます。

公式サイト

Unity ECS完全に理解した - connpass
https://connpass.com/event/101774/

Togetterまとめ

「Unity ECS完全に理解した」関連のつぶやきまとめ - Togetter
https://togetter.com/li/1279958

ECS初学者に向けてのTips集 - @mao

ECS初学者に向けてのTips集 - Google スライド
https://docs.google.com/presentation/d/11ej0BfUxs7eyFeGGplJJR5v-UgVAZt-L-1EBCLLw5FA/mobilepresent?slide=id.g44a2563ed4_0_1

趣味で書いているECSに関するQiitaの記事。

【Unity】ECSで弾幕STGを作ってみたので技術周りについて解説 - Qiita
https://qiita.com/mao_/items/6ad28fc20dda77364e39

【Unity】ECS + JobSystemでライフゲームを実装してみた - Qiita
https://qiita.com/mao_/items/6fc14b36656a29e82d2b

【Unity】PureECSの描画周りについて解説してみる - Qiita
https://qiita.com/mao_/items/c4a217b33a0a94d5d52f

【Unity】PureECSの衝突判定周りについて解説してみる - Qiita
https://qiita.com/mao_/items/ad8a09a9c6403a2e84cf

sugi-cho/Animation-Texture-Baker: 頂点の位置と法線を、Texture2Dに保存しておく。ARGBFloatとか、HDR Textureを使用したバージョン
https://github.com/sugi-cho/Animation-Texture-Baker

【CEDEC2018】CPUを使い切れ!Entity Component System(通称ECS)が切り開く新しいプログラミング - YouTube
https://www.youtube.com/watch?v=T8lGD__aSm8

ECSで作る爆速TrailRenderer - @notargs

ECSで作る爆速TrailRenderer - Google スライド
https://docs.google.com/presentation/d/1PlJKpJTxQ5OQNMBVrWc4TqtrK6iDZCVEBHu1fwmXlxE/mobilepresent?slide=id.p

【Unity】ECS完全に理解した勉強会に登壇しました! - notargs’s blog
http://notargs.hateblo.jp/entry/ecs_kannzenn_rikai

今回のGitHubリポジトリ

notargs/ECSPerfectUnderstand
https://github.com/notargs/ECSPerfectUnderstand

Hybrid ECSで高速Transform更新 - @Es_Program

Hybrid ECSで高速Transform更新 - Google スライド
https://docs.google.com/presentation/d/19LMMoM00gMJb9tTqRBnnOUz8NAOUkshC656bhl9DeTo/mobilepresent?slide=id.p

LT1: PureECSで作ったサンプルを更新した話 - @kakunpc

PureECSで作ったサンプルを更新した話 / かーくん さん - ニコナレ
https://niconare.nicovideo.jp/watch/kn3550

LT2: LTで分かる!アセンブラ(仮) - @tnayuki

LT3: Memory Management of C# with Unity Native Collections - @neuecc

関連情報

【Unity】PureECSの衝突判定周りについて解説してみる - Qiita
https://qiita.com/mao_/items/ad8a09a9c6403a2e84cf

【Unity】ECSの「Disabled ComponentData」と「Prefab ComponentData」について解説してみる - Qiita
https://qiita.com/mao_/items/89306846075f65ce6b50

GoPro HERO7 Black を購入しました。仕様や落とし穴などを解説


GoPro HERO7 Black を購入しました。アクションカメラは今までは1万円を切る様な中華カムしか使って無かったので初の本格的なアクションカメラデビューです。

GoPro HERO7 Black - 驚異的に滑らかな 4k ビデオ
https://jp.shop.gopro.com/cameras/hero7-black/CHDHX-701-master.html

GoPro は前々から気にはなっていていたのですがイマイチ踏ん切りが付かない状態でした。

今回はカズチャンネルのカズさんのこの動画や

ポッドキャスト番組 backspace.fm の以下の回などを聴き、新機能がなかなか良さそうなのと「3個買ってもiPhone XS Maxより安い」とか「一眼レフのレンズを考えると4個買える」なんて話などを聞いて購入する事を決めました。

#263:「GoPro HERO7だけでVlog」を始める理由 – backspace.fm
http://backspace.fm/episode/263/

主な機能説明

タイムラプス
機能 説明
TimeWarp ビデオ マウンテンバイクやハイキングの撮影など動きがあるものに最適
タイム ラプス ビデオ 夕日や街中の撮影など、カメラを静止して撮影する場合に最適
タイム ラプス フォト よくあるタイムラプス。静止画として保存される
ナイト ラプス フォト 暗い場所での撮影向けにシャッターの開放時間が長い設定で撮影される

タイム ラプス フォトは静止画の連続なのでその後に自分で動画化する作業が必要ですが タイム ラプス ビデオはその作業を内部的に済ましていてくれるモードの様です。

HyperSmooth

サイトで「ジンバル並みの安定化機能が利用できます」と書かれてる目玉機能です。
ビデオ撮影時に揺れをジンバルを使ったくらい抑えてくれる様です。

しかし、実際に撮影してみるとそんなに効果を感じませんでした。

不思議に思いながらマニュアルを見直すと気になる記述が…

今回、撮影は解像度だけ 4K に変更し、その他の設定はデフォルトの 24fps と 4:3 の設定で行ったのですが、マニュアルによるとこれだと HyperSmooth が有効にならない様です。今回引っかかった部分はアスペクト比です。ここがデフォルトの 4:3 だと有効にならないみたいです。
4K の場合には 16:9 のみ対応している様です。

※画像は取扱説明書からの引用。

※画像は取扱説明書からの引用。

この画面の「安定化」の項目が「自動」になっている場合には HyperSmooth が有効になっている様です。

音声入力

音声で撮影や録画開始など、 GoPro をコントロールできます。
しかし、デフォルトでオフになっているので上から下にジェスチャーすると表示されるこの画面の一番左の横顔のアイコンをタップして有効にしないと使えません。

ちなみにこの画面のアイコンは左から以下の様になっています。

  • 音声コマンド
  • ビープ音
  • QuikCapture(ディスプレイOFFの状態でもキャプチャボタンを押すと即座に撮影開始)
  • ロック

この様な音声コマンドに対応している様です。

※画像は取扱説明書からの引用。

※画像は取扱説明書からの引用。

画面タッチ時のジェスチャー

  • 上から下:ダッシュボード(設定アイコンやユーザ設定への遷移が可能な画面)を表示
  • 下から上:撮影済みの画像や動画の確認と削除ができるギャラリーを表示

ゲージ(Gauges)

こちらは以前から有った機能の様ですが動画の上に撮影時の移動経路や速度、上昇高度の情報を載せれる機能です。

デスクトップ用 Quik でゲージを使う方法
https://jp.gopro.com/help/articles/Block/How-to-Use-Gauges-in-Quik-for-Desktop

その他の気になった特徴

  • Protune というプロモードの設定が有る。主な機能は以下
    • 色、ホワイト バランス、シャッター速度などを手動でコントロール可能
    • 音声ファイルに mp4 に加えて wav ファイルも一緒に保存される設定を行える
    • 音声をステレオか風切り音低減のどちらかに固定する事が可能
  • RAW画像で保存する事も可能(写真モードの画面から写真設定画面に遷移して設定可能)

仕様

ビデオ

■ビデオ圧縮
HEVC または H.264 + HEVC というまだ HEVC に対応してない環境も考慮した保存の2種類が設定可能。
※設定は ユーザ設定 > 一般 > ビデオ圧縮 。


■設定可能な解像度とfps

※画像は取扱説明書からの引用。

※画像は取扱説明書からの引用。


■ TimeWarp の設定と対応するビデオの長さ

※画像は取扱説明書からの引用。
基本的に2倍速にすると1/2の時間に、5倍にすると1/5の時間にという想定通りの時間になる様です。


■タイムラプスでのおすすめな設定

※画像は取扱説明書からの引用。


■タイムラプスビデオの設定と対応するビデオの長さ

※画像は取扱説明書からの引用。

使ってみて分かった点

  • iPhone アプリで現在 GoPro が撮影している映像が確認できますが GoPro を水中に入れると WiFi の電波が途切れる様で接続が切れます。
  • タイムラプスはどのモードで録画していても録画を開始した瞬間 iPhone アプリでのプレビュー表示は表示されなくなり、以下の様な画面になります。 GoPro 本体のプレビューも表示されなくなりました。


撮影結果

実際に撮影した動画はこちらの記事にまとめています。