忍者ブログ

nyaruratoの製作記録

フィギュアやプラモデルについてもそもそと語っていきます。 最近は電子工作・ゲーム製作に興味アリ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

oculus riftの加速度センサから頭の変位を出したかった話

◆oculusから加速度取れるなら時間積分すれば頭の変位が取れるのでは?と以前から思っていたので今回試してみました。

ちなみに方法は最初はKeyNotFoundExceptionで弾かれてうまくできませんでした。
oculus riftに画面出力させるようにするとなぜかうまくいきました。
でも今試したらoculusの画面出力を切ってても普通に通る・・・理由は別にありそうです。

加速度を取り出して見たところ、oculusを机の上に置いた状態で

こう出てきました。

ーーーーーーーーースクリプト書くーーーーーー


Debug.LogにVector3を突っ込んだ状態。
こんな感じで出てきましたが、オブジェクトは勝手に動いていく・・・・。
Debug.Logに変位のfloatの値を突っ込んでみると



こんな感じに。Vector3をDebug.Logで表示させた数の位以下の値が影響を与えている様子。

ならばと思い、
d[i] =  Mathf.Round(d[i]*100.0f);
変位を100倍して小数部分を四捨五入してみる。







こんな感じになった。
当然元の場所には戻ってこない。

諦めました。

一応ソース貼っときます。
プログラミングはまだまだ初心者なのでこれはこうしたらいいよとか言っていただけると嬉しいです。
そもそもの考え方がおかしいとかあったら教えて下さい。



--------------------------------------------------------
 
using UnityEngine;
using System.Collections;

public class otamesi : MonoBehaviour {


float[] m_a = new float[3];
float[] m_v = new float[3];
float[] neo_a = new float[3];//加速度の増加量(微小時間の加速度
float[] a = new float[3];//oculusからとる加速度
float[] v = new float[3];//速度
float[] d = new float[3];//変位


// Use this for initialization
void Start () {
OVRDevice.GetAcceleration( 0, ref m_a[0], ref m_a[1], ref m_a[2] );
}



// Update is called once per frame
void Update () {
float time = Time.deltaTime;
OVRDevice.GetAcceleration( 0, ref a[0], ref a[1], ref a[2] );


for(int i=0;i<3;i++){
neo_a[i] = m_a[i] - a[i];
v[i] = neo_a[i] * time + m_v[i];
d[i] = neo_a[i] * time * time / 2.0f + m_v[i] * time;

d[i] = Mathf.Round(d[i]*100.0f);

m_a[i] = a[i];
m_v[i] = v[i];
}

Vector3 obj_pos = new Vector3(-d[0],-d[1],-d[2]);

gameObject.transform.position += obj_pos;
Debug.Log(d[0]+","+d[1]+","+d[2]);

}
}

拍手[0回]

PR

oculus und panzer作った

動画上げました。
http://www.nicovideo.jp/watch/sm22603675

アプリのダウンロードはこっち
http://bowlroll.net/up/dl30164

戦車に乗ってみたくて作りました。

【まとめ】

・砲撃の時の爆発はDetonator Explosion Framework使ってます。
最初はうまく動きませんでした。ビルドすると爆発のエフェクトが出てこなかったです。ログを見るとNullReferenceException。
いろいろと調べていると
http://forum.unity3d.com/threads/209023-Detonator-package-not-working-in-standalone-builds
似たような感じの質問が。

また、http://upsnap.jp/archives/show/126を見ると『Resources フォルダ内のファイルはビルドをすると resources.assets としてまとめられます。』と書いてありました。
そこでDetonatorのResoucesフォルダにDetonatorのResouces以外のフォルダをぶっ込んでビルドしたところうまく行きました。

・戦車は内装まで作りこまれているMMDの三突のモデルを使いました。カーグラP様ありがとうございました。
戦車全体にBox Colliderを付けています。

・戦車の前進、後進、弾の発射はrigidbody.AddForceを使いました。

