Top/Blog

Blogはてなブックマーク

<< 2017.8>>
    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 31    

2017-07-21はてなブックマーク

[Devel]開発者目線で見るVR ZONE SHINJUKU Permalinkはてなブックマーク

この7月に新宿にオープンしたVR ZONE SHINJUKUに、7/15〜16の2日間行ってきました。

とても楽しかったです!


この記事では、開発者として参考にできそうな気づきをまとめていきます。


2017.07.22追記:他の開発者の方の感想や、お台場時代のインタビュー・登壇なども含めてTogetterにてまとめました。こちらもご覧いただければと思います。

"#開発者目線で見るVRZONE SHINJUKU - Togetter"


あんまり自信ないです (^^;

こんなのもあるんじゃない?と思った方は教えていただけると嬉しいです。


釣りVRの他にも、全アトラクションに設置されていたように思います。

流石の安全対策ですね。


コルゲートチューブではなく、スパイラルチューブでした (^^;

コルゲートチューブだと曲がりにくい物が多い気がするので、スパイラルチューブの方が適しているかもしれないですね。


釣りVR GIJIESTAで使用されているというハプティクスデバイスを開発した栗本鐵工所のプレスリリースはこちら

感触のクオリティに加えて、アミューズメント施設としては、可動部がないのは運用上大きそうです。


HTC VIVEでポジショントラッキング範囲を越えてしまうと、シャペロン境界 が表示されますが、これもどうにかできないかなあと思っています。

靴を脱いで体験するようにして、トラッキング範囲外に砂利を撒き、「砂利の所まで行くと痛いので、行かないでくださいね」とか。


これに加えて回転操作がないというのも酔い対策としてGOODだったように思います。

(スタッフの方によると、実はレバーの親指のスイッチで回転操作もできるとのこと。酔うので使わないように案内しているとのことでした。)


スタッフの方が目視でヘルスチェックできるというのは、運用上とても良さそうです。




今後気づいたことがあれば、追記していきます。

2017-01-02はてなブックマーク

[Devel]動画で振り返る2016年の創作活動 Permalinkはてなブックマーク

ゾンビに寿司を投げて食べさせ成仏させるVRゲーム


回転寿司のお皿に乗りジェットコースターのように街を疾走するVRアプリ


Oculus Rift CV1用自作フェイスパッド


PAXパワーグローブをMIDIキーボードにしたもの


奥歯を噛んでいる間だけVineで撮影する装置(ヘアバンドに感圧センサーが入っている)


頭部回転R2-D2(赤外線学習リモコンR2-D2の載せ換え途中


R2-D2茶碗


PPAP時計

2016-11-17はてなブックマーク

[VR]Google Earth VRをOculus Rift CV1でプレイする Permalinkはてなブックマーク


Google Earth VRが公開されました。

Steamから入手できます。


ただし、現時点で対応しているヘッドマウントディスプレイはHTC Viveのみ。

Oculus Rift CV1でプレイしようとすると、
チェックに引っかかり、次のようなダイアログが表示され、プレイできません。

google_earth_vr_check.png


と、ここで、RedditのShockfire7というユーザがチェックを回避するパッチを作ってくれました。


試して、動作することを確認したので手順を記載します。

色々なリスクがあります。自己責任にてお願いします。


利用手順

  1. FakeViveをダウンロードする。
  2. zipを展開する。
  3. エクスプローラーで %PROGRAMFILES(X86)%\Steam\steamapps\common\EarthVR を開く。
  4. ddraw.dllをそのフォルダにコピーする。
  5. Google Earth VRを起動する。


なお、僕の環境ではまだコントローラーが利かないので、
メニューの[Demo]から[Play Tour "Landmarks"]を選んで楽しんだりしています。


11/17 12:50追記
Leap MotionとLeap Motion Driver for SteamVRをインストールして、
左手だけを使うようにすると、Selectくらいはできました (^^;


11/17 14:00追記

Xboxコントローラー(およびその互換コントローラー)でViveコントローラーをエミュレートすると、
より快適にプレイできるのではないかということで、FreePIEを使ってみました。

参考ページ


Flyを押せないのでイマイチですが、ドラッグはできるので、先ほどまでよりは多少マシに操作できます。

11/17 15:00追記:RBとRTを押しながら、右スティックを前方に倒し、さらに押し込むとFlyできます。

色々なリスクがあります。自己責任にてお願いします。


  1. 準備
    1. FreePIEをダウンロードして、インストールする。
    2. xbox_vive_emulation_v0.3.9.py.7zをダウンロードして、展開する。
      (ダウンロードにはmtbs3dへのサインアップが必要。できない場合は前述の「参考ページ」を参照。)
    3. sixense_fakex64.rarとsixense_fake.rarをダウンロードして、展開する。
      (ダウンロードにはmtbs3dへのサインアップが必要。できない場合は前述の「参考ページ」を参照。)
    4. SteamVR Driver for Razer Hydraをインストールする。
    5. エクスプローラーで %PROGRAMFILES(X86)%\Steam\steamapps\common\SteamVR Driver for Razer Hydra\hydra\bin\Win32 を開く。
    6. sixense_fake.dllをsixense.dllにリネームし、上記フォルダにコピーする。
    7. エクスプローラーで %PROGRAMFILES(X86)%\Steam\steamapps\common\SteamVR Driver for Razer Hydra\hydra\bin\Win64 を開く。
    8. sixense_fakex64.dllをsixense_x64.dllにリネームし、上記フォルダにコピーする。
  2. プレイ
    1. FreePIEを起動する。
    2. メニューの[File]>[Open]をクリックする。
    3. xbox_vive_emulation_v0.3.9.pyを選択する。
    4. メニューの[Script]>[Run]をクリックする。
    5. Google Earth VRを起動する。
    6. Riftを装着する。
    7. "Point each Hydra controller at the base and press any button."と表示されたら、コントローラーのLBとRBを押しながら、何かボタンを押す。
    8. " Hold both controllers by your head and press both system buttons at the same time."と表示されたら、コントローラーのLBとRBを押しながら、スタートボタンを押す。
  3. Xboxコントローラーの操作方法
    • スティックを押し込むと画面内のViveコントローラーがリセンターされます。
    • スティックはViveコントローラーの位置操作。LBやRBを押しながらだと回転操作。
    • トリガーはトリガー。
    • RBとRTを押しながら、右スティックを倒すと右トラックパッドを操作できます。スティックを押し込むとトラックパッドを押し込めます。
      (左も同様)

2016-05-09はてなブックマーク

[VR]いい感じに透けて縁が発光するCapsuleHand(LEAP motion) Permalinkはてなブックマーク

LEAP motionのCapsuleHand、ちょっとダサい。

ということで、改善してみる。


最終的にはこんな感じになる。



まずは、手の甲と指の関節の球をなくす。

  1. LeapMotion/Scripts/Hands/CapsuleHand.csを開く。
  2. 14行目のSPHERE_RADIUSの値を0fに変更する。
  3. 16行目のPALM_RADIUSの値を0fに変更する。


次に、シェーダーを変える。

  1. 下記のシェーダーをダウンロードする。
    fileCapsuleHandRim.shader
    // ref. http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html
     
    Shader "Custom/CapsuleHandRim" {
    	Properties {
    		_RimColor("Rim Color", Color) = (1.0, 0.76, 0.0, 1.0)
    		_RimPower("Rim Power", Range(0.01, 8.0)) = 0.32
    	}
     
    	SubShader {
    		Tags { "Queue" = "Transparent" }
     
    		Cull Back
    		Blend One SrcColor
    		ZWrite Off
     
    		CGPROGRAM
    		#pragma surface surf Lambert
     
    		struct Input
    		{
    			float3 viewDir;
    		};
     
    		float4 _RimColor;
    		float _RimPower;
     
    		void surf(Input IN, inout SurfaceOutput o) {
    			half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
    			o.Emission = _RimColor.rgb * pow(rim, _RimPower);
    		}
     
    		ENDCG
    	}
     
    	Fallback "Diffuse"
    }
  2. Rimという名称でMaterialを新規作成し、上記シェーダーを割り当てる。
  3. RimColor(フチの色)とRimPower(フチの光具合)を調整する。
  4. HierarchyのCasuleHand_Lをクリックし、InspectorのCapsuleHandのMaterialに上記Rimを割り当てる。
  5. HierarchyのCasuleHand_Rをクリックし、InspectorのCapsuleHandのMaterialに上記Rimを割り当てる。

2016-05-05はてなブックマーク

[VR]Oculus Rift製品版の設置案 Permalinkはてなブックマーク

Oculus Rift製品版がそろそろ発送されるようだ。

届いたら、こんな感じに本棚から吊り下げる形で設置したい。

ケーブルの余りはリールで引っ張り上げる一方で、ケーブルに負担がかからないように、テグスで本棚とRiftの距離を制限する。

oculus_rift_cv1_cable_management.png


ということで下記を買った。


それとケーブルの長さが心配だから下記を買った。


あとポジショントラッキングセンサー用に下記を買った。


2016-04-02はてなブックマーク

[VR]某社のOrder Historyのステータスを取得して、Gmailで送るスクリプトを書いた Permalinkはてなブックマーク

某社のOrder Historyのステータスを取得して、Gmailで送るスクリプトを書きました。


Raspberry Pi上で動作させようとしたけれど、色々あって失敗。

ということでWindows上で動作するようにしてみました。


定期実行する場合は、あまり短い間隔で動作させるのは止めましょう。向こうのサーバに負荷がかかりますし、無意味です。

基本的に1日に1回程度。せめて数時間以上間隔を空け、かつXX:00でなくなるように分の部分もずらすとベターかと思います。


導入手順は次の通り。


  1. Pythonをインストールする。
  2. コマンドプロンプトで下記を実行する。
    cd C:\Python27\Scripts
    pip install selenium
  3. ChromeDriverのサイトからchromedriver_win32.zipをダウンロードして適当な場所に解凍する。
  4. Googleの二段階認証を有効にしている場合はアプリパスワードを発行する。
  5. filesend_oculus_order_status.pyをダウンロードする。
  6. send_oculus_order_status.pyを開き、下記を設定する。
    設定説明
    CHROMEDRIVER_PATH上記でダウンロードしたchromedriver.exeのファイルパスを指定する
    LOGIN_ADDRESSOculusのサイトのログインアカウントであるメールアドレスを指定する
    LOGIN_PASSWORDOculusのサイトのログインパスワードを指定する
    MAIL_FROMメールの差出人を指定する(認証にも使います)
    MAIL_TOメールの宛先を指定する
    MAIL_PASSWORDメールの認証パスワードを指定する(二段階認証を有効にしている場合は上記で発行したアプリパスワードを指定)
    MAIL_SUBJECTメールの件名を指定する


スクリプトの中身はこんな感じ。

filesend_oculus_order_status.py
# -*- coding: utf-8 -*-
 
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import smtplib
from email.mime.text import MIMEText
 
CHROMEDRIVER_PATH = r"C:\Chromedriver\chromedriver.exe"
LOGIN_ADDRESS = "example@gmail.com"
LOGIN_PASSWORD = "exAm!E"
MAIL_FROM = LOGIN_ADDRESS
MAIL_TO = LOGIN_ADDRESS
MAIL_PASSWORD = "exxamplee"
MAIL_SUBJECT = "Oculus Order Status"
 
def get_oculus_order_status(path, addr, passwd):
    driver = webdriver.Chrome(path)
 
    try:
        driver.get("https://shop.oculus.com/en-us/history-login/")
 
        el_email = WebDriverWait(driver, 100).until(
            EC.presence_of_element_located((By.NAME, "email"))
        )
        el_password = WebDriverWait(driver, 100).until(
            EC.presence_of_element_located((By.NAME, "password"))
        )
        el_login = WebDriverWait(driver, 100).until(
            EC.presence_of_element_located((By.NAME, "login"))
        )
        el_email.send_keys(addr)
        el_password.send_keys(passwd)
        el_login.click()
 
        el_section = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "op-accordion"))
        )
        el_section.click()
 
        el_status = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "op-order-history__order-status"))
        )
        el_numbers = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "op-order-history__order-numbers"))
        )
 
        return el_status.text + "\n" + el_numbers.text
    finally:
        driver.close()
        driver.quit()
 
