YKpages

ロボット分野で勉強したことのまとめ

VRChatで花火を打ち上げる

はじめに

VRChatで花火を打ち上げてる人がいて、 おもしろいなと思い、 自分でもやってみました。

UnityのParticle Systemで花火を作成し、 それをアバターに組み込みます。

スクリプトを書く必要がないので、 Unityに慣れていない人でも3時間程度あればできると思います。

あと、もっとちゃんとしたやり方があったりするかもしれないので、 一例として参考にしてください。

目次

環境

  • Unity5.6.3p1(VRChatが推奨しているバージョン)
  • Windows10

参考にした記事

以下の記事を参考にさせていただきました。

Particle Systemで花火を作成する方法について。

qiita.com

Particle Systemの設定項目について。

qiita.com

Particle Systemをアバターに組み込む方法について。

note.mu

アバターにアニメーションを設定する方法について。

shiasakura.hatenablog.com

VRChatにアバターをアップロードする方法について。

vrchatjp.playing.wiki

花火の作成

ここでは、最低限の打ち上げ花火を作ってみます。 パラメータの設定をいじくるとかっこいい花火ができますが、 それは各々でやってみてください。

爆発する部分の作成

新規のプロジェクトを用意し、HierarchyでCreate->Create emptyで空のオブジェクトを作成します。

空のオブジェクトの名前は"Explosion"にしておきます(任意の名前でOK)。

f:id:kato_robotics:20180813000155p:plain

ここでCtrl+Sを押す、またはFile->Save Scenesを選択して、Sceneをセーブしておきます。

名前は"Test"にします(任意でOK)。

f:id:kato_robotics:20180813000558p:plain

HierarchyのExplosionをクリックして、InspectorからAdd Componentで、Effects->ParticleSystemを追加します。

すると、次の画像のように紫色の四角形がたくさん出てきます。

f:id:kato_robotics:20180812225017p:plain

ExprosionのInspectorにあるParticle Systemをみると、設定項目がたくさんあるのが分かります。

この項目をクリックすると、さらに設定項目が出てきます。

f:id:kato_robotics:20180812231139p:plain

"Renderer"の項目を開くと、MaterialがNone、つまり何も設定されていないので、 Materialの項目の右横にある二重丸みたいなやつをクリックして、Default-Particleを選択します。

f:id:kato_robotics:20180812231828p:plain

すると、さっき紫色の四角形だったのが、光る球体に変わります。

f:id:kato_robotics:20180812232416p:plain

"Shape"の項目を開き、ShapeをConeからSphereに変更します。

すると球状に飛び散るようになります。

f:id:kato_robotics:20180812233023p:plain

次に"Explosion"の項目を以下のように設定します。

f:id:kato_robotics:20180812233406p:plain

変更点は以下の通りです。

項目 変更後 内容
Duration 0.1 Particle(粒子)が出力される期間
Looping チェックを外す(false) Exprosionを繰り返すか
Start Lifetime 2から3 Particleが出力されてから消えるまでの時間
Start Speed 2 出力時のParticleの速度
Simulation Space World 出力された後のParticleがどこに従うか

"Start Lifetime"については、項目の右横にある三角マークをクリックして、 "Random Between Two Constants"を選択します。

また、デフォルトではParticleは白色に設定されていますが、 "Start Color"の項目で色を変更できます。

次に"Emission"の項目を開き、以下のように設定します。

f:id:kato_robotics:20180812234431p:plain

"Bursts"の項目で"+"ボタンを押します。

そして、"Min"を100に変更します。

一度に100個のParticleが出力されます。

これで、Paticle EffectのSimulateボタンをおすと、球状に100個のPaticleが出力されます。

f:id:kato_robotics:20180812235458p:plain

以上で爆発の部分が完成です。

打ちあがる部分の作成

花火の打ちあがる部分(爆発するまでの「ピューーー」)を作成します。

同じように、HierarchyでCreate->Create Emptyを選択し、空のオブジェクトを作成します。

名前は「打ち上げる」という意味を込めて"Launch"と名付けます(名前は任意でOK)。

さらに、同じようにLaunchにAdd ComponentでParticle Systemを追加します。

まず、"Explosion"の時と同じように、"Renderer"の項目で"Material"にDefault-Particleを設定します。

次に"Launch"を次のように設定します。

f:id:kato_robotics:20180813001654p:plain

変更する項目は"Explosion"と同じです。

項目 変更後
Duration 0.1
Looping チェックを入れるとたくさん、外すと一つだけ打ちあがる
Start Lifetime 3から4
Start Speed 2から4
Simulation Space World

次に、"Emission"を以下のように設定します。

f:id:kato_robotics:20180813002003p:plain

"Bursts"の項目で"+"ボタンを押し、"Min"と"Max"を1にします。

次は"Launch"の"Transform"を変更します。

f:id:kato_robotics:20180813002316p:plain

画像のように、"Rotation"の"X"に-90を入れます。

これはX軸で-90度回転させることを意味します。

その後、"Tails"にチェックを入れます。

そして、"Renderer"で"Tails Material"にDefault-Prticleを設定します。

