2022年5月14日土曜日

古いMacbookを初期化したら、App StoreにログインできずMac OSを再インストールできなくなった件

ふと、10年以上前に使っていた古いMacbook Air 2010をメルカリで売ろうと思い、初期化しようと思ったところ、うまく初期化できなくてハマってしまったので、メモとして残しておきます。

問題が起きた機種はMacbook Air 2010(OS X Lion)です。

最終的にはAppleサポートに問い合わせて解決できました。


問題

メルカリに出品する前に、以下のページを参考にMacの初期化を行っていました。
参考:Mac を売却、譲渡、下取りに出す前にやっておくべきこと、ディスクユーティリティを使って Intel 搭載の Mac を消去する

すると、こちらの7つめの手順で問題が起こりました。



ディスクユーティリティでMacを削除したあと、macOSの再インストールする際、App StoreからOSのダウンロードを行うのですが、なぜかApp StoreにログインするためのApple IDの認証が通らずにOSをダウンロードできなくなりました。

IDかパスワードが間違っているというようなエラーが表示されてしまいまします。

しかし、Apple IDのIDとパスワードは間違っておらず、実際にIDとパスワードを入力するとiPhoneに二要素認証のコードが表示されています。

にっちもさっちもいかず、1週間ほど粘ったあとAppleのサポートへ問い合わせました。


原因

どうやら、このときのMacのOSは最初にログインしたApple IDを入力しないといけなかったそうです。

そういえば、当時作成したApple IDのメールアドレスがsoftbankのキャリアメールを使用しており、キャリアを乗り換えるときにキャリアメールが使えなくなると困るのでApple IDのメールアドレスを変更したことがありました。

そのため、Apple ID自体は同じものですが登録したメールアドレスが変わってしまっていたことによりApple IDのログインができなくなってしまったと思われます。


解決策

標準のApp StoreからOSをダウンロードして再インストールする方法は不可能だということが判明したため、OSをローカルPCでダウンロードしてインストールディスクを作る方法を提案されました。


用意するもの

  • 別のMac PC
  • 14 GB 以上のUSB フラッシュドライブ、もしくは外付けHDD


手順

手順は以下に記載されている通り、Macを使ってインストーラーをダウンロードしてインストールディスクを作成します。

参考:macOS の起動可能なインストーラを作成する方法


幸い、iMacを所有していたのでインストールディスクを作成することができました。

インストールディスクを作成するためには、ターミナルでコマンドをうつ必要があるため、エンジニア出ない人には難しく感じるかもしれません。

ただ、記載されているとおりにすればそれほど躓かないと思います。

うっかりつまづきそうな注意点としては以下となります。
  • インストールドライブを初期化する際、名称は「MyVolume」としなければなりません
  • インストールするMac OSはそのMac PCがインストール可能なバーションにする
  • 作成したインストーラーでOSを新規インストールする際、wi-fiに接続しておく



古いOSかつ、Apple IDのメールアドレスを変更するというような、なかなか無いシチュエーションかと思いますが、ご参考になれば幸いです。



2020年11月7日土曜日

iPhone 12にFortniteをインストールして遊ぶ方法(How to install and play Fortnite on your iPhone 12)

Epic vs Appleの全面戦争

2020年8月13日、Fortniteを開発・運営するEpic Gamesは、iOSおよびAndroidを含むすべてのプラットフォームにおけるゲームアプリ『フォートナイト』をアップデートし、Epic Gamesから直接購入(課金)できる決済システム「Epic direct payment」を実装しました。

それにより、AppleはFortniteを規約違反としてストアから削除し、新規にインストールができなくなってしまいました。


取り残された世界で遊び続ける

ストアから削除される前にiPhoneにFortniteをインストールしていたユーザーは、端末にアプリが残ったままとなり、遊び続けることができました。

しかし、以降アップデートが行われないため、2020年8月27日から開始されたチャプター2シーズン4(v14.00)にはアップデートできません。iPhoneユーザーは他のプラットフォームと切り離され、チャプター2シーズン3に取り残された状態で遊び続けることになっています。

私もその一人としてiPhone 8でチャプター2シーズン3を遊び続けていました。

一度、Switchの移行してFortniteを遊んでいたのですが、元々FPSが苦手ということもあり全くエイムが定まらず全くビクロイすることができませんでした。

結局、自動照準ができるiPhone 8に戻り遊び続けていたのですが、高頻度でアプリ落ちするなど端末スペックの限界を感じていました。

iPhone 12の発表

2020年10月13日にAppleが最新のiPhone 12シリーズを発表しました。

早速iPhone 12 Proを購入したのですが、iPhone 8からバックアップでデータを引き継いだところ、ストアから削除されたFortniteはインストールすることができませんでした。

どうしてもiPhone 12でFortniteが遊びたかったため、iPhone 12にインストールする方法を調査しました。

その結果、iPhone 12 ProでFortniteをインストールして遊べることができたので、その方法をご紹介します。


iPhone 12にFortniteのアプリをインストールする方法

Fortniteはストアから削除されているため、アプリをダウンロードすることはできません。
そのため古いiPhoneからアプリデータ(ipaファイル)を吸い出し、新しいiPhone 12にインストールします。

iMazingのインストール

今回、私が使用したソフトはiMazingというソフトです。
Windows版とMac版がありますので、ご使用になっているPCのOSのバージョンをインストールしてください。私はMacを使用しているのでiMazing for Macをインストールしました。

