HTC VIVE初期設定
HTC Vive初期設定の方法です
ですが実はViveはInstallガイドがすごい丁寧なので、雰囲気だけさらっと紹介します
setupツールのダウンロード
以下の公式HPからsetupツールをダウンロードして実行します
http://www.htcvive.com/us/setup/
setup
起動するとまず言語が選べます。そしてまさかの日本語対応しているので大分セッティングが楽です
セッティングを開始するとまずどれくらいの時間がかかるかの予想が出てきます
ソフトウェアの設定だけでなく、ハードの接続も順番に指示を出してくれ、ポイントポイントで動画や図で説明してくれるのでとてもわかりやすいです
ソフトウェアもこのツール経由でダウンロードすることができます
room-scaleの設定
ソフトウェアのダウンロードやハードの設定が終わるとroom-scaleの設定に移ります
十分な空間を確保できない人用に、あまり動かない立位用モードもあります
下の画面は立位用モードの設定画面です
接続が成功しているマシンは以下のようにアイコンが緑色になります
すべてのアイコンが緑色になって接続と設定が完了すればデモが開始します
Ansible playbook tips
モジュール関係
get_url
wgetのようにURLからファイルをダウンロードする
- hosts: all tasks: - name: download get_url: url: # downloadしたいURL dest: # 配置先(/usr/local/src/somepackageとか) validate_certs: no # 認証チェックでひっかかる&信頼できる場合 timeout: 30 # v1.8から
command
- hosts: all sudo: yes tasks: - name: change permission command: chown -R hoge:fuga /usr/local/src
lineinfile
configファイルなどファイルを編集(置換)します
- hosts: all tasks: - name: make backup of config file command: cp /etc/config/hoge.conf /etc/config/hoge.conf.org # ちなみにcp /etc/config/hoge.conf{,.ofg}のような書き方は出来ませんでした - name: edit config file lineinfile: >- dest='/etc/config/hoge.conf' # 編集したいファイルの指定 state=present backrefs=yes # 正規表現にバックスラッシュを利用できるようにする regexp='{{ ^enabled= }}' # 置換したい行を正規表現でしてい(^は行頭) line='{{ enabled=true }}' # 置き換えたい文字列を指定
複数置換したいポイントがある場合はwith_itemsを使用します
- hosts: all tasks: - name: make backup of config file command: cp /etc/config/hoge.conf /etc/config/hoge.conf.org - name: edit config file lineinfile: >- dest='/etc/config/hoge.conf' state=present backrefs=yes regexp='{{ item.regexp }}' line='{{ item.line }}' with_items: - regexp: '^enabled=' line: 'enabled=true' - regexp: 'path=/temp' line: 'path=/usr/local/src'
変数関係
利用方法
ansibleの変数は
{{ 変数名 }}
で利用する
作業中の自分のサーバのIPを取得する
{{ ansible_eth1["ipv4"]["address"] }}
自分で変数を設定して利用する
group_vars/all.ymlファイルを作成し、変数宣言をする
group_vars/all.yml
version: 1.0.0 user: vagrant storage0: 192.168.33.21 storage1: 192.168.33.22
他の変数と同じく{{}}で囲んで使う
その他
グループ内のサーバに番号をつけたい
以下のようにipアドレスのあとに指定することで変数として格納できます
hostsファイル
[storage] 192.168.33.21 order=0 192.168.33.22 order=1 192.168.33.23 order=2
こんな風に微妙に設定パラメータを変えたりするときに使える
- hosts: storage tasks: - name: edit config file lineinfile: >- dest='/etc/storage.conf' state=present backrefs=yes regexp='target: storage' line='target: storage_{{ order }}' # 192.168.33.21ではstorage_0 になる # 192.168.33.21ではstorage_1 になる # 192.168.33.21ではstorage_2 になる
sleep/wait処理
- hosts: all tasks: - name: wait pause: seconds: 15
notify/handler
notifyを指定することで次のタスクを指定できます
- hosts: all tasks: - name: first processing command: # 最初の処理 notify: next processing handlers: - name: next processing command: # 次の処理
debug
ansibleから各サーバへ送った命令の実行結果を取得して標準出力に出します
- hosts: all tasks: - name: check status command: ls -l register: ls_result - debug: var=ls_result.stdout_lines # ここで出力します
proxy設定
Proxy環境下でAnsibleを利用するときは各サーバでProxyの設定がされていないと動かない場合がある
対象のサーバ側で直接設定してもいいのだが、playbook側でも利用するProxyを指定することができる
- hosts: all vars: hogehoge_proxy: # 名前はなんでもよい http_proxy: http://hogehoge-proxy.co.jp:8080 https_proxy: https://hogehoge-proxy.co.jp:8080 tasks: - name: download package via proxy command: wget ************ environment: hogehoge_proxy # taskごとに作成したProxyの設定を指定する
Ansibleの設定方法
AnsibleはChefのようなDeployツールで以下のような特徴があります
- agent less
- 対象のサーバにAnsibleの命令を受け取るAgentをインストールする必要がない
- interactive mode
- レシピファイル内にすべて記述せずに対話的に設定をしていくことが可能らしい
- GUI web console
使い方
1. Ansibleのインストール(Ansibleサーバ)
sudo apt-get install ansible cd /etc/ansible ls -l total 20 drwxr-xr-x 2 root root 4096 Apr 25 05:31 ./ drwxr-xr-x 84 root root 4096 Apr 25 05:32 ../ -rw-r--r-- 1 root root 6119 Apr 1 2014 ansible.cfg -rw-r--r-- 1 root root 982 Apr 3 2014 hosts
2. 対象のサーバを指定
Ansibleサーバからアクセスするターゲットサーバの指定をします
vi hosts ================================================== [gateway] 192.168.33.21 [webserver] 192.168.33.22 [database] 192.168.33.23 192.168.33.24 [application] 192.168.33.25 ==================================================
フォーマットは色々ありますが、今回は以下の書式をで書きます
[Group名] IPアドレス
3. setting ssh agent
ansibleは対象のサーバにsshで接続するので、ssh agentなどを設定してパスワードレスでアクセスできるようにしてやる必要があります
ここらへんは過去ポストをご参照ください
パスワード入力なしでssh接続する方法①(ssh-agent) - 脳汁portal
パスワード入力なしでssh接続する方法②(.ssh/config) - 脳汁portal
sshの設定が完了したら、ansibleのpingモジュールを利用して実際に接続出来るか確認します
$ ansible all -m ping 192.168.33.21 | success >> { "changed": false, "ping": "pong" } 192.168.33.22 | success >> { "changed": false, "ping": "pong" } 192.168.33.23 | success >> { "changed": false, "ping": "pong" } . . .
またはコマンドを直接送ることも可能です。
今回はサーバグループを指定して実行してみます
$ ansible gateway -a "/bin/date" 192.168.33.21 | success | rc=0 >> Thu Apr 21 05:06:25 GMT 2016 $ ansible webserver -a "/bin/date" 192.168.33.22 | success | rc=0 >> Thu Apr 21 05:09:31 GMT 2016 $ ansible database -a "/bin/date" 192.168.33.23 | success | rc=0 >> Thu Apr 21 05:21:30 GMT 2016 192.168.33.24 | success | rc=0 >> Thu Apr 21 05:26:30 GMT 2016 192.168.33.25 | success | rc=0 >> Thu Apr 21 05:29:39 GMT 2016
4. playbookの作成
playbookはChefでいうレシピファイルになります
(Chefを使ったことがないので違ったらすいません
playbookはymlファイルで構成します。
sample
vi playbook_hogehoge.yml ======================================== - hosts: all # 指定したすべてのサーバで行いたい場合 sudo: yes # sudoを利用するかどうか tasks: # Tasks以下に実際に行う処理を記述していく - name: download from url # 処理の名前 get_url: # ansibleのget_urlモジュールを使用 url: ダウンロードしたいURL # ダウンロード先のURLの指定 dest: /usr/local/src/hoge.tar.gz # ファイルの配置先の指定 timeout: 30 # タイムアウトの指定(v1.8から - name: apt de git install suru command: apt-get install git # コマンドを直接指定することもできる - hosts: gateway # 特定のグループのみに作業させることも可能 tasks: . . . ========================================
5. Playbookの実行
playbookの作成が完了したらansible-playbookコマンドで実行できます
ansible-playbook playbook_hogehoge.yml
Reference
パスワード入力なしでssh接続する方法②(.ssh/config)
それぞれのサーバでやること
実際の手順
アクセス先サーバ
cd ~/.ssh ls -l total 4 -rw------- 1 vagrant vagrant 389 Apr 21 01:21 authorized_keys # 認証リスト # 鍵の発行 ssh-keygen -t rsa -f id_rsa_hogehoge ... Enter file in which to save the key (/home/vagrant/.ssh/id_rsa_hogehoge): Enter passphrase (empty for no passphrase): Enter same passphrase again: ... ls -l -rw------- 1 vagrant vagrant 389 Apr 21 01:21 authorized_keys -rw------- 1 vagrant vagrant 1675 Apr 21 03:31 id_rsa_hogehoge # 秘密鍵 -rw-r--r-- 1 vagrant vagrant 411 Apr 21 03:31 id_rsa_hogehoge.pub # 公開鍵 # 公開鍵を認証リストに追加する cat id_rsa_hogehoge.pub >> authorized_keys
アクセス元サーバ
cd ~/.ssh # 秘密鍵をとってくる(vagrantの場合) scp ${ユーザ名}@${アクセス先サーバ}:/home/vagrant/.ssh/id_rsa . # ssh/configの編集 vi config =================================================================================== Host ${アクセス先サーバIP} IdentityFile ${秘密鍵PATH} 例) Host 192.168.33.11 IdentityFile /home/vagrant/.ssh/id_rsa_hogehoge =================================================================================== # 確認 ssh ${アクセス先サーバ}
パスワード入力なしでssh接続する方法①(ssh-agent)
それぞれのサーバでやること
実際の手順
アクセス先サーバ
cd ~/.ssh ls -l total 4 -rw------- 1 vagrant vagrant 389 Apr 21 01:21 authorized_keys # 認証リスト # 鍵の発行 ssh-keygen -t rsa ... Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/vagrant/.ssh/id_rsa. Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub. ... ls -l -rw------- 1 vagrant vagrant 389 Apr 21 01:21 authorized_keys -rw------- 1 vagrant vagrant 1675 Apr 21 03:31 id_rsa # 秘密鍵 -rw-r--r-- 1 vagrant vagrant 411 Apr 21 03:31 id_rsa.pub # 公開鍵 # 公開鍵を認証リストに追加する cat id_rsa.pub >> authorized_keys # 認証リストのパーミッションを設定する chmod 600 authorized_keys
アクセス元サーバ
cd ~ scp ${ユーザ名}@${アクセス先サーバ}:/home/vagrant/.ssh/id_rsa ~/. # agentの起動 eval `ssh-agent` # プロセスの確認 $ ps aux | grep agent vagrant 2689 0.0 0.0 10612 316 ? Ss 08:38 0:00 ssh-agent vagrant 2709 0.0 0.1 11740 936 pts/0 S+ 08:39 0:00 grep --color=auto agent # 秘密鍵の登録 ssh-add id_rsa Identity added: id_rsa (id_rsa) # 確認 ssh-add -l # 実際にsshアクセス ssh ${アクセス先サーバ} Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64) * Documentation: https://help.ubuntu.com/ Last login: Thu Apr 21 03:26:34 2016 from 192.168.33.1 ### => パスワード入力なしでsshログインできた
Thetaで撮影した360度動画をUnityを使ってOculus Riftで再生する
Thetaで撮影した360度動画をUnityで再生する方法です
Unityで360度動画を再生するには、以下の3つのコンポーネントが必要になります
① 360度mp4動画(equireqtangular形式)
② 上記の 360度動画(①)を張り付けるTexture Material
③ 上記のTexture Material(②)を投影する全天周天球モデル
以下ではそれぞれの設定方法を説明します
1. 動画用意
まずは動画を用意します。
1. 動画撮影
Thetaで普通に動画を撮影します
(今回はサンプルとしてThetaの公式サイトで提供されている空手の動画を利用します)
theta360.com
2. 動画の変換
ThetaSの場合は自動でEquirectangular形式で動画ファイルが出力されるのでこのステップは不要です
Theta m15の場合は魚眼風の二眼MOVファイルとして出力されるので、これをEquirectangular形式に変換する必要があります
以下のサイトからPC用Thetaアプリをダウンロードして起動し、D&DでMOVファイルを指定すると自動でEquirectangular形式のmp4ファイルに変換されます
( ダウンロード | RICOH THETA )
3. 動画ファイルのImport
EquiRectangularのmp4ファイルが準備できたら、Import New AssetsからMovieをUniryへImportします
2. 動画を張り付けるUVスフィアの準備
次に動画を張り付けるUVスフィアというマテリアルを作成します
1. UV Sphereの準備
自分で作成する場合はBlender等の作成ツールから作成しますが、今回は以下のサイトで提供されているスフィアを使わせていただきます
No hack, no work • UnityとOculusで360度パノラマ全天周動画を見る方法【無料編】
2. SphereのImport
ダウンロードしたSphere(Sphere100.fbx)を動画と同じようにImport New AssetsでUnityへImportします
3. UVSphereに張り付けるTextureの作成
UVSphereに直接動画は張り付けられないので、動画を張り付けるためのTextureを用意します
1. Textureの作成
まずはMaterialをCreateして名前をつけます(今回はmovieTextureとしました)
2. Textureの設定
InspectorからShaderをUnlit/Textureへ変更します
3. 動画の指定
InspectorのSelectから、importしておいたmp4ファイルを選択します
4. 動画を再生するスクリプトの用意
ここまででコンポーネントの準備は完了したので、実際に動画を再生させる処理を書いていきます
1. C#スクリプトの作成
ProjectからC#スクリプトを作成します
(今回はPlayMovieという名前にしました)
作成したスクリプトに以下ように記述します
using UnityEngine; using System.Collections; public class PlayMovie : MonoBehaviour { public MovieTexture karate; void Start () { karate.Play (); } }
3. 動画objectの関連付け
スクリプトを張り付けると、InspectorでKarateという変数を設定するエリアが出てくるので、Selectを押して動画を指定します
4. 実行
これで動画再生の準備は整ったので、再生ボタンを押して確認します
UnityでObjectのPivotを変更する
Unityでオブジェクトの中心というか重心というかPivotを変更する方法です
これをするとなにがいいかというと、オブジェクトをRotationするときに通常だとオブジェクトの中心を起点にしてしか回転することができませんが、回転の起点を任意に変更することができます
そもそもUnityのデフォルトの機能でできるのかどうか
Changing the pivot point of meshes. - Unity Answers
Move gameobject pivot - Unity Answers
Moving pivot points? - General Discussion - ProCore Forum
色々ぐぐっていると、「出来るよ!」って情報もあれば「それはUnityでは出来ないよ」って情報もあります
なんか見た感じだと、
- Unity以外のObject作成ツールでPivotを指定して作成し、それをimportした場合は変更できるらしい
- UnityのEditorから作成したオブジェクトは変更できないらしい
- 軸をベースに回転することはできるらしい
- 2Dオブジェクトだとできる?
結局自分の意図した設定はできませんでしたが、最終的に以下の動画を見つけて解決しました
www.youtube.com
Pivot変更の手順
簡単に説明すると、「ObjectのPivotを直接変更することはできないので、Empty GameObjectを作成してそれを仮のPivotとして機能させよう」
という流れです
1. Pivotを変更させたいObjectの用意
今回はCylinderを使います
見やすいようにRotationとScaleを少し変えています
2. 仮PivotになるGameObjectを作成する
GameObjectからEmpty GameObjectを選択し、Positionを回転の起点にしたい位置にします
3. GameObjectにスクリプトをセットする(見やすいように)
GizmoというC# scriptを作成し、以下のように処理を記述します
using UnityEngine; using System.Collections; public class Gizmo : MonoBehaviour { public float gizmoSize = 0.3f; public Color gizmoColor = Color.yellow; void OnDrawGizmos() { Gizmos.color = gizmoColor; Gizmos.DrawWireSphere (transform.position, gizmoSize); } }
4. 回転させたいオブジェクトを仮Pivotの子オブジェクトにする
5. 仮pivotを回転させる
これで仮pivotを回転させれば、仮Pivotを起点にCylinderが回転します
以下のように複数のオブジェクトを一つのPivotで同時に回転させることも可能です