f:id:kato_robotics:20180813003249p:plain

以上で打ち上げる部分が完成です。

花火の仕上げ

現在、Hierarchyは以下の画像のようになっていると思います。

f:id:kato_robotics:20180813003640p:plain

"Launch"のInspectorのParticle Systemで"Sub Emitters"にチェックを入れます。

そして、"Sub Emitters"に項目で"Birth"を"Death"に変更し、 そのとなりの"None"となっているところに"Explosion"を設定します。

f:id:kato_robotics:20180813004218p:plain

すると、以下のようなウインドウが出てくると思うので"Yes, Reparent"を押します。

f:id:kato_robotics:20180813004347p:plain

これで花火の完成です。

今行った設定により、"Launch"が起動し、設定した時間が経過して消えたとき、"Explosion"が起動するようになっています。

Hierarchyで"Launch"をクリックし、Scene画面内の"Particle Effect"のSimulateボタンを押すと花火が打ちあがることを確認してください。

また、Scene画面内で花火が画面外に行ってしまう場合は、Hierarchyの"Launch"をダブルクリックするとカメラがいい感じの場所に移動してくれます。

f:id:kato_robotics:20180813005147p:plain

この画像では、"Launch"のLoopingのチェックを外しているので、花火は一つしか打ちあがりません。

花火をアバターへ組み込む

3Dモデルのインポート

作成した花火をアバターに組み込みます。

今回はUnity-Chan3Dモデルを使用させていただきます。

f:id:kato_robotics:20180813012227p:plain

自分で3Dモデルを所持している場合はそちらをインポートしてください(ドラック&ドロップでできます)。

3Dモデルを持っていない場合はUnity-Chan3Dモデルを使用するといいと思います。 その場合は、ライセンスをしっかり守ってください。

ダウンロード - UNITY-CHAN!

Unity-Chan3Dモデルをダウンロードしたら、 Assets->Import Package->Custom PackageでUnity-Chanファイルを選択してインポートします。

f:id:kato_robotics:20180813012524p:plain

花火をアバターへ組み込む

今回は花火をただ打ち上げることにします。

現在、Hierarchyは以下の画像のようになっていると思います。

f:id:kato_robotics:20180813013808p:plain

"Launch"を3Dモデルにドラック&ドロップします。

すると、3Dモデルの中に"Launch"が入ります(入れ子の状態)。

f:id:kato_robotics:20180813014021p:plain

これで花火が3Dモデルの一部になりました。

このアバターをVRChatにアップロードして花火を盛大に打ち上げて下さい。

f:id:kato_robotics:20180813021048p:plain

この画像では3種類の花火を打ち上げています。

また、花火を打ち上げる場合は背景が暗いワールドを選択すると、 きれいに見えます。(この画像はSAKURA hirobaで撮りました)

補足1-アバターのアップロード方法

VRChatへアバターをアップロードする方法は以下の記事を参照してみてください。

vrchatjp.playing.wiki

補足2-花火作成について

今回作成した花火は最低限のものです。

よりかっこいい花火を作成したい場合は、試行錯誤したり、 検索して調べてみたり、してみてください。

また、花火以外のものも作れます。

おもしろいものをどんどん作って楽しんでいきましょう(私も色々作ってみます)。

(あんまりやりすぎると、処理が重くなってしまうかもしれないので注意。ほどほどに。)

補足3-花火の組み込み方

今回の組み込み方では常に花火が打ちあがり続けてしまいます。

HTC VIVE コントローラのボタンや、 アバターのモーションをトリガーとして、 花火を打ち上げたい場合は、アニメーションを設定する必要があります。(あとVRC Trigger)

また、花火を手から出したり、100m離れたところから出したりもできます。

以下の記事を参考にしてみてください。

note.mu

shiasakura.hatenablog.com

おわりに

無事、VRChatで花火を打ち上げられました。

Particle Systemを利用すれば、花火以外にもいろいろ作れそうなので、チャレンジしたいです。

また記事書きます。

VRChat "You cannot edit your VRChat data while the Unity Application is running" の対処方法

はじめに

UnityからVRChat上へアバターをアップロードしようとしたところ、 "You cannot edit your VRChat data while the Unity Application is running."というメッセージが出て、 アップロードができませんでした。

このとき、Unityエディタ上ではアップロード作業以外何も行っていません。

はっきりとした原因は分かりませんが、 おそらくアバターに設定したアニメーションが良くなかったのではないかと思っています。

追記(2019/02/22)

この方のツイートによると一時停止ボタンを押すだけで回避できるようです。

とりあえずの解決策

私の場合、Unityのプロジェクトを作成しなおして、 VRChat SDKのインポートや、アバターの設定を始めからやり直したところ、 無事にアップロードできました。

この問題が起こったときの対処方法として、

  1. まず、アニメーションを付けていないアバターがアップロードできるか確認
  2. 次に、アニメーションを付けてみてもう一度アップロードできるか確認

するのが良いのではないかと思っています。

どうしようもなくなったら、プロジェクトを作り直すところからやり直した方がいいと思います。