iMazingでFortniteのアプリデータ(ipa)を吸い出す方法

iMazingをインストールした後、PCにFortniteがインストールされた古いiPhoneと新しいiPhone 12を接続してください。
iMazingを起動すると、ソフトの画面の左側に接続したiPhoneの情報が表示されます。
Fortniteがインストールされた古いiPhoneのリストから「アプリ」を選択し、「アプリを管理」をクリックしてください。
途中、Apple IDのログイン画面が表示されるので、Apple IDとパスワードを入力してログインしてください。



「アプリを管理」画面からFortniteを探し出し、右側の雲アイコンをクリックしてアプリをダウンロードしてください。
ダウンロードが完了すると、以下のようにインストール済みの列にチェックが入ります。



Fortniteを右クリックし、「.IPAをエクスポート」を選択し、お好きなディレクトリにエクスポートしてください。



エクスポートが完了すると「Fortnite 13.40.1.ipa」というアプリファイルが出力されます。

Fortniteのアプリファイル(ipa)を新しいiPhone 12にインストール

出力したipaファイルのインストールもiMazingを利用します。
iMazingの左側の画面からインストール先の新しいiPhone 12を選択してください。

画面下に表示されている「デバイスにコピー」をクリックします。



先程、エクスポートした「Fortnite 13.40.1.ipa」ファイルを選択すると、インストールが始まります。




「Fortniteをインストールしました」と表示されれば、無事新しいiPhone 12にインストールが完了です。


新しいiPhone 12でFortniteを楽しみましょう!!



注意

  • 新しいiPhone 12にFortniteをインストールしても、最新のシーズンには参加できません。これまでと同様、iPhoneユーザーだけで閉ざされたチャプター2シーズン3を楽しみましょう。
  • Apple IDの異なるiPhoneにはインストールできません。そのため、他人のiPhoneから吸い出したipaファイルを自分のiPhoneにインストールすることはできません。
  • 当サイトにて紹介した内容で発生した、何らかのトラブルや損失・損害等につきましては一切責任を問わないものとします。当サイトが紹介しているウェブサイトやソフトウェアの合法性、正確性、道徳性、最新性、適切性、著作権の許諾や有無など、その内容については一切の保証を致しかねます。



2017年11月18日土曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:1年後)

ICL手術のその後について前回の更新から11ヶ月経ってしまいましたが、特に何もなかったので気がついたら更新を忘れていました。

手術から1年経ち、目の調子は全く問題ありません。
先日、1年後定期検診に行き、特に問題なしということでした。

その間にも3ヶ月後検診、半年後検診も行きましたが、特に問題なしです。


ただ、視力は2.0→1.5となっていましたが、2.0は見えすぎて辛かったので1.5で落ち着いたという印象です。

近くも見えるようになっているので、このくらいがちょうどいいかなと思います。
ただ、これ以上悪くなると困るので、1.5をキープしてくれると嬉しいなぁ・・・


これで保証期間が終了してしまったので、今後何か起こると有料となります。
何も異常が無いことを祈って過ごして行きたいと思います。


2017年1月4日水曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:1か月目)

ICL手術を受けてから1か月。
定期検診に行ってきました。

特に異常なく、視力も両目2.0のまま安定しています。


最初もらった目薬は3種類
抗菌1種、抗炎症2種でしたが、今回もらったのは抗炎症剤1種のみでした。

2ヶ月後の3ヶ月検診まではこれだけでよいらしいです。

手術で切った目の痛みもほぼなくなってきて、くしゃみして目をギュッと閉じても大丈夫になりました。


まだスマホを見続けると目がしんどいですが、ほぼほぼ慣れてきましたね。


それでは、次は3ヶ月検診ということで2ヶ月後です!

-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

2016年12月12日月曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:二週間目)

ICL手術を受けてから二週間。
定期検診に行ってきました。

視力では両目ともに2.0。
見え方は良好。

特に問題なしで10分ほどで終了しました。

最近は見えすぎて目が疲れやすいので近くが見えやすい眼鏡がほしいかも・・・

抗菌と抗炎症の目薬は4時間に1回ということでしたが、目にゴミが入ったり乾いたら目薬が入れたくなるので、涙の成分に近い目薬をもらってきました。

これで朝とか目を洗うときにも使えそうです。


左目はほぼ痛みもなくなりましたが、右目はまだ目をぎゅっと閉じると痛みを感じます
お医者さんにはやっちゃだめとは言われつつ、くしゃみとかするときはどうしても無意識に起きてしまうのでどうしようもないのです・・・


それでは、次は1ヶ月検診ということで二週間後です!

-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

2016年12月4日日曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:一週間目)

ICL手術を受けてから一週間。
定期検診に行ってきました。

最初に視力を検査しました。

両目ともに2.0。
見え方は良好。

右目のブレもほぼなくなり、良く見えるようになりました。


1週間目の検診は瞳孔を入れる目薬を入れるので瞳孔が開くまで40分くらい待ち
10分くらいで検診を行いました。

特に問題無いようなので次は1週間後の2週間目検診となります。



この一週間は月曜日から金曜日までガッツリ仕事をしました。
病院から貰った資料には一週間はPC作業など目を酷使する仕事は控えるように書かれていましたが、仕事なのでそうもいってられません。

基本的には一日中デスクでPCと睨み合う仕事なので目が疲れました。

両目ともに2.0ということですごく良くなったのですが、代わりにデスクワークが疲れやすくなりました・・・
金曜日は目が疲れて頭痛になり、いつもより早めに退社。
保護メガネをかけるせいで余計に疲れたのかもしれません。

