凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

2014年03月 | ARCHIVE-SELECT | 2014年05月

| PAGE-SELECT | NEXT

≫ EDIT

Oculus で OnGUI を使う時に平面にする

Oculus で VRGUI を使って OnGUI を扱うのをやりました。

・Oculus で OnGUI を扱う
http://kagring.blog.fc2.com/blog-entry-55.html

これを使う時にはデフォルトだと曲面になるのですが
これを平面にする方法があります。

VRGUI を継承したクラスでこれを設定するだけです。
多分作成される前がいいと思うので Awake あたりでやるのがいいと思います。

// 平面にする
this.useCurvedSurface = false;


継承したスクリプトを張り付けるとインスペクターにも表示されると思うので
そこで設定しても良いかもしれません。

これが。
VRGUI000

こんな感じになります。
VRGUI001

見易さや使いどころに応じて変えるのが良いかもしれません。
スポンサーサイト

| Unity | 22:21 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

Oculus のトラッカーをリセットしないようにする

Oculus についてです。
Unity での Oculus は以下のような特性を持っています。

・シーン切替え時に前のシーンのトラッキング情報を引き継ぐ
http://qiita.com/yasei_no_otoko/items/5104e882d651c70d7563#2-3


OVRDeviceの値はDestroy→Awakeを繰り返すごとにリセットされてしまいます。
「そんなの当たり前だろう」と思うかも知れませんが、
Oculus Riftの場合は「リセット時に初期方向の位置がセットされる」ので、
単純にシーン切替時の頭の向きが次のシーンの初期位置になってしまいます。


といった感じらしいです。
このページに書いてあるような変数を探したのですがなぜか存在しなかったのでメモです。


// トラッカーをリセットしない
GameObject cameraOVR = GameObject.Find("名前");
OVRDevice OVRDevice = cameraOVR.GetComponent();
OVRDevice.ResetTrackerOnLoad = false;



ResetTrackerOnLoad という変数みたいですね。
というわけでこれを指定すればトラッカーはリセットされなくなります。
指定する場所を間違えると一度もリセットされなくて動かなくなるので気をつけてください。

| Unity | 01:02 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

ログファイル

エラーが出た時などに詳細をみれるログファイルというのがあるようです。

・ログファイル / Log Files
http://docs-jp.unity3d.com/Documentation/Manual/LogFiles.html

「一般的には何か問題が発生したときにこのファイルをみて、どこで問題が発生したかを明確に確認します。」

と書いてあるので、
何か起きてどうしようもない場合はここを見るのがよいのかもですね。

| Unity | 01:49 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

エディタを VisualStudio に変更する

Unity のスクリプトの編集を MonoDevelop ではなくVisualStudio に変更する方法です。
エディタを変更するだけなので、ビルドなどはできないので注意してください。

まずは Edit ⇒ Preferences を実行します。
エディタ変更000

そのメニューの中の External Script Editor を変更します。
VisualStudio が入っていれば選択することができます。
Editor001a

そうしたらもうエディタが変更されるのですが、もしも初回でうまくいかない場合は
Assets ⇒ Sync MonoDevelop Project というのを実行してみてください。
エディタ変更002

といった感じでしょうか。
Unity Editor に戻るとビルドしてくれるので、特にエディタは何でもよいのかもしれませんね。
ちゃんと VisualStudio でもプロジェクトは全部読んでくれるので
プログラマはこっちの方が良いかもしれません。

| Unity | 03:49 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

SAColliderBuilder

SAColliderBuilder というアセットについてです。
これが使ってみたらかなり簡単で便利だったので紹介を。今さら感たっぷりですが。

・SAColliderBuilder
https://www.assetstore.unity3d.com/#/content/15058

上記のがアセットストアになります。

メッシュの形状に合わせて適切な Collider を作ってくれるアセットですね。
操作も簡単で、アニメーションに合わせてちゃんと動いてくれるのでとても便利かと。

・SAColliderBuilder チュートリアル
http://stereoarts.jp/SAColliderBuilder_Tutorial_jp.pdf

PDF なので注意してください。
使い方はいたって簡単で、ボーンを持つオブジェクトを選択して
SAColliderBuilder コンポーネントを追加して、二つぐらいパラメータをいじって Process ボタンを押すだけです。
これでちゃんとキャラクターの形状にそったコライダーをセットしてくれるのでとても助かります。

SAColleiderBuilder

キャラクターなどを作っていて、ちゃんとあたりをとりたい人などは良いのではないでしょうか!

| Unity | 17:32 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

ADX2 LE で BGM のフェードイン・フェードアウト

ADX2 LE で BGM のフェードイン、フェードアウトをする方法です。

画面遷移などで BGM のフェードアウトという機能はゲームをつくるのにあたって必須になります。
CriAtomSource の機能ではデフォルトではこの機能は提供されていなく、直ぐ停止してしまいます。
これをフェードアウトさせるための方法です。