def send_mail_by_gmail(ml_from, ml_to, passwd, sub, body):
    msg = MIMEText(body)
    msg['Subject'] = sub
    msg['From'] = ml_from
    msg['To'] = ml_to
 
    smtp = smtplib.SMTP("smtp.gmail.com", 587)
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
    smtp.login(ml_from, passwd)
    smtp.sendmail(ml_from, ml_to, msg.as_string())
    smtp.close()
 
if __name__ == '__main__':
    status = get_oculus_order_status(CHROMEDRIVER_PATH, LOGIN_ADDRESS, LOGIN_PASSWORD)
    send_mail_by_gmail(MAIL_FROM, MAIL_TO, MAIL_PASSWORD, MAIL_SUBJECT, status)

2016-03-11はてなブックマーク

[Devel]いらすとやさんでVRっぽいイラストを探してみた Permalinkはてなブックマーク

フリーのイラスト素材集サイトいらすとやさんが最近話題。

ということで、VRに関係しそうなイラストを探してみました。


VRデバイス

head_mount_display.pnggame_vitual_reality.pngar_kakuchou_genjitsu.pngmoney_kinketsu_man.pngseikyuusyo_shock.png

3D映画など

3d_eiga_glass.pngmovie_taikaneiga_4dx_mx4d.png

