イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

Unity しょうもないミス + 小ネタ集

Unityのしょうもないミスと小ネタをここにまとめていく。

 

++モデルをUnityに取り込むときはテクスチャを先に入れておいた方がよい。よくわかってないが、先にテクスチャを入れておかないとUnity上でモデルにテクスチャが自動で貼り付けられない

 

++UnityでWebGLでビルドすると、デフォルトのフォントに日本語が含まれてないために日本語が表示されない。日本語を使うには日本語のフォントを含める必要がある。

UnityのWebGLで日本語を表示する - Qiita

 

++UnityでWebGLでビルドするときIL2CPPを使うっぽいのだが、これがすごく時間がかかる。SSDにしたり、Windows Defenderをオフにすると早くなるらしい

IL2CPP ビルド時間の最適化 - Unity マニュアル

++

OnSceneLoadとStartだとLoad=>Startの順で呼ばれる

 

++日本語化すると一部のコンポーネント名まで日本語化されて英語で検索しても出てこないときがある。

 

++Start()はインスタンス化した時点でのシーンでしか呼ばれないっぽい。DontDestoryOnLoadしたら次のシーンでは呼ばれない

 

++エラーがあるとスクリプトのアタッチが出来ないっぽい。

 

++EasySoundManagerというアセットを導入してリファレンスを見ながら作業していたが、特定のメソッドについて存在しない、というエラーが返ってくる。調べてみると、ストアに置かれてるアセットが古いもので、リファレンスが更新されていたのが原因であった。GitHubから最新版を落としてくることで解決

 

++オブジェクトにそのコンポーネントを付加してないのに(AudioSorceなど)そのオブジェクトに追加したスクリプト内で

gameObject.GetComponent<AudioSorce>とかしてた。 

 

++オーディオ関連の操作がおかしい(例えば、ゲーム開始時に再生、しないようにしてるのにBGMが流れる)と思ったら、知らない間に全く別のオブジェクトにBGMを適応していた。

 

++Unityのカメラプレビューの映像とゲーム実行時のシーンが一致しない。=>良くわからないままUnityを再起動したら回復したので、Unityのバグだったんではないか、という気がする。

 

++スクリプト側で速度の変数をいじっても実行時に変更されない

=>変数をpublicで公開しており、インスペクタで設定された値が設定されていた。

 

++GetComponent<Rigidbody>();でエラーが出る。

メンバ変数を宣言するところに直接書いてたら出た。

start()内で書いたら通った。

ocuras go の開発環境を整える(WIndows 10)

++用意するもの

PC,Ocuras Go,PCとOcurasGoを繋ぐUsbケーブル

 

++Unityをインストール

UnityHubをインストールし、UnityHubからunityの最新版をインストールする(今回は2018.3をインストール)。このとき、Android Build Supportにチェックを入れる。

(日本語化したければ日本語化パッケージにもチェックを入れておく)

Download - Unity

 

++AndroidSDKをインストール

Android Studio と SDK ツールのダウンロード  |  Android Developers

エディタが要らない人は

下の方にあるコマンドライン ツールのみ、からインストールする。

 

++JDKをインストール

私がやったときはjdk8が対応していた

Java SE Development Kit 8 - Downloads

Java SE Development Kit 8u191からインストールする

(Accept License Agreementにチェックを入れる)

 

++Unityの設定

Unityでプロジェクトを開いて 

ファイル=>ビルド設定

プラットフォームからAndroidを選択

switching platformをクリック

 

続いて、player settingをクリックすると、右側に以下のような画面が出るので、

xrセッティングのvrサポートにチェックを入れ、その下のvirtual reallity sdkで、ocurasを選択

f:id:arumogina:20190115222722p:plain

続いて、その他の設定にて

パッケージ名を適当な名前に変更

最小APIレベルをAPI Level 19に変更

スクリプティングランタイムバージョンを.NET 4xに変更

API互換性レベルを.NET 4xに変更

f:id:arumogina:20190115223046p:plain

 

続いて、編集=>環境設定=>外部ツールを選択

SDKには解凍したAndroidSDKのフォルダをそのまま設定すればいい

f:id:arumogina:20190115223517p:plain

NDKについては今回は空のままにしておく

 

++adb.exeのパスを通す

解凍したAndroidSDKのフォルダのどこかにadb.exeというファイルがあるので、検索をかけて、右クリック=>プロパティ、で、パスをコピー。

windowsの左下の検索欄で、環境変数と入力して検索

環境変数=>変数名:PATHを選択=>編集=>新規、

ここでコピーしたパスをペースト=>OK

 

++ocuras goの設定

https://dashboard.oculus.com/organizations/create/

に行き、適当に団体名を設定する

ocuras go を起動し、スマホのocurasアプリでペアリングし設定画面を開く。

アプリでペアリングしたocuras goを選択し、その他の設定=>開発者モードに入り、オンにする。

 

ocuras goとpcをusbケーブルで接続

PC側で、コマンドプロンプトを立ち上げて、

adb devices

これで、

List of devices attached
1KWPHxxxxxx device

とか出たらOK.

Ocuras上で接続許可的な画面が出来るので許可する

 

++アプリをビルドしてocurasに入れる

Unity上で適当に球体のオブジェクトでも設置する。(0.0.0)より少し離れたところに置く。

ファイル=>ビルド設定=>ビルドを選択。

ビルドが成功すると、apkファイルが出来る。

コマンドラインを開いて、

adb install x.apk

これで、ocurasを被って、ライブラリにx.apkがあり、実行して設置したオブジェクトが見えればOK

 

 

 

unity でclothコンポーネントを付与したらメッシュが消える場合

skind mesh Rendererのupdate when offesetにチェックを入れる

f:id:arumogina:20190112230927p:plain

ちなみにblenderからunityに持ってきてる場合、アームチュア・モディファイアが付いたままで、clothコンポーネントを付与するとメッシュが爆発するのでアームチュアを適用する必要がある。

 

clothコンポーネントを使う場合、アームチュアが使えないということは中身が見えないため腕を作ってない場合、つまり服が体になってしまってる場合、体を動かすことが出来なくなる。

 

 

 

 

blender unity 取り込んだモデルの一部が消える場合

unityは法線の向きが正しくないと?メッシュが透過してしまう性質がある。なので、メッシュが消えたりしたら法線の向きを逆向きにすると直るかもしれない。

blender? 髪のテクスチャ

完成品。なんか変といえば変なのだが、今回はこれでよしとした。

f:id:arumogina:20181231220301p:plain

まずはシームを入れる

f:id:arumogina:20181231220345p:plain

UV展開

f:id:arumogina:20181231220410p:plain

 

テクスチャを作成する

Medibangを起動し、作成したUV展開の画像と同じサイズにする

フィルタ=>流線を選択し以下のように設定してOKをする。方向を上下逆転させて、もう一度OKする。

f:id:arumogina:20181231221040p:plain

画像を書き出して、(UV画像をmedibangに読み込んでる場合は非表示にする)blenderでモデルに画像をセットする。

 厚みをつけたいなら、この後、厚み付けモディファイアを行う。

 

厚み付けをした後、髪の先端を薄くする(先端の頂点をまとめる)場合は、gで頂点を重ねて、まとめて重複頂点を削除、するとやりやすい。