クワマイでもできる

クワマイでもわかる

AR人形劇もどきをした

f:id:kuwamai:20200627170808j:plain

前々から一人二役の掛け合い形式のコンテンツを作ってみたいと思っていた。世は新型コロナでステイホームだし、休校で暇なこどもたちに向けて工作番組をつくってみた。初めてシェイプキーとダイナミックボーンに触れた思い出記事。

動いている様子

こんなかんじ。

制作の記録

シェイプキーの登録

今回一番触ってみたかったのがシェイプキーだった。トリガーの引き具合に応じて口をパクパクさせるべく、パクパクの動きを作った。なんだかすごく難しいのだろうと敬遠してたけど、単純な動きなら登録そのものはとても簡単だった。VRChatアバター制作ではおなじみのZenさんの動画が大変参考になりました。

コントローラからシェイプキー操作

トリガーの引き具合で口のパクパクを制御する。SkinnedMeshRendererのSetBlendShapeWeightに値を入力することでできた。こちらの記事が大変参考になりました。

Dynamic Boneでプルプルさせる

相方がカッチカチで寂しかったので、Dynamic Boneを使ってプルプルさせてみました。おかげでイキイキ。

Dynamic Boneの設定方法はこちらの記事が参考になりました。

バーチャル照明でリアルを照らす

ZED miniのUnity pluginにあるZED Lightを使用した。使い方は下記記事の通り。

ビジュアルをもっとイケイケにしたかったのでnoribenさんのAssetを使用しました。

  • レーザーライトシェーダー / LaserLightShader | NORIBEN LUNCH -のりべん専門店-

  • ビームライトシェーダーとモデル | NORIBEN LUNCH -のりべん専門店-

感想

作ってる最中は結構大真面目なんだけど、どこかシュールなものになってしまった。いつか可愛いモデルが作れるようになったらEテレもびっくりな人形劇がしたいな。

ちなみに動画投稿日がちょうど誕生日で、「ちなみに今日誕生日です」の一文を添えたところたくさんのリプライをいただいた。寄せられたリプライの中で動画に触れてるのは21件中3件だった。どうして…。

YouTubeチャンネル登録者数100人になったよ

f:id:kuwamai:20200515013801j:plain

CGとかゲームが苦手だった私はVtuberブームにかこつけて2018年2月6日からちまちま需要が謎な動画を投稿し、チャンネル登録者数が100人になった。登録者数〇〇人突破記念動画とか、すごくそれっぽいからやってみた。以前触ったZED miniでもうちょっと真面目に動画を撮りたいと思ってたのでZED miniを使ったARっぽい動画を撮った。

動いている様子

こんなかんじ。

GitHub

使用した環境などはこちらにまとめた。

制作の記録

VIVE trackerの姿勢を取得

帽子とZED mini、背景用の板の位置をVIVE trackerを使って取得する。

カメラは紐で縛ってこんな感じに固定した。

f:id:kuwamai:20200515013726j:plain

帽子には簡単なマウンタを印刷し、帽子に縫い付けた。

f:id:kuwamai:20200515013752j:plain

Trackerの位置取得方法はこちらの記事を参考にしました。

ボール発射

コントローラーのトリガーを引くとクワマイの口からボールが出るようにした。C#を普段書かないのでいくつかの記事を参考にさせていただいた。ボールを発射させるコードはこちらを参考にしました。

色をカラフルにするのはこちら。

ものすごい勢いで発射されるので、発射するペースを下記記事を参考に変更することができました。

Web cam出力

ZOOMにも使ってみたかったのでOBSのVirtual camを使ってみた。ZOOM飲みでまぁまぁウケた。

OBSのスクリーンキャプチャを使うと解像度がスクリーン上の表示サイズになってしまうので、Unity Captueを使うことにした。下記記事を参考に撮影することができました。

去年の話

今回撮ったものはほぼお蕎麦屋さんで遊んだときに作ったものと同じ。動画に取ろうと思いつつ1年経ってしまってた。

GitHubでゆるくタスク管理する

f:id:kuwamai:20200419032520p:plain

学校の課題とかコンテストへの出場とか、お友達と開発する際GitHubは便利。単にコードを管理するだけじゃなくてTo doリストとして使っても便利なのでお友達への紹介用に書いとく。本記事ではProjectの作成、タスクの追加、担当者、ラベル、期限の設定方法について紹介する。

Project作成

〇〇するぞ〜みたいなProjectを打ち立てる。ProjectsタブのCreate projectボタンをクリックすると作成画面が開いてProjectが作れる。おめでたい気がするのでクリスマスパーティー開催を想定。

f:id:kuwamai:20200419031732p:plain

Project名と説明を書いてCreate projectボタンを押す。Project templateはAutomated kanbanがオススメ。次のスクショにあるけどタスクがカード形式で表示されて、タスクを終了すると勝手に終了済みの欄にカードを移動してくれたりする。

f:id:kuwamai:20200419031804p:plain