もう少し度数が弱いレンズを入れて貰えばよかったな、と思いました。

そういえば、入れるレンズの度数とか最初に指定や説明がなかったなぁっと今更ながら気づく。

もともとかけていたメガネは-7.5Dの度数ですが、最初の検査で測った時は視力は-7.7Dと言われました。
その時は目が疲れていて見えづらい状態だったので、通常より視力が落ちてしまっていたのかもしれません。
その時の度数に合わせて作ってしまったのか、少し強すぎたように思います。

今のところ2.0で困ることはないですが、この目の疲れがずっと続くのか
もしくは、慣れれば済むものなのか。

日頃、10時間以上PCの画面で仕事して、息抜きにスマホでゲームしたりネットサーフィンするため、意外と近くの見やすさも重要ということがわかりました

もう少し度数が低くてもよかったなと思います。


あと、保護メガネがすごくうざいです。
すごく曇りやすいですし、ズリ落ちていつも眼球の上の方で支えてたのですごく痛い。
一週間で外せるのでようやくスッキリしました。

まだ、1ヶ月は目に水が入らないようにしないといけないので、気をつけないといけないですが
ようやく裸眼生活に突入できます。

検診の時にお医者さんにどのくらいで傷口が塞がるのか聞いたところ
表面が閉じるのが1ヶ月、内側まで完全に閉じるには1年かかるらしいです。

結構長い・・・

お風呂上がりや汗を書いた時に顔を軽く拭いた際、まぶたを横にこするとすごく痛むことがあります
多分、切った傷口はまだ塞がっておらず、こすった時に開いてたのかなと思います。
傷口が開くと、そこから細菌が入って炎症を起こすので絶対やっちゃダメとお医者さんに怒られました。

まだまだ万全の状態には時間がかかりそうです。



1ヶ月経って傷が塞がったら、いろんなところに遊びに行きたいです。


それではまた一週間後!


-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!


2016年11月27日日曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:3日目)

ICL手術を受けてから3日目。

朝目が覚めると、右目の痛みはほぼほぼ無くなりました。

両目ともに曇りも無くなり、いい感じです。
僅かに右目に乱視のようなブレがありますが、まあ許容範囲。

3日目検診に行った所、右目1.5、左目2.0と良い感じ。
右目が少しブレることをお医者さんに相談したところ、まだ目の炎症も収まっていないのでこれから治っていきますよ、とのことでした。

この3日間通っていますが、この医院のお医者さんの対応がちょっとそっけないかなぁっと感じたりしてます。


検診は10分ほどで終わったので、新宿をぶらぶらして帰りました。

明日から月曜日、仕事を再開なのでPC見続けるデスクワークに耐えられるか心配です・・・

次は一週間後検診!
早く顔をガシガシ洗いたい!

-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

2016年11月26日土曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:2日目)

今日はICL手術の2日目ということで翌日検査に行ってきました。

眼圧チェック問題なし、視力両目1.5、炎症やレンズのズレなどもなく、全く問題なしとのことです!

検査は15分くらいで終了して帰宅しました。


実際、左目はほぼ完璧、右目は少し充血して視界がぼやけていますが、時間が経てば治るそうです。
手術後は目に触れてはいけないため、保護メガネを付けているので裸眼の感じが薄いのですが、それでもこんなによく見えるのかとびっくりします。

ただ、まだ眼が乾くと瞬きの際に痛いので、なるべく目薬をさすようにしています。


目の保護でめんどくさいのは寝る時は眼帯を付けて寝る必要があることです。
これが結構鬱陶しい。

寝返りをしようとすると、眼に眼帯がぶつかって「やべ、仰向けにならなきゃ」って目が覚めるので熟睡できません。


保護メガネもサイズがあっていないのか、ズレ下がってきたり、しっかり装着するとまぶたにメガネが当たって痛いです。

1週間はこれを続けないといけないそうなのでゲンナリしますね・・・


眼に水などが入ってはいけないので、洗顔ができません。
そのため、目が覚めて目やにを取るのが大変です。
大量に目薬をさして、ティッシュで拭き取っています。(あんまりいい方法じゃない気がする・・・)

お風呂も首から下しか洗えないので、顔はレンチンした濡れタオルで軽く拭く程度です。
もっと、ガシガシ洗いたい・・・

やっぱり手術後が一番めんどくさいですね。



手術後はどんな感じかというと、コンタクトを付けたような感じです。
メガネをかけなくてもよく見えますが、少しゴロゴロする感じがあります。(傷口のせいかもしれません。)

後、夜間の見え方ですが、やはりハロ・グレアが発生しています。
以前からメガネのときでも電灯を見ると、周りにBloomがかかったような光の拡散が見えましたが、その大きさが倍くらいになった気がします。
右目はまだ視界がぼやけているせいもあり、左目より大きくなっています。

まあ、光で周りが見えなかったり眩しく感じるということは無いので問題はなさそうです。
また、視力が安定すれば、ハロ・グレアも小さくなるそうです。


あと、気になったのは強い光を見るとICL特有のリングが見えることですね。

ホール型ICLは眼内の液体の循環を行うために穴を開けているのですが、これにより強い光を見ると輪っかが見えるそうです。

日中、太陽の下や、夜の電灯や車のヘッドライトが当たると、視界の中心から視界の半分くらいの半径のリングが見えます。
レンズフレアの輪っかのイメージです。

