作ったもの (VR)
作ったもの、やった事をまとめてみる。
間接も含めたコピーが出来るようになった。
— afjk(エーエフ) (@afjk01) 2017年6月7日
Cubeの見た目もシンプルに変更。 pic.twitter.com/CwUf1Q98Ix
Cubeをつなげて歩いているような動きを作ってみた。
— afjk(エーエフ) (@afjk01) 2017年6月5日
空間固定出来ると配置の検討や間接接続が格段に楽。 pic.twitter.com/wjH0kaM5JI
https://twitter.com/afjk01/status/871546214897991681/video/1
Cubeをつなげる。その2 pic.twitter.com/HnUcub0b6g
— afjk(エーエフ) (@afjk01) 2017年5月6日
Unity向け立体迷路の自動生成プログラムをGitHubで公開しました。https://t.co/s31fGxEa9f pic.twitter.com/2fNpO0SUpW
— afjk(エーエフ) (@afjk01) 2016年12月7日
#VRGJ #VRGJGinza 立体迷路の自動生成アルゴリズムは穴掘り法(または道延ばし法)を高さ方向にも適用したものです。
— afjk(エーエフ) (@afjk01) 2016年11月27日
(ちなみにザバさんには初見でアルゴリズムを言い当てられました) pic.twitter.com/wlAqjLpEy8
VRで理想の作業環境を作ってみる。 pic.twitter.com/MCYp8HDcLW
— afjk(エーエフ) (@afjk01) 2016年7月31日
VRクリエイティブアワードへ応募しました。
— afjk(エーエフ) (@afjk01) 2016年5月2日
VR Hand Stamp https://t.co/GzIy1VvIZw @YouTubeさんから
ViveコントローラーでiPadをポジトラ。
— afjk(エーエフ) (@afjk01) 2016年7月7日
VR空間を眺めるディスプレイにしてみました。 pic.twitter.com/RFZqSzDgQ6
プロジェクターをViveコントローラーでポジトラ。部屋にVR空間を投影する。 https://t.co/e4qPNCjNST
— afjk(エーエフ) (@afjk01) 2016年7月9日
昨日のTHETA動画の再編集ツイートの反応が良かったのでQiitaに詳細まとめました。
— afjk(エーエフ) (@afjk01) 2015年10月27日
BlenderでTHETAの全天球動画を再編集する(タイトルや目隠しの追加) on @Qiita https://t.co/6HziChBpmJ
本日のデモ用アプリ。
— afjk(エーエフ) (@afjk01) 2015年11月4日
スカイドームビューアになりました。
後は時間一杯まで調整。
LEAP motiomが不調だったりトラブル続きだけど何となかるか? pic.twitter.com/fnVCera8jX
本日のVRまつりにて「mimic 初音ミクVer」をデモ展示します。
— afjk(エーエフ) (@afjk01) 2015年11月22日
動作の模倣、THETA Sライブビュー合成表示、スカイドーム切替え、VR内の自分と初音ミクの表示が出来ます。
よろしくお願いします。
#vrfesjp pic.twitter.com/pDQ4WAzKtQ
MimicのPop作りました。
— afjk(エーエフ) (@afjk01) 2015年11月22日
プリンタは無いのでiPad miniで掲示します。 pic.twitter.com/yOfLNkrU5s
Leap Motionでのハコスコポジトラ、ペン1つではロール軸回転が検出出来なかったのですが、とても簡単な解決策を見つけました。 pic.twitter.com/K52y8xAwQ5
— afjk(エーエフ) (@afjk01) 2015年12月16日
その方法はこちらです。
— afjk(エーエフ) (@afjk01) 2015年12月16日
牛乳パックを適当に手の形に切った物ですが、LeapMotionは案外手として認識してくれました。
カメラはpalmのtranceformに追従させています。 pic.twitter.com/8WOrFmDGVO
全天球会議システムのイメージ。
— afjk(エーエフ) (@afjk01) 2016年2月1日
ほぼmimicからの流用。
まずはtheta s1台、ローカルで2名がVR内で対話出来る物を作る。 pic.twitter.com/pUTUUanBCf
VR内に二人で入るシステムの構成。
— afjk(エーエフ) (@afjk01) 2016年2月5日
シータを中心にDK2とハコスコで向かい合う。 pic.twitter.com/BPsDwP94A5
青のアバターがハコスコ、赤のアバターがDK2視点。
— afjk(エーエフ) (@afjk01) 2016年2月5日
PCにDK2とは別のカメラを表示し、duet displayでiPhoneにミラーリング。
ハコスコのポジトラにはleap motionを使っている。 pic.twitter.com/5jtylpYIXb
ハコスコDXのレンズを外してフレネルレンズを貼り、一眼用ハコスコDXを作る。 pic.twitter.com/QsFizS1Ezn
— afjk(エーエフ) (@afjk01) 2016年2月19日
本日のVRまつりでデモ予定の「WITH」
— afjk(エーエフ) (@afjk01) 2016年2月21日
VR内にDK2とハコスコで二人で入るもの。
アバター頭部にTHETA Sのライブビューを投影してコックピット的に見える(ハズ) pic.twitter.com/beNEL2cILg
@afjk01 MimicのOrion版も持っていきます。
— afjk(エーエフ) (@afjk01) 2016年2月21日
会場の状況によってはこちらのみにするかも。
WITHは機材がかさばるので。 pic.twitter.com/PfLysyijr5
Leap Motionでボジトラするために作った一眼ハコスコDX。
— afjk(エーエフ) (@afjk01) 2016年2月22日
レンズを外してハコスコタタミのフレネルレンズを貼っただけですが、意外に見やすくて360度動画を観るのに重宝しそうです。https://t.co/Onq5ciY6Yg
Qiitaに投稿しました。
— afjk(エーエフ) (@afjk01) 2016年2月23日
LeapMotion Orionでキャラクターの手を動かす on @Qiita https://t.co/zPuWAuVLYw
MimicにOVRLipSyncを対応させました。 https://t.co/wIJ7a0hHvx
— afjk(エーエフ) (@afjk01) 2016年2月29日
Mimicで #ミクの日 (遅刻) pic.twitter.com/Y8HHoIkbMJ
— afjk(エーエフ) (@afjk01) 2016年3月9日
Mimic Grabbing Handでミクさんとキャッチボール https://t.co/vjOYvpbYW6
— afjk(エーエフ) (@afjk01) 2016年3月31日
気分転換にSDユニティちゃんの手もLeap Motionで動かしてみました。 https://t.co/djO1emxzmz
— afjk(エーエフ) (@afjk01) 2016年4月11日
Final IK+Avatar hand controller for Leap motionを使用。他、小細工たくさん。
— afjk(エーエフ) (@afjk01) 2015年10月3日
アペンドミクさんでもこの通り。 pic.twitter.com/6w9bGUO4Bv
LeapMotionの指の動きを反映する https://t.co/JZ2QQ6WqP4
— afjk(エーエフ) (@afjk01) 2015年10月20日
Viveアプリ、まずはMikulusを作ってみました。ルームスケールって素晴らしい。SteamVRアセットであっさりシャペロン表示にコントローラーも出てきました。 https://t.co/6a9EUqiHR9
— afjk(エーエフ) (@afjk01) 2016年4月19日
唐揚げ、AltSpaceVRに出せました!
— afjk(エーエフ) (@afjk01) 2015年10月10日
Hanging out in @AltspaceVR's SDK Collaborator Space. Join me at https://t.co/G94VfKyZ7L
唐揚げチェス。読み込みに時間がかかってしまうからたくさんは無理か。
— afjk(エーエフ) (@afjk01) 2015年10月10日
Hanging out in @AltspaceVR's SDK Collaborator Space. Join me at https://t.co/v27bhHmtl1
Qiitaに投稿しました。
— afjk(エーエフ) (@afjk01) 2015年10月11日
AltspaceVRへ3Dモデルを持ち込む on @Qiita http://t.co/Wk89H8DVDI
から揚げ、codepenからも出来ました。
— afjk(エーエフ) (@afjk01) 2015年10月11日
モデルファイルはDropboxのPublic Folderへ格納。
Chess http://t.co/ZT4kIrmjxS @CodePenさんから
Qiitaに投稿しました。(本日2件目)
— afjk(エーエフ) (@afjk01) 2015年10月11日
CodePenで作るAltspaceVRアプリ on @Qiita http://t.co/ryBjwDN7Ms
Cocos3D 2.0.XでのARアプリ開発
このように、3Dオブジェクトをカメラプレビューに重ねる方法を解説します。
Cocos3D 2.0.Xの新規プロジェクト作成はうまくいきません。
チュートリアル動画にある通り、サンプルのHelloWorldをコピーしてプロジェクトを作成するのが良いようです。
Starting Cocos3d - 1 - Installing Cocos3d and starting a new project - YouTube
ベースとなるプロジェクトを"HelloAR"として作成したところから解説。
3Dオブジェクトの背景にカメラプレビューを表示する
コメントにある通り、以下のコメントを外し、Sceneのbackdropをコメントアウトする。
AppDelegate.m
-(CCScene*) startScene { : // For an Augmented Reality 3D overlay on the device camera, uncomment the following lines. // This must be done after the window is made visible. The 3D scene contains a solid backdrop. // To see the device camera behind the 3D scene, remove this backdrop, by commenting out the // backdrop property assignment in the initializeScene method of CC3HelloWorldScene. CC3DeviceCameraOverlayUIViewController* viewController = [[CC3DeviceCameraOverlayUIViewController alloc] init]; viewController.isOverlayingDeviceCamera = YES; scene2D.colorRGBA = [CCColor colorWithCcColor4f: kCCC4FBlackTransparent]; return scene2D; }
HelloARScene.m
-(void) initializeScene { // Optionally add a static textured, or solid-color, backdrop, by uncommenting one of these lines. // self.backdrop = [CC3Backdrop nodeWithTexture: [CC3Texture textureFromFile: @"BrushedSteel.png"]]; // self.backdrop = [CC3Backdrop nodeWithColor: ccc4f(0.4, 0.5, 0.9, 1.0)];
これだけで、Hello Worldの背景にカメラプレビューが表示されます。
Landscape Rightにする
ハコスコで表示するため、LandscapeRightにする。
- Targetの設定
Target>General>Deployment Info
Device OrientationをLandscape Rightに。
- CCSetupScreenOrientationをLandscapeに設定
appDelegate.m
-(BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions { : CCSetupAnimationInterval: @(1.0 / kAnimationFrameRate), // Framerate (defaults to 60 FPS). CCSetupScreenOrientation: CCScreenOrientationLandscape, // Support all device orientations dyanamically
- deviceCameraView.layerのOrientationをLandscapeRightに設定する処理を追加する。
これをしないと、カメラプレビュー画像がPortraitのまま、90度回転して表示される。
AppDelegate.m
-(CCScene*) startScene { : // For an Augmented Reality 3D overlay on the device camera, uncomment the following lines. // This must be done after the window is made visible. The 3D scene contains a solid backdrop. // To see the device camera behind the 3D scene, remove this backdrop, by commenting out the // backdrop property assignment in the initializeScene method of CC3HelloWorldScene. CC3DeviceCameraOverlayUIViewController* viewController = [[CC3DeviceCameraOverlayUIViewController alloc] init]; viewController.isOverlayingDeviceCamera = YES; scene2D.colorRGBA = [CCColor colorWithCcColor4f: kCCC4FBlackTransparent]; //この行を追加 [viewController.deviceCameraView.layer setOrientation:AVCaptureVideoOrientationLandscapeRight]; return scene2D; }
端末の姿勢に合わせてCC3Cameraの方向を制御する。
カメラの自動位置合わせをコメントアウト
起動時に3Dオブジェクト全体を捉えるようにカメラ位置を自動調整する機能が有効になっているので、コメントアウトする。
TwideeARScene.m
-(void) onOpen { : // 以下の行をコメントアウト // Move the camera to frame the scene. The resulting configuration of the camera is output as // an [info] log message, so you know where the camera needs to be in order to view your scene. // [self.activeCamera moveWithDuration: 3.0 toShowAllOf: self withPadding: 0.5f]; // ここ。全体が表示されるようにカメラが動く。 // Uncomment this line to draw the bounding box of the scene. // self.shouldDrawWireframeBox = YES; }
Cocos3D 2.0.2インストール
オープンソース(MITライセンス)の3DライブラリCocos3D 2.0.2をインストールしたのでメモ。
Cocos3D Home
今までは0.7.2を使っていましたが、大幅に改修されました。
インストール
- Cocos2D swift 3.2.1をダウンロード&解凍
Cocos2D – Swift Open Source Game Engine
Cocos2D zip archive 3.2.1
- Cocos3D 2.0.2をダウンロード&解凍
Releases · cocos3d/cocos3d · GitHub
- ターミナルでCocos3Dを解凍したディレクトリに移動し、Cocos2Dのパスを指定してインストールコマンド実行
$ ./install-cocos3d.sh -2 "../Cocos2d321"
試して気づいた点
- 今までの0.7.2のプロジェクトも作れる。実はこれを一番心配していた。
- ストーリーボード上に3D描画領域を重ね合わせたり、別の3D領域に遷移したりできる。
- CC3Backdropで背景にテクスチャを張れる。
何気に便利。
カメラのプレビューをテクスチャに設定すれば、AR的なアプリも簡単に作れるんじゃないか?
→と思ったら、むしろ設定してはダメだった。
コメントにちゃんとArgumented Rearityのやり方が書いてある!
端末の傾きに合わせて3Dオブジェクトを表示する方法[cocos3d]
Twidee3Dのハコスコ対応で端末の傾きに合わせてカメラ制御方法を調べたので共有。
iOSアプリ向け。3D表示にcocos3Dを使っています。
- 実装
iOS cocos3d cameraを端末の姿勢に合わせて制御する
xxScene.h
#import "CC3Scene.h" #import <CoreMotion/CoreMotion.h>// この行を追加 @interface HelloARScene : CC3Scene { CMMotionManager* _motionManager; // この行を追加 } @end
上記ソースコードを貼り付けて、sceneの初期化時にinitMotionManagerを呼び出せばactiveCameraが端末の姿勢に合わせて向きを更新するようになります。
xxScene.m
-(void) initializeScene { : CC3Camera* cam = [CC3Camera nodeWithName: @"Camera"]; cam.location = cc3v( 0.0, 0.0, 18.0 ); [self addChild: cam]; [self initMotionManager]; //この行を追加
※CoreMotion.frameworkをリンクする必要があります。
- 簡単な説明
1.CMMotionManagerを使って、端末の姿勢情報を取得。
CMDeviceMotion.attitudeからは、quaternionやオイラー角など、いろいろな形で端末の姿勢情報を取得できる。ここではquaternion。
2.取得したquaternionを直接activeCameraに設定すると端末の下を向いてしまうので、X軸で90度回転。
3.Portraitの場合は、2まででOK。
Landscape Rightの場合は、さらにactiveCameraをZ軸で-90度回転。
3Dプログラミングをしていると、大概クォータニオンなどの数学的な箇所でつまづくので、Tips的に参考ソースがあるといいなと。
私も詳しくないので、他の方の方法を参考にしたり、試行錯誤しながらやっています。
カメラのクォータニオンでの回転方法はこちらを参考にしました。
iphone - Cocos3d and augmented reality - Stack Overflow
スカイドームの作り方(球に綺麗にパノラマ画像テクスチャを貼る方法)【blender2.7】
THETAで撮影した画像でスカイドームを作ったのでメモ。
作成には、下記サイトを参考にした。
「How To Unwrap A UV Sphere In Blender」
https://m.youtube.com/watch?v=yc0b5GcYl3U
http://www.enigmatoots.co.uk/#!unwrapping-sphere/cvnq
解説は参考サイトを見ていただくとして、ポイントだけ。
blenderでUV Sphereを作成し、UV展開すると下図のように上下の極周辺がうまく展開されない。
これは極周辺だけ三角ポリゴンのため。
これを解決するために、
- 両極の頂点を一旦削除
- 上下端を押し出し延長し、穴を小さくすぼめる。※完全には閉じない
ループ選択(alt+右クリック)→延長(Ctrl+E)→サイズ変更(Sキー)→Shit+ZでZ軸変化を固定。
- UV展開>球状展開
- テクスチャを貼り付けた後で、再度上下端の辺をループ選択→サイズ変更→0キーで完全に穴を塞ぐ。
- 面をスムーズにする。
これで、上下の極も綺麗にテクスチャを貼り付ける事が出来る。
参考サイトは球の表面にテクスチャを貼る方法なので、スカイドームにするには面を反転させる事をお忘れなく。
RICOH デジタルカメラ RICOH THETA m15 ホワイト 360°全天球イメージ撮影デバイス 0910700
- 出版社/メーカー: リコー
- 発売日: 2014/11/14
- メディア: エレクトロニクス
- この商品を含むブログ (7件) を見る
有色地デッサン 女性のポートレート
有色地デッサンに挑戦。
美人を描くのは難しい。
ピンクの紙に鉛筆、色鉛筆、パステル白。
合計12時間
この本の長坂洋平の写真模写(p.56)。
図解ポートレイト・ライティング (コマーシャルフォトシリーズ (67))
- 出版社/メーカー: 玄光社
- 発売日: 1995/05
- メディア: 単行本
- この商品を含むブログを見る
- 出版社/メーカー: トンボ
- メディア: オフィス用品
- この商品を含むブログを見る
物理エンジンで作るBio-likeness(3)
全身の筋肉が重力に逆らいながら「楽な」姿勢を探した結果、重心が各関節の真上にあり揺らいでもわずかな力で復元出来る均衡状態を発見する。それが「立つ」ということらしい。
日経デザイン「デザインの小骨話 第一回」山中俊治
前回作成したCSL制御モーターを単純に繋いだロボットを作り、動かしてみました。
1関節で三つの剛体を接続した場合
中心部を浮かせて地面に置くと、関節を閉じて中心を持ち上げます。
片側を浮かせると関節は90度まで回転して止まり、片側の剛体を持ち上げます。
2関節の場合
接地した側の関節、浮いた側の関節が開いて端を持ち上げます。
開きすぎて逆側に倒れない様にユラユラ揺れながらバランスをとる。
関節を膝、足首に見たてると、一本の足が立ち上がっている様にも見えます。
3関節の場合
両端のみ接地させた状態だと、中心は閉じ、その両脇の関節は開いて全体を持ち上げます。
二本足ロボットのよう。
面白いのは、倒すと自力で同じ体勢に戻る事です。
また、他にも初めの体勢に応じ、様々な形態で安定する姿勢を探します。
これらに使用したモーター制御は、全て同じパラメータを使っています。
にもかかわらず、状況に応じて挙動を変え、それぞれが連携してバランスを取りながら重心を高い位置に持ち上げる。
つまり、「立つ」。
単純に外力に対抗するようモーター制御するだけで、このような動きになる。
マンフレッド氏の発想は素晴らしい。
モーター間の通信もなく、全体を制御する頭脳も必要としない。
協調動作により創発される起立動作。
問題点
今回試したこれらのロボットの問題点として、自身を構成するパーツ同士が接触すると、外部からの力と自分が加えた力の区別がつかないため、自分自身に力を加え続けてしまいます。
こうなると、バランスをとり立ち上がる能力は失われてしまう。
Bio-likeness展でのロボット達を振り返る
Apostrophは各パーツがすり抜ける構造になっていて、この問題は起こらない。
Fuhlerは、たまに力尽きたように脱力していた。もしかしたらこうした状況にはまり込まないように過剰な力が加わったら力をリリースしていたのかもしれない。
Waageは?どうなんだろう。1関節の構成なので、可動範囲を限定する事で容易に防げる気もする。
bio-likeness展で試すか質問出来ていれば。。。
もっとも、今回実際に作ったから気づけた事ではあります。
ただ「面白かった」で終わらせなくて良かった。
次回予告
今回は単純な構造で試しましたが、今度はApostrophの様にアーチ状の構造を組み合わせたような物や、あと、これ。
小さな同型のパーツをブロックの様に組み立てる。するとそれが動き出し「むくり」と立ち上がったらきっと楽しい。
そう思わせてくれる素敵な山中俊治先生のスケッチ。
リアルタイムに組み替えることが出来るアプリを作りたい。
(UI設計で死にそうですが。完成はいつになるかな)