Project templateにAutomated kanbanを選択したので3つのコラムがすでに作成済み。それぞれTo do(実行予定のタスク)、In progress(実行中のタスク)、Done(終わったタスク)。ようこそ〜みたいなカードが作成されてるのでDoneにドラッグ&ドロップするか、カード右上の…をクリックしてカードをアーカイブしちゃうといいかと思う。

f:id:kuwamai:20200419031813p:plain

Milestone作成

Milestoneを作成してProjectの期限を設定する。今回はパーティーを開催するのでパーティー当日と、当日1週間前を準備完了日に設定してみたり。Issuesタブをクリックし、MilestonesをクリックするとMilestone一覧が表示される。

f:id:kuwamai:20200419032541p:plain

New milestoneをクリックするとMilestoneの作成画面が開く。タイトルと日付、説明を書いてCreate milestoneをクリックして作成完了。

f:id:kuwamai:20200419032305p:plain

Label作成

タスクが増えてくるとジャンルごとに分類したいこともあると思う。そんなときはLabelが便利。Milestoneと同じくIssuesタブからLabelsをクリック。

f:id:kuwamai:20200419032541p:plain

デフォルトで開発によく使いそうなLabelが用意されていたりする。新しいLabelを作る際はNew labelをクリック。Labelの名前と説明を記述し、Create labelをクリックして作成完了。

f:id:kuwamai:20200419032157p:plain

Issue作成

本記事で扱っているタスクはGitHubではIssueと呼ばれている。大体コード開発におけるタスクはIssue(問題)を中心に議論されることが多いからだと思う。Issuesタブをクリックし、New issueをクリック。

f:id:kuwamai:20200419032355p:plain

タスクのタイトルと説明を書く。説明欄はMarkdown記法が使えて楽しい。Markdownの書き方は調べればたくさん出てくるので本記事では省略。

1つおすすめとして紹介したいのはチェックボックスの書き方。買い物メモみたいな複数項目がある際は- []と書くと次のスクショみたいにチェックボックスとして使えて便利。Submit new issueをクリックして作成完了。

f:id:kuwamai:20200419032446p:plain

こんな感じ。右側ではAssignee(担当者)、Label、Project、Milestoneが設定できる。

f:id:kuwamai:20200419032458p:plain

試しにいくつか作るとこんな感じ。

f:id:kuwamai:20200419032520p:plain

Projectsタブを開くと自動でカードが追加されている。In progress(実行中)欄には手動でドラッグ&ドロップする必要がある。

f:id:kuwamai:20200419133132p:plain

Issueの検索

LabelやMilestone、Assigneeを設定したのでそれぞれの条件で絞り込みすることができる。Labelの例を挙げると、Labelをクリックし絞り込みたいLabelを選択すると該当するIssueだけが表示される。

f:id:kuwamai:20200419032530p:plain

Unlabeledを選択することでLabelのつけられていない、未分類なIssueを表示することもできる。

f:id:kuwamai:20200419032525p:plain

Issueの終了

終わったタスクはIssueをCloseさせることで終わったよとお知らせできる。該当するIssueのページに移動し、Close issueまたはClose and commentをクリックしてIssueをCloseする。

f:id:kuwamai:20200419032535p:plain

するとIssuesのページからも削除される。見たい場合はClosedをクリック。

f:id:kuwamai:20200419134255p:plain

Kanbanも自動的にDoneに移動されている。ProjectやMilestoneを見ると緑のプログレスバーでどれくらいIssueがCloseされたかなんとなく見えて便利。

f:id:kuwamai:20200419134418p:plain

CloseしたIssueを復帰させたいときはReopen issueをクリック。

f:id:kuwamai:20200419134850p:plain

Issueの参照

それぞれのIssueには#〇〇と番号が振られている。Issueのコメントに#1とか書くと1番のIssueへのリンクが貼られて便利。

f:id:kuwamai:20200419164951p:plain

参照先のIssueにも参照されたよって表示がされる。

f:id:kuwamai:20200419145518p:plain

タスク管理から話が脱線するけれど、Pull requestにclose #〇〇とか書くとmargeされた際、参照したIssueが勝手にCloseして便利。詳しくは下記リンクへ。

おしまい

今回はタスク管理についてゆるくまとめた。色々お作法とか勉強すればもっといい使い方があるかもしれないけど、これくらい気楽に使うのもいいと思う。こうした方がええよみたいなご意見があれば教えていただけると嬉しいです。

Ubuntu PCに入れたUnityのスクリプトエディタにVSCodeを設定する

f:id:kuwamai:20200321181502p:plain

UnityのスクリプトエディタはVSCodeが人気。Unityの設定でVSCodeを指定すればいいだけだけど、VSCodeどこ?となったのでメモ。僕の場合snapでインストールしたので/snap/bin/codeにあった。

使用した環境

Unityの設定

Edit/Preferencesを開く。

f:id:kuwamai:20200321185521p:plain

External Tools/External Script Editorの欄のBrowsをクリック。