VRとIPD

ganka_kensa.png6_14.png

VRと身体トラブル

allergy_me_kayui.pngsick_memai.pngkibunwarui_man.pngvirus_oetsu.pngsick_kizetsu.pngjiko_isu_korogeru.pngkorobu_kodomo.png

VRと関わりのある食べ物

food_karaage.pngkaki.png

VRコンテンツ一般

omocha_tsumiki.pngrollercoaster.pngseikimatsu_woman.pngrobot_bukiminotani.png

きゅーこんのVRコンテンツのイメージ

sushi_akami.pnghalloween_pumpkin1.png

桜花一門さんのVRコンテンツの勝手なイメージ

ski_jump.pngskydiving.pngdanro.png

GOROmanさんのVRコンテンツの勝手なイメージ

idol_akusyu.png

野生の男さんのVRコンテンツの勝手なイメージ

hoshizora_nagareboshi.pngfantasy_dragon.png

ゆーじさんのVRコンテンツの勝手なイメージ

fantasy_zombie.png

伊藤周さんのVRコンテンツの勝手なイメージ

quadcopter_drone.png gunkanjima.png

わっふるめーかーさんのVRコンテンツの勝手なイメージ

vacation_cruiser.pngillustrator_pentablet.pngbijyutsu_paint_man.png