光が多いところだとリングが視界の端に大量に見えるのでわりと鬱陶しいです。
これはICLのレンズ上、しょうがないですね。
慣れるしかなさそうです。

強い光を見たイメージはこんな感じです。
 
手術前        →        手術後



それでは、次回は明日の2日後検診です。


-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

2016年11月25日金曜日

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:手術当日)

2016/11/25(金)有給を取り、ICL手術を受けに行きました!

10時半に病院へ着き、受付。
手術に関する誓約書を提出し、支払いを行いました。

60万円の手術ですが、資料請求をした際に割引3万円のチケットが入っていたので57万円で済みました。

事前の検査時に予約を行い、その場でレンズ代30万円を支払っていたので当日の支払いは27万円。
クレジットカードで支払いを行ったところいつも使っているカードが上限で使えなかったので、めったに使わない2枚目のカードで支払いを行いました。
危ないw


11時45分くらいから瞳孔を開く目薬や麻酔の目薬を入れていきました。
1時間くらいかけて何度も入れるため待合室に流れているハウルの動く城をずっと見て時間を潰していました。懐かしい・・・。

その後、眼の検査をして別室へ。
カーテンが閉められた狭い部屋で座り心地の良い椅子で再度30分ほどかけて目薬を何度も入れていきました。

一通り目薬を入れ終わった後は手術後1週間やらないといけない事や気をつけないといけない事の説明を聞きました。
日中は3~4時間に1度目薬をさすこと。寝る時は眼帯を付けて寝ること。体は洗ってもいいけど顔はNG。濡れたタオルで洗うなどはOKなど。

その時もらった資料はこんな感じです。


そしていざ、手術台へ
メガネを外したまま案内されたので、手術室の様子はよくわかりませんでした・・・


4,5人のお医者さんが周りにいましたが、主に手術をするのは2人。

初めに麻酔の注射をうった後、手術する眼だけを出すマスクのようなのを被せられ、シールで固定。
そして、眼が閉じないように固定する器具でまぶたを固定されました。
(アニメとかの拷問シーンで出て来るやつだ・・・って何故かドキドキしました。)

眼の中を消毒液で洗い流したり、眼の周りを筆?のようなもので消毒していきました。


そしていざレンズ注入!

手術中は洗浄液で目の前はほぼ何も見えず、光がキラキラしている感じでした。
手術台の照明をまっすぐ見るように言われるのですが、眩しすぎて直視するのが難しいw
瞳孔開いてるからかすごい眩しいし、反射的に眼が別のところ見てしまう。
しばらく見ているとだんだん眩しさが麻痺してくるのでどうにかまっすぐ見れました。

まっすぐ見るように言われているのですが、目の横を切開しているのかレンズを押し込んでいるのか、無理やり眼が別の方向に向かされてしまうのでちょっと怖いですね。

麻酔のおかげで、痛みはほとんどありませんでした。
普段生活していて間違えて眼に指を突っ込んだときのほうが全然痛いです。

ただ、ここで間違えて眼を変な方向を向いてしまうとレンズの位置がズレたり切り口がひどいことになりそうですごく怖いです。
眩しい光や時々くる痛みで反射的に動かさないように必死で、緊張しすぎて肩凝りましたw


右目にレンズを入れた後は左目。
どちらも順調に進み、特に問題なく終わりました。
大体片目で15分くらいでしょうか。

終わってみればあっという間でしたが、手術中はかなり長く感じます。
お医者さんの「あ」とか「もうちょっと・・・」というようなつぶやきがすごく不安になりますw


手術後は、前にいた個室で目薬を指して1時間ほど目を閉じて安静。
寝ててもいいですよと言われましたが、さっきまであんなことされた後だったのでとても寝れず、ずっと眼を閉じてVRゲームの仕様を考えてました。

1時間たった後は眼の検査を行いました。
眼圧チェックや多分、レンズがズレていないか、出血がひどくないかなど見てもらいました。

検査の結果、眼圧は平常。レンズもOK.。手術後は結構充血する人が多いそうですが、私はそのあたりも大丈夫そうでした。
途中、自分で鏡を見た時は少し右目の一部が赤くなっていまいたが、たしかにそれほどひどくない様子。

問題なし!ということで無事手術は終了しました。


その後は帰ってよいとのことだったのですが、やはり手術後は視力が安定せず待合室でゆっくりしました。

イメージとしては朝ひどい目やにがついているかのように視界がボケた感じです。
実際、目薬を入れまくったためか目やにが多く、鏡をみると黒目の上に目やにがいくつも浮いていました。
目薬を入れてティッシュで拭いて洗い流そうとしましたが流れず・・・

しばらくしても改善しなかったので帰りました。

病院を出たのが14時だったので、大体手術に3時間半くらいで終了という感じですね。


帰ってからは取りためたアニメを見てぼーっと過ごしていましたが、視界の曇がなかなか晴れず、目が疲れてきたので仮眠を取りました。

20時ごろに起きて、せっかくなので手術のことをメモしようとブログに書いてみました。


左目はだいたい曇りが晴れてきたのですが右目はまだわずかに曇って異物感があります。右目は少し充血しているので治るまでに時間がかかりそうですね。

手術後には定期検診があり
1日、2日、1週間、2週間、1ヶ月、3ヶ月、6ヶ月、1年と検診を行います。

ここで問題が起きていなければOKということですね!

