(HoloLensでThetaの映像見たい続編).NetのwebrequestをUnityWebRequestで置換したいが
前の続き
HoloLens用にビルドすると.Netのwebrequestの部分でエラー吐いてビルドできないやつをなんとか回避したいんだけど、UnityWebRequestで書き換えてやればいけるんじゃない?
と、思ってみたが、そもそも通信の実装はよくわからないので、お手上げ状態。
ちなみに、Player SettingでScriptBackendをIL2cppにしたら、そのままでもビルド自体はうまくいったが、Thetaとの通信はできなかった(ってかC++じゃ動かんよな)
んで、適当にブラウジングしてたら、こんなアプリがすでにあった模様。
このアプリを使用したら普通にシータの画像をライブで見れた。
実装の仕方はわからないけど、そもそもUnityなんか使わないでVSで書けよって事。。。?
2Dアプリの方が、ライブカメラの使い方としてあってると思うけど、Thetaだったら3Dアプリでみたいよなぁ。。。
他に使えそうないいライブカメラがあればいいんだけど。
以上。
【Unity】Unity5.6のVideoPlayerとuGUI
はい。
Unity5.6もリリースされたことなので、久しぶりに記事書こうかな。
今回のアップデートで注目されてるのはVideoPlayer
今までUnityで動画を使おうとするとAssetのAV Proを購入せざるをえなかったが、今回導入されたVideoPlayerを使用すれば大概の事はAV Proを使用せずに済むようになった。
1.導入
使い方は超簡単。
まずはVideoPlayerを配置。Createからも作れるので楽。
次に再生したい動画をProjectに入れて、先ほど作ったVideoPlayerのVIdeoClipにつける。基本的にh.264の拡張子mp4なら動くみたい。
ちなみにmovでも再生できたので、たいていの動画は再生できそうです。(確認してないけどaviとか古いのは無理っぽい?)
次に動画を映したいCameraを配置。Play On Awakeにチェックを入れてあれば、この状態で実行したときに再生されます。
スクリプトから操作したい場合は、VideoPlayer.Play()とか読んであげれば任意に再生できます。Audioを再生する感覚で操作できるので楽ちん。
2.Canvas使ってるときの配置
コンテンツを作ってるとuGUIを使用してイメージを配置してたり、フェードインやフェードアウトしたりするシーンを作ることが多いと思います。
そんな時に動画を再生すると、uGUIのが動画の前に映った状態で再生されてしまいます。レイヤー構造的にはCanvasより後ろに動画が見える様になっているので、これをどうにかして手前に持ってこなきゃいけません。
んなら一番手前に配置すりゃエエだけの話で、これも簡単にできます。
ざっくりいうとレイヤーの一番上のImageを動画にしちゃう感じです。
まずは、先ほどのVideoPlayerのRender ModeをRender Textureにして、新しく作成したRender Textureをaddしましょう。
一つ気をつけたいのはRenderTextureのSizeを動画の縦横サイズにあわせること。(少し気持ち悪い気がするけど)
次にUIからImage(RawImageでもおk)を作成して、Textureに先ほど作成したRender Textureをaddしましょう。
これで解決です。
uGUIが描画されてても一番手前に動画が再生されるので、かぶったりしません。
今まではunityで動画って聞くだけで「あ~~~~^^」ってなってたし、ソースがmovとか聞いたら死んでたけど、5.6からは超簡単になって最高やね。
以上。
【Unity】ひらがなに濁点、半濁点をつけたりとったり、小書きにしたり
ひらがなに濁点、半濁点つけれないとダメでしょw
そう簡単に言わないでクレメンス。
ってことで、ひらがなに濁点とか半濁点をつけれるか判定して変換するようにスクリプトを実装するハメになったので記載。
どうやってやるンゴ・・・
わからなかったので調べて考えて実装。
ちなみに今回いっぱい使う単語の「小書き」ってのはひらがなカタカナの小さい文字(ぁ、っ、ぇ等)を指し、「並字」ってのはその対義語(普通のひらがなの事)を言うらしい。
・濁点(半濁点)をつけるスクリプト
using UnityEngine;
using System.Collections;
using System;
using System.Text;
public void Conversion(){
string input = "は" ;
//UTF-8 NFDで他の文字と結合すると濁点になるもの
char dakuten = '\x3099';//UTF-8 NFDで他の文字と結合すると半濁点になるもの
char dakuten = '\x309A';
//くっつけてNFCにNormalize
string add = (input + dakuten).Normalize (NormalizationForm.FormC);
//NFCに文字がない場合、文字化けするので文字数が増える
//NFCに文字がある場合、文字数は増えないので
if (lastMoji.Length == add.Length) {
Debug.Log("add"); // "ば"になる
} else {
Debug.Log ("無理");
}
}
濁点くっつけられる文字だけ調べて配列入れて、くぁwせdrftgyふじこlp・・・
とかしなきゃいけないンゴ?
と、いろいろ調べていたら、macとwindowsのUTF-8の違いに気づく。
URF-8にはNFCとNFDってのがあるみたいで、大雑把に言うと濁点入り1文字になるか文字と濁点の2文字で表示されるかの違いがあるらしい(詳しい仕組みはわからない)
たとえばこんな感じ
・NFC ー がぎぐげご
・NFD ー か゛き゛く゛け゛こ゛
で、Normalizeってのをしてやると、それぞれに変化できるみたい。
この時にNFDで濁点がつけられない文字(たとえば「め」)をNormalizeすると文字化けが起こる。
すると文字数が増えるので、これを判定に使用すればおk。
邪道かもしれないけど、スクリプトもすっきりでいいかんじカモ。
・小書き⇔並字にするスクリプト
//小書き文字をあらかじめ用意
public string kogakiMoji;
//小書き文字にできる並字をあらかじめ用意
public string namiji;
public void Conversion(){
string input = "あ";
//inputが小書き文字かどうか
for (int i = 0; i < kogakiMoji.Length; i++) {
if (kogakiMoji [i] == input ) //一致したら{
input = namiji [i];
return;
}
}
//inputが小書き文字にできる並字かどうか
for (int i = 0; i < namiji.Length; i++) {
if (kogakiMoji [i] == input ) //一致したら
{
input = namiji [i];
return;
}
}
}
こっちは先ほどの、くぁwせdrftgyふじこlp、の部分で言いたかった実装。
あらかじめ、配列に小書き文字(「っ」とか「ぁ」など)と小書きにできる並字(「つ」とか「あ」など)を格納しといて、入力された文字をそれぞれの配列と比較して一致したら変換。みたいな。
配列用意するのがめんどいけど、こっちのほうが王道かな?
これでいいかんじに実装できるはず。
以上。
HoloLens開発つまずいてる
はい。
ただいま、絶賛HoloLensのアプリ開発中なのですが、どうもうまくいかなくて悶々としてる。
やろうとしてることは
THETAなどのLive映像をwifi経由でHoloLens内に投影
です。
通信部分さえ自作してしまえばいけそうだけど
勉強不足なので、他力本願でやってみることにしたが
このへんの記事を参考にさせてもらったが、うまくビルドできなかったり、通信できなかったりしてうまくいかない。
一応、伊藤周さんのプログラムはunityEditor上では動いた。
よっしゃ、これでビルドしちゃえばいけるんじゃね!?
ちーん。
うーん、スクリプトがdllを参照してるからってのもあるけど、、、
ちなみにexeだとうまくいく。
どうしたものか。
【Unity】OculusでVRコスプレしたくない?
最近、アバター使ってなんかできねぇかなと模索中。。。
FaceRigもいいんだけど、やっぱり自由度あった方がいいなと思って、Oculusで自作してみた。
まだテスト段階なので完全ではないけど、それっぽくなってきたと思うので、いったんまとめる。
作成にあったって、話題のVRコスプレイヤー、青木そらすさんのご協力をいただきました。
・青木そらす さん https://twitter.com/open_sorasu
んで、今のところこんな感じ
もうちょっと調整が必要か pic.twitter.com/DYAxf3KAnD
— HarakeN (@b_follower_k) 2017年1月12日
微調整したい部分はたくさんあるけど、何となくコスプレしてる感はあっていい感じ。
そこそこできたら作り方も改めて書くよ。
以上。