hiyakake / ar-step Goto Github PK
View Code? Open in Web Editor NEWARを使って簡単にお店にあったステップを探すことができるサービスです。もっといろいろな場所に車椅子で出かけられますように。
Home Page: https://step.nextlav.xyz/
ARを使って簡単にお店にあったステップを探すことができるサービスです。もっといろいろな場所に車椅子で出かけられますように。
Home Page: https://step.nextlav.xyz/
カメラの位置が格納されている場所
document.querySelector('a-camera').object3D.position
このステップのように、適合高さが幅広い場合に現在に仕様では対応することができない。
https://www.monotaro.com/g/01144824/
現在高さ情報が 絶対値
でしか収集されていないが
の3つの値を取得することを検討する
企画書の内容をgitに移動する
今後は、企画書のドキュメントが中間発表などでも使いまわしができるように継続的に更新していく
GulpでBuildにのみ出力されるようにし、Sorceにはライブラリファイルは保持しないようにする
or
GitHubのUed機能を使って、このリポジトリをベースにしていることを明確化し、ソースはCodeに含めてしまう
「gulp-sass」がロードされないため、CSSのタスクが処理されない。
エラーメッセージ貼る
最初の横幅点を決めれば、それより先の工程は決まるので、
まずは横幅点のダミーデータを設定してそれより先をコーディング
最近のドキュメント変更によって、slag名や収集する情報が変更になりました。
CSVは既にこの変更に対応済みですが、ACFもこの変更に対応する必要があります。
. 全てのパラメタが全てセットされているか
. PLATESオブジェクトをJSONに変換
. 結果を出力
. 受け取った検索クエリの角度を算出
. DBから高さ条件と使用場所にマッチしたものを取得
. DBから返ってきたplateの不足情報を補完
. ステップを何個か繋げて条件に合う商品のみに絞る
. PLATESを緩やかな順に並べ替える
理由を伝えるのではなく、見て必要性を感じてもらえることを目指す
WEBサイトの説明資料としてもよいが
SNS向けの広告としての使い方もいいのでは?
正方形ビデオ15秒以内で
全体のコンセプトとなるキャッチが必要
→#進め、バリアフリー
5つほど実際のケースをモチーフに
シングルページのみ公開している間の、TOP(WP index)のデザイン及びコーディング
車椅子ユーザーのためとかそういうことは、設置するユーザーにとってはどうでも良いこと。
制作の背景 と サイトの説明 は分ける。
設置場所に合う段差を、ARをつかって定規無しでかんたんに探すことができるサイト
このドキュメントにもあるように、奥行きは設置場所の条件によって、必要な情報量が変わってくるため条件に応じて次のように取得する情報を変えます。
この新たな仕様に対応できるように、アルゴリズムを再考する必要があります。
アルゴリズムのドキュメント
https://github.com/LavP/ar-step/blob/master/Docs/MATCH_PLATE_API/flow.pdf
8th wallのonなんちゃらって、もしかしてa-cameraに対してイベントリスナ提供するのでは??
だとしたらv-onできるのでは??????
↑上記はどこにカメラの情報が格納されているのかわからなかったため保留
急ぐ必要はないので将来実装に
この仮設は、以前の仮説の失敗を受けて、新たに考えられたものです。
ベースは以前の仮説と共通している箇所があります。
8thWall Webを用いることで、実現可能
ベースは前回の仮説とし、実寸法の取得として千円札を利用したキャリブレーションを行う。
前回の方法で、形を取り、3D空間の3次元座標上での線分の長さを求めることはできたが、それが現実世界では何cmにあたるかを求めることができなかった。
そこで、AR_SCANの最初に練習として千円札の4スミをスキャンしてもらう。
千円札(他のお札でもいい)は誰しも用意できるもので、かつ大きさが変わらないものなので、これをスキャンすることで大きさの基準点を作ることが可能。
千円札の大きさはここを参照
https://www.sizekensaku.com/sonota/shihei.html
このissue #15 に関連して必要性が出てきた問題。
DBの登録に画像を含むと作業量が多くなってしまう。また、画像をDLして配信することは著作物の再配布にあたってしまうため、引用するだけの形式を取る必要がある。
サーバー側で、定期的に実行
アップされているCSVを読み取り、URLを元にOGP IMAGEのURLとTITLEを取得して保存する
CSVの情報とこのキャッシュデータは別ファイルとして保存するようにする。
保存する情報 | 型 | 説明 |
---|---|---|
元のURL | url | CSVとキーを一致するための役割 |
OGP IMAGE URL | url | OGP画像のURL |
OGP TITLE | 文字列 | 商品のタイトルに当たる部分 |
定期的に実行され、上記の情報をCSVデータとして保存するスクリプト
生成されるCSVはGitに含めない
WordPressの標準機能で実行可能
https://b-risk.jp/blog/2017/09/wp_cron/
ファイル名 | 説明 | サーバー上の保存場所 |
---|---|---|
PLATE_DB | プレート情報のソース元 | WordPress DB |
chash_ogp.php | 定期的に実行し、OGP情報を取得してCSVに保存する | AR_STEP/Chash/ |
ogp.csv | キャッシュ先 | AR_STEP/Chash/ |
page-get-ogp.php | キャッシュされた情報をJSON形式で返す | AR_STEP/ |
これは、なんとしても実現する必要があります。
詳しくはこのサイトにプラグインを使った方法があります
https://ahalog.tdesignworks.net/cms/wordpress/how-to-use-wp-all-import/
テンプレートファイルをコピーし、公開用のテンプレートファイルと開発用のテンプレートファイルに分ける。
プラグインを用いて、パラメタがある場合及びログイン中のみ開発中プラグインで表示されるように変更する。
デザイン先行で制作はできない。
良いデザインにするには、まずAR_SCANが実現可能という仮説を立証する必要がある。
そのためAR_SCAN実現仮設 - 千円札によるキャリブレーション案が立証されてからのデザインとなる。
いい感じのところまで作ったら、海老ラーメンを食べにいく。
どんなページが必要かどうかは、ドキュメントによって定義されています。
サイトをデザインするにあたって留意すべきは次のとおりです。
制作ツールははじめ、Dramaやframerが検討されていました。
確かにAR_SCANのような先進的なUIを提供するサービスにおいてはXDでは不十分だと思いますが、PLATE_STEPにおいては十分なはずです。
はじめからFramerでないと不可能だと決めるのではなく、XDでやってみる努力をしてから決めることにします。
これはダミーで使用している画像も入ってくるため重要な問題です。
今回は、Designフォルダ内に
フォルダを制作し、from_internetフォルダをGitの管理対象から外すことで問題に対処します。
XDでセーブデータはCCライブラリではなくGit内に保存します。
@timeupdateイベントは値の変化がトリガー
動作が止まるということは、どこがで値が前後で同じになっているということ
そこを解消できればなんとかなる
Currenttimeの代入は解決済み
DBの登録に画像を含むと作業量が多くなってしまう。また、画像をDLして配信することは著作物の再配布にあたってしまうため、引用するだけの形式を取る必要がある。
モノタロウなどはOGがあるが、Amazonがない。
Amazon率は高いことが予想されるので実現する必要
クロスドメイン制約にかかることがある。
チュートリアルUIと計測UI、計測データの保持を上手くシンクロを取る必要がある
------以下、話の流れ----------
私のテーマは、段差です。
ここに1枚のすのこがありますね。
このすのこの大きさは、8cmです。
みなさんにとっては、どうってことない段差です。
それを今から、車いすで乗り越えてみようと思います。
置いてるだけなので、すのこが動いて転ぶかもしれません。
乗り越えてみせる
このように、小さな段差も車いすにとっては大きな段差です。
これは車いすだけではありません。ベビーカーや高齢者にとっても同じです。
なんとか成功することができました。
でもこれ、実はすごく怖いんです。
段差を乗り越えるために、前輪を一瞬宙に浮かします。
そうすると、車いすの重心が後ろにいくんです。
すごく怖いです。
そして今、みなさんはハラハラしたんじゃないでしょうか?
そのハラハラを、車椅子の人は常に感じています。
それは、段差にフィットするプレートを探す難しさ
多くの人は「5cm 段差」などと検索する。
そうすると高さ5cm用のプレートが出てくるけど...
じゃぁそれを何枚買えば横幅を埋められる?
設置してみるとめっちゃ角度が急だったり。
高さだけなら簡単だけど、横幅や角度も考慮しようとするとプレートを探し出すのって大変!
これ、デザインと技術でなんとか解決できないかな?
→やりましょう!
お店の入口などの段差の寸法にフィットするプレートを紹介するサイト
そのために以下の4大要素を制作します
当然、段差の横幅、高さ、奥行きにマッチする必要がある。
でもそれだけではない。
→ つまり、ただフィットするだけでなく
安全性が確保できるプレートだけを紹介できるようにする
シンプルな段差だったら計測も簡単だけど
階段型だったらどうやって計測する?
いろんな段差の写真を見せる
プレートが角にぶつかっちゃうかも。
いろんな段差の形がある。側溝をまたがないといけなかったり。
実際にプレビューしながら、色んな角度で確かめならが計測できるといいよね!
サイトだけどもアプリに近い操作感で。
でも情報はボタを幼くても全部表示されるように。
できるだけふんだんにグラフィック表現を使用して
文字でなく非言語でユーザーとコミュニケーションをする。
これらを意識しています。
段差に合うプレートをマッチングするというCOREとなる機能はできた。
検索ボックスに手入力でなら、もう動く!
そして公開済みです。
SEO対策もがんばってます。
あとは、ARスキャナだけです。
難しいです。
ARアプリ制作には以下の3大要素が不可欠
でも、現状のWeb技術にはこれらがありません。APIがない!
なので様々な工夫をしています。
3時間くらい語りたいですが、難しいと思うので割愛します。
このアプローチは完成しているのでデモします。
C4Dでライブデモを行う
やることが多いですが、
きっと役に立つことだと思うので
負けずにがんばります。
A-FrameはUnityのゲームオブジェクトのように、一つのプリミティブや機能をWebコンポーネントとして利用する。
これが、A-frameのもともとの機能で実装したほうが楽なのか
それともVue.jsのコンポーネント機能として制作したほうが楽なのかを考える。
ハッシュタグ「#進めバリアフリー」を中心として
実際にプレートを設置した例などを掲載する。
Twitterはハッシュタグを取得できるAPIを公開していない
有償のWordPressプラグインを使用する
進めバリアフリーを訴えるCM映像と、noa氏のちょっとしたコラム
そして、「設置報告」としてTwitterのハッシュタグへのリンクボタンを設置する
このドキュメントを参考に MutationObserver
を使用して 8thWallのローディング要素の消滅を監視することで #loadingContainer
実行
https://qiita.com/munieru_jp/items/a6f1433652124a2165e4
window.addEventListener('load',(event)=>{
//bodyの監視
//debugger;
const target = document.body;
let _8th_wall_is_show = false; //一度登場したらtrueに
const observer = new MutationObserver(records => {
console.log('実行');
//要素が登場した
if(_8th_wall_is_show == false && document.getElementById("loadingContainer") != null){
_8th_wall_is_show = true;
console.log('登場');
}else{
console.log('未登場');
}
//要素が消滅した
if(_8th_wall_is_show == true && document.getElementById("loadingContainer") == null){
console.log('消滅');
observer.disconnect();//bodyの監視を終了
run_after(); //Vueを実行
}else{
console.log('登場中');
}
});
observer.observe(target, {
childList: true
});
});
8thWallやAR Coreは厳しいところがある
A-FrameにAR.js(マーカーベースのやつ)を組み合わせると、6軸検知はできる
6軸検知ができる→空間上で動き回れる
ポイントを画面の中心だけに限定すれば、ボタンを押したときにA-frame上でラインを引いて
それは6軸上で結構正しく現実の位置とリンクしそう
8thWallは平面検知をしっかりやってくれるのであって、 6軸だけならAR.jsでもいけるのでは?
→AR.jsでは不可能だった。6DoFができるのははやり8thWall
カメラとピンのx,z座標感の角度をatan2()によって求めれば実現可能ではないか?
ただ、カメラの座標をvueの管理対象としてしまうとarかめらの妨げとなる可能性がある。
そこをうまく解決する必要がある。
'$el.queryselector('a-camera').attr('position')
で取得するのも無理がある
カメラのポジションが変わるたびにイベントを発行する必要
カスタムディレクティブ使えそう?
@changeとかなかったっけ
カメラとピンのrotationを同期すれば同じ方向を向く
Pin looks at the camera ()
プレートの奥が
地面に接地 => 底辺を奥行きとして扱う
ステップに接地 => 斜辺を奥行きとして扱う
A-frameの <style>
によって a-antity img|video
に display:none
が指定されているのが原因だった。
なのでCSSでこのルールを上回るものを入れる
mian.css
#ui_2d img,
#ui_2d video{
display: inherit;
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.