レンズのズレや眼の中に細菌が入るとめんどくさいようなので、問題が起きないかすごく心配です・・・


また、検診のたびにブログに術後の様子を書いてみますね。

それでは次回は翌日検診にて。

-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

快適なVR体験のために視力矯正手術ICL手術を受けてきました。(感想:前日談)

VR元年となり、様々なVR機器が発売された2016年
いろんなVRを遊んでいるうちにメガネがすごく鬱陶しく感じ始めました。

そこで夏頃にICL(有水晶体眼内レンズ)手術というものを知り、興味を持ちました。
ICL参考:https://jp.discovericl.com/

そして今日(2016/11/25)、思い切ってICLの手術を受けて来ました!

せっかくなのでICL手術の感想を残しておこうと思います!


■はじめに
私の眼の悪さは小学1年生ごろにゲームのしすぎで0.3まで落ちてしまい、その頃からずっとメガネ生活でした。
高校に入ってからはコンタクトを入れていましたが、PC作業をしていると目がシバシバしたりズレて見えづらかったりとストレスになるので、大学の途中からは付けなくなりました。
手術する前は目の前10cm以下しか見えないくらいの視力で、検査時に計ったときは-7.7Dとのことでした。

Oculus DK1が発売されたとき、大学・大学院でもVRを研究していたので3万円の価格と視野角の広さに感動して色々開発したり遊んでいました。

ただ、そこで一番のストレスはメガネがぶつかって痛いことでした。

その頃からメガネが邪魔だなと思いつつ、きっと将来はVR HMDには度数調整機能がつくだろうと期待して待っていたのですが、その機能を持って発売されたのはGear VRだけでした・・・(細かくいうとOSVRなどもありますが)
Gear VRの度数調整は神機能だと思ったのですが、一番VRを楽しむにはPC,PS4のようなHD系VRコンテンツなので、すごくがっかりしました。Gear VRにもあったんだから、Riftには確実につくと期待していたのですが・・・
まだ、HTC ViveとPSVRはメガネが入りやすい作りなので我慢できましたが、Riftは入りづらくメガネを付けているとHMDの装着自体が結構大変です。HMDを被る事自体が億劫になってしまいます。




そして、視力矯正を決意したのは夏頃に東京ジョイポリスのゼロレイテンシーでした。オープンした時に直ぐに予約して行ったのですが、そこで装着したOSVRがメガネが全く入らない作りでした・・・
度数調整機能がありましたが、私の視力だと全く足りず、結局ぼやけた視界で敵なのか味方なのかわからないオブジェクトを狙うという経験をして、視力をどうにかしないと今後もVRが楽しめないぞと思い、視力矯正を調べ始めました。


■視力矯正の種類
視力矯正を調べると有名なレーシック以外にもいろいろあることがわかりました。

・レーシック
眼球の表面にある角膜をエキシマレーザーで削り、形状を変えることによって近視や乱視などを矯正する術式
参考URL:https://sightcure.jp/recovery/lasik01.html

・ReLEx(リレックス)
レーシックもリレックスも、「角膜のカーブを変えて視力を矯正する」点は同じ。ただし、カーブを変える方法はレーシックとリレックスで異なり、レーシックは「フタを開けて角膜を削る」のに対し、リレックスは「小さな穴から角膜を抜き取る」方法で角膜のカーブを変化させる。

レーシックよりも手術の傷口が小さいため、痛みが少なく、術後の視力回復も早い。また、手術時間も短くすむ。

・オルソケラトロジー
歯の矯正のように、特殊なハードコンタクトレンズをはめることによって角膜にクセをつけ、光の屈折率を調節して視力を回復する術式。
視力回復の効果が永続的でない反面、コンタクトの使用をやめるだけで角膜を元に戻すことができるため、その分、リスクも少なくすむ
参考URL:https://sightcure.jp/recovery/orthokeratology/orthokeratology01.html

・ICLホールタイプ(眼内コンタクトレンズ)
水晶体と虹彩の間に入れるレンズを挿入する術式。
目への負担が少なく、術後の視力の安定度が高い。また、レンズを取り出せば、眼を元の状態に戻せる。
参考URL:https://sightcure.jp/recovery/icl.html


レーシックは前から興味がありましたが、レーシック難民の話を聞いて怖くてできませんでした。
(今回の検査でレーシックは適応外だったことがわかったので、そもそも無理だったんですけどw)

一番安全そうなのはオルソケラトロジーのようですが、効果が永続的でないのと、毎晩コンタクトを入れる手間、自分のようなものぐさはハードコンタクトをちゃんと管理できる気がしなかったのでなし。

ICLは説明を読む限り安心そうだったので、ICLに興味を持ち手術を考えました。

しかし、手術代が60万円を超えるとのことだったので、なかなか決心がつかず1ヶ月ほど下調べしてましたw


■ICLとは
眼にレンズを入れて視力を矯正する術式。
費用が50万円~100万するらしく非常に高いです!
しかし、レーザーで切り取る非可逆式のレーシックと比べてレンズを入れるICLはレンズを取れば戻せるという点で安全そうです。

といっても完璧な手術というわけではないようで、メリットとデメリットを調べてみました。

・メリット
1.後遺症リスクが低い
レーシックのようにドライアイやハロ・グレアが起こりづらいそうです。
ただ、絶対に起こらないわけではありません。
レンズの大きさが正しくないと、ハロ・グレアが発生するそうです。

2.レーシック適応外の人でも受けられる
角膜が薄い人はレーシックが受けれられないようですが、ICLなら角膜を削らないため可能だそうです。