・戦車のハッチが開いた状態はPMXエディタで編集しました。(未だにunity上でのボーン操作ができない・・・

・頭の位置はKinectで取ってます。頭の上下だけさせたかったので、KinectPointControllerのスクリプトを編集して頭のy座標だけ取るようにしました。(forループ外して配列の番号を固定にしただけ)

・Kinectの有無はどうすればいいんだろう?
if(DeviceOrEmulator.getKinect() == null)みたいな感じでやろうとしたけどうまく行かず。

・動画ではPS3のコントローラーで操作してます。やっぱりキーボードよりもずっと楽ですね。

・初めてterrain使いましたがなかなか楽しい


Oculus装着時の操作デバイスとしてWiiリモコンを買ってみましたが、後期型のようでペアリングするのも一苦労。ペアリングしても使えない。
どうしたらいいんだろう。

拍手[0回]

OculusRiftでアイマスライブ


【ニコニコ動画】OculusRiftでアイマスライブに行ってみた

動画上げてみました。


アプリを作ってのまとめ
・天海春香ちゃんかわいい
・近くで見るとかわいい
・やっぱりかわいい


一番の難関はMMDのステージを取り込むことでした。
.xファイルの取り込みに試行錯誤しました。
@nano06126728 さんのPMXにしてみればM4Mで取り込めるのではないかという意見を元に、PMXエディタを使って.xファイルを読み込み、pmxでエクスポートすることでUnity上にMMDのステージを持って行くことができました。

サイリウムの動きはKinectのPointmanを利用してます。

僕の環境ではキャラクター三人で30fpsでした。五人はちょっと厳しそうです。

Oculusのカメラを使うとモーションと音声がズレてしまうそうです。
Oculusのカメラを使わないタイトルのシーン→本来のシーンとしてやることで解消できました。(@koukiwfさん情報ありがとうございました。)

ステージのスピーカーから3Dサウンドで音を出すということをしたかったのですが、キャラにもたせている音源とスピーカに与えている音源の同期方式が分からず諦めました。結局3Dサウンドはオフにして使っています。

本当はサイリウムを上に上げた時にFu!やらHi!といったコールを出したかったのですが、音源が見つからない+自分で録るとノイズが酷くて使えないということで断念しました。

M4Mを使ってて失敗したことなのですが、同じフォルダ内にpmdモデルを入れていて変換をするとmaterialが上書き?されるといったことがありました。
フォルダを分けるのが常識なのかもしれませんが・・・

プルダウンメニューから踊るキャラを選択という感じにしたかったのですが、Unityにプルダウンメニューってあるの?+実装しようという時点でfps30だったので断念しました。

OculusRiftを買った理由がアイマスライブを作って楽しみたい!というものだったので完成度は別として、目標を達成できて嬉しかったです。

拍手[0回]

oculus riftとkinectで空をとんでみた

【ニコニコ動画】Oculus RiftとKincetでスーパーマンになってみた

動画を上げてみました。


hecomiさんのこの記事を参考にkinectの環境を構築しました。
http://d.hatena.ne.jp/hecomi/20130709/1373472118

unityでKinectを使う方法はzigfuと公式SDKを使う方法があるようですが、僕は公式SDKを使いました。(zigfuよく分からなかった・・・)


Kinect Wrapper Package for Unity3Dを使ったこと、今回やったこと、ハマったことでのまとめ

・KinectPointManなどでkinectを使うときはKinect_Prefabを置かなければ使えない。(PointManのswにはKinect_Prefabをぶっこむ)

・上昇する、落ちるなどといった判定は肩のボールの位置、肘のボールの位置を取得しy方向で右肘の位置が肩より高ければ上昇といった感じで書いた。(もっといい方法あるかも?

・同様に前後に進むはお尻と頭のz方向の位置を取得して判定した。左右に回るのは左右の肩のy方向の位置から判定。

・translate.positionで判定のために肩の位置などを取得すると回転した時にうまく判定できなくなるので、translate.localPositionを使った。

・上のhecomiさんの記事のようにKinectPointManの中にoculusのカメラを入れるときはゲーム再生時にkinectの方にoculusを向けておかないと横を体の向きがおかしくなる。(oculusのカメラから見て)

・体を回転させた時、向いている方向に進む場合は
tranform.position = transform.rotation * 進みたいベクトル
をする。
transform.forwardを使ってもいいかもしれない?

・録画の際、kinectの映像をどうやって録画したらいいか分からなかったのでKinect studioの録画機能で一旦録画し、その後キャプチャソフトで録画した。

・Unityでアンチエイリアスを効かせるとoculusで見た時、アンチエイリアスをかけない時よりもずっとよくなる(ただしGPUパワーを消費する)

http://stereoarts.jpさんのSkyboxMesh.csは必須。(参考:http://d.hatena.ne.jp/hecomi/20130721/1374372218
SkyboxMesh.csを入れても違和感がなくならない場合は元々あったskyboxを消してない可能性。
Edit→Render SettingsからSkybox Materialを消す。

・Kinectで動く際にoculusに付属のhdmiケーブルとusbケーブルでは短いので長いものを注文した。

これらを購入。oculus付属のusbケーブルはフェライトコアがついてるっぽかったのでフェライトコアつきのものを選んだ。

・長いケーブルを買ったものの、コントロールボックスまでのケーブルが短いので腰の背の方にウェストポーチをつけて、そこにコントロールボックスを入れた。チャックは閉められないのでクリップで閉じた。

・動画編集ってすごい大変。動画作る人ってすごい。

拍手[1回]

oculus rift届いた

Oculus Rift、注文して先日届きました。

2013/11/22 注文
2013/12/5 Processingメール(24時間以内に発送準備に入りますよーのメール)
2013/12/10 発送(香港から)
2013/12/11 日本着、税関通過
2013/12/12 我が家に到着

こんな感じで届きました。
大体3週間くらい?
受け取りの際には税金やら手数料やらで1000円かかりました。

oculus riftのスレを見ていると11月以前の人達は2,3ヶ月待つこともあったそうなので、かなり早く届いたことになります。



・届いてからやったこと
oculus rift wikiのデモをいくつかやってみました。
http://wiki.oculusvr.jp/index.php?%E3%83%87%E3%83%A2


・いろいろと重要そうなサイト等

・Oculus Rift Advent
http://atnd.org/events/45316
とてもおもしろいです。

・主婦ゆに!
http://togetter.com/li/601037
oculusとは関係ありませんが、主婦の方の進むスピードが半端ないです。そして勉強になります。

・Unity仮面の動画
http://www.nicovideo.jp/watch/sm22098259
この動画のおかげで簡単に天海春香ちゃんと会えました。



・twitterの@GOROmanさん、@yuujiiさん、@warapuriさん、@hecomiさん等など
沢山いて書ききれませんが、twitterでoculus関連のつぶやきをしてる方が沢山います。
詰まった時何度か助けていただきましたありがとうございました。


拍手[0回]

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

リンク

最新CM

[07/16 listener]
[07/15 nyarurato]
[07/12 listener]
[12/19 satotaku]

最新TB

プロフィール

HN:
にゃるらと
性別:
男性
自己紹介:
こんにちは。
プラモやフィギュアなどについて書いていくつもりのブログです。
Twitter
https://twitter.com/sakura_metal

バーコード

ブログ内検索

Copyright © nyaruratoの製作記録 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]