はてなブログで記事のカテゴリを削除

はじめに

はてなブログで一度追加したカテゴリの削除のやり方を書いておきます。

カテゴリの追加は「記事の管理」で簡単にできるのに、 なぜか削除はできない(たぶん)。

方法

カテゴリの削除をしたい記事の編集画面にいきます。

右にあるサイドバーの項目に「カテゴリ」があります。

そこですでに追加してあるカテゴリが表示されているので、「×」を押すと削除されます。

ちなみに、カテゴリの追加も行えます。

以上です。

Unity と GitHub プロジェクトの管理

はじめに

UnityのプロジェクトをGitHubで管理する方法を簡単にまとめます。

あと、GitHubに公開されているUnityプロジェクトをダウンロードして自分の環境で開く方法も書いておきます。

環境

  • Windows10 (Macはターミナルを利用)
  • Unityのバージョンは任意

前提条件

以下のことがすでに済んでいることを前提にしています。

  • Unityのインストール
  • GitHubアカウントの作成
  • Gitの基本的な操作の習得

GitHub Desktop をインストール

Windowsでは GitHub Desktop を利用すると簡単です

desktop.github.com

GitHub Desktop から push

GitHub Desktop の File > Add local Reposity から GitHub にあげたい Unity プロジェクトを選択

  • リポジトリの名前を入力
  • README作成にチェック
  • gitignore は 「Unity」を選択
  • Lisenceを選択

.gitignoreについて

以下を参照。ありがたい。

qiita.com

qiita.com

GitHubへpush

GitHub Desktop、またはコマンドを利用してcommit、GitHubへpushします。

以上までがとりあえずのGitHubでの管理方法です。

あとは、適宜pullしたり、branchを切り替えたりします。

GitHubからダウンロードしたUnityプロジェクト

GitHubからzipファイルでダウンロードしたり、 cloneしたりで手に入れたUnityプロジェクトを開きます。

Unityのメニュー画面で(プロジェクトを選択する画面)、 openボタンを押すと、ディレクトリを選択できます。

そこで開きたいUnityプロジェクトを選択します。

以上です。

シェルコマンドでファイルの文字数をカウント

はじめに

bashのコマンドでテキストファイルの文字数をカウント。

とりあえずできただけのものなので、 もっといい方法があれば教えてください。

ファイルの文字をカウント

自分が書いている日記(markdown形式)の文字数をカウント

以下のようなテキストファイル(file)

### 08/06/2018
---

あいうえおかきくけこ。
さしすせそ、たちつてと。

なに、ぬねの。
はひふへほまみむめも。

上から2行(日付と罫線)とスペース、改行を除いた文字をカウント。

cat file | awk 'NR>2{print}' | sed 's/ //g' | tr -d ' ' | tr -d '\n' | wc -m

説明

cat file : ファイルの中身を出力

awk 'NR>2{print}' : 3行目以上を出力(2行目までを削除)

sed 's/ //g' : 全角スペースを削除

tr -d ' ' : 半角スペースを削除

tr -d '\n' : 改行を削除

wc -m : 文字数をカウント

Windows10でデスクトップ画面が頻繁に再描写される問題(解決)

問題

突然、Windows10でデスクトップ画面が頻繁に再描写され(30秒に1回くらい)、 パソコンの操作に支障が出た。

解決した方法

デスクトップに置いていたBlenderで作成したファイルを削除し、パソコンを再起動。 (Blenderは3Dモデル作成ソフト)

原因(おそらく)

特に検証をした訳ではないため、あくまで仮説です。正直、あまり自信はないです。

Windows10では、定期的にデスクトップ画面が再描写されている。 その再描写は、基本的には一瞬で終わる。 (人間が気にならないくらい早く。)

セキュリティソフトをインストールしている場合、 デスクトップ画面の再描写時に、 デスクトップに存在しているファイルをチェックしている可能性がある。

デスクトップに一般的ではないファイルを置いていた場合、 そのファイルのチェックに時間がかかり、 その結果、再描写に時間がかかった。

Vuforia の World Center Mode について

はじめに

今回は Vuforia の World Center Mode について書きます。

環境

  • Unity2018.1.6f1
  • Vuforia7.1.35

World Center Mode について

ARCamera の Vuforia Behaviour に World Center Mode の項目がある。

World Center Mode には4つの選択肢があります。

  • SPECIFIC_TARGET
  • FIRST_TARGET
  • CAMERA
  • DEVICE_TRACKING

f:id:kato_robotics:20180721134318p:plain

SPECIFIC TARGET について

自分が選択した Image_target をワールド座標系の原点にできます。

FIRST TARGET について

アプリを起動して一番最初に見つけたマーカをワールド座標系の原点にできます。

CAMERA について

常に ARCamera がワールド座標系の原点になります。

DEVICE TRACKING について

アプリ起動時のデバイスの位置姿勢がワールド座標系の原点になります。

その後デバイスを移動や回転をさせても、オブジェクトの位置や姿勢は動きません。

詳しくは以下を参照してください。

kato-robotics.hatenablog.com