3.再近視化が起こりづらい
レーシックでは視力が再度悪くなることがある(再近視化)ようですが、ICLは起こりずらいそうです。

4.何か問題があればレンズを取り出すことができる
レーシックは削ってしまうので戻せませんが、ICLはレンズを取り出せば元に戻ります。
まあ、レンズを取り出す事態になれば相当まずい状況な気もしますが・・・


・デメリット
1.費用が高い
50万円~100万するので、軽い気持ちではできないですね・・・

2.手術ができるまで時間がかかる
レンズはその人にあったものを作るので、だいたい1ヶ月くらいかかります。
乱視が入ると2ヶ月~3ヶ月かかるそうですね。

3.合併症のリスク
・白内障のリスク
レンズの大きさがあっていないと、レンズがズレて水晶体にぶつかり白内障になってしまう可能性があるらしいです。手術後の検診であっていないことがわかればレンズを取り出すそうです。
また、手術中にミスって水晶体を傷つけると白内障になってしまうそうです。
めったにないそうですが、これが一番危ないリスクですね・・・

・感染
手術後は眼に切り込みが入っている状態なので、眼の中に細菌が入ると炎症を起こして治りづらいそうです。
最悪レンズを取る羽目になるので気をつけないといけません。
そのため手術前と手術後には細菌を抑制する目薬と炎症を抑える目薬を3時間に1度使います。
また、日中は保護メガネ、睡眠時は眼帯をして絶対に眼に触れないようにします。


■レンズの種類
角膜と虹彩の間に入れる「前房型レンズ」と水晶体と虹彩の間に入れる「後房型レンズ」の2種類があるようです。

「後房型レンズ」にはレンズに穴の開いているホールICLというのがあるようです。
どうやら穴が空いていないと目の中の水の循環が妨げられ眼圧があがり、緑内障になる可能性gあるため、穴を開けているそうです。

サイトによると、「後房型レンズ」のホールICLほうが安全そうですね。
私も後房型レンズにしました。

前房型レンズ後房型レンズ
前房型レンズ               後房型レンズ



こんな感じで1ヶ月ほどICLの解説サイトと感想サイトを回った結果
白内障のリスクは怖いけど大丈夫そう!という気分になってきたので、家の近くにある病院に無料カウンセリングを予約してきました。

10月頃にカウンセリングと検査を行った結果、ICL適用可だったためその場で予約!

手術代は60万円かかったのですが、レンズ代として前金30万円をその場で支払い、手術当日に30万円を支払いました。

いざ、手術です!

手術当日の様子は次の記事にて!




-----------
新宿近くで視力矯正に興味のある方は友達紹介制度で割引できます!
私も紹介料がもらえるので嬉しいです
もしご興味がありましたらお声がけください!

ICL以外にもレーシック、オルソケラトロジーなど他の手術でも紹介制度がつかえるそうです。

ご連絡はTwitterのDMにてどうぞ!

2012年7月22日日曜日

【code.9leap】画面遷移の基礎!【自作チュートリアルチャレンジ!】

いつも9leapで楽しませてもらってる株式会社ユビキタスエンターテインメントがcode.9leapというサービスを開始しました。
ブラウザ上でゲーム開発を行える「Code.9leap.net」,β版サービスが始まる


これにあたり、「code.9leapカスタム・チュートリアルチャレンジ!」というコンテストが開催されました。

っということで、私もチャレンジしてみようと思います!


私がenchant.jsで最初に悩んだところは画面遷移でした。
ということで、そのあたりのチュートリアルを作ってみました 。


ゲームの基本「タイトル画面 → プレイ画面 → エンド画面」の流れを簡単に説明しています。

 




ゲームの流れを学ぼう1「タイトル画面」



 


 


 

ゲームの流れを学ぼう2「プレイ画面への遷移」

 

 

 

ゲームの流れを学ぼう3「タイトルへ戻る」

 

 

 

ゲームの流れを学ぼう4「ゲーム終了」

 

 

 

ゲームの流れを学ぼう5「1からやってみよう!」

 

 

 

 画面遷移が出来れば、ゲームの見栄えも良くなるでしょう。

これをベースにゲーム作りができるはずです!

 

ちょっとcode.9leapの仕様で変な書き方しているところはありますが・・・

2012年4月1日日曜日

Kinect for Windows SDKによる3次元ポイントクラウド

以前、OpenNIを用いたポイントクラウドの方法を紹介していました
 Kinect OpenNIによる3次元ポイントクラウド - 3次元描画 高速化

今回はマイクロソフトが公式で公開しているKinect for Windows SDKを使ってポイントクラウドを行ってみます。

描画にはいつもどおりOpenGLを使い、その過程でOpenCVを使っています。




まず初めにKinect SDKでRGB画像とDepth画像の取得方法について簡単に説明します。

細かい説明なんてどうでもいいんだよ!って人は 下のほうでサンプルプログラムがダウンロードできるので、下の方へスクロールしてってください。


では、プログラムの初期化処理は以下のようになる



初期化処理では
HRESULT NuiInitialize(
         DWORD dwFlags
)

で初期化します。

引数はRGB画像、Depth画像、骨格情報を得る場合
 NUI_INITIALIZE_FLAG_USES_COLOR | NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_SKELETON
とします 次に画像取得のイベントハンドルを設定します。

