約 3,656,954 件
https://w.atwiki.jp/overfishing/pages/65.html
目次 目次 浮き輪 金イクライクラ化から取得まで 取得から納品まで シャケモグラ テッパン ヘビ バクダン コウモリ コウモリの雨弾 カタパッド カタパッドのミサイル タワー タマヒロイ 特殊な状況キンシャケ探し グリル発進 ハコビヤ襲来 移動速度シャケ プレイヤー 移動速度の推定方法 プレイヤーの移動速度との比較メモ コメント キャプチャーボードによって60fpsで録画したゲーム画面を観察し、各種動作にどれくらいの時間がかかるのかを計測してみました。内部パラメータを参照したわけではないので、誤差が多分に含まれると思われます。 何かお気づきの点があれば、ぜひ記事を編集していただくか、ページ下部のコメント欄からコメントを投稿していただければ幸いです。 浮き輪 死んでから救出されるまでのアクションを時系列で表にした。 ※水没 0F 水没 163F(2.7秒) タゲが切れる/名前の表示位置が浮き輪の出現場所に移動する 290F(4.8秒) 救出される 163F(2.7秒)の間、タゲや生存判定が残る。 名前の位置が変わってから救出されるまで127F(2秒)。 ※ダメージによるデス 0F デス 151F(2.5秒) 名前が消える 215F(3.6秒) 名前が再び表示される 336F(5.6秒) 救出される 名前が再び表示されてから救出されるまで121F。 水没死は救出まで4.8秒、ダメージによるデスは救出まで5.6秒。救出が速いのは水没だが、タゲ(生存判定)が2.7秒残るというのはデメリットにもなりうる。要選択。 救出されてからシャケに認識されるまでにかかる時間は180F(3.0秒)。 金イクラ イクラ化から取得まで オオモノシャケのイクラ化からイクラ取得までの所要フレームについて。シャケを撃破した瞬間を0Fとして、金イクラに網が巻き付いた瞬間のフレームを計測した。 計測対象のオオモノシャケはカタパッドである。平地において、スプラッシュボムまたはジェットパックを用いてカタパッドを墜落させてイクラ化した。 ジェットパック 32F ヒト状態でジャンプ 42F ヒト状態 59F イカ状態 77F 取得から納品まで 金イクラに網がかかった瞬間から金イクラが空中から消える瞬間までの所要時間は30Fだった。その次の31F目に納品可能と思われるので、金イクラの納品速度は最速で31F/個。 シャケ モグラ 起動した瞬間を0Fとしたときのアクションを時系列で表にした。 0F 起動 62F 顔を出す 130F(2.2秒) ボムで倒した場合ここでイクラ化 152F(2.5秒) モグラが顔を引っ込める 230F(3.8秒) 次の起動 また、モグラをコンテナ前でボムで倒して納品するまでのアクションを時系列で表にした。 0F 起動 62F(1秒) 顔を出す 130F(2.2秒) ボムで倒してイクラ化 172F(2.9秒) ヒトジャンプでイクラをキャッチ 203F(3.4秒) 納品 攻撃受付時間は90F。1200/2/(90/60)=400 DPS以上のブキならツーターンキル可能。合計800 DPS以上のブキ群で殴ればワンターンキル可能。 ボムで倒した場合、顔を出してからイクラ化まで68Fかかる。68F以内に殴り倒せるなら、殴り倒したほうがテンポアドバンテージ+インクアドバンテージ。 ボムで倒した場合、納品まで3.4秒かかると思ってよい。残り3.4秒(=画面に大きく「4」と表示されてから0.6秒後)を切ってから起動したモグラは、殴り倒すことを推奨。画面に大きく「3」と表示されてから起動したモグラはボムでは絶対に間に合わない。 顔をひっこめてから再度起動するまでに78Fかかる。それに203Fを足すと281F(4.7秒)なので、残り4.7秒(画面に大きく「5」と表示されてから0.3秒後)を切ってから顔を引っ込めたモグラを再度起動時にボムで倒してそのイクラを納品する、というのは間に合わない。 モグラの座標が変わらず、かつ攻撃もできない時間が180F(3秒)ほど経過すると、タゲが変わる。 テッパン テッパンに対して「攻撃を当てる」「盾に体当たりする」などのアクションを起こすと、テッパンは動きを止め、一定時間が経過してから再び動き出す。その所要時間を表にした。 盾に体当たりする 40F(0.7秒) 攻撃を当てる 130F(2.2秒) ブレーキ中に攻撃を当てる/盾に体当たりする 〃 スタンさせる 260F(4.3秒) スタン中に攻撃を当てる/盾に体当たりする 240F(4秒) スタン中またはブレーキ中、体当たりするだけでスタンを延長できる。インクがない場合に活用する。 テッパンがブレーキ状態になってから2.2秒経過すると、テッパンは再び動き出し、それと同時に盾のHPが全回復してしまう。すぐにテッパンをスタンさせられなくても、2秒に1発攻撃を当てるとよい。 テッパンがスタン状態になってから4秒経過すると、テッパンは再び動き出し、やはり盾のHPが全回復してしまう。すぐにテッパンを撃破できなくても、4秒に1発攻撃を当てるとよい。 ヘビ ヘビが自分の体長(アゴの先から運転手の尻尾まで)分の距離を進むのにかかる時間は約325F。 バクダン 起動した瞬間を0Fとしたときのアクションを時系列で表にした。 0F 起動 80F(1.3秒) 弱点を露出 162F(2.7秒) ボムを投げる 270F(4.5秒) (タゲが攻撃範囲から外れた場合)移動 386F(6.4秒) (タゲが攻撃範囲から外れていない場合)次の起動 攻撃受付時間は83Fくらい。いつから攻撃受付を終了しているのかを判断するのが難しい。 連続起動周期は386F。 バクダンを1回だけ止めた場合、270F(4.5秒)のテンポロスになる。 バクダンの起動範囲に入っても、実際に攻撃を開始するまでにかなり猶予がある感じがする。 コンテナ横のバクダンを起動した瞬間に倒せる場合、起動(と同時にイクラ化)80F+ヒトジャンプイクラキャッチ42F+納品31Fで、起動から納品まで153F(2.6秒)かかる。 バクダンがボムを投げてから再度起動するまでは386-162=224Fかかる。それに153Fを足すと377Fで、6.3秒。つまり、残り6秒を切ってからボムを投げたバクダンは納品が間に合わない。 ハイプレでバクダンを倒すのにかかる時間は250F(4.2秒)。 コウモリ コウモリが停まった瞬間を0Fとしたときのアクションを時系列で表にした。 0F 停まる 163F(2.7秒) 雨弾を撃つ(1発目) 358F(6.0秒) 傘が完全に閉じる 555F(9.3秒) 雨弾を撃つ(2発目) 750F(12.5秒) 傘が完全に閉じる 765F(12.8秒) 飛行モーションに移行する 1000F(16.7秒) 再び停まる 雨弾の発射周期は392F(6.5秒)。1発目を撃ってから6.5秒後にもう1発撃たれる。 雨弾を射出した瞬間から傘が閉じ切るまでは195Fほどあるが、実質的な攻撃受付時間は約180F。 停まってから765F(12.8秒)後に飛び立つ。 コウモリが連続で飛行するときのアクションを時系列で表にした。 0F 飛行モーションの開始 20F かがんでから飛び立つ 85F(1.4秒) 最高高度に達する 200F(3.3秒) 着地して傘が閉じ切る 227F(3.8秒) 次の飛行モーションを開始 飛行周期は227F(3.8秒)。 攻撃受付時間は180Fほど(かがんだ瞬間から攻撃できる)。 コウモリの雨弾 射出された瞬間を0Fとしたときのアクションを時系列で表にした。 0F 射出される 75F(1.4秒) 装甲が剥げる 168F(2.8秒) 雨雲が撃ちあがる 263F(4.4秒) 雨が降り始める 603F(10.1秒) 雨が止む 雨弾の攻撃受付時間は92F。 雨が降っている時間は340F。 カタパッド カタパッドが定位置に着き下降し始めた瞬間を0Fとしたときのアクションを時系列で表にした。 左右は、カタパッドに向かって見たときのもの。 0F タゲを決定し下降し始める 72F 左のフタが開く 80F 右のフタが開く 182F 左1発目を発射する 202F 右1発目を発射する 222F 左2発目を発射する 242F 右2発目を発射する 262F 左3発目を発射する 282F 右3発目を発射する 302F 左4発目を発射する 322F 右4発目を発射する 447F 右のフタが閉じる 453F 左のフタが閉じる 550F 攻撃モーションを終了し次の駐車場への移動を始める 711F (駐車場の移動がない場合)次のタゲを決定し下降し始める 攻撃周期は最速(駐車場の移動がない場合)で711Fほど。駐車場の移動がある場合900F以上になることもある。 両翼が破壊された瞬間(=ボムが爆発した瞬間)から60F後にイクラ化する。ただし、浮かんでいる床からの距離によって長くなりうる。 カタパッドのミサイル 発射された瞬間を0Fとしたときのアクションを時系列で表にした。 ※カタパとの距離がほとんどないとき 0F ミサイルが発射される/タゲの周囲にサークルが表示される 101F ミサイルがタゲの上空でいったん静止し着弾先を向く/着弾先にマーカーが表示される 167F ミサイルが着弾する ※カタパとの距離が「コウモリの索敵半径」x2ほどのとき 0F ミサイルが発射される/タゲの周囲にサークルが表示される 158F ミサイルがタゲの上空でいったん静止し着弾先を向く/着弾先にマーカーが表示される 222F ミサイルが着弾する ※カタパとの距離が「コウモリの索敵半径」x6ほどのとき(干潮の先端から通常潮の逆側の先端まで。通常のプレイではありえない) 0F ミサイルが発射される/タゲの周囲にサークルが表示される 297F ミサイルがタゲの上空でいったん静止し着弾先を向く/着弾先にマーカーが表示される 356F ミサイルが着弾する 前提として、ミサイルの挙動にはかなりランダム性が見られ、また地形の影響も含まれる。上の数値はあまりあてにならない可能性が高い。 射出(サークル表示)から着弾まではざっくり2~3秒以上。カタパとの距離が近いほど着弾も速い。 着弾マーカーが出てから実際に着弾するまではざっくり1秒強。こちらはカタパとの距離とは関連が見られない。 タワー タワーがビームを吐き終わった瞬間を0Fとしたときのアクションを時系列で表にした。 0F ビームを吐き終わって上を向く 65F タゲを決定しタゲのほうを向く 90F (タワーから見て)右を向く 128F 左を向く 158F 右を向く 197F 左を向く 212F タゲのほうを向く 271F ビームを吐き始める(まだ攻撃判定はない) 301F ビームが実体化する 573F ビームを吐き終わる 湧いてから駐車場に着くまではざっくり5秒(もちろん湧き位置と駐車場の距離による)。 駐車場に着いてから攻撃モーションに入る(駐車場に着いた瞬間=ビームを吐き終わった瞬間)。 攻撃判定が発生している時間は272F(4.5秒)。 攻撃周期は573F(9.6秒)。 したがって、1本のタワーを100秒放置したときは約10回攻撃し、45秒ほどビームの攻撃が発生することになる。 タマヒロイ タマヒロイがイクラの前にたどり着いた瞬間を0Fとしたときのアクションを時系列で表にした。 0F イクラの前にたどり着く 172F(2.9秒) 1個目を拾う 253F(4.2秒) "しめしめ"モーションを終えて2個目を向く 424F(7.1秒) 2個目を拾う 504F(8.4秒) "しめしめ"モーションを終えて3個目を向く 678F(11.3秒) 3個目を拾う 760F(12.7秒) "しめしめ"モーションを終えて帰宅を始める イクラの距離とタマヒロイの位置によっては、イクラを拾ってから次のイクラを拾うまでに多少の移動を挟むことがある。 「1個残し」「2個残し」の場合は、単純に「2個目を向く」「3個目を向く」が「帰宅を始める」に置き換わる。 タマヒロイのリスポーン間隔は213F(3.55秒)で、これはえむいー氏によって調べられた。イクラが発生してからスポーンするまでの時間もおそらく同じと思われる。 特殊な状況 キンシャケ探し 『キンシャケ探し』におけるキンシャケは、出現した瞬間から数えて240F(4秒)のあいだ泉の上に浮かび、そのあと40Fかけて落下する。落下したあとは目的地の間欠泉に向かって歩いていく。目的地の間欠泉の前に立つと、120Fかけて栓の中に飛び込む。 キンシャケが死んだ瞬間、あるいはキンシャケが栓に隠れた瞬間から120F後にターンが切り替わる。ターンが切り替わった瞬間、栓の周囲がうっすらと紫色に光り、クマサンの「ふむ… キンシャケが かくれているようだ」というメッセージが現れる。 このとき、前のターンで開けられていなかった栓に対しては、ただちに攻撃を加えて開栓することができる。 一方、前のターンで開けられていた栓に対しては、ただちに攻撃を加えることができない。これは、泉が栓を覆っているためである。 この栓に攻撃が加えられるようになるのは、ターンが切り替わってから60F後(=キンシャケを倒してから180F後)。そして栓に最速で100ダメージを与えた場合でも、実際に栓が開くのはターンが切り替わってから120F後(=キンシャケを倒してから240F後)。すなわち、栓に100ダメージ与えてから栓が開くまでに最大1秒のタイムラグが生じる場合がある。 グリル発進 グリルがスタンしてから再度動き出すまでの時間は約290F。 グリルのリスポーン間隔は約180F。 ハコビヤ襲来 シャケコプターの射出周期は50F。 移動速度 シャケの移動速度についてまとめる。 シャケ 種類 推定移動速度(DU/F) シャケ 0.72 コジャケ 1.05 ドスコイ 0.55 タマヒロイ 1.04 バクダン 0.65 ヘビ 0.94 テッパン 1.14 モグラ 1.44 グリル(MAX) 1.95 霧キンシャケ 0.55 ラッシュシャケ(MAX) 2.31 間欠泉キンシャケ(大) 0.85 間欠泉キンシャケ(中) 1.02 間欠泉キンシャケ(小) 1.19 プレイヤー 種類 移動速度(DU/F) 重量ヒト移動 0.88 中量ヒト移動 0.96 軽量ヒト移動 1.04 重量イカダッシュ 1.728 中量イカダッシュ 1.92 軽量イカダッシュ 2.016 移動速度の推定方法 シャケが特定の区間を通過するのに必要なフレーム数、および同区間を中量ヒト移動で通過するのに必要なフレーム数を動画から目視で測定した。両者の比を、既知の値である中量ヒト移動速度0.96に乗じることで、シャケの移動速度を推定した。 プレイヤーの移動速度との比較メモ テッパンはスプラローラーの塗り進み初期速度1.08より速く、塗り進み終端速度1.32より遅い。 モグラはスプラローラーの塗り進み終端速度1.32より速い。 ヘビは重量ヒト移動速度0.88より速く、中量ヒト移動速度0.96より遅いかほぼ同速。 バクダンは14式竹筒銃・甲の最大チャージ中移動速度0.6より速い。 ラッシュシャケ(MAX)は軽量イカダッシュ速度2.016より速い。 霧キンシャケはノヴァブラスターの射撃時移動速度0.5より速い。 霧キンシャケとドスコイはRブラスターエリートの射撃時移動速度0.55より速いだろうか?[未検証] グリル(MAX)は中量イカダッシュ速度1.92または軽量イカダッシュ速度2.016よりも速いだろうか?[未検証] 間欠泉キンシャケ(大)は重量ヒト移動速度0.88より遅いかほぼ同速。 コメント 何かあればお気軽にコメントしてください。 テスト -- ガンジー (2020-09-13 02 49 30) 名前 コメント
https://w.atwiki.jp/nekotyo/pages/4.html
管理関係 トップ ・ 管理人 ・ コメント 攻略書き方 ・ 書き方練習 DJMAX トップ / 5key Lv ・ 7key Lv よくある質問 ☆曲別攻略 ■ 攻略1~5 ├ 風にお願い ├ End of the Moonlight ├ Enemy storm ├ Extreme Z4 └ Luv Flow ■ 攻略6~10 ├ Never Say ├ Out Law ├ Ray of Illuminati ├ Save My Dream └ Light House ■ 攻略11~15 ├ One The Love ├ Sunny Side ├ Long Vacation ├ Can We Talk └ JBG ■ 攻略16~20 ├ Eternal Memory ~少女の夢~ ├ MASAI ├ NB Ranger ├ SIN └ Funky Chups ■ 攻略21~25 ├ Fever GJ ├ Yo! max! ├ Every Morning ├ Astro Fight └ FTR ■ 攻略26~30 ├ ON ├ Too Fast ├ Jupiter Driving ├ Elastic Star └ Carmen Fantasy ■ 攻略31~35 ├ Ya! Party! ├ Catch Me ├ Red ├ Revenge └ Para Q ■ 攻略36~40 ├ Tempatation ├ Carmen Toreador ├ Mozart Symphony no40 1st movement ├ 1st-sync └ ピアノ協奏曲1番 ■ 攻略41~45 ├ Electro Sensibility ├ Futurism ├ Getup ├ Oblivion └ Rock or Die ■ 攻略46~50 ├ Detonator ├ Elastic Star (UK GarageMIX) ├ KUDA └ Let's Go Baby ■ 攻略51~60 ├ 真夏の夜の夢 ├ Triple Zoe ├ Can we talk(broken dog leg mix) ├ CnP └ Damascus ■ 攻略61~70 ├ Knowledge system ├ Minimal Life ├ Russian Dance ├ Space of Soul └ WeirdPistol ■ 攻略71~75 ├ Cherokee ├ Yellow berry ├ Bright Dream(Vocal) ├ Dancin' Planet └ Miles ■ 攻略76~80 ├ Hypersonic ├ AI ├ Lemonade ├ Memory of Beach └ Fear ■ 攻略81~85 ├ Tammuz ├ Dreadnought ├ 風にお願い(Japanese Version) ├ Chase 575 └ Living on The Beat ■ 攻略86~90 ├ Brave it out ├ JASCO!! ├ Chrono Breakers ├ V-BOB └ ふたり ■ 攻略91~95 ├ Urban night ├ Road of Death ├ Again Sunshine ├ The Tokyo(I.B.I.S) └ Starfish ■ 攻略96~100 ├ Vibaldi Summer 3rd Mov. ├ Fallen Angel ├ Seeker ├ パンプロック └ トルコ行進曲 ■ 攻略101~105 ├ Chain Of Gravity ├ For Seasons ├ Rolling on the duck ├ Far East Glass Field └ Relation Again ■ 攻略106~110 ├ Style ├ River Flow ├ Vanish Lady ├ One Sided Love └ Trnmpet Conoerto Ⅲ ■ 攻略111~115 ├ Cosmic Elevator ├ Midnight Blood ├ Rocka-a-doodle-doo(Funky Breaks) ├ Phantom Of Sky └ Aurora Borealis ■ 攻略116~120 ├ Super Lovely ├ For the ikarus ├ Get On Top ├ Stars in your eyes └ Phoenix Virus ■ 攻略121~125 ├ Hello Pinky ├ Grid System ├ Dream Of You ├ Mess it Up └ 桜華月 ■ 攻略126~130 ├ Regret of snow ├ Feel ├ School Someday ├ Csikos Post └ Angelic Tears ■ 攻略131~135 ├ Let Go ├ My Alias ├ Yo Creo Que Si ├ Real Over Drive └ Celestial Tears ■ 攻略136~140 ├ Fentanest └ Hey! there ☆コース別攻略(工事中) ■ 攻略1~5 ├ Let's begin ├ Step by Step ├ Feel So Good ├ Emotional Sound └ Colors ■ 攻略6~10 ├ Excite ├ Dreams come true ├ Yo! MAX! ├ Classic Land -1- └ Low pressure ■ 攻略11~15 ├ Challenge ├ Initial E ├ Go LEFT!! └ Run Fly ■ 攻略16~20 ├ DJMAX Best ├ Ray o Beach ├ Shooting Star ├ Sweet Revolt └ Nien ROD ■ 攻略21~25 ├ TARI ├ ECO ├ Danger Zone ├ Crush! └ Fine Day ■ 攻略26~30 ├ Gloomy Day ├ Wind Day ├ Rain Day ├ Shower DAY └ Cloud Day ■ 攻略31~35 ├ M2U ├ Storm Day ├ Red Story ├ Orange Message └ Yellow Funky ■ 攻略36~40 ├ Green Life ├ Blue MX ├ Indigo Style ├ Violet MAX └ Croove ■ 攻略41~45 ├ Enjoy! DJMAX! ├ COOL! KOOL! ├ Fire! ├ NG └ Mechanic Flame ■ 攻略46~50 ├ Classic Land -2- ├ Forte Escape ├ School Life ├ December Sound └ Misery ■ 攻略51~55 ├ Classic Land -2- ├ ROCKin' Fever ├ MaX Bomb ├ Soul Mate └ MANIcure ■ 攻略56~60 ├ Love Sensation ├ DA-da-DA ├ Jazz Soul ├ Electronic Boutique └ Starfall ■ 攻略61~65 ├ Remix Station ├ ESTi ├ RED eYe ├ Jazz Bar └ Makasa ■ 攻略66~70 ├ Broken Knuckles ├ J-Style ├ Summer in DJMAX ├ Slow Day └ ShininG Day ☆アイテム(工事中) ☆ディスク関係(工事中) ☆小ねた(工事中) ☆用語集 ■ あ行 ├ あ ├ い ├ う ├ え └ お ■ か行 ├ か ├ き ├ く ├ け └ こ ■ さ行 ├ さ ├ し ├ す ├ せ └ そ ■ た行 ├ た ├ ち ├ つ ├ て └ と ■ な行 ├ な ├ に ├ ぬ ├ ね └ の ■ は行 ├ は ├ ひ ├ ふ ├ へ └ ほ ■ ま行 ├ ま ├ み ├ む ├ め └ も ■ や行 ├ や ├ ゆ └ よ ■ ら行 ├ ら ├ り ├ る ├ れ └ ろ ■ わ行 ├ わ ├ を └ ん ■ が行 ├ が ├ ぎ ├ ぐ ├ げ └ ご ■ ざ行 ├ ざ ├ じ ├ ず ├ ぜ └ ぞ ■ だ行 ├ だ ├ ぢ ├ づ ├ で └ ど ■ ば行 ├ ば ├ び ├ ぶ ├ べ └ ぼ ■ ぱ行 ├ ぱ ├ ぴ ├ ぷ ├ ぺ └ ぽ リンク ■ 参考 ・管理人HP ・管理人blog ・ネットマーブル ■ 検索サイト ・google ・yahoo 更新履歴 取得中です。 カウンタ - 今日 - 昨日 - 編集用
https://w.atwiki.jp/battleoperation-next/pages/267.html
汎用? 機体概要 数値情報機体 メイン攻撃 サブ攻撃 特殊攻撃1 特殊攻撃2 格闘攻撃 タックル 機体スキル 備考『いいだろう。何度でも葬ってやる!』キャンペーン 機体情報 機体考察 必要パーツ 主兵装詳細 副兵装詳細 運用 機体攻略法 コンボ一覧 アップデート履歴 コメント欄 機体概要 公式の説明を書く 数値情報 機体 汎用 LV1 LV2 LV3 LV4 LV5 OS ノーマル 装甲Ⅰ 機動Ⅰ 装甲Ⅱ 機動Ⅱ Cost 500 550 600 機体HP 800 860 800 920 800 実弾補正 90 90 102 90 114 ビーム補正 90 90 102 90 114 格闘補正 95 95 110 95 125 耐実弾装甲 84 94 84 104 84 耐ビーム装甲 84 94 84 104 84 耐格闘装甲 90 102 90 114 90 スピード 85 ブースト 115 115 125 115 135 索敵 600 必要Lv ※1 必要開発費 24000P 30000P 48000P P P 必要ウォレット 173JPY 194JPY 259JPY JPY JPY ※1: 必要パーツが揃えばパイロットLv1から開発可能です。 キャンペーン期間が終了すると開発パーツは入手できなくなります。 メイン攻撃 武器名 威力 発射間隔 弾数 リロード速度 射程 備考 ビーム・ライフル 130 ?発/秒 6 約?秒 500 予測射撃可不可移動射撃可不可?発よろけビーム属性 サブ攻撃 武器名 威力 発射間隔 弾数 リロード速度 射程 備考 頭部バルカン 10 ?発/秒 or ?秒 40 約?秒 250 予測射撃可不可移動射撃可不可?発よろけ実弾属性 タクティカルアームズⅡ(ガトリングF) 22 ?発/秒 or ?秒 (40) 約?秒 400 予測射撃可不可移動射撃可不可?発よろけ混合属性 特殊攻撃1 武器名 威力 発射間隔 弾数 リロード速度 射程 備考 タクティカルアームズⅡ(ソードF)(N) 330 ?秒 2 約?秒 - 移動射撃不可?発ダウン実弾・格闘属性 タクティカルアームズⅡ(投擲)(下) 200 ?秒 (2) 約?秒 300 移動射撃不可?発ダウン実弾属性 タクティカルアームズⅡ(投擲)(左) 160 ?秒 (2) 約?秒 300 移動射撃不可?発ダウン実弾属性 タクティカルアームズⅡ(投擲)(右) 160 ?秒 (2) 約?秒 300 移動射撃不可?発ダウン実弾属性 特殊攻撃2 武器名 威力 発射間隔 弾数 リロード速度 射程 備考 回避行動(N) 80 ?秒 2 約?秒 - - 回避行動(下) 80 ?秒 (2) 約?秒 - - 回避行動(左) 80 ?秒 (2) 約?秒 - - 回避行動(右) 80 ?秒 (2) 約?秒 - - 格闘攻撃 武器名 威力 備考 アーマーシュナイダー(N) 280 実弾・格闘属性 格闘(前) 150 格闘属性 アーマーシュナイダー(下) 200 実弾・格闘属性 タクティカルアームズⅡ(ソードアーム)(左) 230 ビーム・格闘属性 タクティカルアームズⅡ(ソードアーム)(右) 230 ビーム・格闘属性 タックル 武器名 威力 備考 タックル 260 衝撃属性 機体スキル スキル名 発動条件 効果 タクティカルアームズⅡ(投擲) 特殊攻撃1(↓or←or→)実行時 タクティカルアームズⅡをターゲットに投擲する。投擲中はタクティカルアームズⅡを使用した攻撃が使用不可となる。 備考 『いいだろう。何度でも葬ってやる!』キャンペーン キャンペーン期間2017年04月13日(木)14 00 ~ 04月27日(木)13 59[予定] キャンペーン内容キャンペーン期間中、「ブルーフレームセカンドリバイ」が開発&強化できる特別なパーツをドロップする場合がございます。 ドロップするパーツと開発&強化可能機体≪設計図≫【設計図】ブルーフレームセカンドR … ブルーフレームセカンドリバイを開発可能 ※設計図はパイロットLv1よりドロップします。 ※必要パーツが揃えばパイロットLv1から開発可能です。 ※設計図は、本キャンペーン期間中のみドロップします。 ≪強化パーツ≫発泡金属装甲材 … ブルーフレームセカンドリバイの必要強化パーツ ※強化パーツはパイロットLv8よりドロップします。 ※開発にパイロットLvの制限はありませんが、強化には適正なパイロットLvと強化パーツが必要です。 ※強化パーツは、本キャンペーン期間中のみドロップします。 ≪強化プラン≫【Lv2強化プラン】ブルーフレームセカンドR … ブルーフレームセカンドリバイ[機体Lv2]への必要強化パーツ 【Lv3強化プラン】ブルーフレームセカンドR … ブルーフレームセカンドリバイ[機体Lv3]への必要強化パーツ 【Lv4強化プラン】ブルーフレームセカンドR … ブルーフレームセカンドリバイ[機体Lv4]への必要強化パーツ 【Lv5強化プラン】ブルーフレームセカンドR … ブルーフレームセカンドリバイ[機体Lv5]への必要強化パーツ ※強化プランはパイロットLv12よりドロップします。 ※強化プランは「現在所有している機体Lv」から「1つ上の機体Lv」のプランがドロップします。 ※強化プランは、本キャンペーン期間中のみドロップします。 機体情報 機体考察 1 2 必要パーツ パーツ名 必要数 備考 Lv1 【設計図】ブルーフレームセカンドR 10 キャンペーン期間中のみドロップ Lv2 3級戦闘型運用データ 20 - 【Lv2強化プラン】ブルーフレームセカンドR 4 キャンペーン期間中のみドロップ 発泡金属装甲材 4 キャンペーン期間中のみドロップ 量産型フレーム構造材 15 - Lv3 2級総合運用データ 12 - 【Lv3強化プラン】ブルーフレームセカンドR 6 キャンペーン期間中のみドロップ 発泡金属装甲材 6 キャンペーン期間中のみドロップ 高出力スラスター材 15 - Lv4 - - - - - - - - - - - - Lv5 - - - - - - - - - - - - 主兵装詳細 バンナム砲相手は死ぬ 副兵装詳細 トッポポッキーよりも中身で勝負している 運用 何か書く 機体攻略法 敵機として出会った際の対処法をかく. コンボ一覧 ※コンボ内にある表中の略号については、コンボ一覧表を参照。 アップデート履歴 2017/04/13:新規追加 コメント欄 過去ログ 1 名前 「Lv3必要パーツ」追記。(`_´)ゞハッ - marbee 2017-07-07 23 00 22 新規追加。(`_´)ゞハッ - marbee 2017-04-22 11 21 21 最新の20件を表示しています.全てのコメントを見る ▲トップに戻ります▲
https://w.atwiki.jp/seed-ms/pages/156.html
【用語名】 X100系フレーム 【採用MS】 GAT-X105 ストライクGAT-X102 デュエルGAT-X103 バスターGAT-X131 カラミティMBF-02 ストライクルージュORB-01 アカツキ 【詳細】 地球連邦軍が開発し、GAT-Xシリーズと呼ばれるモビルスーツ郡に採用されたインナーフレーム。 このフレームは他のタイプに比べ可動範囲が広く、複雑な構造となっており、デュエル、ストライクはその可動性を活かした機動性の高い汎用型のMSとして開発されている。 特にストライクに用いられたフレームは人体機能を完全に再現するという目的の元、デュエルからイージスの開発データを参考に手が加えられており、特に腕部の構造は後にも先にもストライクにしか採用されていないものとなっており、 ストライカーパック換装による追加装備を難なく使用することが可能。 後期GATシリーズに含まれるカラミティ(陣営は異なるがストライクルージュやアカツキ)にも採用されている。
https://w.atwiki.jp/souhei_world/pages/790.html
ムーバブル・フレーム [解説] 骨格となるフレームに、魔力収縮筋や転換炉、魔導炉、操縦槽を組み付け、更にその他補器や装備品も搭載して機体を構成する。 その基本的構造は、4.5世代装兵から第五世代装兵にかけて流行したモノコック・ボディ構造を採用した装兵群を除いて、大筋で変わりは無い。
https://w.atwiki.jp/parepan/pages/75.html
下記サンプルは親フレームの入力内容を子フレームへ移動し、サブミットする ものです。 親フレームソースのスクリプト部分 function nextFm(){ top.frames[0].document.in_area.in_bumon_name.value = document.in_area.ward.value top.frames[0].document.in_area.submit(); } /script body form name="in_area" input class="type11" type="text" name="ward" value="" input class="button010" type="button" onclick="nextFm()" value="検索" iframe src="FLM_bumon_kensaku.php" name="next_fm" width="280" height="180" scrolling="auto" marginwidth="0" marginheight="0" frameborder="0" /iframe /body 子フレームソース html head /head body form name="in_area" action="FLM_bumon_kensaku.php" method="post" input type="hidden" name="in_bumon_name" value="" br input type="hidden" name="fm_no" value="" br input type="hidden" name="el_no" value="" br /form /body /html
https://w.atwiki.jp/opengl/pages/142.html
長らく道を逸れましたが、ここで再びキーフレームに戻ります。 .Xのアニメーションキーのキータイプ情報 0…回転 w,x,y,zの順にクォータニオンデータ 1…拡大縮小 x,y,zの順に拡大縮小データ 2…平行移動 x,y,zの順に平行移動データ 4…合成行列 回転、拡大縮小、平行移動行列が掛け合わされた4×4行列データ まず、最初に知っておかなくてはならない事があります。 それは、当サイトで使用している Cyberdelia は、合成行列タイプの アニメーションデータは階層構造が正しく生成できないという事です。 詳しくは Cyberdelia に付属のヘルプを参照して下さい。 とは言っても、合成行列でないタイプの方は正しく出力されますので、 それを元に合成行列を作成し、単純なキーフレームアニメーションを表示して みたいと思います。 とりあえず、平行移動行列だけに対応したプログラムを作成しました。 今回もわかりやすくするために新しくsample2.xというファイルを作成し それを表示しています。 font.h class GLFONT { public HFONT Hfont; HDC Hdc; GLFONT(wchar_t *fontname, int size); void DrawStringW(int x,int y,wchar_t *format, ...); }; //コンストラクタ フォント作成 GLFONT GLFONT(wchar_t *fontname, int size) { Hfont = CreateFontW( size, //フォント高さ 0, //文字幅 0, //テキストの角度 0, //ベースラインとx軸との角度 FW_REGULAR, //フォントの太さ FALSE, //イタリック体 FALSE, //アンダーライン FALSE, //打ち消し線 SHIFTJIS_CHARSET, //文字セット OUT_DEFAULT_PRECIS, //出力精度 CLIP_DEFAULT_PRECIS, //クリッピング精度 ANTIALIASED_QUALITY, //出力品質 FIXED_PITCH | FF_MODERN, //ピッチとファミリー fontname); //書体名 Hdc = wglGetCurrentDC(); SelectObject(Hdc, Hfont); } //ワイド文字列の描画 void GLFONT DrawStringW(int x,int y,wchar_t *format, ...) { wchar_t buf[256]; va_list ap; int Length=0; int list=0; //ポインタがNULLの場合は終了 if ( format == NULL ) return; //文字列変換 va_start(ap, format); vswprintf_s(buf, format, ap); va_end(ap); Length = wcslen(buf); list = glGenLists(Length); for( int i=0; i wglUseFontBitmapsW(Hdc, buf[i], 1, list + (DWORD)i); } glDisable(GL_LIGHTING); glRasterPos2i(x, y); //ディスプレイリストで描画 for( int i=0; i { glCallList(list + i); } glEnable(GL_LIGHTING); //ディスプレイリスト破棄 glDeleteLists(list, Length); list = 0; Length = 0; } PNG.h #pragma once #include lodepng.h //テクスチャクラス class TEXTURE{ protected LodePNG_Decoder decoder;//デコーダ unsigned char* buffer;//バッファ size_t buffersize, imagesize;//サイズ public TEXTURE(); TEXTURE(const char* FileName);//コンストラクタ void LOAD_PNG(const char* FileName);//PNG読み込み unsigned char* image;//イメージポインタ unsigned int Width,Height;//画像サイズ }; TEXTURE TEXTURE(){ } TEXTURE TEXTURE(const char* FileName){ LOAD_PNG(FileName); } void TEXTURE LOAD_PNG(const char* FileName){ LodePNG_Decoder_init( decoder); //ロード LodePNG_loadFile( buffer, buffersize, FileName); //デコード LodePNG_decode( decoder, image, imagesize, buffer, buffersize); //幅,高さ Width = decoder.infoPng.width;Height = decoder.infoPng.height; } xfile.h #pragma once #include PNG.h using namespace std; //3つのベクトル struct Vector3f{ float x; float y; float z; }vec3d; Vector3f operator*(Vector3f v,float size){ v.x *= size; v.y *= size; v.z *= size; return v; } //4つのベクトル struct Vector4f{ float x; float y; float z; float w; }vec4d; //4つのカラー struct Color4{ float r; float g; float b; float a; }; //4つの反射 struct Reflection4{ Color4 diffuse; Color4 ambient; Color4 emission; Color4 specular; }; //UV座標 struct UV{ float u;//u値 float v;//v値 }vec2d; //ポリゴンデータ struct Triangle{ Vector3f TriVer; Vector3f TriNor; UV TriUV; }Tri; //ポリゴンデータ struct Quadrangle{ Vector3f QuadVer; Vector3f QuadNor; UV QuadUV; }Quad; //マテリアル構造体 struct MATERIAL{ string MaterialName;//マテリアル名 Reflection4 MaterialColor;//反射 float Shininess;//shininess string TextureName;//テクスチャ名 int TexNo;//テクスチャNO. vector Tridata;//三角面データ vector Quaddata;//四角面データ }mtl; //メッシュ構造体 struct MESH{ public vector Material;//マテリアル vector TexData;//テクスチャデータ vector TexID;//テクスチャID GLuint TexID2;//代入用 TEXTURE* tex;//代入用 }msh; //アニメーションデータ構造体 struct ANIMATION{ public vector Key;//アニメーションキー vector Matrix;//行列データ }anm; //ノード構造体 struct NODE{ NODE* Node;//子ノード NODE* Next;//隣の階層 string FrameName;//フレーム名 MESH* Mesh;//メッシュ ANIMATION Anim;//アニメーションデータ }nde; //階層メッシュクラス class HIERARCHY{ public bool Load_Hierarchy(char* FileName); //階層メッシュ読み込み bool Load_Frame(FILE fp,NODE node,int hierarchy); //フレーム読み込み bool Load_Mesh(FILE fp,NODE node);//メッシュ読み込み bool Load_Animation(FILE fp);//アニメーション読み込み void Find_Frame(NODE node,char* name);//フレームを探す void Draw();//描画 void Draw_Frame(NODE node,int Frame_Time); void Animation_Draw(int Animation_NO,int Frame); void Init(); HIERARCHY(); HIERARCHY(char* FileName,int size); NODE Root;//ルートノード int Size;//サイズ int Back;//階層戻し char buffer[255]; NODE* pNode;//ノードポインタ int Animation_MaxFrame; }; HIERARCHY HIERARCHY(){ Init(); } HIERARCHY HIERARCHY(char* FileName,int size){ Init(); Size=size; Load_Hierarchy(FileName); } void HIERARCHY Init(){ Root.Node=NULL; Root.Next=NULL; Root.FrameName= Root ; Root.Mesh=NULL; } void HIERARCHY Draw_Frame(NODE node,int Frame_Time){ while(1){ if(node.Mesh!=NULL){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); for(int i=0;i (signed)node.Mesh- Material.size();i++){ glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,(const GLfloat *) node.Mesh- Material[i].MaterialColor.ambient); glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,(const GLfloat *) node.Mesh- Material[i].MaterialColor.diffuse); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,(const GLfloat *) node.Mesh- Material[i].MaterialColor.specular); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,node.Mesh- Material[i].Shininess); if(node.Mesh- Material[i].TexNo 0){ glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, node.Mesh- TexID[node.Mesh- Material[i].TexNo-1]); }else{ glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } //とりあえずパラパラアニメ for(int k=1;k (signed)node.Anim.Key.size()-1;k++){ if((node.Anim.Key[k-1] =Frame_Time) (node.Anim.Key[k] Frame_Time)){ glMultMatrixf( node.Anim.Matrix[k-1][0]); } } if(node.Mesh- Material[i].Tridata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Tri) , node.Mesh- Material[i].Tridata[0].TriVer.x); glNormalPointer(GL_FLOAT,sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Tri), node.Mesh- Material[i].Tridata[0].TriUV.u); glDrawArrays(GL_TRIANGLES,0,node.Mesh- Material[i].Tridata.size()); } if(node.Mesh- Material[i].Quaddata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Quad) , node.Mesh- Material[i].Quaddata[0].QuadVer.x); glNormalPointer(GL_FLOAT,sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadNor.x); //if(node.Mesh- Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Quad), node.Mesh- Material[i].Quaddata[0].QuadUV.u); glDrawArrays(GL_QUADS,0,node.Mesh- Material[i].Quaddata.size()); } glPopMatrix(); } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); //glDisable(GL_TEXTURE_2D); } if(node.Node!=NULL)Draw_Frame(*node.Node,Frame_Time); if(node.Next!=NULL)Draw_Frame(*node.Next,Frame_Time); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } } void HIERARCHY Animation_Draw(int Animation_NO,int Frame){ Draw_Frame(Root,Frame); } void HIERARCHY Draw(){ Draw_Frame(Root,0); } //フレームを探す void HIERARCHY Find_Frame(NODE node,char* name){ while(1){ if(strcmp(node.FrameName.c_str(),name)==0){ pNode= node; return; } if(node.Node!=NULL)Find_Frame(*node.Node,name); if(node.Next!=NULL)Find_Frame(*node.Next,name); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } return; } //アニメーション読み込み bool HIERARCHY Load_Animation(FILE fp){ char buf[255]; char name[255]; vector Quaternion; vector Transform; vector Scaling; vector Key1; vector Key2; vector Key3; int hierarchy=0,count=0,keyID,key=0,dummy=0,x=0,y=0,z=0,w=0; //平行移動用 GLfloat move[]={ 1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 }; //読み込み while(!feof( fp)) { ZeroMemory(buf,sizeof(buf)); fscanf_s( fp, %s ,buf,sizeof(buf)); //AnimationSetを探す if(strcmp(buf, AnimationSet )==0){ while(!feof( fp)) { fgets(buf,sizeof(buf), fp); if(strstr(buf, AnimationKey )==NULL){ if((!strstr(buf, { )==NULL) (!strstr(buf, } )==NULL)){//名前の抽出 sscanf_s(buf, { %s } , name,sizeof(name)); pNode=NULL; Find_Frame(Root,name); pNode- Anim.Matrix.resize(Key3.size()); for(int i=0;i (signed)Key3.size();i++){ move[12]=Transform[i].x*Size; move[13]=Transform[i].y*Size; move[14]=Transform[i].z*Size; pNode- Anim.Key.push_back(Key3[i]); pNode- Anim.Matrix[i].resize(16); for(int j=0;j 16;j++)pNode- Anim.Matrix[i][j]=move[j]; } Animation_MaxFrame=Key3[Key3.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); } }else{ fgets(buf,sizeof(buf), fp);//キー 0 回転 , 1 拡大縮小 , 2 平行移動 keyID=atoi(buf); fgets(buf,sizeof(buf), fp);//キーデータの個数 count=atoi(buf); switch (keyID){ case 0 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f,%f;;, , key, dummy, vec4d.w, vec4d.x, vec4d.y, vec4d.z); Key1.push_back(key); Quaternion.push_back(vec4d); } break; case 1 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key2.push_back(key); Scaling.push_back(vec3d); } break; case 2 for(int i=0;i fscanf_s( fp, %d;%d;%f,%f,%f;;, , key, dummy, vec3d.x, vec3d.y, vec3d.z); Key3.push_back(key); Transform.push_back(vec3d); } break; default break; } } } } } Animation_MaxFrame=pNode- Anim.Key[pNode- Anim.Key.size()-1]; Quaternion.clear(); Scaling.clear(); Transform.clear(); Key1.clear(); Key2.clear(); Key3.clear(); return true; } //メッシュ読み込み bool HIERARCHY Load_Mesh(FILE fp,NODE node){ vector Vertex;//頂点 vector Normal;//法線 vector uv;//UV vector VertexIndex; vector NormalIndex; vector MaterialIndex; vector FaceIndex; char key[255]; char buf[255]; int v1=0,v2=0,v3=0,v4=0; int Count=0; string str= ; //読み込み while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //頂点 読み込み if(strcmp(key, Mesh )==0) { fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Vertex.push_back(vec3d*(float)Size); } //頂点インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); VertexIndex.push_back(v1); VertexIndex.push_back(v2); VertexIndex.push_back(v3); VertexIndex.push_back(v4); } FaceIndex.push_back(dammy); } } //法線 読み込み if(strcmp(key, MeshNormals )==0) { fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Normal.push_back(vec3d); } //法線インデックス読み込み fgets(buf,sizeof(buf), fp);//データは2行下にあると推定 改行する fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type index = str.find( 3; ); if(index-first==0){ sscanf_s(buf, %d;%d,%d,%d;, , dammy, v1, v2, v3); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); } if((index==-1)||(index-first 1)){ sscanf_s(buf, %d;%d,%d,%d,%d;, , dammy, v1, v2, v3, v4); NormalIndex.push_back(v1); NormalIndex.push_back(v2); NormalIndex.push_back(v3); NormalIndex.push_back(v4); } } } //マテリアルリスト if(strcmp(key, MeshMaterialList )==0) { fgets(buf,sizeof(buf), fp);//空改行 fgets(buf,sizeof(buf), fp);//マテリアル数 fgets(buf,sizeof(buf), fp);//リスト要素数 Count=atoi(buf); for(int i=0;i { fgets(buf,sizeof(buf), fp); int test=atoi(buf); MaterialIndex.push_back(test); } } //マテリアル読み込み if(strcmp(key, Material )==0) { fgets(buf,sizeof(buf), fp);//直後の行にあると推定 改行する //ディフューズ fscanf_s( fp, %f;%f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z, vec4d.w); mtl.MaterialColor.diffuse=(const Color4 )vec4d; //SHININESS fscanf_s( fp, %f; , mtl.Shininess); //スペキュラー fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.specular=(const Color4 )vec4d; //エミッシブ fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); mtl.MaterialColor.ambient=(const Color4 )vec4d; node.Mesh =new MESH(msh); node.Mesh- Material.push_back(mtl); Count=0; //マテリアル毎のデータを作成 for(int i=0;i (signed)MaterialIndex.size();i++){ if(FaceIndex[i]==3){ for(int j=0;j 3;j++){ Tri.TriVer=Vertex[VertexIndex[Count+j]]; Tri.TriNor=Normal[NormalIndex[Count+j]]; //Tri.TriUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Tridata.push_back(Tri); } Count+=3; }else{ for(int j=0;j 4;j++){ Quad.QuadVer=Vertex[VertexIndex[Count+j]]; Quad.QuadNor=Normal[NormalIndex[Count+j]]; //Quad.QuadUV=uv[VertexIndex[Count+j]]; node.Mesh- Material[MaterialIndex[i]].Quaddata.push_back(Quad); } Count+=4; } } Vertex.clear(); Normal.clear(); uv.clear(); VertexIndex.clear(); NormalIndex.clear(); MaterialIndex.clear(); FaceIndex.clear(); return true; } } return false; } //フレーム読み込み bool HIERARCHY Load_Frame(FILE fp,NODE node,int hierarchy){ char key[255]; int begin=0,end=0; int current=hierarchy;//現在の階層 int file_pos; while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //ヘッダー読み飛ばし if(strcmp(key, Header )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //テンプレート読み飛ばし if(strcmp(key, template )==0){ while(strcmp(key, } )){ fscanf_s( fp, %s ,key,sizeof(key)); } continue; } //階層+ if(strcmp(key, { )==0){ begin++; } //階層- if(strcmp(key, } )==0){ end++; } //フレーム if(strcmp(key, Frame )==0){ fscanf_s( fp, %s ,key,sizeof(key)); if(((begin==0) (end==0))||(end-begin==-1)){//子ノード追加 node.Node=new NODE(nde); node.Node- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Node); fseek( fp, file_pos, SEEK_SET ); hierarchy++; Load_Frame(fp,*node.Node,hierarchy);//再帰呼び出し } if(Back==current){//階層戻り先にきた場合、同一階層追加 Back=-1; node.Next=new NODE(nde); node.Next- FrameName=buffer; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } if(end-begin 0){// } が { より多い時は階層を戻る strcpy_s(buffer,255,key); Back=current-(end-begin); return true; } if((end-begin==0) ((begin!=0) (end!=0))){//同一階層追加 node.Next=new NODE(nde); node.Next- FrameName=key; file_pos=ftell( fp); Load_Mesh(fp,*node.Next); fseek( fp, file_pos, SEEK_SET ); Load_Frame(fp,*node.Next,current);//再帰呼び出し } //階層を戻る if((Back!=-1) (Back } } return true; } //階層メッシュ読み込み bool HIERARCHY Load_Hierarchy(char* FileName){ //Xファイルを開いて内容を読み込む Back=-1; int Hierarchy=0; FILE* fp=NULL; fopen_s( fp,FileName, rt ); //読み込み fseek(fp,0,SEEK_SET); Load_Frame(*fp,Root,Hierarchy); fseek(fp,0,SEEK_SET); Load_Animation(*fp); fclose(fp); return true; } main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include GL/freeglut/freeglut.h #include xfile.h #include font.h #define WIDTH 320 #define HEIGHT 240 float angle=0.0f; HIERARCHY* hierarchy; GLFONT *font; wstring wstr; wchar_t wchar[255]; int CurrentFrame; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,WIDTH,HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, WIDTH/HEIGHT, 0.1, 2000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 1000.0, 1000.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //階層アニメーション hierarchy- Animation_Draw(0,CurrentFrame); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glOrtho(0, WIDTH, HEIGHT, 0, -1, 1); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); wstr=L 最大フレーム[ ; _itow_s(hierarchy- Animation_MaxFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,16,(wchar_t *)wstr.c_str()); wstr=L 現在のフレーム[ ; _itow_s(CurrentFrame,wchar,255,10); wstr+=wchar; wstr+=L ] ; font- DrawStringW(0,32,(wchar_t *)wstr.c_str()); glutSwapBuffers(); } void idle(void) { if(hierarchy- Animation_MaxFrame CurrentFrame)CurrentFrame=0; Sleep(1); glutPostRedisplay(); } //タイマー void timer(int value) { CurrentFrame+=150; glutTimerFunc(100 , timer , 0); } void Init(){ glClearColor(0.0, 0.0, 0.0, 1.0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); hierarchy = new HIERARCHY( sample2.x ,100); font = new GLFONT(L MS明朝 , 16); } int main(int argc, char *argv[]) { glutInitWindowPosition(100, 100); glutInitWindowSize(WIDTH, HEIGHT); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( キーフレーム ); glutDisplayFunc(display); glutIdleFunc(idle); glutTimerFunc(100 , timer , 0); Init(); glutMainLoop(); return 0; }
https://w.atwiki.jp/jinsichi/pages/64.html
Aviutlの場合、人間の見た目的には時間で操作出来ているように見えて、実はメインはフレーム単位です。 ●文字送りの早さについて 30FPSの動画で あいうえおかきくけこさしすせそたちつてと の20文字を「文字送り12」で表示するのにかかるフレームの長さは? 30FPS=1秒の間に存在するフレーム数なので 1秒=30フレーム。 文字送り12=1秒に表示出来る文字数なので 30フレームで12文字表示する計算になる。 1文字表示するのに2.5フレームってことね。 上記の例だと20文字なので 2.5フレーム×20文字=50フレーム 時間に直すと? 1秒=30フレームなので 1フレーム0.03333秒 50フレーム×0.0333=1.6秒 だいたいこんな計算。 ツールの中で使っているウェイトとか、セリフ間隔の計算もコレです。 指定した秒数×FPS値=ウェイトや間隔を取るフレーム数 これを 文字表示に必要なフレーム数 に加算しとるわけです。 ちなみに誤差がある。当たり前ですけど。 もっとメンドイので別に回しました。
https://w.atwiki.jp/suzu_notes/pages/13.html
リスト表示 ■メインビュー(CxxxView)の場合 BOOL CxxxView PreCreateWindow(CREATESTRUCT cs) { // TODO この位置で CREATESTRUCT cs を修正して Window クラスまたはスタイルを // 修正してください。 cs.style |= LVS_REPORT;// スタイルの指定 return CListView PreCreateWindow(cs); } void CxxxView OnInitialUpdate() { CxxxView OnInitialUpdate(); // TODO GetListCtrl() メンバ関数の呼び出しをとおして直接そのリスト コントロールに // アクセスすることによって ListView をアイテムで固定できます。 CListCtrl myLV = GetListCtrl(); myLV.InsertColumn(0, _T("テスト"), LVCFMT_LEFT, 100, -1);// 表示テスト用カラム myLV.InsertColumn(1, _T("テスト2"), LVCFMT_LEFT, 300, -1);// 表示テスト用カラム } ■ドッキングウィンドウ上に表示 CDockablePaneの派生クラス(CxxxWnd)のOnCreate関数 int CxxxWnd OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CDockablePane OnCreate(lpCreateStruct) == -1) return -1; // TODO ここに特定な作成コードを追加してください。 CRect rectDummy; rectDummy.SetRectEmpty(); const DWORD dwViewStyle = LVS_REPORT | WS_CHILD | WS_VISIBLE | WS_VSCROLL;// リストのスタイル指定 if ( !m_ListCtrl.Create(dwViewStyle, rectDummy, this, 1) ) return -1;// リストコントロールの生成 m_ListCtrl.InsertColumn( 1, _T("テスト"), LVCFMT_LEFT, 100);// カラムを追加 return 0; } これだけだと、ウィンドウは白いままなので再描画を行う必要がある。 CDockablePaneの派生クラス(CxxxWnd)のOnSize関数 void CxxxViewWnd OnSize(UINT nType, int cx, int cy) { CDockablePane OnSize(nType, cx, cy); // TODO ここにメッセージ ハンドラ コードを追加します。 AdjustLayout();// リストコントロール部分の再描画 } CDockablePaneの派生クラス(CxxxWnd)にリストコントロールを再描画する関数(AdjustLayout)を追加 void CxxxViewWnd AdjustLayout() { if(GetSafeHwnd() == NULL) return; CRect rectClient; GetClientRect(rectClient); m_ListCtrl.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(), SWP_NOACTIVATE | SWP_NOZORDER); }
https://w.atwiki.jp/wizardsandgears/pages/197.html
◆ガーディアンフレーム 通称「GF」。魔力によって制御する、大型の兵器。 オーブシステムが実用化される以前から構想が発案されていたが、 その非効率さから、実用化には至っていなかった。 しかし、天才科学者フィリーネ・ヘルムホルツが書いた設計図が発見され、 UWCの技術提供のもと、実用化に成功した。