curluneの日記

日々試行錯誤。雑多に、気ままに、てきとーに。HoloLens/Oculus Rift,Touchと戯れる日々。

VRChatでFixedJointを使って自身と同期して動くアバターを作る、ためのスクリプトを作ってみた。

FixedJointを使うと同じ動きができるらしい、というお話を聞いたので試してみました。 いろいろ試したところ何とか成功。先人たちの知恵に感謝です。

で、設定が面倒だったので簡易なスクリプトを作ってみました。 Humanoidのアバター同士であればお手軽に同期できます。

f:id:curlune:20180321211741g:plain

動画雑い...

完成品

github.com

注意

  • これでいいのかは謎です。
    • 詳しくは聞いていないので適当に試行錯誤。
  • 不具合があります。
    • gifのように自身に同期するアバターが混ざる??謎。
  • 動作がおかしくなる場合があります。
    • 別途物理Rigidbodyを使うアバターと相性がよろしくない です。
      • 移動を反映しないようにしてしまうため。
    • 試す場合は新規シーンで。

環境

  • VRC: 0.12.0p15
  • VRC SDK: 2018.02.28,21,21
  • Unity: 5.6.3p1

使い方

f:id:curlune:20180321212917p:plain

アバターの準備

  • 自身用のアバターと、同期させたいHumanoiidアバターのモデルを用意します。
    • お手軽に試すのであれば同じものを複製するだけOKです。
    • ポーズが異なるとずれます。
  • シーンのヒエラルキーで、同期させたいモデルを、自身のアバターの子としてツリーに追加します。

スクリプトの準備

  • プロジェクトのAssetsの好きな場所にEditorというディレクトリを作る。
  • 先ほどのスクリプトを拾ってきてて投げ込む。
    • 完了するとメニューのVRC SDKの部分に項目が追加されます。

同期させる

注意: Undoに対応していないので元に戻せません!

メニューに追加された項目 VRC SDK > Util > Joint Sub Animator Bone を選択するだけです。

仕組み

同じ役割のボーン同士をつなげて、同じように回転させることで同期させています。 動作の邪魔になりそうな抵抗類はなくしています。

すべてのボーンに対して同じことをすることで全身(だいたい)同じ動きになります。 手動で設定するのは面倒なのでスクリプトスクリプト化しました。

Humanoidとしてのボーン情報を利用することで、モデルに関係なく自動的につなげています。

都合上、位置の移動は伝えていないため、一部アバターは動作しないかもしれません。位置も伝えるひどいことにしまうので....。

終わりに

Unityはお手軽に機能追加が出て便利ですね。

VRChat内部ではスクリプトが制限されていますが、データを作るためのEditer内では使い放題。いろいろやってみたいなあ。

VRChatで遊ぶ - SDKを準備する

ここ最近、時間も忘れてVRChatで過ごしています。 試行錯誤しながらも、できることが増えていくのは楽しいですね。 せっかくなのでメモがてら何かしら書いていこうと思います。 まずは、自由を手に入れるためのSDKの準備についてです。

VRChatとは

好みの姿で自由に過ごせるゲーム?です。 VR機器がなくても遊ぶことはできます。

store.steampowered.com

しばらく過ごすと自由な動きを求めてVRに手を出す方が多いようです。身の回りだけでも次々とVR勢力が増え、影響力すごいなあと感動しています。楽しいは正義。

VRChatの特徴であり面白いことろは、誰でも簡単にコンテンツを作れる、という自由度の高さです。

作れるもの

大きく分けて2種類のコンテンツを作ることができます。ユーザの分身であるアバターと駆け巡るステージであるワールドです。 基本的には個人用で、自分や身の回りで利用できます。別途お願いすることで、誰でも使えるように公開もできるようです。

コンテンツはUnityで自由に作成できます。 使えるコンポーネントは指定されていて、直接コードを書くことはできません(ホワイトリスト)。あるものをうまく組み合わせて表現する、という形式です。 ワールドに関しては、コードの代わりにイベントを発生させる仕組みが提供されています。

ドキュメントはこちら。ところどころ書いてあることと違う箇所があったりも...。何か書いていきたいところ。 https://docs.vrchat.com/

コンテンツが使えるようになるまでの流れ

ざっくりとこんな感じです。

初回

  1. VRChatにユーザ登録
    • コンテンツVRChatのアカウントに紐づきます。登録・利用のために必須です。
  2. SDKをダウンロード
  3. Unity 5.6.3p1をインストール (2017-02-18時点)
  4. Unityで新規プロジェクト作成
  5. UnityでSDKをインポート
    • メニューの Assets > Import Package > Custom Package...
  6. UnityでVRChatにログイン
    • 追加されたメニューの VRChat SDK > Settings

コンテンツ作成

  1. 素材を集めてくる。
  2. Unityで新規シーンを作成して配置
  3. 作ったものをVRChatに登録
    • メニューの VRChat SDK > Show Build ControlPanel
    • アップロードにしばらくかかるのでまったり待ちます。