Depth画像の大きさによって使用するNuiImageStreamOpen関数の引数が違うので
KINECT_DEPTH_WIDTHを#defineで事前に定義して、ここで条件分岐しています。
 
KinectSDKはBetaの時はDepth画像の解像度を320x240しか設定できなかったのですが
v1.0になり、640x480に設定することが可能となりました。

上記で設定したイベントで以下のようにしてRGB画像とDepth画像を取得します

扱いやすい形にするため、OpenCVのMatに格納します
また、その処理を関数化します


ここではGetImage(cv::Mat &image,HANDLE frameEvent,HANDLE streamHandle)
という関数を作りました。

この関数は以下のように用います。

関数の戻り値が-1の時は取得失敗ということです。

Kinect SDKではOpenNIを違い、Matへの格納が少しめんどうですね。

 次にポイントクラウドを行う上で、画像のピクセルが現実座標ではどこにあるのかを知る必要があります。

OpenNIではConvertProjectiveToRealWorldという関数がありました。

Kinect SDKでは以下の関数を用います

Vector4 NuiTransformDepthImageToSkeleton(
         LONG lDepthX,
         LONG lDepthY,
         USHORT usDepthValue
)


この関数はDepth画像のピクセルの位置(x,y)とその場所の値を与えることで現実座標系で帰ってきます。

では、Depth画像から現実座標配列を格納する関数を以下のように作ります。

NuiTransformDepthImageToSkeletonはDepth画像の解像度により引数を追加します。

これはbetaの時にDepth画像が640x480に対応していなかったからかなぁっと思います。


で、最後にポイントクラウドで描画します。

drawPointCloudではRGB画像とretrievePointCloudMapで取得した三次元位置を渡し、描画します。

また、この関数内でRGBとDepthのズレを補正しています。
OpepNIでいう
DepthGenerator.GetAlternativeViewPointCap().SetViewPoint は

KinectSDKでは
NuiImageGetColorPixelCoordinatesFromDepthPixel
または
NuiImageGetColorPixelCoordinatesFromDepthPixelAtResolution
を使います

これも、Depthの解像度により関数を変える必要があります。

まあ、NuiImageGetColorPixelCoordinatesFromDepthPixelのなかでNuiImageGetColorPixelCoordinatesFromDepthPixelAtResolutionが呼ばれてるんですけどね





これまで長く説明してきましたけど、まあ、こんな説明読むよりサンプルプログラムを見たほうが早いかな?

全体のプログラムはこんな感じです。


github
サンプルダウンロード

2012年3月31日土曜日

PhySprite.enchant.jsに多角形とジョイントを追加しました。

PhySprite.enchant.jsに機能を追加しました。

PhySprite.enchant.jsのダウンロード
ダウンロード
リファレンス

今までのPhySprite.enchant.jsには円形と四角形しか物理オブジェクトをサポートしていませんでした。

今回は多角形を追加し、さらにオブジェクトにImageを設定しなくても形がわかるDebugDraw機能をつけました。

これで多角形の物体のように画像が用意しずらいオブジェクトでもわかりやすくなりました。


・多角形
ではまず、多角形の説明からします。

多角形のオブジェクトを生成するには以下の関数を用いる
   
enchant.PhyPolygonSprite(width, height, vertexs, type, density, friction, restitution, awake)
多角形の物理シミュレーション用Sprite

引数は以下の通り
Parameters:
{Number} width Optional
Spriteの横幅.
{Number} height Optional
Spriteの高さ.
{b2Vec2[]} vertexs
多角形の頂点配列
{Boolean} type Optional
静的,動的,キネマティック
{Number} density Optional
Spriteの密度.
{Number} friction Optional
Spriteの摩擦.
{Number} restitution Optional
Spriteの反発.
{Boolean} awake Optional
Spriteが初めから物理演算を行うか.

ここで新しく追加されたvertexsですが、これは多角形の頂点配列です。

どういうものかというと、例えば四角形の場合のvertexsは
   
var width = 20;
var height = 50;
var vertexs = new Array(
    new b2Vec2(-width / 2, -height / 2),
    new b2Vec2(width / 2, -height / 2),
    new b2Vec2(width / 2, height / 2),
    new b2Vec2(-width / 2, height / 2));
var phyPolygonSprite = new PhyPolygonSprite(width, height, vertexs, DYNAMIC_SPRITE, 1.0, 0.1, 0.2, true);
game.rootScene.addChild(phyPolygonSprite); // シーンに追加


このように四角形を作る
vertexsはSpriteの中心座標を(0,0)として時計回り・または反時計回りに宣言していく。



では次に五角形を生成してみます。
次は簡略化のためfor文を使います。
 
var vertexCount = 5;
var radius = 20;
var vertexs = new Array();
for (var i = 0; i < vertexCount; i++) {
vertexs[i] = new b2Vec2(radius * Math.cos(2 * Math.PI / vertexCount * i), radius * Math.sin(2 * Math.PI / vertexCount * i));
}
var phyPolygonSprite = new PhyPolygonSprite(radius * 2, radius * 2, vertexs, DYNAMIC_SPRITE, 1.0, 0.1, 0.2, true);
game.rootScene.addChild(phyPolygonSprite); // シーンに追加


これで五角形を作ることができました。
vertexCountを変更することで三角形でも七角形でも百角形でも可能です。


ここで注意することは、頂点と頂点と間に交点ができてしまうとうまく当たり判定がおかしくなるので気をつけて下さい。



・ジョイント
では次はジョイントの説明

ジョイントは複数のタイプがあります。

