- 投稿日:2020-03-29T20:03:20+09:00
【Unity】gRPCを用いたプロジェクトをiOS向けにビルドした時のlinker command failed with exit code 1 エラーの対処法
はじめに
gRPCを用いてUnityで作成したプロジェクトをiOS向けにビルドすると、お馴染みの
linker command failed with exit code 1 (use -v to see invocation)というエラーと共に、
**/Libraries/Plugins/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a(grpc_csharp_ext.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64のようなエラーがXcodeで出ることがあります。
このエラーを解決する方法をこの記事に書きました。参考になれば幸いです。
実行環境
- Unity v2019.3.6f1
- macOS Catalina v10.15.4
- gPRC(C#) v2.29.0
- Xcode v11.4
対処法
以下が対処法になります。
手順が全部で4つあるので、手順1から順に指示に従っていただければと思います。手順1
Assetsフォルダ直下にEditorという名前のフォルダを作成します。
もう既にある場合は作成する必要はありません。そのまま手順2へ進んでください。
手順2
次のスクリプトを作成し、UnityのEditorフォルダ内に置きます。
BuildHelper.cs#if UNITY_IPHONE using System.IO; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public class BuildHelper { [PostProcessBuildAttribute(1)] public static void OnPostProcessBuild(BuildTarget target, string path) { if (target == BuildTarget.iOS) { var projectPath = PBXProject.GetPBXProjectPath(path); var project = new PBXProject(); project.ReadFromString(File.ReadAllText(projectPath)); var targetGUID = project.GetUnityFrameworkTargetGuid(); project.AddFrameworkToProject(targetGUID, "libz.tbd", false); project.SetBuildProperty(targetGUID, "ENABLE_BITCODE", "NO"); File.WriteAllText(projectPath, project.WriteToString()); } } } #endif(参考: Unity2018.2 + il2cppでgRPCアプリをAndroid/iOS向けにビルドする)
手順3
ターミナルで
sudo rm -rf ~/Library/Developer/Xcode/DerivedData/*を実行し、DerivedData (プロジェクトに生成されるキャッシュデータ)を削除します。
手順4
UnityでBuild And Runを行い、ビルドを実行します。
以上です。
これでビルドが上手くいくのではないかと思います。参考
- 【Unity】Xcodeでビルドするときに「linker command failed with exit code 1 」エラーが出たときの対処法|Unishar-ユニシャー
- [Xcode] "linker command failed with exit code 1" エラー対処方法 / lileaLab
- Xcodeで「linker command failed with exit code 1」が発生した時はDerivedDataを消してみよう - Qiita
- オデの日記@WEB系: linker command failed with exit code 1が出た時の解決方法案
- Unity2018.2 + il2cppでgRPCアプリをAndroid/iOS向けにビルドする
- UnityでgRPCアプリ(iOS, Android)をビルドできるようになった - Qiita
- Unity C#: Xcode reports libgrpc_csharp_ext.a does not contain bitcode · Issue #16839 · grpc/grpc · GitHub
- 投稿日:2020-03-29T19:13:57+09:00
[Unity]移動してる時に砂煙風エフェクトを付けてみよう
砂煙風エフェクトを作ろう
プレイヤーに子オブジェクトをつけよう
Sphereオブジェクトの出し方は
Hierachy>Create>3DObjeckt>SphereParticleSystemを使ってエフェクトを作ろう
上のgif画像のようにParticleSystemを出します。赤い枠線で囲った部分を編集していきます。
Start Speedは、パーティクルが飛び出す速度の設定です。ここを速くすると見た目が悪くなります。
Start Sizeは、パーティクルの最初のサイズを設定しています。
Start Rotationは、パーティクルの角度を設定しています。Start Size,Start Rotationはランダムに設定しています。右の逆三角形を押すとメニューが出るのでそこで設定します
>Simulation Spaceはプレイヤーを回転させるときにパーティクルがWorld座標で出てきます。
Emissionの設定
移動したときだけパーティクルが出てほしいので設定していきます。
Rate over Timeを0にします。
Rate over Distanceを好きな値にしてください。
これで移動した距離でパーティクルが出るようになりました。Size over LifeTime
サイズをクリックして出てきてから消えるまでの大きさを設定します。
右クリックするとAdd Keyと出るので選択するとノードが追加されます。
出てきた瞬間にパーティクルのサイズを大きくして、徐々に小さくしていくとそれっぽくなります。Rendererの設定
Render ModeをMeshにします。
Meshのところは好きなモデルやテクスチャを入れることができます。
Materialで色を変えられるので好きな色にしてみてください。プレイヤーに付けよう
Particle Systemの横にある歯車をクリックしてCopy Componentをクリック。
Sphereを選択してSphere Colliderの歯車をクリックしてPaste Component Az newをクリックします。
そうするとSphereの座標で操作できるので好きな位置にもっていってください。コピーしたら元のParticle Systemは消しましょう。
終わり
以上で設定は終了です。
わからないことがあればコメントをください。
- 投稿日:2020-03-29T18:10:04+09:00
VRChat に自作アバターやワールドをアップロードする(外部資料メモ)
外部記事へのリンク集です。
準備
VRChat に VRchat のアカウント(Steam のではなく)でログインして、ユーザレベルを Visitor から New User に上げておく。VRChat 内で他の人がいるワールドに 20 か所くらい行って、フレンドを数人作って、滞在時間が24時間ほど経過したら New User になれる(かも)。
Unity のバージョンは 2017.4.28f1 を使います。2018 以降のバージョンでは VRC の SDK が正常に動作しません。
VRCのSDKは下記から取得可能です。
- https://www.vrchat.com/download/sdkアバター関連
- 自作のVRMをアップロード:https://qiita.com/100/items/7315fe3a7eb75732ae43
- VRoid Studio のデータをアップロード:https://shinrinmusic.com/vroid-vrchat-avatar-upload/
unitypackage のように、完成品をアップロードする場合は、下記の手順でいけます。
- 空のシーンを作って、asset をプロジェクトに追加する。
- モデルの prefab をシーンの 0,0,0 に配置する
- prefab に Add Component で VRC_avatarDescriptor を追加する(これ重要)
- unity 上の VRC Control panel でアップロードする。
詳細は上記リンク先を参照のこと。
- 外部シェーダーを使う場合は、モデルより先に読み込ませておく。
- Dynamic Bone のような asset を使用する場合も先に読ませておく。
ワールド関連
0,0,0 の地点には地面を作っておく。ワールドに入った時に、0,0,0 の地点に出現するため、その位置に地面がないと、無限に落下することになります。
- 投稿日:2020-03-29T18:10:04+09:00
VRChat に自作アバターやワールドをアップロードする(メモ)
外部記事へのリンク集です。
準備
VRChat に VRchat のアカウント(Steam のではなく)でログインして、ユーザレベルを Visitor から New User に上げておく。VRChat 内で他の人がいるワールドに 20 か所くらい行って、フレンドを数人作って、滞在時間が24時間ほど経過したら New User になれる(かも)。
Unity のバージョンは 2017.4.28f1 を使います。2018 以降のバージョンでは VRC の SDK が正常に動作しません。
VRCのSDKは下記から取得可能です。
- https://www.vrchat.com/download/sdkアバター関連
- 自作のVRMをアップロード:https://qiita.com/100/items/7315fe3a7eb75732ae43
- VRoid Studio のデータをアップロード:https://shinrinmusic.com/vroid-vrchat-avatar-upload/
unitypackage のように、完成品をアップロードする場合は、下記の手順でいけます。
- 空のシーンを作って、asset をプロジェクトに追加する。
- モデルの prefab をシーンの 0,0,0 に配置する
- prefab に Add Component で VRC_avatarDescriptor を追加する(これ重要)
- unity 上の VRC Control panel でアップロードする。
詳細は上記リンク先を参照のこと。
- 外部シェーダーを使う場合は、モデルより先に読み込ませておく。
- Dynamic Bone のような asset を使用する場合も先に読ませておく。
ワールド関連
0,0,0 の地点には地面を作っておく。ワールドに入った時に、0,0,0 の地点に出現するため、その位置に地面がないと、無限に落下することになります。
VR アプリ開発
Unity に Steam VR plugin (asset) を読み込む。VR の通常のアプリ開発の場合、Unity のバージョンは最新版でOK。
アプリを起動する前に、Steam VR を起動しておく必要があります。アプリを起動すると、Steam VR のホーム画面からいきなりアプリの画面に切り替わります。アプリの起動は PC でマウスやキーボードを使って実行する必要があります。Virtual Desktop や OCR Toolkit などの使用を推奨。
上の方法で Oculus Quest + Oculus link と Valve index のどちらでも動くプログラムを書けました。
- 投稿日:2020-03-29T15:34:38+09:00
なぜかパッケージマネージャーエラーが起きてしまった【unity2018.4.x LTS】
同一端末で、不特定多数のプロジェクトが作られており、
不定期に2018.4.x LTSのアップデートが行われた際に起きると思います。
(しかも各バージョンでアドオンが変わっていたときとか)この記事では、
取り急ぎでできる、簡単な対処の仕方を記載します。
[window]メニュー内にあるPackagesウィンドウを押下すると、
下図のようにウィンドウが開かれる。
要は、「エラーを起こしているパッケージをremoveしようぜ!」ということです。
Packagesウィンドウに表示されているパッケージは、
プロジェクトフォルダの[Packages]フォルダにmanifest.jsonファイルで保存されています。プロジェクト起動時に、このファイルを参照してパッケージがインストールされるので、
もしエラーを起こしているパッケージをremoveする際は、
manifest.jsonファイル内のテキストを別途テキストエディタなどに控えておくと良いです。
(removeした瞬間に、manifest.jsonファイルも書き換わるため)
- 投稿日:2020-03-29T10:38:51+09:00
【袴でバーチャル卒業式】VR初心者がclusterにVRoid自作アバターをアップロードするまで
コロナの影響により縮小開催のリアル卒業式
そんな中バーチャル安田講堂の前でバーチャル卒業式があると聞いて
というわけでVR初心者が袴アバターの作り方を紹介します
Step1 : VRoidで袴のアバター作り
VRoid Studioのインストール
- アバターはこのソフトで作ります
- VRoid Studioを公式サイトからインストールします
- このソフトは直感的に使いやすいし、デフォルトが可愛いのである程度いじっても可愛いアバターになります
ワンピースのテクスチャを加工して袴にする
- Clothing Editorタブから服装をワンピースに変更します
- さらにテクスチャタブを開くとワンピースを展開した画像が出てきます
- これがテクスチャ
- このテクスチャを貼り付けているだけなのでお絵描きすれば袴になります
- 私はDefault ImageをダウンロードしてiPadのお絵描きアプリから袴の画像に加工しました
- 袴姿に!
- 髪の毛はいい感じに生やします
- 3層以上に分けると立体感が出るのでおすすめ
- ただしポリゴン数を少なくするために20本ぐらいにおさえましょう
- アバターができたらExporterのタブからアバターをVRMファイルで出力します
- 「髪の毛メッシュを結合する」にチェック入れるの忘れずに!
clusterでアップロード可能なアバターには色々と制限があるのです
(https://clustervr.gitbook.io/sdk/guide/avatar_customization/avatar_limit)そこで
- モデルの軽量化
- マテリアルの統合
- テクスチャの貼り付け
を順に行なっていきます
Step2 : Blenderでモデルの軽量化
Blenderのインストール
- 公式サイトからインストールします
プラグインを入れる
今回の作業で必要なプラグインは
- VRM IMPORTER
- https://github.com/iCyP/VRM_IMPORTER_for_Blender2_8
- blender上でVRMファイルを読み込むためのもの
- Cats Blender Plugin
プラグインの入れ方は下の通り
- まずは上のGithubのリンクから2つともzipでダウンロードしておきます
- blenderを立ち上げてEdit > Preferences でウィンドウを開いたら
- Add-ons > Install でダウンロードしたzipファイルを選択
- 表示されたらチェックボックスを選択しておく
もし詰まってしまったら次の記事を見てみてください
BlenderでVRMファイルを読み込む
- まずは右上の部分でCamera, Cube, Lightを消しましょう
Blenderでモデルの軽量化
Blenderでマテリアルの統合
Generate Material List できるようにする
- Macだとデフォルトでできませんでした
- ここに書いてある通り落ち着いて順番にやっていきましょう
- 以下ではwgetだけcurlにしてあります
/Applications/Blender.app/Contents/Resources/x.xx
のx.xx
のバージョン部分は自分の環境に合わせてください$ cd /Applications/Blender.app/Contents/Resources/2.79/python $ curl -L https://bootstrap.pypa.io/get-pip.py > get-pip.py $ ./bin/python3.5m ./get-pip.py --prefix $ /Applications/Blender.app/Contents/Resources/2.79/python $ ./bin/python3.5m bin/pip3 install Pillow
- ここまでやればGenerate Material Listのボタンが出てるはず!
- もしなかったらBlender再起動
Blenderでマテリアルを統合
- CATS > Optimization > Atlas > Generate Material Listを押すと現在のマテリアル一覧を見ることができます
- いっぱいありますね、、、!
- clusterではマテリアルの数を8以下にする必要があるのでどんどん統合していきましょう
- チェックボックスから統合したいマテリアルを選択してSave Atlas toをクリックすると統合できます
- マテリアルを統合するときにそれぞれのテクスチャも統合するということ?なのかな
- ちなみにclusterにアップロードするときの制限として1つのテクスチャは2048 * 2048以下である必要があるので服のテクスチャは他のと統合できないと思います
- 注意すべきはVRoidのテクスチャが白黒だったもの
- 髪、眉、まつげ、アイライン、靴あたりかな?
- ここら辺は色の設定をしているので合わせるべきかしっかり考えましょう(失敗してみるとわかる)
私の場合は以下の7つにまとめました(あとで髪飾りをつけるために1つ余裕を持たせた)
- 髪関係
- 目関係(まつげとアイライン以外)
- まつげとアイライン
- 眉
- 服
- 靴
- 顔の肌と体の肌
このとき髪やまつげやアイラインが白くなりますが大丈夫、あとで復活します
Blenderでモデルのエクスポート
- CATS > Model > Export Modelからfbx形式で出力します
Step3 : Unityでテクスチャを貼り付け
- 最後にUnityで先ほど統合したマテリアルのテクスチャを貼り付けていきます
Unityのインストール
- 公式サイトからUnityをインストールします
UnityにUniVRMをインポート
- UniVRMのGithubから最新バージョン
UniVRM-0.xx.unitypackage
をダウンロードします- Unityを立ち上げたらAssetsを選択した状態で真ん中下のスペース(Assetsタブ)にダウンロードしたUniVRMをドラッグ&ドロップ
- Importを押します
- これでVRMファイルを扱えるようになりました
UnityでVRMファイルを読み込み初期設定
- Blenderで出力したfbxファイルをAssetsタブにドラッグ&ドロップ
同じくInspectorタブから Materials > Location を Use External Materials に設定
Unityでテクスチャの貼り付け
- 最後の仕上げ!
- Assets > Materials で以下のようになると思います
- マテリアルを一つずつ設定していきます
- 下にある白い丸みたいなのをクリックします
- 右側に設定画面が出てくるのでShaderをVRM/MToon
- Rendering TypeをCutoutにします
- そしてマテリアルの名前に対応するテクスチャをBlenderのフォルダとかから見つけてきてLit ColorとShade Colorの横の四角にドラッグ&ドロップ
- 髪の毛、眉、まつげ、アイライン、靴などは白くなってしまいますがLit ColorとShade Colorを右の四角から設定すると正しく色をつけられます
- 全部のマテリアルに対してこの作業を行うと完成!可愛い!
- 最後に自分のアバターを選択した状態でVRM > UniVRM-0.55.0 > Export humanoidでVRM形式のアバターを出力します
Step4 : clusterへのアップロード
- clusterのサイト > アイコン > アバター
物足りなくなった人へ
- もともとCAD使ってる人だと髪飾りとかつけたくなっちゃいますよね
Fusion 360のフォーム機能でダリア風の髪飾りとか作っちゃいますよね
このままだとポリゴン数が多すぎるのでBlenderで減らします
髪飾りをBlenderで開きます
右下のところで設定みたいなマークを押して
Add ModifierからDecimateを選択
Ratioを操作してポリゴン数を減らします
軽量化できたらfbx形式でエクスポート
アバターがいるUnityのAssetsタブにドラッグ&ドロップ
これで完成
アバターの時と同じようにExport humanoidします
参考