手妻師さんこと藤山晃太郎さんのVRコンテンツの勝手なイメージ

keiba.pngburanko_boy2.pngharness_man.png

mekaさんのVRコンテンツの勝手なイメージ

exercise_aerobike.png

栗坂こなべさんのVRコンテンツの勝手なイメージ

cat_mikeneko.png iruka.png

仁志野六八さんのVRコンテンツの勝手なイメージ

senkan.png

VRフレームレート警察

referee_yellowcard.pngnamahage_ao.png

2016-02-04はてなブックマーク

[Computer]CHIP - The World's First Nine Dollar Computerが届いた Permalinkはてなブックマーク

CHIP - The World's First Nine Dollar Computerが届いた。


ブラウザはIceweasel(Firefoxからフォークしたやつ)。日本語フォントが入っていないため、日本語が表示されない。

日本語フォントを入れる方法は後日調べよう。




YouTubeで再生しようとすると、"your browser does not currently recognize"と表示されて、再生されない。

恐らくFlashを入れれば解決するはず。こちらも後日試そう。




今のところ、2Dゲームなら出来そう。




個人的な用途としては2つ期待していて、
1つは、リチウムイオンバッテリーで動作するマイコンが欲しくなって、かつArduino Fioでは間に合わないとき用。
もう1つは、コンポジット出力を活かして、クワクボリョウタさんのビデオバルブのようなものを作れるため。


2ヶ月後くらいにまた遊ぼうと思う。

2016-01-03はてなブックマーク

[Computer]GOROmanさんの"FaceRig x Live2D x ボイスチェンジャで美少女キャラでDownwell"が素晴らしかったので、手を描いた Permalinkはてなブックマーク

default.png

GOROmanさんがFaceRigを使って美少女になってゲーム実況をしたのが素晴らしかった。

【Downwell】FaceRig x Live2D x ボイスチェンジャで美少女キャラでDownwell

新たな可能性が開けた瞬間を目にした気がする。


配信中にGOROmanさんが、押すボタンに応じて女の子の手前のゲームパッドが傾くようなプログラムを組んだことで、
臨場感が圧倒的に増したのだが、やはりパッドの上に手がないのはちょっと寂しい。

ということで、言いだしっぺの法則に準じて、自分で描きました。


  • 手とXBox Oneコントローラ
    xbox_one_controller_with_hands.png
  • 配信時のキャプチャに手を重ねたもの
    superimposed.png


Xbox Oneコントローラ部分を除く、手の部分については著作権を放棄するので、ご自由にご利用・改変・配布してください。

Amazon

差分 一覧