利用

  1. Steam経由でVRChatをインストール
  2. VRChatを起動
  3. VRChatのユーザでログイン
    • ゲームログインのためにはメールアドレスの確認が必要です。送られてきたメールを確認しておきましょう。
  4. メニューから登録したものを選択
    • Esc か コントローラのメニューっぽいボタン > Avater or World の Mine.

めも

  • Unityでできるのは登録まで。
    • Unity内部でプレイはできません。クライアント機能はないので登録後にVRChatアプリで試す必要があります。
      • 直接実行しないのでシーンにカメラ不要です。Example含めShow Build ControlPanel からの登録で実行します。
    • ワールドは Unity経由でVRChatアプリをtest起動はできます。アップロードしないので早くて便利。
  • 登録時の写真は、登録起動中に Sceneへ切り替えてHierarchyの VRCCamのトランスフォームで調整できます。
  • VRChatの各種ウィンドはどこか収納しておくと散らからずに便利です。

f:id:curlune:20180218104032p:plain

次回は アバターかワールドの作成、のよてい。

bashのjob機能を使う ぷちアドベントカレンダー2017 25日目

CUI環境での実行切替、bashのjob機能についてのお話です。

CUIでも実行切替

GUIではウィンドウを選んで操作対象を切り替えるように、CUIでも捜査対象を切り替えることができます。そんなときに出てくるのがjob機能です。

マウスの代わりに、ショートカットキーやコマンドを使って操作します。

ざっくり

  • jobs
    • プログラムの一覧と対応番号を表示
  • Ctrl+z
    • いまのプログラムを一時停止(してbashへ戻る)
  • fg
    • プログラムを操作状態に戻す
  • bg
    • プログラムを操作無しで実行(バックグラウンド)
  • (コマンド実行時、最後に)&
    • 最初から操作無しで実行

fgbg は数字を渡せます。渡した場合は対応番号のプログラムを対象にします。渡さなかった場合は最近操作し他物が選ばれます。

Ctrl+zで一時停止、fgの2つだけで、中断と再開ができます。

&を付け忘れて実行したとき、Ctrl+zで一旦止めてbgで裏で実行。実質的に&を付けて実行した酔うな状態にできます。

3つの状態

プログラムの状態はこんな感じです。

  • GUI
    • アクティブ
    • 非アクティブ
    • 最小化
  • CUI
    • フォアグラウンド
    • バックグラウンド
    • 一時停止
  • 説明
    • 操作中
    • 操作していないけど動いている
    • 動いていない

本当は最小化は動いてるけど、簡易的に...。

終わりに

なんだかんだで多用しているありがたい機能です。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

たまにある悲しい事

そんなもの受け付けない

意図的な制限の場合や考慮していない場合、+を含むアドレスは正しいメールアドレスと認識してもらえない事があります。

受け付けたけど扱えない

登録できないだけなら良いのですが、稀に登録できるけれど扱えない部分があるというところがあるので注意が必要です。

先日の記事もそんな例のひとつです。

curlune.hatenablog.com

受信だけでなく送信もできる

別表現のアドレスは受信だけでなく送信にも使えます。

受信は何もせず行えますが、送信の場合は個別に設定が必要です。

別表現から送信できるようにする

gmailの設定画面から送信元を登録する事ができます。

他のメールアドレスを追加 を選択すると 名前とメールアドレスの入力画面が出てきます。

f:id:curlune:20171222234158p:plain

メールアドレスの部分に.+を含むアドレスを入力する事で送信に使えるようになります。

f:id:curlune:20171222234647p:plain

以降、メールを送信する際にFrom欄を選択するとプルダウンにて先ほど追加したアドレスを選べるようになっています。

終わりに

+を含むような特殊なメールアドレスを受け付けない、というのは構わないと思います。けれども、半端に動作するのは勘弁してほしい......。

chromeでUserAgentを変えてアクセスする ひとりぷちアドベントカレンダー2017 21日目

ChromeUser-Agentを変える方法についてのお話です。

本体の設定のみで行けます。

設定ページ

ディベロッパーツールのSettingsから設定を行えます。

  • Ctrl+Shit+Iディベロッパツールを表示します。
  • その後、F1を押すとSttingsの画面が出てきます。
  • Devicesのページを選ぶと、User-Agemt等を追加/変更する事ができます。

f:id:curlune:20171221233750p:plain

今回設定した値はこちらから取ってきました。 www.nttdocomo.co.jp

使い方

f:id:curlune:20171221234926p:plain

ディベロッパーツール左上のスマホ/タブレット?のアイコンから利用できます。

f:id:curlune:20171221234953p:plain

上部のプルダウンから先ほどの設定を利用できます。

正しく反映させるためには、一旦リロードが必要な場合があります。

終わりに

久々にUser-Agent依存なページを見かけました。アクセスほとんどないだろうけれど、まだ生きているのだなあ。

最近は画面サイズ等で振り分けが多い?ので懐かしいです。 通信速度等も弄らないとモバイル等の判定をしてくれない事があります。