VRChatでFixedJointを使って自身と同期して動くアバターを作る、ためのスクリプトを作ってみた。
FixedJoint
を使うと同じ動きができるらしい、というお話を聞いたので試してみました。
いろいろ試したところ何とか成功。先人たちの知恵に感謝です。
で、設定が面倒だったので簡易なスクリプトを作ってみました。 Humanoidのアバター同士であればお手軽に同期できます。
動画雑い...
完成品
注意
- これでいいのかは謎です。
- 詳しくは聞いていないので適当に試行錯誤。
- 不具合があります。
- 動作がおかしくなる場合があります。
- 別途物理
Rigidbody
を使うアバターと相性がよろしくない です。- 移動を反映しないようにしてしまうため。
- 試す場合は新規シーンで。
- 別途物理
環境
- VRC: 0.12.0p15
- VRC SDK: 2018.02.28,21,21
- Unity: 5.6.3p1
使い方
アバターの準備
- 自身用のアバターと、同期させたいHumanoiidアバターのモデルを用意します。
- お手軽に試すのであれば同じものを複製するだけOKです。
- ポーズが異なるとずれます。
- シーンのヒエラルキーで、同期させたいモデルを、自身のアバターの子としてツリーに追加します。
スクリプトの準備
同期させる
注意: Undoに対応していないので元に戻せません!
メニューに追加された項目 VRC SDK > Util > Joint Sub Animator Bone
を選択するだけです。
仕組み
同じ役割のボーン同士をつなげて、同じように回転させることで同期させています。 動作の邪魔になりそうな抵抗類はなくしています。
すべてのボーンに対して同じことをすることで全身(だいたい)同じ動きになります。 手動で設定するのは面倒なのでスクリプトでスクリプト化しました。
Humanoidとしてのボーン情報を利用することで、モデルに関係なく自動的につなげています。
都合上、位置の移動は伝えていないため、一部アバターは動作しないかもしれません。位置も伝えるひどいことにしまうので....。
終わりに
Unityはお手軽に機能追加が出て便利ですね。
VRChat内部ではスクリプトが制限されていますが、データを作るためのEditer内では使い放題。いろいろやってみたいなあ。
VRChatで遊ぶ - SDKを準備する
ここ最近、時間も忘れてVRChatで過ごしています。 試行錯誤しながらも、できることが増えていくのは楽しいですね。 せっかくなのでメモがてら何かしら書いていこうと思います。 まずは、自由を手に入れるためのSDKの準備についてです。
VRChatとは
好みの姿で自由に過ごせるゲーム?です。 VR機器がなくても遊ぶことはできます。
しばらく過ごすと自由な動きを求めてVRに手を出す方が多いようです。身の回りだけでも次々とVR勢力が増え、影響力すごいなあと感動しています。楽しいは正義。
VRChatの特徴であり面白いことろは、誰でも簡単にコンテンツを作れる、という自由度の高さです。
作れるもの
大きく分けて2種類のコンテンツを作ることができます。ユーザの分身であるアバターと駆け巡るステージであるワールドです。 基本的には個人用で、自分や身の回りで利用できます。別途お願いすることで、誰でも使えるように公開もできるようです。
コンテンツはUnityで自由に作成できます。 使えるコンポーネントは指定されていて、直接コードを書くことはできません(ホワイトリスト)。あるものをうまく組み合わせて表現する、という形式です。 ワールドに関しては、コードの代わりにイベントを発生させる仕組みが提供されています。
ドキュメントはこちら。ところどころ書いてあることと違う箇所があったりも...。何か書いていきたいところ。 https://docs.vrchat.com/
コンテンツが使えるようになるまでの流れ
ざっくりとこんな感じです。
初回
- VRChatにユーザ登録
- コンテンツVRChatのアカウントに紐づきます。登録・利用のために必須です。
- SDKをダウンロード
- Unity 5.6.3p1をインストール (2017-02-18時点)
- バージョンは合わせましょう。
- 新しければ良いというものではない...。最新情報はこちらから。 https://docs.vrchat.com/docs/getting-started
- Unityで新規プロジェクト作成
- UnityでSDKをインポート
- メニューの Assets > Import Package > Custom Package...
- UnityでVRChatにログイン
- 追加されたメニューの VRChat SDK > Settings
コンテンツ作成
- 素材を集めてくる。
- Unityで新規シーンを作成して配置
- 作ったものをVRChatに登録
- メニューの VRChat SDK > Show Build ControlPanel
- アップロードにしばらくかかるのでまったり待ちます。
利用
- Steam経由でVRChatをインストール
- VRChatを起動
- VRChatのユーザでログイン
- ゲームログインのためにはメールアドレスの確認が必要です。送られてきたメールを確認しておきましょう。
- メニューから登録したものを選択
Esc
か コントローラのメニューっぽいボタン > Avater or World の Mine.
めも
- Unityでできるのは登録まで。
- Unity内部でプレイはできません。クライアント機能はないので登録後にVRChatアプリで試す必要があります。
- 直接実行しないのでシーンにカメラ不要です。Example含めShow Build ControlPanel からの登録で実行します。
- ワールドは Unity経由でVRChatアプリをtest起動はできます。アップロードしないので早くて便利。
- Unity内部でプレイはできません。クライアント機能はないので登録後にVRChatアプリで試す必要があります。
- 登録時の写真は、登録起動中に Sceneへ切り替えてHierarchyの
VRCCam
のトランスフォームで調整できます。 - VRChatの各種ウィンドはどこか収納しておくと散らからずに便利です。
次回は アバターかワールドの作成、のよてい。
bashのjob機能を使う ぷちアドベントカレンダー2017 25日目
CUI環境での実行切替、bash
のjob機能についてのお話です。
CUIでも実行切替
GUIではウィンドウを選んで操作対象を切り替えるように、CUIでも捜査対象を切り替えることができます。そんなときに出てくるのがjob機能です。
マウスの代わりに、ショートカットキーやコマンドを使って操作します。
ざっくり
jobs
- プログラムの一覧と対応番号を表示
Ctrl+z
- いまのプログラムを一時停止(してbashへ戻る)
fg
- プログラムを操作状態に戻す
bg
- プログラムを操作無しで実行(バックグラウンド)
- (コマンド実行時、最後に)
&
- 最初から操作無しで実行
fg
と bg
は数字を渡せます。渡した場合は対応番号のプログラムを対象にします。渡さなかった場合は最近操作し他物が選ばれます。
Ctrl+z
で一時停止、fg
の2つだけで、中断と再開ができます。
&
を付け忘れて実行したとき、Ctrl+z
で一旦止めてbg
で裏で実行。実質的に&
を付けて実行した酔うな状態にできます。
3つの状態
プログラムの状態はこんな感じです。
本当は最小化は動いてるけど、簡易的に...。
終わりに
なんだかんだで多用しているありがたい機能です。ssh
な環境でDB操作や、ファイル編集へ行ったり来たり。どんな環境でも使えるものは良い物です。
curlを使う時に覚えておくと良いと思うオプション ぷちアドベントカレンダー2017 24日目
curl
便利!というとこで、個人的に覚えておきたいオプションの紹介です。
覚えておくと便利
たまにあれ?っと思った時にはこの辺りを覚えていると便利です。
-k 証明書無視、仮環境とかでたまに掛かるやつ。 -L リダイレクト処理してくれる、ブラウザは自動でやってくれるから忘れがち。 -u ユーザ名 ベーシック認証、後に :パスワード 付けると入力省ける -I うまく行かないときその1、大文字のアイ。ヘッダだけ出してくれる。 -v うまくいかないときその2。いろいろ出してくれる。コンソールに出すとごちゃごちゃするのでファイルへ出力したほうがいい。
bashで実行する時は記号に注意
bash
で実行する場合は、urlによく入っている記号&
などに注意が必要です。
curl
の問題ではないけれど、よく引っかかるやつです。
クオートで囲むなり、個別にエスケープするなりの対処が必要です。
終わりに
他にも便利な機能はありますが、トラブル対処としては今回の物を覚えておくと良いかと思っています。
私のvimのタブ入力切替マッピング ひとりぷちアドベントカレンダー2017 23日目
個人的に利用しているvim
のタブ入力切替のマッピングについてのお話です。
タブ切替マッピング
最近は次のような設定で落ち着いています。
nnoremap <Space>t2 :<C-u>setlocal softtabstop=2 shiftwidth=2 expandtab<CR> nnoremap <Space>t4 :<C-u>setlocal softtabstop=4 shiftwidth=4 expandtab<CR> nnoremap <Space>t8 :<C-u>setlocal softtabstop=8 shiftwidth=8 noexpandtab<CR>
スペース周りの設定値の意味はこんな感じです。
softtabstop
:タブ文字
をスペース
いくつ分と同じように扱うか。- 編集の際に
スペース
N個の纏まりをタブ文字
1個かのように追加/削除したい時に設定します。
shiftwidth
:- インデントしたい、という時にいくつ分の
スペース
を使うか。 - 内部の機能等で自動インデントする際にどれぐらいずらして欲しいかを設定します。
- インデントしたい、という時にいくつ分の
expandtab
:タブ文字
を入力した時に、代わりにスペース
に換えるかどうか。- ファイルに
タブ文字
をファイルに残したくない時に設定します。
tabstop
:タブ文字
をスペースいくつ分として表示するか。- 既にファイルにある
タブ文字
をどのようなサイズの見た目にしたいかを設定します。 - ファイル内のインデントが
タブ文字
の場合だけ(t8
相当)、好みで設定しても大丈夫です。
終わりに
簡単なショートカットで使えるようにしておくと便利です。
ひとつのGmailの受け取れるメールアドレス表記のお話 ひとりぷちアドベントカレンダー2017 22日目
gmailはひとつのアカウントでいくつかの表記のメールを受け取れるよ、というお話です。
ただし、たまーに悲しい事になる場合もあります。
受け取れるもの
実在するアドレスをつかうのもあれなので、@gmail.com
の代わりに@example.com
で表記します。
gmail
ではアカウント名そのもの以外に、.
(ピリオド)を含むものと+
(プラス)を含む物を受け取る事ができます。事前に設定等は必要ありません。
ピリオドを含むもの
アカウント名の好きな場所に好きな数の.
を含んでいても同じアカウントで受け取ることができます。最初と最後、連続はNGです。
例: curlune2
というアカウントの場合
curl.une2@example.com curl.une.2@example.com c.u.r.l.u.n.e.2@example.com
プラスを含むもの
アカウント名の最後に+
とすきな文字列を含むメールも同じく受け取る事ができます。
@
はだめ、など多少制限はあります。アカウント名部分は先ほどのように.
を含むことができます。
例:
curlune2+abc123@example.com curl.une2+nospam@example.com
たまにある悲しい事
そんなもの受け付けない
意図的な制限の場合や考慮していない場合、+
を含むアドレスは正しいメールアドレスと認識してもらえない事があります。
受け付けたけど扱えない
登録できないだけなら良いのですが、稀に登録できるけれど扱えない部分がある
というところがあるので注意が必要です。
先日の記事もそんな例のひとつです。
受信だけでなく送信もできる
別表現のアドレスは受信だけでなく送信にも使えます。
受信は何もせず行えますが、送信の場合は個別に設定が必要です。
別表現から送信できるようにする
gmailの設定画面から送信元を登録する事ができます。
他のメールアドレスを追加 を選択すると 名前とメールアドレスの入力画面が出てきます。
メールアドレスの部分に.
や+
を含むアドレスを入力する事で送信に使えるようになります。
以降、メールを送信する際にFrom欄を選択するとプルダウンにて先ほど追加したアドレスを選べるようになっています。
終わりに
+
を含むような特殊なメールアドレスを受け付けない、というのは構わないと思います。けれども、半端に動作するのは勘弁してほしい......。
chromeでUserAgentを変えてアクセスする ひとりぷちアドベントカレンダー2017 21日目
Chrome
でUser-Agent
を変える方法についてのお話です。
本体の設定のみで行けます。
設定ページ
ディベロッパーツールのSettings
から設定を行えます。
Ctrl+Shit+I
でディベロッパツールを表示します。- その後、
F1
を押すとSttings
の画面が出てきます。 Devices
のページを選ぶと、User-Agemt
等を追加/変更する事ができます。
今回設定した値はこちらから取ってきました。 www.nttdocomo.co.jp
使い方
ディベロッパーツール左上のスマホ/タブレット?のアイコンから利用できます。
上部のプルダウンから先ほどの設定を利用できます。
正しく反映させるためには、一旦リロードが必要な場合があります。
終わりに
久々にUser-Agent
依存なページを見かけました。アクセスほとんどないだろうけれど、まだ生きているのだなあ。
最近は画面サイズ等で振り分けが多い?ので懐かしいです。 通信速度等も弄らないとモバイル等の判定をしてくれない事があります。