VRChatにOculusDK2+JoyCon+Kinectで潜り込む

自分用備忘録。

いいよね、VR. 私もしたい

でもOculusRiftもVIVEもちょっとお高い。
WindowsMRは比較的安めだけど手のトラッキング範囲が限られている。

サークル室に転がっていたOculusDK2

Kinect for Windows

これにswitchのJoyConを買ってきてなんちゃってVRする。

! Windows10でないと、JoyConが認識されず動きません !

なにをしたの

OculusDK2とKinect、JoyConでVRした。
一般的なVR機器には遠く及びませんが、身振り手振りで話すくらいには使える。
お金あるならVIVEのほうが...いいかな!

準備したもの

・OculusDK2
Kinect for Windows
・KinectSDK1.8 - Kinect使うためのSDK。MSから無料で持ってこれる
・JoyCon - 7000円くらい
・JoyCon充電器 - 1500円くらい
BlueToothアダプタ - 必要であれば
・Driver4VR - 2500円くらい 試用版ありのソフトウェア
・いい感じのマイク
・USB/オーディオ延長ケーブル

手順

OculusDK2を使えるようにする

まずはOculusソフトウェアをインストール。デバイスの設定はスキップを押す。
DeviceタブにてHMDとセンサーがconnectになってればOK.

SteamVRを導入

DK2をつないでSteamを起動すれば勝手にダイアログが出て入れてくれる。
SteamVRを起動して、HMDとセンサーが緑色になっていることを確認。

Driver4VRを導入

試用版は15分程度? でソフトの再起動が必要になる。テストして納得したら買おうね。アカウントは作っておこう。
SteamVRを認識してドライバまでインストールするので、SteamVRインストールした後に入れましょう。

Kinectを接続

インストールするだけ。今回のようにv1とかfor Windowsの場合は1.8を入れる。
KinectをPCに接続して、デバイスマネージャからきちんと認識されていることを確認する。

JoyConを接続

BlueToothで接続。JoyConの側面にある黒い小さな丸ボタンを長押しでペアリング。
接続済みと出たらOK.

VRChatを導入

おもむろにインストール。

SteamVRを起動

一緒にDriver4VRが起動するので、アカウントにログイン。
頭の動きはDK2で取得できるのでHeadTrackingはオフ。
HandTrackingをONにして、BodyTrackingはお好みで。BodyをONにした場合はキャリブレーションが必要です。
恐らくD4VRを再起動しろと言われるので、D4VRとSteamVRも再起動。
D4VRのDeviceManagerからJoyConのタブへ行き、ONにした後Updateを押すと接続したJoyConがリストに表示される。
それぞれをleftとrightにAssignして割り当てる。
Startを押すと、SteamVRにてD4という表記とコントローラーらしきマークが緑になるはず。これでエミュレート完了。

VRChatを起動

遊ぼうね。
JoyConは回転とボタンを割り当てているだけなので、Kinectとのズレで手首が頻繁に折れます。なので+,-ボタンを押して戻してやる必要があります(かなり高頻度)。
Bodyもトラッキングしている場合は最初に四肢を合わせてキャリブレーションしますが、この時のボタンはトリガーではなく↓+Bです。

キーバインド

これがマジでわかんない。自動割り当てのようだけど使いづらいことこの上なし。
物を選択(パネルとかスイッチとか) : トリガー
物をつかむ : ↓ or B
物をつかんだ状態で使用する : 掴んでいるほうのコントローラーでトリガー
移動 : 左のジョイスティック
視点回転 : 右のジョイスティックにて左右
後ろを向く : ← , → or Y , A
メニュー : ↑ or Y 選択はトリガー

ここまではええのじゃ..でもジョイスティックに表情などのエモーションが割り当てられていて、アバターによりピースしながら走ったり舌出したりすることになる。つらい。
色んなアバターワールド周ったけど、ほとんどこれのせいで通常時でもにっこりしてたりとか移動/スティックでの視点移動をすると顔芸を始める。つらいことこの上ない。

なのでこの方法を使う人は、自作アバターを用意することをお勧めします。表情できないのつらいね。
キーコンフィグがあればいいんだけど、よくわからないです(よわい)

おわり

VRChatよりBlender使ってるほうが長い

お寿司ツイートボタン(Processing+Arduino+twitter4j)

おすしたべたいです。

 

食べたすぎておすしツイートしてしまう🍣

 

そういうわけで、お寿司の絵文字をツイートするボタンをつくりました。

(という名目でProcessing+Arduinoを試したかった)

 

・なにをしたの

Arduinoにスイッチつないで、Firmata接続したProcessing側で"スイッチが押されたらお寿司の絵文字をツイートする"という動作をさせただけ。

純正ArduinoじゃなくてJapaninoだけど許して。わりと備忘録。

 

・準備

1. ProcessingにArduinoのライブラリを入れる

2. Processingにtwitterライブラリのtwitter4jを入れる。

 -注意: 公式から落としてきたまま放り込むと認識されないので、ちゃんとわかってくれるようにフォルダ構造を作ってあげる必要があり。ググると作ってアップしてくださってる方がいるので、それをDLして最新版と.jarを入れ替えるといいかも。

3. ArduinoにはFirmataのStandardFirmataを書き込んでおく。

4. TwitterAPIを取得して、KeyとかTokenを用意しておく。

 

Arduino

スイッチをプルダウンで接続、今回は12番ピン。

f:id:Mijinko:20180417040722j:plain

こっちはこれでおわりです。

 

・Processing側

ライブラリをインポートして、処理はこっちで全部書きました。

import twitter4j.conf.*;
import twitter4j.internal.async.*;
import twitter4j.internal.org.json.*;
import twitter4j.internal.logging.*;
import twitter4j.http.*;
import twitter4j.internal.util.*;
import twitter4j.api.*;
import twitter4j.util.*;
import twitter4j.internal.http.*;
import twitter4j.*;
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
Twitter twitter;
int pin = 12;

String consumerKey = "***";
String consumerSecret = "***";
String accessToken = "***";
String accessSecret = "***";

void setup() {
size(400,200);
arduino = new Arduino(this, Arduino.list()[1], 57600);
arduino.pinMode(pin,Arduino.INPUT);
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(consumerKey);
cb.setOAuthConsumerSecret(consumerSecret);
cb.setOAuthAccessToken(accessToken);
cb.setOAuthAccessTokenSecret(accessSecret);

twitter = new TwitterFactory(cb.build()).getInstance();
}

void draw() {
background(0);
fill(255);
if(arduino.digitalRead(pin) == Arduino.HIGH) {
tweetSUSHI();
delay(100);
}
}

//ツイートする関数 void tweetSUSHI() { try{ String sushi = "🍣"; twitter.updateStatus(new StatusUpdate(sushi+" at"+hour()+":"+minute())); println("Successfully Post SUSHI"); } catch(TwitterException e){ e.printStackTrace(); } }

***の箇所はご自分のものに。

ツイート内容に時刻が入っているのは、APIによる同一内容連投はどうやら403で弾かれるようなので。

"Status is a duplicate"とか言われます。

 

ArduinoをPCと接続したまま実行し、ボタンを押すとお寿司がツイートされます。

 (36:40になってるのは分:秒にしてたため)

 

・おわり

私は数回で飽きた。