f:id:kuwamai:20200321185529p:plain

ファイルブラウザが開くのでVSCodeを選択。僕の場合snapでVSCodeをインストールしたので/snap/bin/codeを選択。

f:id:kuwamai:20200321185943p:plain

おしまい

あとはWindowsとかmacOSと一緒。試しに新規スクリプトを作成してダブルクリックするとちゃんとVSCodeで開く。便利。

参考サイト

下記サイトにUnity向けのVSCodeの拡張パッケージ等があって大変参考になりました。

UbuntuでUnity Hubを使う

f:id:kuwamai:20200321163550p:plain

ROS#とか使ってるとUbuntuでUnityを起動したくなることがある。以前はフォーラムのリリース情報とか見なきゃいけなかったのだけど、ものすごく普通にインストールできるようになってたのでメモ。特に変わったことしてないので、便利になったなぁという日記のようなものに近い。

使用した環境

  • Ubuntu 18.04
  • Unity Hub 2.3.0

Unity Hubのインストール

公式サイトからAppImageをダウンロードする。

お好みでアプリ用のディレクトリつくって移動させる。

$ mv Downloads/UnityHub.AppImage ~/apps/

実行権限を与えて実行する

$ chmod +x /apps/UnityHub.AppImage
$ ./apps/UnityHub.AppImage

おしまい

あとはいつものUnity Hub。左側のインストールから好きなバージョン選んでインストール。特にWindowsmacOSとの違いは感じなかった。

f:id:kuwamai:20200321162609p:plain

joint_state_publisher_guiの使い方

f:id:kuwamai:20200229140137p:plain

以前joint_state_publisherのGUI機能(上記スクショの左側のやつ)がjoint_state_publisher_guiとして独立したという話をした。ROS melodic以前の場合はとりあえずjoint_state_publisher_guiをインストールすれば使えるようになるけど、ちゃんとした使い方もメモ。

joint_state_publisher_guiのインストール

下記コマンドでインストール。melodicの部分は使用してる環境に合わせて適宜変更すること。

$ sudo apt-get install ros-melodic-joint-state-publisher-gui

launchファイルの編集

joint_state_publisher_guiをインストールするとdisplay.launch等が問題なく起動する。けど、下記のワーニングが表示されるようになる。

[WARN]: The 'use_gui' parameter was specified, which is deprecated. We'll attempt to find and run the GUI, but if this fails you should install the 'joint_state_publisher_gui' package instead and run that. This backwards compatibility option will be removed in Noetic.

今はjoint_state_publisherの情けでuse_guiがTrueになってるとGUIが表示されてるけどROS Noetic以降では使えないらしい。例として以前作った三輪車ロボットのdisplay.launchのuse_guiを消してjoint_state_publisher_guiを加えてみた。

本文にも書いとくとこんな感じ。

<launch>
  <!-- arguments -->
  <arg name="model" default="$(find mabot_description)/robots/mabot.urdf.xacro"/>
  <arg name="gui" default="True" />
  <!-- prameters -->
  <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)"/>
  <!-- nodes -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <node if="$(arg gui)" name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
  <!-- rviz -->
  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mabot_description)/launch/config/urdf.rviz" required="true" />
</launch>

追加した箇所は9行目。これでワーニングが出なくなった。if="$(arg gui)"を付けてあげることで今まで通りgui:=FalseにしたらGUIが起動しないようになってる。試しに下記コマンドで実行するとGUIが表示されない。

$ roslaunch mabot_description display.launch gui:=False

関連記事

Rviz: Could not find the GUI, install the 'joint_state_publisher_gui' package

f:id:kuwamai:20200229130520p:plain display.launchを実行してRvizでURDFを見ようと思ったら下記エラーが発生し、↑のスクショの通りモデルが真っ白で正常に表示されなくなった。

[ERROR]: Could not find the GUI, install the 'joint_state_publisher_gui' package

Rvizの画面ではRobotModelにStatus Errorが生じており、各linkにはNo transform from [link_name] to [link_name]と表示されている。エラーメッセージの言う通りjoint_state_publisher_guiをインストールしたら動いたのでメモ。

joint_state_publisher_guiのインストール

下記コマンドでjoint_state_publisher_guiをインストールする。melodicの部分は使用してる環境に合わせて適宜変更すること。

$ sudo apt-get install ros-melodic-joint-state-publisher-gui

動作確認

f:id:kuwamai:20200229134106p:plain

再びdisplay.launchを実行したら無事にRobotModelが表示された。スクショ左側にあるスライドバーでjointを操作できるGUIがjoint_state_publisherから分離してjoint_state_publisher_guiになったみたい。

詳しくは下記リンク先へ。

なくなったことについてはここらへんでアナウンスされたみたい。

Split of joint_state_publisher and joint_state_publisher_gui

関連記事

上記方法でエラーは回避できるもののWarningが表示される。下記記事でrosparamを用いたguiの有効/無効化の書き方について書いた。

kuwamai.hatenablog.com