が、調べてみると他の方法がみつからなかったのですが
処理が一番簡単そうなのは、どうも魔改造になるっぽいです。

・サウンド助け合い所 @ ウィキ - ADX2LE情報
AtomSourceからCriAtomExPlayerを得る(CriAtomExPlayerを呼び出す改良)
http://www53.atwiki.jp/soundtasukeai/pages/22.html#id_6c095b2d

CriAtomExPlayer を取得して設定するのが一番早いので
上記のとおりに CriAtomSource.cs に CriAtomExPlayer を取得するソースを追加します。

そして追加したソースで CriAtomSource から CriAtomExPlayer を取得して設定します。

CriAtomSource atomSource;
// フェードイン時間セット(ミリ秒)
atomSource.Player.SetEnvelopeAttackTime(2000.0f);
// フェードアウト時間のセット(ミリ秒)
atomSource.Player.SetEnvelopeReleaseTime(2000.0f);


CriAtomExPlayer の SetEnvelopeAttackTime が再生時のフェードインの時間で
SetEnvelopeReleaseTime が停止時のフェードアウトの時間の設定となります。
両方ともミリ秒での指定になります。

一応これでフェードインでの再生、フェードアウトしての停止が動いているようです。
が、魔改造ではあるので、公式にプレイヤーを使えるようにしてほしいなーと思う今日この頃です。
この方法凄く楽ですし…(苦笑
もしくは CriAtomSource で ReleaseTime が設定できるようになるといいなーと。

他にも方法があると思うのでまた調べてみようと思います。

| Unity | 01:45 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

画面のスクリーンショットをファイルに保存する

画面をキャプチャして画像ファイルに保存する方法です。


// 画面を画像ファイルに保存する
Application.CaptureScreenshot("Capture.png");


と記述するだけでOKのようです!
なんて簡単なんでしょう…素晴らしい!

この処理を Update の中などにキーで受け付け処理するようにしておけば
好きな画面のスクリーンショットを保存することができます。

自分の場合だとシングルトンで作ったマネージャーのようなものをつくって
どのシーンでも使えるようにしてキャプチャするようにしています。
Unity はこういう便利な巻数があるのでイイデスネ…。

| Unity | 02:19 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

固定フレームレートで動かす

普段 Unity は可変フレームで動いています。
処理落ちをした場合はフレームスキップされる感じですね。

これは遅いPCでもスローになることなく遊ぶことができるのでいいのですが
例えばスクリーンショットを1コマづつキャプチャしたいというときなどに困ることになります。

これを回避する手段として「Time.captureFramerate」に値を設定するという方法があります。

// 固定フレームレート設定
Time.captureFramerate = 60;


といった感じに設定すると1フレームが必ず60Fの値が更新されるようになります。
1/60.0f といった感じの数値になるようです。

・Time.captureFramerate
http://docs.unity3d.com/Documentation/ScriptReference/Time-captureFramerate.html

このドキュメントがまさにそれをやっている感じですね。
元に戻す場合は 0 未満?の値を入れてあげればいいようです。

・Time.captureFramerate
http://docs-jp.unity3d.com/Documentation/ScriptReference/Time-captureFramerate.html

何故か日本語のドキュメントは英語のドキュメントと内容が違うという…(苦笑

あまり使いどころはないかもしれませんが、一定速度で動かして楽がしたいとかには良いかもです。

| Unity | 02:11 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

ユニティちゃん

ユニティちゃんのモデルデータ配信がはじまったので
とりあえず流れにのって表示してみることに。

データはここから落とせるようです。
http://unity-chan.com/

データはパッケージ化されているのでインポートが楽でいいですねー。
Unity のこういうところ凄いと思います。

というわけで表示してみたらこんな感じに。
Unityちゃん

モーションもたんまりはいっているので Unity のテストとしていじくりまわすのにはとても良いですね~。
色々と参考になりますし。
とりあえず付属しているディレクショナルライトを設置しないとうまく表示されない部分だけ注意ですね。

| Unity | 16:47 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

ADX2 LE でループポイントの設定

ADX2 LE でループポイントの設定方法です。
一度設定して再生できた時から時間を置いて記事をかいてるので間違ってたらごめんなさい…。
BGM などでど頭に戻らず途中ループするのはゲームでは必須だと思うのでメモしておきます。

CriAtomCraft.exe を実行してエディタを起動します。
プロジェクトに追加した波形はこんな感じになってると思います。

LOOP000

この状態で、ループポイントを設定したい波形の右の方の青い部分をダブルクリックして
プロパティを表示します。

そうするとこんな表示に切り替わるので、赤い枠に囲まれているところを設定します。
リループ開始位置と終了位置はサンプリング値なので気をつけてください。

LOOP001

これを設定して出力して Unity で再生するとめでたくループ再生ができていると思います。

| Unity | 02:24 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT