幼女戦記 魔導師斯く戦えり(まどかく) デバフ/バフに関する調査記録
ごきげんよう、紳士淑女の戦友諸君。
最近、演習におけるデバフ・バフの謎について調査を色々行ったので共有させてもらう。
ちなみにTwitterで呟いた内容と同じだ。読んだことがある人は読み飛ばしてしまってくれ。
要約
長いので通常は要約だけみればいいかと思いますよー
調査記録まとめ
今回の内容をざっくりまとめると以下通りです。
- 物理攻撃のバフ・デバフは支援側(使用側)の元のステータスに影響する。
物理防御、魔法攻撃・防御も同様の見込み - バフ・デバフを受け手側のステータスの影響はない
- ただし、一定以上バフがかかっている相手にはバフがかかりにくくなるという噂がある。(検証が難しいため詳細不明)
- キャラの下にあるバフ・デバフの状態を表す数字は元ステータスからどの程度上下したかの割合を示す(バフが1の場合、元ステータスの+0~5%程度増加、2の場合、5~10%増加の見込み)
- 支援側のステータスが上下していても、バフ・デバフ値は変わらないようだ(検証が足りていないかも)
- エフェクトEX2の「支援時に発動」効果は支援時だけでなく、通信(妨害)によるデバフ時とバフ効果がある狙撃使用時にも発動する(バグか仕様かは不明)
豆知識まとめ
その他、豆知識として以下がある
- 演習中の敵・味方のステータスは左上と右上にある戦闘団の名前をタップすれば閲覧可能(バフ値・デバフ値の詳細もみえる)
→ 魔力残量もみれるので、魔力切れで前衛・後衛交代している人はこれを参考にしているかも - 演習目標との闘いが終わり、団員同士の戦いになった直後は攻撃が無力化される(らしい)
- 敵をタップする(ターゲットを指定)すると、素殴りが発動して、武器とは関係ないダメージが発生する(らしい)
デバフや攻撃は対象を選ぶことができるので、タップするけどそのときに発動するっぽい
↓演習中の敵・味方のステータスは左上と右上にある戦闘団の名前をタップすれば閲覧可能
詳細な調査記録
デバフって何のステータスあげたら上がるん? っていう疑問があって調べてみました。
調査方法:
武器はこの物理防御大ダウン、場所はオースフィヨルドネームドさんとこ(10-1/hard)で対象は最初の砲台さんに対して実施した。
軍装やサブ装備などを使って、装備のステータスを 上下させて、砲台さんに一発だけデバフを喰らわせて、見た目上のデバフ値がいくつになるのか調査した。
その結果、 防御を上げると防御のデバフ値が上がることまではわかった。
つまり、デバフする対象と同じステータスを上げればデバフ量を増やせると考えられる。
詳しい検証の話をさせてもらうと、
デバフを実行したときの支援側のステータスと砲台のデバフ値(見た目上)の値の散布図を作成して傾向を調査した。
一回だけでは乱数による影響もあると考え、同じステータスで複数回やりなおし(離脱して再スタート)して計測した。
その結果、物理防御力・魔法防御力・防御力の合計とデバフ量の間に強い相関がみられる。
これだけみると、魔法防御も関係ありそうにみえるが、防御力をあげようとすると物理防御と魔法防御が一緒にあがってしまうという、二つは相関関係にあるからその影響だと考えられる。
魔法防御も怪しいが、最も相関が高いのは物理防御であるし、物理防御が影響しているのだと考えている。
ちなみにフォロワーさんから「 物攻魔攻も同様に支援側のステ依存のはずですよ」という意見もあったのも結論を出した判断基準のひとつだと明言しておく。
それと、物理攻撃デバフも試してみたんだが砲台君には全然デバフがかからず、他の敵にめっちゃかかる、属性の色は影響しなさそうというざっくりとした 結果が得られた。
なぜだ?と疑問に思ったところ
「ダウン量が表示されているのではなく、対象のステの何割かを表現しているらしい」
という情報がフォロワーさんから得られた。
それについては次の調査で詳細を調べたのでよかったらみてほしい
当時の調査結果ツイート
デバフって何のステータスあげたら上がるん?
— もっぱー (@mopper27af) 2021年2月9日
っていう疑問があって調べてみました。
武器はこの物理防御大ダウン、場所はオースフィヨルドネームドさんとこの放題(hard)
装備のステータスを色々変えて1デバフあたりのダウン値を調べたところ…
防御を上げると上がることまではわかった#まどかく pic.twitter.com/qQLlEw8dlt
まどかくの演習における見た目上のバフ値と加算値がなんかおかしかったので調べてみた。
演習の戦闘画面でみえるバフ・デバフは1~20(見た目上のバフ値・デバフ値)であるが、実際に詳細なステータスをみてみると同じ11バフなのに2万千だったり8千だったりして違ってておかしいな?って思って調査してみた。
フォロワーさん方の噂によると、見た目上のバフ値は元のステータスの何割が加算されているかを示しているらしい
演習でステータスとバフを計測し、2つの散布図を作ってみた
①:見た目上のバフ値(階級値)と加算値(実際に加算されたバフ値)の散布図
→ ある程度相関はあるようだが、おかしい外れ値がいくつかある。
②:見た目上のバフ値(階級値)と加算値÷元のステータスの散布図
→ 綺麗な相関がみられる
このことから、見た目上のバフ値(階級値)は元ステータスと比較して何割程度加算したかを示しているのではないかと考えられる
=フォロワーさんの噂通り
線形回帰で関係を公式化したら 元ステータスの何% =バフ値(階級値) x 0.048 – 0.016
という結果になった。
前の調査でオースフィヨルドの放題に攻撃デバフがあんまりきかなかったのは、元の攻撃ステータスが高かったからなかなか次の階級までデバフいかなかったからかといえると思います。
ざっくりいうと、バフ11で元ステータスの1.5倍、20で約2倍って覚えとくといいかもしれません
この件、フォロワーさんから以下指摘があり、
「バフ値=加算値÷元ステ×20の小数点以下切り上げ で綺麗に収まりませんか?」
実際に計測してみたらその通りだったので、こっちで覚えておいた方がいいかもしれませんね
また、見た目上のバフ値(階級)は5%刻みであるという指摘も受け調査しましたが、実際のようだったので、
見た目上のバフ値=1のとき元ステの0~5%、2のとき元ステの5~10%・・・という感じだと思います。
こっちの方がすっきりしていてわかりやすいですね。
当時の調査ツイート↓
まどかくの演習における見た目上のバフ値と加算値がなんかおかしかったので調べてみた。
— もっぱー (@mopper27af) 2021年2月11日
結果、加算値÷元のステータスの値が約0.048増えるたびに、バフ値が1増える模様
元ステが2万なら+963増加、1.5万なら+722ごと#まどかく pic.twitter.com/tB5iWtZMe5
演習におけるデバフってステータスの影響を受けるのか?って疑問を調査しました。
演習におけるデバフってステータスの影響受けるのか? って疑問を調査しました。
装備を物理攻撃特化(物攻6937)と防御特化(物攻3614)の2種の装備で検証し、デバフを与える対象も物攻28000と13000の二パターン試しました。
結論:
- 支援側のステの影響を受ける(物攻ダウンなら物攻ステ)
- 受け手のステの影響は受けない、あるいはほぼ受けない
支援側の元ステータスに比例するようです。
計測した限りだと以下のような公式になりそうだということがわかりました。
- デバフ値=物理攻撃力x0.04-16
- バフ値=物理攻撃力x0.0323-16
サンプル数が少ないため正確ではないかもしれませんが、
少なくともバフよりデバフ値の方が高い値になるようです。
当時の調査ツイート↓
演習におけるデバフってステータスの影響受けるのか?
— もっぱー (@mopper27af) 2021年2月12日
って疑問を調査しました。
結論:
・支援側のステの影響を受ける(物攻ダウンなら物攻ステ)
・受け手のステの影響は受けない、あるいはほぼ受けない#まどかく #まどかくのちょっと役立つ知識 pic.twitter.com/JmydfAZhDE
バフ値も同様に装備を物理攻撃特化(物攻6937)と防御特化(物攻3614)に変えて試しましたが、同様の傾向ですね。
また、使用回数を重ねてもバフ値が減ることはないようです。(計測した限りにおいては
↓当時の調査記録ツイート
演習におけるデバフってステータスの影響受けるのか?
— もっぱー (@mopper27af) 2021年2月12日
って疑問を調査しました。
結論:
・支援側のステの影響を受ける(物攻ダウンなら物攻ステ)
・受け手のステの影響は受けない、あるいはほぼ受けない#まどかく #まどかくのちょっと役立つ知識 pic.twitter.com/JmydfAZhDE
支援側がステータス上昇していた場合、バフ・デバフ値は変化する?
支援側が前衛に出て、バフを受けて、それからバフ・デバフ・回復を行った場合、効果があがるのではないか?という仮説があった。
あまりちゃんと調査できていないが、
少なくとも回復量に関してはバフがかかっても全く影響なさそう(値が変わらない)ということまではわかっている。
効果はなさそうという結論が1月ぐらいの時点であったが、今月になって「効果あるらしいよ」的な噂をフォロワーさんからいただいたので、軽く再調査してみた。
バフ・デバフは乱数の影響を受けやすいし、実行時のステータスなんて把握しづらすぎる・・・
・・・ので、以前のログから効果を軽く追ってみました。
Kar18kCノイマンという狙撃銃は使用すると使用者の防御力(物理・魔法)がアップする
なので、これを使い続けながら防御系バフ・デバフを実行すると、効果があがるのではないか?
と考え、使用回数と効果を計測してみたが・・・
みたかぎりだと、あがっているようにはみえない・・・
もちろんKar18kCノイマンの効果が薄すぎるということもあるかもしれないが…
今のところの結論としては効果は少なそうか、なさそう・・・といったところです。
調査記録ツイート↓
最近のログを調査してみました。
— もっぱー (@mopper27af) 2021年2月20日
Kar18kノイマンという狙撃銃という自身の魔法防御・物理防御がupする武器を使っていたときのバフ・デバフ値と使用回数のグラフです。
ずっと後衛でデバフを受けずノイマンのバフで防御あがってるはずなのに、防御系のデバフ・バフが変わっている様子がないです pic.twitter.com/Dx0lxDhtHP
エフェクトEX2の「支援時に一定確立で~~」の発動は支援だけじゃない
私の大好きな魔導通信Cヴィーシャ、そのEX2は「支援時、一定確立で支援効果がアップし、さらに敵前衛の敵一体の魔法防御がダウン」となっているが、ログを見る限り、通信(妨害)時にも発動している。
また、劣勢時に大変便りになる「大型魔導通信機」、このEX2効果は「支援時、一定確立で支援効果がアップし、~~~」となっているが、やっぱり通信(妨害)時にも派生しているし、バフ効果のある狙撃銃実行時にも発動している。
バフ・デバフ効果発動は一律で「支援」という扱いなのだろうか…
これがバフなのか仕様なのかによって、装備品の選定基準も変わってくるため、
現在、運営に質問中である。
上記に対してゲーム内で以下の考察を頂いた。
--------------
考察をゲームプレーヤーから頂いた:
まどかくの手本となった(と思われる)シノアリスでは
攻撃の対語として「支援」という用語が使われている。
シノアリスで使われている文言を流用した際に、まどかくで使われてる「支援(武器の種類)」と単語が被ってしまったために、起こった問題ではないだろうか、
--------------
↓当時の調査ツイート
支援時に発動するEX2のはずだが、妨害でも発動している。
— もっぱー (@mopper27af) 2021年2月19日
支援扱いなのかな?#まどかく pic.twitter.com/amW9aguuu9
幼女戦記 魔導師斯く戦えり(まどかく) ダメージやエフェクトレベルについての調査記録
幼女戦記 魔導師斯く戦えり(まどかく)の相性差によるダメージの違いやエフェクトレベルによるダメージ上昇について調査してみました。
検証場所はダキア戦役2章ターニャ バトル1~3(緑・赤・青)です。
敵編成は基本一緒で色違いなだけなので、検証にもってこいです。
敵の個体性能差は…あるかもしれないですが、あんまりないと仮定して調査しています(雑
ここでの調査はあくまで使用した武器での上限についての調査です。
他の武器でも同じ傾向があるかもしれませんが、ここの調査結果と一致するかどうかは不明です。
- 要約
- 武器と敵属性の相性差について
- エフェクトレベルごとのダメージ上昇率について
- 「敵1~2体にダメージ」のエフェクトはエフェクトレベル上昇で、複数人にあたりやすくなるのか?
- 狙撃銃 FA Gew09[Cグランツ]の回復量はエフェクトレベル上昇であがるのか?
- エフェクトの回復量ってどのステータスをあげれば増えるの?
要約
今回の内容をざっくりまとめると以下通りです。
- 武器と敵属性の相性差
→ 相性が良い属性の敵:約2倍のダメージ
→ 相性が悪い属性の敵:約0.5倍(約0.47倍)のダメージ - エフェクトレベル上昇によるダメージ上昇
→ Lv12でLv1の時の約1.27倍ダメージ、Lv15で約1.35倍ダメージ
→ レベルが1増えるごとに約0.022倍ずつダメージが増える - 1~2人ダメの武器はエフェクトレベル上昇で複数人に当たりやすくなるか?
→ 期待値はLv1で1.4人、Lv10で1.5人、Lv15で1.63人
→ 微小だが上がるようだ(誤差の可能性も若干あり) - 回復武器の回復量はエフェクトレベル上昇であがるのか?
→ レベルが1あがるごとに、レベル1の時と比べて0.03倍ずつ増えている模様 - 回復量は何のステータスをあげれば増える?
→ 物理防御と魔法防御を上げると回復量が増える模様
→ 総合防御力が1あがるごとに約0.156倍ずつ回復量が増えるようだ(グランツ武器)
詳細も知りたい人は以下をご覧ください。
武器と敵属性の相性差について
ご存知かもしれませんが、まどかくでは武器や敵には色がついており、
赤は緑に強く、緑は青に強く、青は赤に強いという相性があり、赤の武器で緑の敵に攻撃するとダメージが高くなり、青の敵に攻撃するとダメージが少なくなります。
ポケモンの火・草・水タイプみたいなもんですね。
この相性差が具体的にどれぐらいあるのか調査しました。
調査では帝国正規軍刀[Cニコル]SS+ Lv80という緑属性の武器を使って、緑・青(有利)・赤(不利)を使って23~30回ほど攻撃をしてみました。
その結果、有利な敵の場合は約2倍、不利な敵の場合は約0.5倍(約0.47倍)のダメージになることがわかりました。
詳細は以下表のとおりです。
エフェクトレベルごとのダメージ上昇率について
帝国正規軍刀[Cニコル]SS+ Lv80のエフェクトレベル1,12,15にしたときのダメージ量の違いについて調査しました。(敵は緑の敵にしました。)
その結果、レベルを1あげるごとに、ダメージ量はLv1を1倍とすると、Lv12で約1.27倍、Lv15で約1.35倍となりました。
レベルが1増えるごとに約0.022倍ずつダメージが増えているのではないかと思います。
詳細な調査は以下通りです。
「敵1~2体にダメージ」のエフェクトはエフェクトレベル上昇で、複数人にあたりやすくなるのか?
「敵1~2体にダメージ」のエフェクトはエフェクトレベル上昇で、複数人にあたりやすくなるのか?という疑問があったので、
検証してみました。
武器は「軍用ダイナマイト赤」で「敵1~2体に物理大ダメージ」というエフェクトを持っています。
その結果、Lv1の時はヒット数1人が18回、2人が12回、Lv10は1人・2人ともに18回、Lv15は1人8回、2人14回という結果となり、
期待値はLv1で1.4人、Lv10で1.5人、Lv15で1.63人になりました。
Lv上昇で若干2人に当たる確率があがっている気がしますが、本当にちょっとの差なので微々たる上昇だと思います。
狙撃銃 FA Gew09[Cグランツ]の回復量はエフェクトレベル上昇であがるのか?
グランツイベントで入手できる 狙撃銃FA Gew09ですが、この武器は攻撃するごとに自身を回復させるエフェクトがついています。
この回復量って、エフェクトレベルをあげればあがるの?
この疑問を調査しました。
エフェクトLv1,10,11,12,13に変更して、回復量を調査しました。
その結果、レベル1のときの回復量は381、レベル10で381、…レベル13で408(Lv1の1.36倍)という結果となり(詳細は以下表で確認してください)
まとめると、レベルが1あがるごとに、レベル1の時と比べて0.03倍ほどずつ回復量が増えるようです。
エフェクトの回復量ってどのステータスをあげれば増えるの?
回復攻撃武器である狙撃銃FA Gew09の回復量をあげるためには、どのステータスをあげれば増えるのか疑問に思い、調査として装備を変えて攻撃したときの回復量を調べていました。
装備は、武器のみ装備、ヘッドフォン(物理防御+魔法防御up)、ベルト(物理防御+魔法防御up)、作成予備(防御も攻撃もup)の4パターンを試しました。
その結果、ベルトと作戦予備は総合力(魔法・物理の攻撃防御の合計)が同じ程度でしたが、ベルトの方が回復量が高い結果となり、物理攻撃と魔法攻撃のステは回復量の増減に寄与しないことがわかりました。
また、ヘッドフォンとベルトでは総合防御力(魔法・物理の防御合計)が高いベルトの方が回復量が高い結果となり、回復量は総合防御力によって増減することがわかりました。
また、総合防御力が1あがるごとに約0.156倍ずつ回復量が増える傾向にあることがわかりました。
幼女戦記 魔導師斯く戦えり(まどかく) おススメな熟練度稼ぎ方法
こんにちわ、もっぱーです。
今日は幼女戦記 魔導師斯く戦えり(まどかく)
というスマホゲームにおけるおススメな熟練度稼ぎ方法について紹介したいと思います。
※この解説は2021/1/17のものです。
※バージョンアップ等で最適な稼ぎ方が変わる可能性があります。
熟練度とは?
ポジションを強化(レベル上げ)するために必要なポイントです。
熟練度は戦闘で獲得することができます。
獲得できる熟練度は戦闘でプレーヤーが消費した魔力量(作戦予備以外)が多いほど高くなるため、
戦闘時間が長くたくさん攻撃するほど高くなるのですが、
現在(2021/1月中旬)は戦闘が長くなるような敵はほとんどいないので、数十~300程度しか得ることができません。
ポジションはレベルが高いほど必要な熟練度は高くて
Lv1→10で3万必要で、Lv10→12は5万、Lv13→14は5万必要となり、通常の戦い方では途方もない戦闘回数が必要となり、ポジション強化のためには意図的に熟練度を多くする戦い方が必要となります。
※Lv12→13は忘れました…orz
私が熟練度稼ぎをするときはオートで2000、手動で3000~5000程度の熟練度を稼いでいます。
これは所有している武器や同行者によっても獲得量は結構違うとは思いますが
少なくともこのやり方をすれば、やみくもに稼ぐよりポジションのレベル上げが格段にしやすいかと思います。
ちなみに連携数は熟練度には影響しないようです。
熟練度を高めるコツ(攻撃する場合)
獲得する熟練度を高くためには魔力の高い武器でたくさん敵を殴り続ける必要があります。
そのためのポイントとしては以下があります。
・魔力消費量が高い武器を1つだけ装備する
武器による魔力消費→補充(魔力20消費)の繰り返すことで効率よく熟練度を稼げます。
武器は使用できるタイミングが決まっていますが、補充はそれ以外のタイミングで実行できるので
複数種類の武器をで攻撃するよりも消費魔力を多くすることができます。
また、武器1つのみにすることでダメージが減り、攻撃回数を増やすことにもつながります
・装備武器はエフェクトに魔力回復があるものにする
高い魔力量の武器をたくさん使っていると自然回復量をオーバーして魔力切れを起こし、行動不要になってしまうことがあります。
魔力切れで行動不能な時間を減らすために魔力回復エフェクトを持つ武器がおススメです。
・サブ装備はなし
総合力が高くなるとすぐ敵が倒れてしまう可能性があるためです。
・作戦予備は装備武器を強化できるものを1つだけ装備する
なくでもいいですが
敵を倒せなくなったときの保険として持っているといいと思います。
物理ダメージの武器なら物攻upの戦略予備など長期間影響するものがおススメ
・敵は回復持ちが複数いるダキアがおススメです。
・自身の武器の色と敵の色を考慮して、敵を選ぶ
まずは同じ色の敵と戦ってみて、1ダメージが高すぎるなら、
アンチの色の敵と戦う方針に変更(ダメージが半減する)し、
逆に低すぎるなら自身が有利な敵と戦う方針に変更する(ダメージが倍増する)
とよいかと思います。
補足:色の相性は以下三すくみとなっています。
緑の武器 → 敵:青に有利、赤に不利
青の武器 → 敵:赤に有利、緑に不利
赤の武器 → 敵:緑に有利、青に不利
あとはポジションとマッチさせるかどうかで調整することもできます。
例:ターニャエリアの場合、ターニャでプレイするとダメージがあがるので、
ダメージが足りない場合はターニャでプレイする
・同行者を熟練度稼ぎ用メンバーで固定する
おススメなメンバー設定は
同行者3~4人を攻撃をしない支援や回復のみにして、
残りの0~1人を総合力が低い攻撃メンバーにすることです。
詳細は後述します。
おススメ武器
私のおススメ武器は「ヴェネマン重機関銃」(SS+)です。
この武器は消費魔力が22と高いのと、魔力を30回復するエフェクトを持っているため
魔力切れを起こさず無限に攻撃が可能です。
また大ダメージのくせに最大まで鍛えてもダメージがそれほど高くならないのも魅力のひとつです。(褒め言葉)
ガチャで入手できる武器ですので、意図的に取得できないのが辛いところです。
これ以外でも消費魔力が高く・エフェクトが魔力回復の武器は熟練度上げに利用できると思います。
同行者について
自身のダメージが弱かったとしても同行者が敵を倒してしまう可能性があります。
そのため、同行者は熟練度上げに向いているメンバーで固定する必要があります。
おススメなメンバー設定は
同行者3~4人を攻撃をしない支援や回復のみにして、
残りの0~1人を総合力が低い攻撃メンバーにすることです。
固定にできる同行者は戦友のみですので、熟練度上げに向いている人をフォローしておく必要がありますが
どういった人をフォローすればよいかというと
戦闘をした時の同行者のうち総合力が極端に低い人を探したり、知人に紹介してもらうなどしてフォローするぐらいしかありません…
同行者の装備はメイン装備ではなく
その同行者が最後に行った戦闘の装備が反映されるようで、いつの間にか変わっていることがあります。
支援・回復のみの人や弱い攻撃の人は
ポジションが後衛であること、装備の数が極端に少なく、総合値が低い…という傾向にあるので同行者設定で選択した戦友のみを選ぶ際には参考にしてみてください
おススメの敵や戦い方について
ダキア/hard/2章のターニャエリアが私のおススメです。
1つのフェーズごとに2人の回復役がいるため、ダメージが回復より少し多い程度にしておくことで敵が長く生存しやすいです。
残り時間が少なくなってきたら回復役2人(衛生兵と指揮官)を集中攻撃したり、意図的にこれらを攻撃対象から外して回復してもらい生存し続けたりすることもできます。
回復量は衛生兵が190程度、指揮官が300程度だったと思います。
衛生兵の方が回復頻度が多いように思えます。
回復対象は1~2人でランダムのようです。
共闘での熟練度稼ぎプレイについて
熟練度稼ぎは皆で共闘してプレイするのもおススメです。
長時間の戦いになるので、チャットでワイワイしながらの熟練度稼ぎは楽しいですし、モチベーション維持にもつながります。
時間切れに近くなってきたら回復役をみんなで集中攻撃したりするのも面白いです。
注意点として、同行者を固定している場合、その固定メンバーしか共闘ができないため、
参加者はあらかじめ同行者として設定しておく必要があります。
また、同行者がCPUの状態では最後に戦闘した時の装備が反映されるため、強い装備のままだとCPUが敵を倒してしまう可能性があります。
可能であれば、共闘前にどこかで熟練度上げ装備で戦闘してもらうのがいいかと思います。
私もフォロワーさんとよく熟練度稼ぎをしたりしているので、興味ある方はぜひTwitterで声をかけてください。
あとがき
いかがだったでしょうか?
この記事が少しでも皆さんの熟練度上げに役だったなら嬉しく思います。
ちなみに、私のベスト熟練度は5,176です。(12/28)
単独でプレイして
残り1分を切るほど長時間戦い続けてたたき出したスコアですが、
未だにこれを上回るスコアは出せていません。
皆さんもぜひ熟練度のハイスコアアタックに挑戦してみてください。
以上です
OpenMVGの環境構築手順について~静止画ファイル群から3DCGを作ろう!~
◆目次
- ◆目次
- 前書き
- ◆環境構築手順
- ◆自分で用意した静止画ファイルを使って3DCGを作成する場合
前書き
本記事はOpenMVGというオープンソースライブラリのサンプルコードを実行するための環境手順です。
静止画群から以下のような3DCG(厳密にはメッシュ+テクスチャ)を作るチュートリアルの環境構築についての記事です。
◆OpenMVGとは
Structure From Motion (SfM) の手法を使用したライブラリです。
複数の位置から撮影した静止画像群から、物体を3次元空間で推定します。
簡単にいうと複数の静止画から3Dのメッシュ(あるいはテクスチャ尽きメッシュ≒3DCG)をアウトプットしてくれるライブラリです。
◆Structure From Motion (SfM)とは
一連の 2 次元イメージから 3 次元シーンの構造を推定する技術です。
3 次元スキャンや拡張現実(AR)などで使用されています。
参考)
structure from motion - MATLAB & Simulink - MathWorks 日本
◆この環境構築の前提環境
以下環境での作業となります。
・OS:Windows 10
・python : 3.6.x
・Visual Studio >= 2015 (recommended)
・GCC >= 4.8.1
・Clang >= 3.3
・メモリ:8GB以上(16GB以上が望ましい)
・git インストール済み
◆参考資料
本記事は以下資料をもとに、不足部分や変更部分を加工したものとなります。
詳しい技術的な話は以下記事を参考にしてください
OpenMVSのサンプルを動かしてみる | NegativeMindException
◆環境構築手順
1.OpenMVGのソースをrecursive付きでCloneする。
コマンド:
git clone --recursive https://github.com/openMVG/openMVG.git
注意:
※recursiveがないと、cmakeでエラーになる
※recursiveはモジュールもクローンするオプション
2.Visual Studioのインストール
Visual Studio 2019 Communityをインストール(2015以降であれば可能)
ダウンロード | IDE、Code、Team Foundation Server | Visual Studio
インストール時の選択項目であるワークロードはとりあえず以下としたが、特に意図があるわけじゃないので、各自の状況にあわせて選択してください。
・python開発
・.NETデスクトップ開発
・C++によるデスクトップ開発
※インストールが終わったらPC再起動
※インストールが終わったらVisual Studioを起動してみる
3.Cmakeのインストール
CMake:機種依存やOS依存などを解決してくれるためのツール
インストール方法参考:
WindowsでCMakeを使い、Visual Studio用のプロジェクト/ソリューションを生成する。 | FRONTL1NE
※インストール時の選択項目
コマンドラインから使う可能性があるなら、以下のどちらかにチェックする。
「Add CMake to the system PATH for all users」
「Add CMake to the system PATH for the current user」
4.cmake-guiを起動する
4-1.「source code」に1で取得したソースコードのsrcフォルダパスを指定
4-2.「build the binaries」に出力するフォルダパスを指定
4-3.「Generate」ボタンを押す
4-4.「Spencify the generator for the project」をVisual Studioに設定
※2015以降
4-5 「Finish」ボタンを押す
4-6.処理が終わるまで待つ
以下エラーが出た場合はOpenMVGのclone時に「recursive」をつけていない可能性がある。(つまりやり直してみてください)
Error in configuration process
project files may be invalid
「Configuring done」と表示されれば終了
4-7.「Generate」ボタンを押す。
以下が表示されれば終了
「Configuring done」
「Generating done」
5.VisualStudioでビルドする
5-1.4で出力したフォルダにある「openMVG.sln」を開く
5-2.出力をRelaseモードにする
5-3.ビルド→ソリューションのリビルドでビルドする
※数分~10分以上かかります。
6.サンプルコードのセットアップ
6-1.クローンする
git clone https://github.com/cdcseacave/openMVS_sample
6-2.MvgMvs_Pipeline.pyを書き換える。
修正箇所
# python 2.x系時代のライブラリ、今は使われていないのでコメントアウト # import commands # 5でビルドしたファイルに出力パスを指定
# 私の環境だと、以下のようなパス
OPENMVG_BIN = "{4で出力したフォルダパス}/Windows-AMD64-Release/Release/" # openMVSのパス # 6-1でクローンしたフォルダのbinフォルダで代用可能 OPENMVS_BIN = "{6-1でクローンしたフォルダパス}/bin/" # sensor_width_camera_database.txtの保存先のパスを指定する CAMERA_SENSOR_WIDTH_DIRECTORY = "{1でクローンしたOpenMVGのパス}/src/openMVG/exif/sensor_width_database/"
あとはprint文が旧仕様になっているので修正
あとタブが違ってる行があるので修正※230行目付近
7.サンプルの画像をダウンロード
※Sceaux Castleの画像セット
git clone https://github.com/openMVG/ImageDataset_SceauxCastle
8.サンプルコードの実行
python MvgMvs_Pipeline.py {7でダウンロードしたデータのimagesフォルダパス} {出力フォルダパス}
出力フォルダにmvsフォルダが作成され、「*.ply」ファイルができていることを確認する。
できてなければ何かしらエラーが出ている。
9.MeshLabをインストールする。
静止画から出力した3Dメッシュを表示するためのソフト
10.MeshLabを起動する。
File→Import Mesh で8で出力した「*.ply」ファイルを選択する
例:scene_dense_mesh_refine_texture.ply
◆自分で用意した静止画ファイルを使って3DCGを作成する場合
1. sensor_width_camera_database.txtファイルに撮影したカメラの情報を追記する。
最後の行に以下フォーマットで追記を行う
{撮影したカメラの名前};{センサーの横幅}
詳細:
以下サイトの方が詳しく載っています。
センサーの横幅については以下を参考にするとよいかと思います。
◆センサーの横幅例:
・1型 :13.3
・1/2.3型 :6.2
2.静止画ファイル群を1つのフォルダにまとめる
3.サンプルコード実行
python MvgMvs_Pipeline.py {静止画のフォルダパス} {出力フォルダパス}
注意)画像枚数が多いほど、メモリ容量が必要です。
今回は24枚で試しましたが、メモリ8GBギリギリ使用していました。
枚数64枚で試したときはメモリ不足なせいか、途中でエラーになりました。
4.実行結果例
OpenMVGで再現した幸子のメッシュ&テクスチャがこちら!
— もっぱー (@mopper27af) November 24, 2019
撮影角度が一定だったせいで、真下と上から見ると結構崩れちゃうけど、それでもかなり再現できていると思う。#OpenMVG pic.twitter.com/O9Y42yoheE
Windows10が起動できない!セーフモードに入れない!ピンチ
短くまとめると
- ドライバインストールしたらWindowsが起動できなくなった
- Windows10のデフォルト設定ではセーフモードで起動できない
- BIOSのFast Boostを無効にする
- 起動時に電源ボタン長押しで終了を2回実行
- 次の起動で自動復旧画面になるので、スタートアップの設定を選択して再起動
- 起動オプションの選択画面になるので、セーフモードを選択して起動
- 問題となったドライバをアンインストールして、改善
- めでたしめでたし
------------------------------------
経緯
外出先でノートパソコンを使う際に外部モニタがほしくて
モバイルモニタ(LCD-10000U3H/CENTURY)を買いました。
入力はUSBとHDMIの二種類あって、私のノートパソコンは両方対応しているので、
ドライバ不要のHDMIだけ使えばよかったのですが、
念のため、USBのドライバーをインストールしてみたところ、
インストール後の再起動でPCが起動しなくなりました。
PCメーカーのログのあと、Windowsのログイン画面になるはずが、ログイン画面が出ない。
「まっ、セーフモードで起動して様子見しましょう」
と思うも、起動時にF8連打しても一向に起動しない…
焦った私が調べたところ、従来と違いWindows 10では手動で設定しないとセーフモードで起動できないことが発覚!!
参考:https://boxil.jp/beyond/a5943/
しかし、強制終了を2回すれば、その次の起動で自動修復用の画面になって、そこからセーフモードで起動できるとのことなのでチャレンジ!
参考:https://www.pasoble.jp/windows/10/pc-kidousinai-safemode.html
しかし何度も強制終了しても自動修復用画面にならない!私ピンチ!
と思って色々調べたところ、
どうやらBIOSの設定で、Fast Bootを無効にするとよいらしいことが発覚!
※Fast Boot有効の場合、PCの電源ONやリセットを行った時、UEFI・BIOSが行うセルフチェックなどを最小限にして素早く起動させる
参考:https://freesoft.tvbok.com/tips/efi_installation/safemode_boot_f8.html
起動時にF2を連打(lenovo仕様、メーカーにより違う)でBIOSに入り設定を行うと、
見事に自動修復画面に!
そこからスタートアップの設定で再起動、そして起動モードの選択肢が出てくるのでセーフモードで起動させて、インストールしたドライバをアンインストールしたところ、無事に起動できるようになりました。
※セーフモード以外に復旧させるツール等ありましたがうまく修復できなかったためセーフモードを頼りました。
めでたしめでたし。
電気会社を東京電力→東京ガスに変更した
電力業者選択
引越し時の電力会社選択で、ガスとセットだと安い、東京ガスを選ぶことにしたんだけど、
私が選ぼうとしたプランは30A以上じゃないと契約できなくて、アンペア変更が必須だった。
アンペア変更も一緒にお願いしようと思ったんだけど、時期的に工事が間に合わない(引越しの一週間前の連絡した)
と言われ、
「東京電力ならすぐにアンペア変更できるから、まずは東京電力と契約して、契約後にこっちに乗り換えてほしい」
という提案を受け、東京電力にはちょっと申し訳ないかなぁ、と思いつつも承諾した。
ご丁寧なことに、東京電力との解約手続きもやってくれるそうだ。
その際に東京電力と契約した際の以下が必要だった
・供給地点特定番号
・お客様番号
・地区番号
これらは明細書に乗っているらしいのだが、その明細書を紛失してしまった。
明細書から確認する場合↓
https://support.tepco.co.jp/faq/show/3197?site_domain=business
困っていたら東京電力から「くらしTEPCO」のログインパスワードが送られてきた!
「くらしTEPCO」でログインしてみたところ契約内容に必要な情報があった!
助かった!
↓「くらしTEPCO」
https://www.kurashi.tepco.co.jp/pf/ja/pc/mypage/home/index.page?
Anacondaで作った仮想環境をJupyter Notebookで使う方法
◇はじめに
Anaconda Navigatorで作った仮想環境でJupyter Notebookを使おうと思ったんだけど、
Jupyter Notebookを起動できないし、Jupyter Notebookから仮想環境(kernel)を切り替えることもできなかったので方法を探ってみた。
Navigatorから作る方法はいまいち見つからず、
しかも、Anaconda Navigatorだと、仮想環境がユーザーフォルダの下に作られてしまい、ユーザー名が日本語だと、正常動作しないコマンド等があるみたい。
最終的にコンソール(Anaconda Prompt)から作る方法を見つけ、それで成功したのでここにまとめておく。
注意)
基本的に以下サイトに乗っていることを、私側で実現できるようにまとめたものなので、こちらを読んだ方がよいかもしれませんhttps://qiita.com/yoppe/items/38005f415a5b8b884c7d
Jupyterの設定ファイル生成のところに、
最新版では
c.EnvironmentKernelSpecManager.env_dirs=〜〜〜
の一行で大丈夫と書いているが、環境によっては以下も必要だった
(=古い可能性ありの方)
c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
あと、上記には書かれていないけれど、仮想環境を作るたびに、
作った仮想環境で pip install jupyter が必要です。
(base環境にインストールされてたら不要かもしれませんが)
◇前提条件
・Anaconda 3.x系がインストールされていること
・OS:Windows 10
◇アップデート
※最新をインストールしたなら無視してOK
少し古い環境なので以下を参考にしてアップデートした。
https://qiita.com/kznx/items/79d5b122a2eb0ab91067
◇仮想環境を作成
1.管理者権限で「Anaconda Prompt」を起動する(base環境で起動する)
2.pipをupdate
python -m pip install --upgrade pip
この次の「jupyter_environment_kernels」をやるためには、pip ver 10.0.1が必要だったようだ
3.jupyter_environment_kernelsをインストール
以下コマンドを入力する。
pip install environment_kernels
4.jupyterの設定ファイルを作成
以下コマンドを入力する。
jupyter notebook --generate-config
5.Conda環境を読み込む設定追記
C:\Users\{ユーザー名}\.jupyter\jupyter_notebook_config.py
を開き、以下を追加する
c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.env_dirs=['C:/Program Files/Anaconda3/envs/']
※「C:/Program Files/Anaconda3/envs/」は仮想環境のフォルダ。ユーザーフォルダの場合がある。
6.仮想環境を作る
以下コマンドを打つ
conda create -n ml_test python=3.7
※仮想環境の名前:ml_test
※pythonのバージョン:3.7
base環境はpython 3.6.6だがそれより新しい仮想環境作れるんですね。びっくり
実行中にProceed ([y]|n)?と聞かれるのでy
補足)
以下コマンドを実行すると、作成済み仮想環境一覧が見える
conda info -e
7.作成した仮想環境に切り替える
以下コマンドを打つ
activate ml_test
8.jupyter notebookをインストール
pip install jupyter
9.コンソールを終了させる
10.jupyter notebookを起動させ、ipynbファイルを開く
メニュー→kernel→Change kernel→ 作成した仮想環境が選択できるように!
※これ以降に仮想環境を追加する場合は
6〜8の手順を行う必要があります。