/*! * vue-resource v1.4.0 * https://github.com/pagekit/vue-resource * Released under the MIT License. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueResource=e()}(this,function(){"use strict";var t=2;function e(e){this.state=t,this.value=void 0,this.deferred=[];var n=this;try{e(function(t){n.resolve(t)},function(t){n.reject(t)})}catch(t){n.reject(t)}}e.reject=function(t){return new e(function(e,n){n(t)})},e.resolve=function(t){return new e(function(e,n){e(t)})},e.all=function(t){return new e(function(n,o){var r=0,i=[];function s(e){return function(o){i[e]=o,(r+=1)===t.length&&n(i)}}0===t.length&&n(i);for(var u=0;u=200&&a<300,this.status=a||0,this.statusText=c||"",this.headers=new q(u),this.body=t,d(t)?this.bodyText=t:(i=t,"undefined"!=typeof Blob&&i instanceof Blob&&(this.bodyBlob=t,(0===(r=t).type.indexOf("text")||-1!==r.type.indexOf("json"))&&(this.bodyText=(n=t,new o(function(t){var e=new FileReader;e.readAsText(n),e.onload=function(){t(e.result)}})))))};L.prototype.blob=function(){return v(this.bodyBlob)},L.prototype.text=function(){return v(this.bodyText)},L.prototype.json=function(){return v(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(L.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var B=function(t){var e;this.body=null,this.params={},w(this,t,{method:(e=t.method||"GET",e?e.toUpperCase():"")}),this.headers instanceof q||(this.headers=new q(this.headers))};B.prototype.getUrl=function(){return $(this)},B.prototype.getBody=function(){return this.body},B.prototype.respondWith=function(t,e){return new L(t,w(e||{},{url:this.getUrl()}))};var M={"Content-Type":"application/json;charset=utf-8"};function N(t){var e=this||{},n=function(t){var e=[I],n=[];function r(r){for(;e.length;){var i=e.pop();if(l(i)){var s=void 0,u=void 0;if(m(s=i.call(t,r,function(t){return u=t})||u))return new o(function(e,o){n.forEach(function(e){s=v(s,function(n){return e.call(t,n)||n},o)}),v(s,e,o)},t);l(s)&&n.unshift(s)}else c="Invalid interceptor of type "+typeof i+", must be a function","undefined"!=typeof console&&a&&console.warn("[VueResource warn]: "+c)}var c}return m(t)||(t=null),r.use=function(t){e.push(t)},r}(e.$vm);return function(t){u.call(arguments,1).forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])})}(t||{},e.$options,N.options),N.interceptors.forEach(function(t){d(t)&&(t=N.interceptor[t]),l(t)&&n.use(t)}),n(new B(t)).then(function(t){return t.ok?t:o.reject(t)},function(t){var e;return t instanceof Error&&(e=t,"undefined"!=typeof console&&console.error(e)),o.reject(t)})}function D(t,e,n,o){var r=this||{},i={};return g(n=w({},D.actions,n),function(n,s){n=T({url:t,params:w({},e)},o,n),i[s]=function(){return(r.$http||N)(function(t,e){var n,o=w({},t),r={};switch(e.length){case 2:r=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(o.method)?n=e[0]:r=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return o.body=n,o.params=w({},o.params,r),o}(n,arguments))}}),i}function J(t){var e,n,r;J.installed||(n=(e=t).config,r=e.nextTick,i=r,a=n.debug||!n.silent,t.url=$,t.http=N,t.resource=D,t.Promise=o,Object.defineProperties(t.prototype,{$url:{get:function(){return b(t.url,this,this.$options.url)}},$http:{get:function(){return b(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}return N.options={},N.headers={put:M,post:M,patch:M,delete:M,common:{Accept:"application/json, text/plain, */*"},custom:{}},N.interceptor={before:function(t){l(t.before)&&t.before.call(this,t)},method:function(t){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST")},jsonp:function(t){"JSONP"==t.method&&(t.client=A)},json:function(t){var e=t.headers.get("Content-Type")||"";return m(t.body)&&0===e.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),function(t){return t.bodyText?v(t.text(),function(e){var n,o;if(0===(t.headers.get("Content-Type")||"").indexOf("application/json")||(o=(n=e).match(/^\s*(\[|\{)/))&&{"[":/]\s*$/,"{":/}\s*$/}[o[1]].test(n))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t}):t}},form:function(t){var e;e=t.body,"undefined"!=typeof FormData&&e instanceof FormData?t.headers.delete("Content-Type"):m(t.body)&&t.emulateJSON&&(t.body=$.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded"))},header:function(t){g(w({},N.headers.common,t.crossOrigin?{}:N.headers.custom,N.headers[p(t.method)]),function(e,n){t.headers.has(n)||t.headers.set(n,e)})},cors:function(t){if(c){var e=$.parse(location.href),n=$.parse(t.getUrl());n.protocol===e.protocol&&n.host===e.host||(t.crossOrigin=!0,t.emulateHTTP=!1,R||(t.client=U))}}},N.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){N[t]=function(e,n){return this(w(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){N[t]=function(e,n,o){return this(w(o||{},{url:e,method:t,body:n}))}}),D.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(J),J}); /*Click Away*/ !function(e,t){"use strict";function n(e,t,n){i(e);var u=n.context,a=t.value;if("function"==typeof a){var c=!1;setTimeout(function(){c=!0},0),e[o]=function(t){var n=t.path||(t.composedPath?t.composedPath():void 0);if(c&&(n?n.indexOf(e)<0:!e.contains(t.target)))return a.call(u,t)},document.documentElement.addEventListener("click",e[o],!1)}}function i(e){document.documentElement.removeEventListener("click",e[o],!1),delete e[o]}t="default"in t?t.default:t;/^2\./.test(t.version)||t.util.warn("VueClickaway 2.2.2 only supports Vue 2.x, and does not support Vue "+t.version);var o="_vue_clickaway_handler",u={bind:n,update:function(e,t){t.value!==t.oldValue&&n(e,t)},unbind:i},a={directives:{onClickaway:u}};e.version="2.2.2",e.directive=u,e.mixin=a}(this.VueClickaway={},Vue); GoProHERO3+ Aerial Focus Mod | MadaMada

GoProHERO3+ Aerial Focus Mod

「HERO3+よりHERO3の方がシャープじゃね?」
なんて密かに思ってる空撮野郎は誰ですか?
はい、ボクです。
モワッとした雰囲気は感じつつも、3+から積極的に使い始めたProtuneのせいだよね?と思い込んでたのだが…実は気のせいではなく、実際にHERO3+よりHERO3の方がシャープに写るという事実。
しかもそれは、アンシャープネス具合ではなく、根本的な光学部分に原因があるという…

と、大げさに煽ってみたけれど、HERO3+がHERO3より劣っているという話ではなくて、使い方に依ってシャープになったと感じる場合、シャープではなくなったと感じる場合があるという話。

というのも、3と3+ではフォーカスエリアが違う。
フォーカスエリア?そもそもGoProはパンフォーカスでしょ?、ってその思い込みが邪魔をしてたわけだが、GoProはパンフォーカスに見えてその実はパンフォーカスではない。

3+のフォーカスは、3よりも手前にくるようにセッティングされているという事実!!
つまり、手前に撮影対象がある用途ではシャープネスが上がったと感じ、逆に遠景を対象とする場合はシャープネスが落ちたと感じるわけで、とかく遠景が多くなりがちな空撮では、全く嬉しくないセッティング。
まさかフォーカスエリアのチューニングをもってしてHERO3+では “33 percent lens sharper” なんてことを宣ってるとは思いたくないけれども、それ詐欺じゃn…というのはさておき。
そりゃ、写したい遠景にそもそもピントがきてないんだから、シャープさに欠けるように感じてしまうのは当たりまえだったという(笑)

ということで、HERO3+を空撮に最適な無限遠にピントを合わせよう!なMod。
gopro focus mod-1
ベゼルを2つ外して、レンズを時計回りに2~2.5mm回すだけ。
これで、かなり近接にあっていたフォーカスが無限遠に合います。
シビアに合わせるなら、大きなモニターに遠景を写して確認しつつ回すとよろしいかと。

Mod前後の比較は2.7K/FOV-MID/Protune-Flat/WB-5500Kをベースに、SharpnessをLOW-MID-HIGHと3パターン撮ってみた。
ぜひ1080pでドウゾ。

効果の程は…一目瞭然ですね。中央の高い木の揺らぎ方や右奥のビルの細部にだいぶ差がある。
切り出しはコチラ → Default / Mod
もう少しローアングルで手前の草も撮るべきだったと反省、Defaultでのフォーカスエリアには空気しか写ってない(笑)

このMod、空撮メインのHERO3+には必須でしょ。
ModのTips詳細はこちら

16 Comments

  • ヒロシ

    2014-05-09 at 6:51 PM

    はじめまして。私はPhantom2+Hero3+ですが、いつもCoolなブログを楽しく拝見しています。
    Focusの調整、私もチャレンジしてみたいのですが、ペンチでレンズを廻す前にドライヤーやバーナーで(^^;;熱を入れてるYouTubeを見ました。
    熱でレンズを固定してる接着剤?を溶かしているみたいですが、実際にこの加熱は必要でしょうか? 私にはチョット勇気のいる改造なので、コツや注意点などあれば、アドバイス宜しくお願いします。

    返信
    • hightimes247

      2014-05-09 at 8:46 PM

      ヒロシです Cool通り越してColdだ と言われるとです ヒロシです

      失礼しました。
      はじめましてヒロシさん。
      Cool!戴きましてありがとうございます。
      Phantom2いいですね〜。Phantom2の特権、H3-3D羨ましいです。

      ご質問の件、レンズModはCoolよりHotの方が良いかもしれんとです。

      内部でレンズを保持しているブラケットは薄い樹脂製(剛性はありました) なので、接着剤の具合によっては、強引に回すとブラケットがゆがんだり、折れたりする可能性はあるかも…(リプレイスパーツは入手できます)
      ドライヤーやバーナーはちょっと不安…であれば、長時間録画で筐体を温めておくのも効果あるかも。

      と、かくいうボクは、そんなことはすっかり忘れてて、温めずにペンチでグイッと回しました(笑)
      手順や注意点は記事内にリンクで貼ったtips動画で問題ないです、焦らず慎重に。

      それではご健闘を!!

      返信
  • ヒロシ

    2014-05-09 at 9:45 PM

    レスありがとうございます
    慎重にグイッとやってみますね!
    GoproのFocusは着地した時の草むらにやたらとピントが合っているなと、以前から気になってました(´・_・`)

    返信
  • 台長

    2014-05-15 at 5:01 PM

    たびたびすみません。
    傷のついたHero3のレンズを交換すべく、ご紹介いただきましたGLBからレンズユニットを購入中です。このレンズユニットを交換するにためにiFixitのyoutube見ましたが、なかなか簡単ではなさそうで自信がなくなってきました。再組立てしてからどうやってFocusを合わせるのかなあ・・と思っています。このページでは外側のベゼルをぐいっとラジペンで回せば外れるように見えますが、そうなのでしょうか?
    外側のベゼルをぐいっと回して外して、レンズの内側ベゼルも力任せに回して外すと、ケースを全く分解しないで、傷ついたレンズを回しながら抜き出して、また新しいのを入れる・・という工程が可能なのでしょうか? いずれにしても、ベゼルを外さないとレンズのFocus合わせができないように思えます。
    ご教授ください。

    返信
    • hightimes247

      2014-05-15 at 8:05 PM

      >台長さん
      iFixitの手順でレンズモジュールを組み替えたのち、必要があれば、ベゼルを外してピント調整Modを行う。
      個人的にはこれ以外の手順はありえないと思います。
      ピント調整時のベゼルの外し方、レンズの回し方は記事最後のリンクをご確認ください。

      以下長々と理由です。
      まず前提として、おそらくGLBで購入されたレンズモジュールはピントが合う位置でレンズが接着固定されているはずです。(理由は後述)
      ブラケットを破壊してレンズを取り外したことがあるのですが、固定している接着剤はかなり強力で、レンズのネジ山から取り除くのにも難儀しました。
      GLBから届いたモジュールでこの作業をするかどうか…まちがいなくiFixitの手順を踏んだほうが楽だと思います。
      本体側レンズを外す場合のブラケットへの懸念として、数ミリの回転はともかく、レンズを抜くところまでレンズを回した際にダメージを与えないかどうか?ということもあります。

      よしんば、上記2点を無事にクリアしたとして、本体側レンズブラケットについている接着剤のカスを取り除くことは…おそらく不可能。確実に映像素子が汚れます。
      ならば、接着剤のカスはそのままにしてレンズを入れると、接着剤のカスが素子側に落ちる可能性があります。
      ということで、本体側のレンズを抜く行為は、ダメ絶対。

      先にも書いた、レンズモジュール(レンズブラケットとレンズ鏡筒)はピントが合う位置でレンズ固定されているであろう理由。
      文字での説明は難しく、どこまで伝わるわかりませんが…

      レンズ周辺部の構造は、
      素子ユニット→レンズブラケット←→レンズ鏡筒→ベゼルA(写真左のベゼル)→ベゼルB(写真右のベゼル)の関係で、嵌めあいがフィックスされるようになっています。
      つまり、レンズ鏡筒が正規の位置(ピントの合う位置)にないと、ベゼルA→ベゼルBの嵌めあいにズレが生じます。
      これは、組み立て最終段階のベゼルをハメる際に、レンズ位置を再確認するためのミスプルーフ構造だと想像してます。
      実は無限遠Modでは嵌めあいを無視してベゼルが付いています。
      それでも問題ないのは、ベゼルBの爪がかなり小さいので、爪を無視して強引に嵌められる。
      ベゼルBがかなりタイトなので、爪なしでも保持できているわけです。
      ベゼルを外してレンズ周辺部の構造をみると嵌め合いがどうなっているかわかるかと思います。

      バラし、組み付け作業は、フレキのケーブルにさえ気を付けて丁寧に進めれば、ラジコン組み立て等の工作が好きな方であれば、決して難しい作業ではないと思いますよ!
      ではでは。

      返信
  • 台長

    2014-05-15 at 8:50 PM

    うーーーむ、そゆことですかあ・・・
    MobiusやBOSCAMのHD-19など皆12mmレンズをいろいろ買って交換しましたが、GoProはそうは簡単にいかないのですね。でも、買ったレンズユニットがどんぴしゃFocus があっていれば合わせをしなくってもいいですね。GLBなんかで売っている代物がホントに大丈夫ならいいんですが・・
    とにかくそのようにやってみます。ありがとうございました。

    返信
    • hightimes247

      2014-05-15 at 9:00 PM

      >GLBなんかで売っている代物がホントに大丈夫ならいいんですが・・
      この一点につきますよね(笑)
      結果報告いただけると幸いです。

      ピント合わせ自体は簡単なのでさておき、偽物だったら…勧めてしまった手前、かなり申し訳ない。

      返信
      • 台長

        2014-05-16 at 8:44 PM

        交換作業が終わったら成果報告しますね。
        GLBにはEMSで頼みましたが、5日経ってもprocessedのままです。在庫がないのかも・・・

        ところで、当方はBOSCAMのTS-832 でアマチュア局を開局してFPV をはじめました。興味があれば、上の「台長」をクリックしてください。
        許可された場所で合法のRC-Lifeを実行すべくジタバタしています。

        http://youtu.be/MC9Gut-48e0

        名古屋の件といい、USAのNPの件といい、残念ですね。先月はオーストラリアのマラソン大会でPhantom君が墜落して、選手に突っ込んだ事件がCNNで報道されていました。

        返信
        • hightimes247

          2014-05-16 at 10:02 PM

          >台長さん
          もしかすると、まだ入荷していないのかもしれないですね。
          いつ発送するんだ?って聞いてみても良いかもです。

          無線局開局、超タイムリー!な内容で非常に参考に成りました。
          実は既に、5.8Ghz(TS-832ではありませんが)と1.3Ghzで開局に向けて諸々動いていて、ボクも近いうちに堂々とFPVです。
          て、これは近々のブログネタだったりするんですが…

          世間様に危険なものだと認識されるのが、一番困りますね…

          返信
          • 黒執事

            2014-05-25 at 10:09 PM

            台長さん、はじめまして。hightimes247 さん、お
            久しぶりです。
            台長さんのページを見て、なんとか TBS BOSS での
            アマチュア局開局できないかと思うようになりました。
            (とりあえず従事者免許は持ってます)
            使用している部品とか詳細な仕様とかは Trappy に
            聞けば教えてもらえるのかなと思ったりしてます。
            いまのところ、まだ思ってるだけで具体的行動はまだ
            ですが。
            って、これって hightimes247 さんの近々のブログ
            ネタ? ^^;

            まあ、今後何かあればご教示願えればと思っております。>ご両人

  • hightimes247

    2014-05-25 at 10:45 PM

    >黒執事さん
    はは、カミングスーンなブログネタ。ビンゴですw
    Trappyにはダイアグラム頂戴!って言って、エンジニアも紹介してもらいました、が予想通りconfidentialということで、教えてもらえませんでした。テヘ。
    とりあえずBOSSを開けて見るべしっ!そこかしこにヒントが!

    台長さんのに習ってTS-832でというのも手っ取り早いかと。(台長さんに袖の下は忘れずに)

    返信
    • 黒執事

      2014-05-25 at 11:27 PM

      やはり、教えてもらえませんでしたか..残念。

      破壊覚悟でBOSSを開けてみてもいいですけど、
      開けても有用な情報がとれるか今一歩自分の
      知識・経験に自信なし^^;
      誰か解析してくれないかな(ボソ)

      ..ちょっと思案してみます。

      返信
  • 台長

    2014-05-26 at 10:00 PM

    黒執事さん

    台長@青梅です。こんばんは。
    5.8Gのアマチュア局申請は皆続々やっていますよ。
    やってみればそんなに難しくはないです。
    TBSのTXも心臓部のRF-LSIはRichWaveのRTC6705だと思います。
    中華製の5.8GTXは全てこの石を使っています。
    500mW(+27dBm)なので、FinalもTS832と同じだと思いますので、ブロックダイアグラムはぼくが申請したものと同じでいけると考えます。
    いつかの種類のTX をバラしてみましたが、形は違っても、中味の回路は同じでした。

    hightimesさん

    ぼくの仲間の3+も1080PSuperと720PSuperは4:3フルサイズのライブアウト出力であるとの報告が来ました。貴殿のも同じと思います。
    理由は謎です・・・・・

    返信
    • 黒執事

      2014-05-26 at 10:31 PM

      台長様

      とても貴重・希少な情報をいただき、ありがとうございます。
      ブロックダイアグラム、石、そして性能上の仕様が同じとなると
      非常に希望が持てます。
      ばらしてみれば石や回路はわかるものでしょうか?
      台長様、後日連絡さしあげるかも知れません。その時、もしよろ
      しければですが、アドバイスいただければ大変助かります。

      #飛行仲間では空撮機をやっているのは私だけで孤軍奮闘してます。

      私信モードですみません > hightimes247様

      返信
      • hightimes247

        2014-05-27 at 12:36 AM

        >台長さん
        ボクもSuper View試してみます。
        1080SVは1440をベースに、720SVは960をベースに処理してて、アナログアウトプットは処理前のデータを吐いてる、ってことでしょうか(適当言ってますw)

        いやー台長さんVTXの件、ビンゴ!!さすがです。

        >黒執事さん
        台長さんのおっしゃる通り、BOSSもRichWaveのRTC6705を使っていて、ファイナルも同じ。
        当然オーディオをオミットするなら同じく。
        違いは…チャンネルがDIPなことぐらいでしょうか…
        ブログネタにするまでもなく、コメント欄で完結しちゃいました!
        では、ご健闘を!!

        返信
  • 黒執事

    2014-05-27 at 11:02 PM

    hightimes247さん、台長さん、ありがとうございます。
    データシート、開局用紙を揃えました。
    オーディオオミットにはどの部品(おそらく抵抗2個)をはずすか知る必要がありますが、これはシールドを外して調べればいいんですよね。トライしてみようと思います。
    # その免許票の貼られたBOSSがまぶしい^_^

    返信

コメントを残す