enchant.PhyDistanceJoint(sprite1, sprite2)
距離ジョイント

enchant.PhyRevoluteJoint(axis, sprite)
物体と物体のモーター付きジョイント
enchant.PhyPrismaticJoint(sprite1, sprite2, anchor1, anchor2, ratio)
スライドジョイント
 
enchant.PhyPulleyJoint(sprite1, sprite2, anchor1, anchor2, ratio)
滑車ジョイント
1つ1つ説明していきます。

enchant.PhyDistanceJoint(sprite1, sprite2)
距離ジョイント
Parameters:
{enchant.PhySprite} sprite1 Optional
繋げるスプライト1
{enchant.PhySprite} sprite2 Optional
繋げるスプライト2
 これは最も単純なジョイントです。
 引数の2つのスプライトをジョイントで繋げます。
例
   
//軸
var axis = new PhyCircleSprite(8, STATIC_SPRITE);
axis.position = { x: 160, y: 160 };
game.rootScene.addChild(axis); // シーンに追加
//ボール生成
var ball = new PhyCircleSprite(8, DYNAMIC_SPRITE);
ball.position = { x: 100, y: 250 };
game.rootScene.addChild(ball); // シーンに追加
//距離ジョイント
var joint = new PhyDistanceJoint(axis, ball);

ここでは簡略化のため、物理オブジェクトのパラメータを書いていません。
この場合、 density=1.0,friction=0.5,restitution=0.3,awake=trueがデフォルトの値となります。

未定義でもいいってのはここで初めて説明したのかな?
で、この例ではaxisという静止オブジェクトにballがぶら下がっています。


では次

 
enchant.PhyRevoluteJoint(axis, sprite)
物体と物体のモーター付きジョイント
Parameters:
{enchant.PhySprite} axis Optional
軸となるスプライト
{enchant.PhySprite} sprite Optional
繋げるスプライト
これは軸(axis)にモーターを設けることができるジョイントです。

例
   
//軸
var axis = new PhyCircleSprite(8, STATIC_SPRITE);
axis.position = { x: 160, y: 160 };
game.rootScene.addChild(axis); // シーンに追加
//ボール生成
var ball = new PhyCircleSprite(8, DYNAMIC_SPRITE);
ball.position = { x: 100, y: 250 };
game.rootScene.addChild(ball); // シーンに追加
//距離ジョイント
var joint = new PhyRevoluteJoint(axis, ball);
joint.enableMotor = true;
joint.maxMotorTorque = 100;
joint.motorSpeed = 90;

PhyDistanceJointとの違いはenableMotorでモーターを有効化しなければいけないことと
maxMotorTorqueでモーターのトルクを設定します。
 トルクとは
そしてmotorSpeedでモーターの速度を設定することで、axisに接続されたballが動き出します。

モーター機能を有効にしていないとPhyDistanceJointと変わりません。




enchant.PhyPrismaticJoint(sprite1, axis)
スライドジョイント
Parameters:
{enchant.PhySprite} sprite1 Optional
繋げるスプライト1
{b2Vec} axis Optional
軸

スライドオブジェクトは文字どおりスプライトをスライドさせます。

例
var box = new PhyBoxSprite(16, 8, DYNAMIC_SPRITE, 1.0, 0.5, 0.2, true);
box.position = { x: game.width * 2 / 3, y: game.height / 2 };
var prismaticAxis = new b2Vec2(1.0, 0);   //x軸にスライドを設定(右が正の値)
//スライドジョイント
var prismaticJoint = new PhyPrismaticJoint(box, prismaticAxis);
//スライドオブジェクトにモーター機能を持たせる場合
//prismaticJoint.enableMotor = true;      //モータの有効化
//prismaticJoint.maxMotorForce = 100.0;   //モータの最大力を設定
//prismaticJoint.motorSpeed = 50;         //モータの速度を設定


引数のaxisはスライドさせる軸です。

右方向を正としてx軸にスライドさせる場合はaxis = new b2Vec2(1.0, 0);とします。

また、このジョイントにはモーター機能が備わっており、 モータを有効化し最大力を設定することでモータ機能を使うことができます。



enchant.PhyPulleyJoint(sprite1, sprite2, anchor1, anchor2, ratio)
滑車ジョイント
Parameters:
{enchant.PhySprite} sprite1 Optional
繋げるスプライト1
{enchant.PhySprite} sprite2 Optional
繋げるスプライト2
{b2Vec2} anchor1 Optional
アンカー1の位置
{b2Vec2} anchor2 Optional
アンカー2の位置
{Number} ratio Optional
左右のバランス

滑車オブジェクトはアンカーを2つ設定し、スプライトを吊り下げることができます。

例
var ball1 = new PhyCircleSprite(8, DYNAMIC_SPRITE);
ball1.position = { x: 80, y: 160 };
var ball2 = new PhyCircleSprite(8, DYNAMIC_SPRITE);
ball2.position = { x: 240, y: 160 };
//滑車ジョイント
var pulleyJoint = new PhyPulleyJoint(ball1, ball2, new b2Vec2(80, 100), new b2Vec2(240, 100), 1);





以上で簡単な説明を終わります。

正直、文字で読むよりプログラムを読んだほうがわかりやすいような気がするので、サンプルプログラムをダウンロードして読んでみてください。(説明書くのがめんどくさいわけじゃないんだからね)

 多角形,ジョイントサンプル - PhySprite.enchant.js

サンプルダウンロード