約 4,545,728 件
https://w.atwiki.jp/wiki5_eroparo/pages/430.html
【板名】アニメスタッフ 【理由】アニメサロン板にみる作画スレの乱立や、アニメ漫画業界板にみるアニメーターの個別スレの数をみて 需要が見込めるのではないかと 【内容】作画関係のスレや、アニメーター、音楽関係、背景美術などのアニメの裏方関係を扱う。 【鯖】anime2 【フォルダ】anime 【カテゴリ】アニメ漫画 【名無し】アニメ好き名無しさん 【ID】 強制
https://w.atwiki.jp/anime_wiki/pages/8520.html
ここを編集 1975 ■フランダースの犬(21話~) 1976 ■ドカベン ■母をたずねて三千里 ■ブロッカー軍団IV マシーンブラスター(葦プロダクションと共同) 1977 ■あしたへアタック! ■あらいぐまラスカル ■超合体魔術ロボ ギンガイザー 1978 ■おれは鉄兵(制作) ■ペリーヌ物語 ■未来少年コナン 1979 ■赤毛のアン ■こぐまのミーシャ 1980 ■釣りキチ三平 ■トム・ソーヤーの冒険 1981 ■家族ロビンソン漂流記 ふしぎな島のフローネ ■ワンワン三銃士 1982 ■新みつばちマーヤの冒険 ■南の虹のルーシー 1983 ■アルプス物語 わたしのアンネット 1984 ■超人ロック ■牧場の少女カトリ 1985 ■小公女セーラ 1986 ■愛少女ポリアンナ物語 ■宇宙船サジタリウス 1987 ■愛の若草物語 ■グリム名作劇場 1988 ■小公子セディ ■トッポ・ジージョ ■夢見るトッポ・ジージョ 1989 ■宇宙皇子(地上編)(制作協力) ■ピーターパンの冒険 1990 ■ちびまる子ちゃん (1990) ■ちびまる子ちゃん (劇場版) ■私のあしながおじさん 1991 ■トラップ一家物語 ■燃えろ!トップストライカー 1992 ■大草原の小さな天使 ブッシュベイビー ■ちびまる子ちゃん わたしの好きな歌 ■トトイ ■南国少年パプワくん ■ハード&ルーズ 私立探偵・土岐正造トラブル・ノート(制作協力) ■みかん絵日記 1993 ■平成イヌ物語バウ ■ムカムカパラダイス ■若草物語 ナンとジョー先生 1994 ■愛と勇気のピッグガール とんでぶーりん ■七つの海のティコ ■南国少年パプワくん 星降る夜に会いましょう ■魔法陣グルグル 1995 ■ちびまる子ちゃん ■ロミオの青い空 1996 ■家なき子レミ ■ハーメルンのバイオリン弾き (劇場版) ■名犬ラッシー 1997 ■さくらももこ劇場 コジコジ ■スーパーフィッシング グランダー武蔵 ■中華一番! ■THE DOG OF FLANDERS 劇場版 フランダースの犬 1998 ■グランダー武蔵RV 1999 ■ハンター×ハンター ■劇場版 MARCO 母をたずねて三千里 2000 ■ドキドキ伝説 魔法陣グルグル 2001 ■神鵰俠侶 コンドルヒーロー(JADE ANIMATIONと共同) 2002 ■ハングリーハート WILD STRIKER ■ハンター×ハンター (OVA) 2003 ■PAPUWA 2004 ■ファンタジックチルドレン 2006 ■桃色のクレヨン ■ヤマトナデシコ七変化 2007 ■ミヨリの森 ■レ・ミゼラブル 少女コゼット 2008 ■いくぜっ!源さん ■ヒャッコ ■ポルフィの長い旅 2009 ■こんにちは アン ~Before Green Gables 2011 ■ルパン三世 血の刻印~永遠のmermaid~ 2015 ■シンドバッド 空とぶ姫と秘密の島 ■大同生命CM「広岡浅子“きっかけ”篇・“あきらめない”篇」 ■映画 ちびまる子ちゃん イタリアから来た少年 2016 ■シンドバッド 魔法のランプと動く島 ■シンドバッド 真昼の夜とふしぎの門 2017 ■カシスとアルルの物語 ■げんばのじょう 玄蕃之丞 ■{劇場版} はいからさんが通る 前編 -紅緒、花の17歳- ■料亭の味 無添加 母になれば篇 2018 ■グリーンコープCM 雨上がり編 ■グリーンコープCM 風に乗る編 ■グリーンコープCM 少女と花編 ■{劇場版} はいからさんが通る 後編 -花の東京大ロマン- ■料亭の味 お徳用あおさ ミソスープ篇 2019 ■グリーンコープCM 彼女が気がついたこと編 ■チャックシメゾウ 2020 ■花王CM 春のきれい咲く咲くフェア(トラッシュスタジオと共同) ■花王CM 夏のきれいスマートフェア ■花王CM 秋のきれいときめきフェア(トラッシュスタジオと共同) ■ハクション大魔王2020(タツノコプロと共同) 2021 ■やくならマグカップも(兼原作 原作はプラネットと共同) ■やくならマグカップも 二番窯(兼原作 原作はプラネットと共同) 2022 ■TIKTOK CM WEBTOON モルガナとオズ(トラッシュスタジオと共同) ■ラブオールプレー(OLMと共同) 2023 ■青のオーケストラ ■Narisumushi 2024 ■KICKS AND PUNK ■関連タイトル Blu-ray ちびまる子ちゃん わたしの好きな歌 数量限定版 Blu-ray 青のオーケストラ PART1 2枚組 Blu-ray あしたへアタック! 【想い出のアニメライブラリー 第131集】 Blu-ray 放送開始30周年記念 ちびまる子ちゃん 第1期 Vol.1 みかん絵日記 スペシャルプライス版DVD 期間限定 廉価版 中華一番!DVD-BOX デジタルリマスター版 BOX1 さくらももこ劇場 コジコジ DVD-BOX デジタルリマスター版 Part1 宇宙船サジタリウス Blu-ray BOX 初回限定生産 廉価版 未来少年コナン Blu-rayボックス 廉価版 EMOTION the Best 魔法陣グルグル DVD-BOX 1 rakuten_design= slide ;rakuten_affiliateId= 053df7e0.7c451bd1.0c852203.190c5695 ;rakuten_items= ctsmatch ;rakuten_genreId=0;rakuten_size= 468x160 ;rakuten_target= _blank ;rakuten_theme= gray ;rakuten_border= on ;rakuten_auto_mode= on ;rakuten_genre_title= off ;rakuten_recommend= on ; 随時更新! pixivFANBOX アニメ@wiki ご支援お待ちしています! ムック本&画集新刊/個人画集新刊/新作Blu-ray単巻/新作Blu-ray DVD-BOX アニメ原画集全リスト スタッフインタビューwebリンク集 最新登録アイテム Switch ゼルダの伝説 Tears of the Kingdom Switch 世界樹の迷宮Ⅰ・Ⅱ・Ⅲ HD REMASTER Switch ピクミン 4 大友克洋 Animation AKIRA Layouts Key Frames 2 小説 機動戦士ガンダム 水星の魔女 1 ONE PIECE FILM REDデラックス・リミテッド・エディション 4K ULTRA HD Blu-ray Blu-ray 劇場版 ソードアート・オンライン -プログレッシブ- 冥き夕闇のスケルツォ 完全生産限定版 Blu-ray 映画『ゆるキャン△』 Blu-ray 【コレクターズ版】 Blu-ray ウマ娘 プリティーダービー 4th EVENT SPECIAL DREAMERS!! Blu-ray 天地無用!GXP パラダイス始動編 Blu-ray第1巻 特装版 天地無用!魎皇鬼 第伍期 Blu-ray SET 「GS美神」全話いっき見ブルーレイ Blu-ray ソードアート・オンライン -フルダイブ- メーカー特典:「イベントビジュアル使用A3クリアポスター」付 ラブライブ!虹ヶ咲学園スクールアイドル同好会 5th Live! 虹が咲く場所 Blu-ray Memorial BOX 宇宙戦艦ヤマト2202 愛の戦士たち Blu-ray BOX 特装限定版 地球へ… Blu-ray Disc BOX 完全生産限定版 神風怪盗ジャンヌ Complete Blu-ray BOX HUNTER×HUNTER ハンター試験編・ゾルディック家編Blu-ray BOX BLEACH Blu-ray Disc BOX 破面篇セレクション1+過去篇 完全生産限定版 MAZINGER THE MOVIE 1973-1976 4Kリマスター版 アニメ・ゲームのロゴデザイン シン・仮面ライダー 音楽集 テレビマガジン特別編集 仮面ライダー 完全版 EPISODE No.1~No.98 MOVIE リスアニ!Vol.50.5 ぼっち・ざ・ろっく!号デラックスエディション ヤマノススメ Next Summit アニメガイド おもいでビヨリ アニメ「魔入りました!入間くん」オフィシャルファンブック 『超時空要塞マクロス』パッケージアート集 CLAMP PREMIUM COLLECTION X 1 トーマの心臓 プレミアムエディション パズル ドラゴンズ 10th Anniversary Art Works はんざわかおり こみっくがーるず画集 ~あばばーさりー!~ あすぱら画集 すいみゃ Art Works trim polka-トリムポルカ- つぐもも裏 超!限界突破イラスト&激!すじ供養漫画集 開田裕治ウルトラマンシリーズ画集 井澤詩織1st写真集 mascotte 鬼頭明里写真集 my pace 内田真礼 1st photobook 「まあやドキ」 進藤あまね1st写真集 翠~Midori~ 声優 宮村優子 対談集 アスカライソジ 三石琴乃 ことのは 亀田祥倫アートワークス 100% 庵野秀明責任編集 仮面ライダー 資料写真集 1971-1973 金子雄司アニメーション背景美術画集 タローマン・クロニクル ラブライブ!サンシャイン!! Find Our 沼津~Aqoursのいる風景~ 機動戦士ガンダム 逆襲のシャア 友の会[復刻版] 梅津泰臣 KISS AND CRY 資料集 安彦良和 マイ・バック・ページズ 『機動戦士ガンダム ククルス・ドアンの島』編 氷川竜介 日本アニメの革新 歴史の転換点となった変化の構造分析 Blu-ray THE IDOLM@STER CINDERELLA GIRLS 10th Anniversary Celebration Animation ETERNITY MEMORIES Blu-ray おいら宇宙の探鉱夫 ブルーレイ版 Blu-ray 映画 バクテン!! 完全生産限定版 アイカツ! 10th STORY ~未来へのSTARWAY~ Blu-ray BOX 初回生産限定版 はたらく細胞 Blu-ray Disc BOX 完全生産限定版 Blu-ray 長靴をはいた猫 3作品収録 Blu-ray わんぱく王子の大蛇退治 Blu-ray 魔道祖師 完結編 完全生産限定版 魔道祖師Q Blu-ray Disc BOX 完全生産限定盤 にじよん あにめーしょん Blu-ray BOX 【特装限定版】 Blu-ray 鋼の錬金術師 完結編 プレミアム・エディション Blu-ray付き やはりゲームでも俺の青春ラブコメはまちがっている。完 限定版【同梱物】オリジナルアニメ Blu-ray「だから、思春期は終わらずに、青春は続いていく。」
https://w.atwiki.jp/rugby08/pages/11.html
かなり独断と偏見ですが、参考になれば。 FW(フォワード:スクラムやラインアウトを組む前列の8人、主にボールの獲得が仕事) ・フロントロー 1=PR(左プロップ) 3=PR(右プロップ) 【重要な能力】 WEIGHT,STRENGTH,RUCKING,SCRUMMAGIN,AGGRESSION 1番はスクラム最前列左を担当。スクラムを時計回りに回す際(スクラム全体を盾にして敵SHの行動を妨害し、味方SHが動きやすいようにする)推進力となる。 ルースヘッドプロップとも呼ばれ、スクラム内では首が自由に動かせるため、トイメンの顎をめがけてねじりこむように押し上げる。 スクラムブレイク後は2,3番よりも早く首を外し、走り出すことが出来る。そのため同じPRである3番と比較して、体重よりも脚力やストレングスの高い選手が多い。 モール・ラックにおいては相手をカチ上げるようにめくり、プッシュを妨げる。 3番はスクラム最前列右を担当。スクラムを回す際の支点となるポジションであり、押さずとも押し負けることは許されない。チーム随一の巨躯を誇ることが多い。 まさにチームの「縁の下の力持ち」。試合中に目立つことは少ないが、安定した試合運びをするチームには必ず優秀な3番がいる。 モール基点が3番の場合、的が大きいために安心して突っ込むことが出来る上、そのクッション感は絶妙。 ボールに触れる機会すら少ないポジションの特性上、万一3番がトライを決めたときは日本中のフォワードプレイヤー頬を涙が伝う。 2=HK(フッカー) 【重要な能力】 WEIGHT,STRENGTH,RUCKING,SCRUMMAGING,HOOKING,LINE-OUTS,AGGRESSION スクラム最前列真ん中を担当。日本では「HO」と表記されることが多い。 スクラムに投入されるボールを敵HKと競り、掻きこむ事(フッキング)が主な仕事。両プロップよりも身長・体重ともに低いケースがほとんど。 これによりスクラム内でも首や足を比較的自由に動かせ、投入されるボールや、プッシュのタイミングに意識を向けることが出来る。また、フッキングを妨害するために 低いスクラムを挑まれることも多く、体の柔軟性が求められる。ラインアウトではほとんどがスローワーを務める。器用さが必要な専門職。 スクラムブレイク後、顔を上げたらすでに一次攻撃後のモール・ラックが出来ていたということも多く、二次攻撃時のバックアップの中心となる。 近年ではスピードのあるフッカーの活躍が目立つ。 ・セカンドロー 4=SR(セカンドロー・左ロック) 5=SR(セカンドロー・右ロック) 【重要な能力】HEIGHT, WEIGHT,STRENGTH,RUCKING,LINE-OUTS,AGGRESSION 日本では「LO」の表記が一般的。両SRともにラインアウトではジャンパーを務めるため、高い身長と強い肉体が必要なポジション。 モール・ラックでは長い手を存分に活用して、積極的にボールに絡む。 その身長を生かし、キックオフ時のボールを受けることも多い。 4番はスクラム中段左を担当。スクラムにおいて1番のプッシュをサポートする。 本ゲーム内ではラインアウト中列に位置し、タッピングでSHへボールを供給する。 5番は スクラム中段右を担当。スクラムでは3番をサポートする。 本ゲームではラインアウトの前列に位置し、身長が高ければ敵ボールでの空中戦にも有利になる。 ・サードロー 6=FL(左フランカー) 7=FL(右フランカー) 【重要な能力】SPEED,ACCELERATION,HANDLING,TACKLING,STRENGTH,RUCKING,AGGRESSION スクラム側面に位置し、FW攻撃・防御の要となる。FWの中では攻防に最も優れたユースフルな存在。 敵のサイドアタックには真っ先にタックルにいくポジションであることから、強靭な肉体と勇気が必要。実際、ハンターのような選手が多い。 6番左フランカーはブラインドサイド(狭いスペース)を担当することが多く、加速力・突破力も求められる。 7番右フランカーはオープンサイド(広いスペース)を担当することが多く、BK攻撃時も常にその後ろをサポートし、捕まれば真っ先に密集に突入、初動でボールを獲得する。 BK選手が密集に捕まった際、BKラインにも参加する。 8=N8(ナンバーエイト) 【重要な能力】HEIGHT,SPEED,ACCELERATION,HANDLING,TACKLING,STRENGTH,RUCKING,LINE-OUTS,AGGRESSION スクラム最後尾に位置し、自らボールを持って走ることも多い。BK攻撃ではそのサポートの最前線を走る。そのため、スピードも要求されるポジション。 攻守共に、ほぼすべての分野で平均以上のセンスと能力が求められ、期待される活動範囲も広い。 本ゲームではラインアウト最後尾を任されているので、ロングパスに競り勝つ身長も必要条件となっている。 FW攻撃を強力にすすめるためにも、アタックの強い選手を起用したい。 BKが密集に捕まった際、BKラインにも参加する。 BK(バックス:フィールドを縦横無尽に走る後方の7人、ボールを展開し前進することが仕事) ・ハーフバックス 9=SH(スクラムハーフ) 【重要な能力】SPEED,ACCELERATION,AGILITY,HANDLING,PASSING,TACKLING FWとBKのつなぎ役。相手ディフェンスの状態を確認しながらFW攻撃かBK展開かを瞬時に判断し、指示をだす。 スクラムやラインアウト、モール・ラックからBKへのパスを担当する。正確で早いパス技術が必要。 フィールドのどこにいようともボールの動きが止まったら必ず駆けつけなければならないため、運動量が最も多い。そのためか小柄な選手が多く、国代表で150cm台の者もいるほど。 N8やFLのサポートを受けながら、密集から自らボールを持って突進するケースも多く、やはりAGILITYは必須か。 10=FH(フライハーフ) 【重要な能力】AGILITY,HANDLING,PASSING,KICKING,KICKING POWER 日本では一般的にSO(スタンドオフ)と呼ばれる。SHとあわせて「ハーフバック団」と呼ばれ、セットで評価されることが多い。 FWから供給されたボールを展開、パント、ドロップゴール、セットプレーなど、状況に合わせた判断を下し実行する司令塔。 ピンチにおいてはロングキックで陣地を挽回し、チャンスにおいては鋭く正確なパスで敵ディフェンスの裏をかく。 キック力が絶対に必要なポジションなので、その上でゴールキックのアビリティ保持者や高い能力は非常に有用となる。 ・スリークォーターバックス 11=WG(左ウィング) 14=WG(右ウィング) 【重要な能力】SPEED,ACCELERATION,AGILITY,HANDLING 走りのスペシャリスト。ラインの左右端に位置し、一旦ボールを持てばゴールのみを目指して駆け抜ける。 11番は主にブラインドサイドを担当。狭いスペースで敵WGと一騎打ちを演じる。 14番はオープンサイドが多く、こちらもボールを受けたが最後、ひたすらにトライを狙う。 どちらも順調にボールが回ってくることはそう多くないので、チャンスは必ずものにしたいところ。ディフェンスを抜いてもすぐに追いつかれては逆にピンチを演出することになるので、SPEEDとACCELERATION(加速)は高ければ高いほど良い。 12=CT(インサイドセンター) 13=CT(アウトサイドセンター) 【重要な能力】SPEED,ACCELERATION,AGILITY,HANDLING,PASSING,TACKLING,STRENGTH,AGRESSION BKの攻防の中心。FHからのパスを確実にキャッチし、敵BK防御陣のど真ん中へ中央突破を図る。ディフェンスにおいても、かなりの距離からの突進を食い止めなければならず、タフな選手が多い。タックルのスペシャリスト。 12番はラインの内側に布陣する。13番へのパス、WGへのロングパス、パントなど多彩な武器を持つ。 13番は12番と比較して、ボールを受けた時点ですでに敵が迫っていることが多い。肉体的な強さも必要となる。 本ゲームでは、敵ディフェンスを抜き去っても相手FBが向かってくる。冷静に引き付けパスをまわして振り切るか、敵ディフェンダーが背後に迫っていなければいっちょハンドオフでもぶちかまして欲しい。それだけのパワーを持つ選手も多い。 ・フルバック 15=FB(フルバック) 【重要な能力】SPEED,ACCELERATION,AGILITY,HANDLING,KICKING,KICKING POWR,TACKLING,STRENGTH 味方全員の最後衛に位置する最後の砦。味方ディフェンスを突破した敵へのタックル、敵の長距離キックの的確なキャッチング、自陣深くからの正確なロングキックなど、主に防御において高い能力を発揮する。なにせFBの後ろには誰もいない。 敵味方を一望できるため、自己の判断で攻撃に参加することもある。 本ゲームではディフェンスをCOMに任せていると棒立ちとなって抜かれることも多いため、大活躍。 セットプレー攻撃の多くにFBが参加してくる。しかし、あまり調子にのっていると、密集に巻き込まれた挙句ターンオーバーされ、無人の荒野を激走されることもある。逆に言えば、敵FBにタックルを決め密集内に囲んだ時、BK攻撃最大のチャンスとなる。
https://w.atwiki.jp/yugio/pages/17063.html
計量機塊カッパスケール(アニメ) リンク・効果モンスター リンク1/水属性/機械族/攻 0 【リンクマーカー:上】 レベル1「機塊」モンスター1体 このカード名の(1)(2)の効果はそれぞれ1ターンに1度しか使用できない。 このカードはリンク召喚されたターンにはリンク素材にできない。 (1):このカードが相互リンク状態の場合、このカードをリリースし、 自分の墓地の「機塊」リンクモンスター1体を対象として発動できる。 そのモンスターを特殊召喚する。 (2):このカードが相互リンク状態ではない場合、このカードをリリースし、 自分の墓地のレベル4以下の「機塊」モンスター1体を対象として発動できる。 そのモンスターを特殊召喚する。 リンクモンスター リンクモンスター補助 機塊 機塊補助 機械族 水属性 蘇生 同名カード 計量機塊カッパスケール(OCG)
https://w.atwiki.jp/2ch1on/pages/36.html
GHL2(8th Season)順位表 順位 名前 使用チーム 勝点 試合 勝 分 敗 得点 失点 得失差 1 ヒルズ☆☆☆☆ Athletic Club 5 3 1 2 0 5 2 +3 2 レイデイビス☆ Juventus 5 4 1 2 1 5 4 +1 3 レイソル Bor.Dortmund 5 4 1 2 1 2 2 +0 4 シャキリ Roma 3 3 1 0 2 1 5 -4 メモ
https://w.atwiki.jp/anime_wiki/pages/35224.html
ここを編集 2022年12月公開。関連作にぶいすぽっ!オリジナル曲「for Victory!」アニメーションMVがある。 https //www.youtube.com/watch?v=t89Uc5Lamck 監督・絵コンテ 坂口蒼星、宇和野歩 キャラクターデザイン・作画監督 相音光 美術監督 三宅昌和 背景 本多敬 色彩設計・色指定検査 勝田綾太、山本真希 撮影監督 宮田悠司 編集 三嶋章紀 音楽 彦田元気 アニメーションプロデューサー 大友寿也 アニメーション制作 スタジオバインド ■関連タイトル ホビー:ぶいすぽっ! rakuten_design= slide ;rakuten_affiliateId= 053df7e0.7c451bd1.0c852203.190c5695 ;rakuten_items= ctsmatch ;rakuten_genreId=0;rakuten_size= 468x160 ;rakuten_target= _blank ;rakuten_theme= gray ;rakuten_border= on ;rakuten_auto_mode= on ;rakuten_genre_title= off ;rakuten_recommend= on ; 随時更新! pixivFANBOX アニメ@wiki ご支援お待ちしています! ムック本&画集新刊/個人画集新刊/新作Blu-ray単巻/新作Blu-ray DVD-BOX アニメ原画集全リスト スタッフインタビューwebリンク集 最新登録アイテム Blu-ray 魔女見習いをさがして Blu-ray「どうにかなる日々」Blu-ray Happy-Go-Lucky Edition 初回限定生産 Blu-rayDisc付き 『ラブライブ! スーパースター!!』「始まりは君の空」【みんなで叶える物語盤】 BEM~BECOME HUMAN~豪華版Blu-ray Blu-ray 劇場版 魔法少女まどか☆マギカ 10th Anniversary Compact Collection Blu-ray ぐらぶるっ! Blu-ray 映画クレヨンしんちゃん 激突! ラクガキングダムとほぼ四人の勇者 Blu-ray CHRONO CROSS 20th Anniversary Live Tour 2019 RADICAL DREAMERS Yasunori Mitsuda Millennial Fair FINAL at NAKANO SUNPLAZA 2020 ゴブリンスレイヤー Blu-ray BOX 初回生産限定 グリザイア ファントムトリガー THE ANIMATION 03[Blu-ray] 特装版 ラブライブ! サンシャイン!! Saint Snow 1st GIG 〜Welcome to Dazzling White Town〜 Blu-ray Memorial BOX ゾンビランドサガ Blu-ray BOX 初回生産限定盤 Blu-ray 思い、思われ、ふり、ふられ 完全生産限定版 Blu-ray Fate/Grand Carnival 1st Season 完全生産限定版 Blu-ray Fate/Grand Carnival 2nd Season 完全生産限定版 Blu-ray ダンジョンに出会いを求めるのは間違っているだろうかIII OVA Blu-ray 映画プリキュアミラクルリープ みんなとの不思議な1日 BD特装版 Blu-ray アズールレーン 三笠大先輩と学ぶ世界の艦船 ぶるーれい Blu-ray 水瀬いのり Inori Minase 5th ANNIVERSARY LIVE Starry Wishes かぐや様は告らせたい~天才たちの恋愛頭脳戦~ 22 OVA同梱版 呪術廻戦 公式ファンブック よつばと! 15 監修 庵野秀明・樋口真嗣など 夢のかけら 東宝特撮映画篇 パラレルパラダイス 13 特装版 アイドルマスター ミリオンライブ! Blooming Clover 9 オリジナルCD付き限定版 美樹本晴彦マクロス画集 軌 わだち― 夜ノみつき 10th EUSHULLY WORKS しらこ画集 ILLUSTRATION MAKING VISUAL BOOK カズアキ画集 Kazuaki game artworks ライザのアトリエ2 ~失われた伝承と秘密の妖精~ 公式ビジュアルコレクション ぼくたちは勉強ができない 第21巻 音声ドラマ ミニ画集付き同梱版 あいきょう 荻pote作品集 ヒョーゴノスケ流 イラストの描き方 TVアニメ『くまクマ熊ベアー』オフィシャルファンブック 押井守原作・総監督 西村純二監督作品 『ぶらどらぶ』 解体新書公式コンプリートガイド OCTOPATH TRAVELER Design Works THE ART OF OCTOPATH 2016-2020 おそ松さん 3rd season SPECIAL BOOK 描きたい!!を信じる 少年ジャンプがどうしても伝えたいマンガの描き方 YMO1978-2043 「小冊子・YMO全トラックリスト2021 Amazon限定表紙版」付き To LOVEる -とらぶる- ダークネス FIGURE PHOTOGRAPHY COLLECTION 斉藤朱夏 CALENDAR 2021.4-2022.3 ラブライブ! サンシャイン!! Aqours DOME TOUR COMIC ILLUSTRATION BOOK ラブライブ! サンシャイン!! Aqours COMIC ILLUSTRATION BOOK 2020 Winter イジらないで、長瀞さん 10 特装版 「はたらく細胞」公式アニメ完全ガイド リスアニ! Vol.43.2「アイドルマスター」音楽大全 永久保存版VII アイドルマスター シャイニーカラーズ 3 CD付き特装版 ウルトラマンマックス 15年目の証言録 ウルトラマンZ特写写真集 じじぃ 人生は深いな 冴えない彼女の育てかた 深崎暮人画集 上 Flat. ぷよぷよ アートワークコレクション 古谷静佳1st写真集 re START THE IDOLM@STER CINDERELLA GIRLS STARLIGHT MASTER COLLABORATION! Great Journey ウルトラマンゼロ Blu-ray BOX クロスアンジュ 天使と竜の輪舞 Blu-ray BOX 初回生産限定版 小林さんちのメイドラゴンBlu-ray BOX ゆゆ式Blu-ray BOX スペシャルプライス版 とーとつにエジプト神 Blu-ray 直球表題ロボットアニメ 全話いっき見ブルーレイ 未来ロボ ダルタニアス 一挙見Blu-ray VOL.1 シュヴァルツェスマーケン 全話見Blu-ray ワールドトリガー一挙見Blu‐ray VOL.1 異世界魔王と召喚少女の奴隷魔術 魔王プレイボックス 初回生産限定 トータル・イクリプス 全話見Blu-ray Blu-ray Cutie Honey Universe Complete Edition 夜ノヤッターマン 全話いっき見ブルーレイ こみっくがーるず Blu-ray BOX 初回生産限定 Blu-ray 幼女社長 むじなカンパニーセット 初回生産限定 ログ・ホライズン 円卓崩壊 Blu-ray BOX 七つの大罪 憤怒の審判 Blu-ray BOX I Blu-ray 水樹奈々 NANA ACOUSTIC ONLINE 『Dr.STONE』2nd SEASON Blu-ray BOX【初回生産限定版】 魔術士オーフェンはぐれ旅 キムラック編 Blu‐ray BOX 今井麻美 Winter Live「Flow of time」 - 2019.12.26 at EX THEATER ROPPONGI - Blu-ray盤 Blu-ray 仮面ライダーゼロワン ショートアニメ EVERYONE'S DAILY LIFE 仮面ライダー一挙見Blu-ray 1号 2号・V3編 仮面ライダー一挙見Blu-ray X・アマゾン・ストロンガー編 スーパー戦隊一挙見Blu-ray 1975-1981 スーパー戦隊一挙見Blu-ray 1982-1986 半妖の夜叉姫 Blu-ray Disc BOX 1 完全生産限定版 裏世界ピクニック Blu-ray BOX上巻 初回生産限定 Levius レビウス Blu-ray BOX【期間限定版】 スーパー戦隊 学研の図鑑 江口寿史美人画集 彼女 アニメディスクガイド80's レコード針の音が聴こえる necomi画集 PHONOGRAPHIC フルーツバスケット アニメ2nd season 高屋奈月 Illustrations 2 彼女、お借りします TVアニメ第1期 公式設定資料集 ドラゴンボール 超戦士シールウエハースZ 超シールガイド ガンダムアーカイヴス『ガンダムビルドシリーズ』編 Angel Beats! 天使画集 Angel Diary PANZER FRAULEIN 野上武志画集 【陸編】 Angel's cage るび様画集 Sweet Dream はすね画集 画集 制服Girl's▼コレクション もりょ作品集 異世界ファンタジーのキャラクターコレクション 劇場版「美少女戦士セーラームーンEternal」公式ビジュアルBOOK アイドルマスター シャイニーカラーズ イラストレーション ワークス VOL.2 Blu-rayDisc付き 八十亀ちゃんかんさつにっき 10 特装版 あんさんぶるスターズ! Ready For Star 2巻 缶バッジ付 Switch エーペックスレジェンズ チャンピオンエディション New ポケモンスナップ -Switch 【PS4】BIOHAZARD VILLAGE PLAMAX 聖戦士ダンバイン サーバイン ノンスケール PS製 組み立て式プラスチックモデル スーパーミニプラ 無敵ロボ トライダーG7 3個入りBOX 魔道祖師 前塵編 完全生産限定版 HGUC 機動戦士ガンダム 閃光のハサウェイ Ξガンダム MG 機動戦士ガンダムSEED モビルジン 1/100スケール カンチ 青 ノンスケール ABS&ダイキャスト製 塗装済み完成品 ☆赤ver 魔女の旅々17 ドラマCD付き特装版 クリストファー・ノーランの世界 メイキング・オブ・インターステラー BEYOND TIME AND SPACE 時空を超えて るるぶアズールレーン からかい上手の高木さん15からかいカレンダーカード付き特別版 「武装神姫」原案イラスト集 ALLSTARS 機動戦士ガンダム サンダーボルト 17 キャラクターブック付き限定版 とある科学の超電磁砲T OFFICIAL VISUAL BOOK Aqours 5周年記念アニメーションPV付きシングル「smile smile ship Start!」【BD付】
https://w.atwiki.jp/opengl/pages/175.html
今回はボーンだけを階層アニメーションさせてみます。 今回も新しく box.x というファイルを作成しています。 スタティックメッシュをボーンが突き抜けていて若干、間抜けな図ですが 順番としてはこれで合っています。 次回からは、このスタティックメッシュを変形させる仕組みを考察してみます。 font.h #pragma once 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 #include math.h #define PAI 3.14159 using namespace std; struct MATRIX; //クォータニオン構造体 struct QUATERNION{ union { struct { float w; float x; float y; float z; }; float Index[4]; }; MATRIX ToMatrix();//クォータニオンを回転行列にする }qua; //マトリクス構造体 struct MATRIX { union { struct { float _11, _12, _13, _14; float _21, _22, _23, _24; float _31, _32, _33, _34; float _41, _42, _43, _44; }; float mat_4x4[4][4]; float mat_16[16]; }; MATRIX(){//単位行列に初期化 for(int i=0;i 16;i++){ this- mat_16[i]=0; } this- _11=this- _22=this- _33=this- _44=1; } void PRINT(char* text){ printf( %s\n%f,%f,%f,%f\n%f,%f,%f,%f\n%f,%f,%f,%f\n%f,%f,%f,%f\n\n , text, this- _11,this- _21,this- _31,this- _41, this- _12,this- _22,this- _32,this- _42, this- _13,this- _23,this- _33,this- _43, this- _14,this- _24,this- _34,this- _44); } MATRIX Multiplication(MATRIX mat);//合成 QUATERNION ToQuaternion();//回転行列をクォータニオンにする }; //合成 MATRIX MATRIX Multiplication(MATRIX mat) { MATRIX ret; for(int y=0;y 4;y++){ for(int x=0;x 4;x++){ ret.mat_16[y*4+x]=mat.mat_16[y*4]*this- mat_16[x]+mat.mat_16[y*4+1]*this- mat_16[x+4]+mat.mat_16[y*4+2]*this- mat_16[x+8]+mat.mat_16[y*4+3]*this- mat_16[x+12]; } } return ret; } float SGN(float x) { return (x = 0.0f) ? +1.0f -1.0f; } //回転行列をクォータニオンにする QUATERNION MATRIX ToQuaternion(){ QUATERNION q; q.w = ( this- _11 + this- _22 + this- _33 + 1.0f) / 4.0f; q.x = ( this- _11 - this- _22 - this- _33 + 1.0f) / 4.0f; q.y = (-this- _11 + this- _22 - this- _33 + 1.0f) / 4.0f; q.z = (-this- _11 - this- _22 + this- _33 + 1.0f) / 4.0f; for(int i=0;i 4;i++){ if(q.Index[i] 0.0f) q.Index[i] = 0.0f; q.Index[i] = sqrt(q.Index[i]); } if(q.w = q.x q.w = q.y q.w = q.z) { q.w *= +1.0f; q.x *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21); q.y *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21); q.z *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21); } else { q.w *= +1.0f*-1; q.x *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21)*-1; q.y *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21)*-1; q.z *= SGN(this- _23 - this- _32)*SGN(this- _31 - this- _13)*SGN(this- _12 - this- _21)*-1; } float nor = sqrt(q.w * q.w + q.x * q.x + q.y * q.y + q.z *q.z); for(int i=0;i 4;i++){ q.Index[i] /= nor; } return q; } //クォータニオンを回転行列にする MATRIX QUATERNION ToMatrix(){ MATRIX ret; float sx = this- x * this- x; float sy = this- y * this- y; float sz = this- z * this- z; float cx = this- y * this- z; float cy = this- x * this- z; float cz = this- x * this- y; float wx = this- w * this- x; float wy = this- w * this- y; float wz = this- w * this- z; ret._11= 1.0f - 2.0f * (sy + sz); ret._12= 2.0f * (cz + wz); ret._13= 2.0f * (cy - wy); ret._21= 2.0f * (cz - wz); ret._22= 1.0f - 2.0f * (sx + sz); ret._23= 2.0f * (cx + wx); ret._31= 2.0f * (cy + wy); ret._32= 2.0f * (cx - wx); ret._33= 1.0f - 2.0f * (sx + sy); ret._41= 0.0f; ret._42= 0.0f; ret._43= 0.0f; return ret; } //3つのベクトル struct Vector3f{ float x; float y; float z; Vector3f(){}; Vector3f(float _x,float _y,float _z){ x=_x;y=_y;z=_z; }; }vec3d; Vector3f operator*(Vector3f v,float size){ v.x *= size; v.y *= size; v.z *= size; return v; } Vector3f operator+(Vector3f a,Vector3f b){ a.x+=b.x; a.y+=b.y; a.z+=b.z; return a; } //4つのベクトル struct Vector4f{ float x; float y; float z; float w; Vector4f(){}; Vector4f(float _x,float _y,float _z,float _w){ x=_x;y=_y;z=_z;w=_w; }; }vec4d; //正規化 void normalize(Vector3f v){ float m=sqrt(v.x*v.x+v.y*v.y+v.z*v.z); if(m 0.0f){m = 1.0f / m;}else{m = 0.0f;} v.x*=m; v.y*=m; v.z*=m; } //外積 void cross( Vector3f src1, Vector3f src2 ,Vector3f dst){ dst.x = src1.y*src2.z - src1.z*src2.y; dst.y = src1.z*src2.x - src1.x*src2.z; dst.z = src1.x*src2.y - src1.y*src2.x; } //内積 void dot(Vector3f src1,Vector3f src2,float dst){ dst= src1.x*src2.x+src1.y*src2.y+src1.z*src2.z; } //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 OUTSIDEMATERIAL{ string MaterialName;//マテリアル名 Reflection4 MaterialColor;//反射 float Shininess;//shininess string TextureName;//テクスチャ名 int TexNo;//テクスチャNO. }outmtl; //マテリアル構造体 struct MATERIAL{ string MaterialName;//マテリアル名 Reflection4 MaterialColor;//反射 float Shininess;//shininess string TextureName;//テクスチャ名 int TexNo;//テクスチャNO. vector Triangle Tridata;//三角面データ vector Quadrangle Quaddata;//四角面データ }mtl; //メッシュ構造体 struct MESH{ public vector MATERIAL Material;//マテリアル vector TEXTURE* TexData;//テクスチャデータ vector GLuint TexID;//テクスチャID GLuint TexID2;//代入用 TEXTURE* tex;//代入用 }msh; //アニメーションデータ構造体 struct ANIMATION{ public vector int Key;//アニメーションキー vector MATRIX Matrix;//行列データ }anm; //ノード構造体 struct NODE{ NODE* Node;//子ノード NODE* Next;//隣の階層 string FrameName;//フレーム名 MESH* Mesh;//メッシュ vector GLuint MatNo;//マテリアルNO. ANIMATION Anim;//アニメーションデータ MATRIX BoneOfSet;//ボーンオフセット行列 MATRIX FrameTransformMatrix;//親フレームからのトランスフォーム行列 bool isBone;//ボーンフラグ }nde; //階層メッシュクラス class HIERARCHY{ public void Draw();//描画 void Draw_Frame(NODE node,int Frame_Time,MATRIX mat);//フレーム描画 void Animation_Draw(int Animation_NO,int Frame);//アニメーション描画 HIERARCHY(); HIERARCHY(char* FileName,float size); NODE Root;//ルートノード float Size;//サイズ int Animation_MaxFrame;//最大フレーム private bool Load_Mesh(FILE fp,NODE node);//メッシュ読み込み QUATERNION Spherical_Linear_Interpolation( QUATERNION q1, QUATERNION q2, float t);//球面線形補間 char buffer[255]; protected void Init(); bool Load_Hierarchy(char* FileName); //階層メッシュ読み込み bool Load_Frame(FILE fp,NODE node,int hierarchy); //フレーム読み込み bool Load_Animation(FILE fp);//アニメーション読み込み vector string Bone_Name; void Find_Frame(NODE node,char* name);//フレームを探す MATRIX Linear_Interpolation(MATRIX a,MATRIX b,float t);//線形補間 NODE* pNode;//ノードポインタ int Back;//階層戻し vector MATRIX bone_ofset; vector OUTSIDEMATERIAL OutSide_Mat; }; //スキンメッシュクラス class SKINNEDMESH public HIERARCHY{ public bool SkinnedMeshFlag;//スキンメッシュか階層メッシュか int AnimTicksPerSecond;//一秒間のコマ数 bool Load_SkinnedMesh(char* FileName, float size);//スキンメッシュ読み込み SKINNEDMESH(); SKINNEDMESH(char* FileName,float size); float Draw_Joint(NODE node,int Frame_Time,MATRIX mat);//ジョイント描画 void Draw_Bone(MATRIX mat,float length);//ボーン描画 }; SKINNEDMESH SKINNEDMESH(){ SkinnedMeshFlag=false; AnimTicksPerSecond=60; Size=1; Animation_MaxFrame=0; } SKINNEDMESH SKINNEDMESH(char *FileName, float size){ //階層メッシュアニメーションかスキンメッシュアニメーションかの判定 char key[255]; FILE* fp=NULL; SkinnedMeshFlag=false; AnimTicksPerSecond=60; Animation_MaxFrame=0; fopen_s( fp,FileName, rt ); //読み込み fseek(fp,0,SEEK_SET); while(!feof(fp)){ //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s(fp, %s ,key,sizeof(key)); //テンプレート読み飛ばし if(strcmp(key, template )==0){ while(strcmp(key, } )){ fscanf_s(fp, %s ,key,sizeof(key)); } continue; } if(strcmp(key, AnimTicksPerSecond )==0){ fgets(key,sizeof(key),fp); fscanf_s(fp, %d; , AnimTicksPerSecond); } if((strcmp(key, FrameTransformMatrix )==0)||(strcmp(key, XSkinMeshHeader )==0)|| (strcmp(key, VertexDuplicationIndices )==0)||(strcmp(key, SkinWeights )==0)){ SkinnedMeshFlag=true; } } if(SkinnedMeshFlag){//スキンメッシュアニメーションなら Init(); Size=size; Load_SkinnedMesh(FileName,size); }else{//階層メッシュアニメーションなら Init(); Size=size; this- Load_Hierarchy(FileName); } } //ボーン描画 void SKINNEDMESH Draw_Bone(MATRIX mat,float length){ glColor4f(0.0f,1.0f,1.0f,1.0f); glPushMatrix(); glMultMatrixf( mat.mat_16[0]); glRotatef(90.0f,1.0f,0.0f,0.0f); if(mat._41+mat._42+mat._43!=0){ if(length!=0)glutSolidCone(10.0f*Size, length, 4, 1); } glPopMatrix(); } //ジョイント描画 float SKINNEDMESH Draw_Joint(NODE node,int Frame_Time,MATRIX mat){ glColorMaterial(GL_FRONT_AND_BACK,GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL); MATRIX current=mat; MATRIX ret; float length=0; while(1){ if(node.isBone){ glPushMatrix(); if(node.Anim.Key.size()==0){ mat=mat.Multiplication(node.FrameTransformMatrix); }else{ //線形補間 for(int k=1;k (signed)node.Anim.Key.size();k++){ int Length=node.Anim.Key[k]-node.Anim.Key[k-1];//キー間の長さ int Current=Frame_Time-node.Anim.Key[k-1];//キー間の現在位置 float t=(float)Current/(float)Length; if((node.Anim.Key[k-1] =Frame_Time) (node.Anim.Key[k] Frame_Time)){ MATRIX Linear = Linear_Interpolation(node.Anim.Matrix[k-1],node.Anim.Matrix[k],t); mat=mat.Multiplication(Linear); } } } glMultMatrixf( mat.mat_16[0]); glColor4f(1.0f,1.0f,0.0f,1.0f); glutSolidSphere(5.0*Size,8,8); ret=mat; length=-sqrt((current._41-mat._41)*(current._41-mat._41)+(current._42-mat._42)*(current._42-mat._42)+(current._43-mat._43)*(current._43-mat._43)); glPopMatrix(); } float len=0; if(node.Node!=NULL)len=Draw_Joint(*node.Node,Frame_Time,mat); if(node.Next!=NULL)len=Draw_Joint(*node.Next,Frame_Time,current); Draw_Bone(ret,len); return length; } glDisable(GL_COLOR_MATERIAL); return 0; } bool SKINNEDMESH Load_SkinnedMesh(char *FileName, float size){ //Xファイルを開いて内容を読み込む Back=-1; int Hierarchy=0; FILE* fp=NULL; fopen_s( fp,FileName, rt ); //読み込み fseek(fp,0,SEEK_SET); Load_Frame(*fp,Root,Hierarchy); //ボーンフラグセット for(int i=0;i (signed)Bone_Name.size();i++){ Find_Frame(Root,(char*)Bone_Name[i].c_str()); pNode- isBone=true; pNode- BoneOfSet=bone_ofset[i]; } Bone_Name.clear(); bone_ofset.clear(); fseek(fp,0,SEEK_SET); this- Load_Animation(*fp); fclose(fp); return true; } //コンストラクタ HIERARCHY HIERARCHY(){ Init(); } //コンストラクタ HIERARCHY HIERARCHY(char* FileName,float size){ Init(); Size=size; Animation_MaxFrame=0; Load_Hierarchy(FileName); } //初期化 void HIERARCHY Init(){ Root.Node=NULL; Root.Next=NULL; Root.FrameName= Root ; Root.Mesh=NULL; Root.isBone=false; } //球面線形補間 QUATERNION HIERARCHY Spherical_Linear_Interpolation( QUATERNION q1, QUATERNION q2, float t) { QUATERNION q; if((q1.w==q2.w) (q1.x==q2.x) (q1.y==q2.y) (q1.z==q2.z)){ for(int i=0;i 4;i++){ q.Index[i] = q1.Index[i]; } return q; } float qr = q1.w * q2.w + q1.x * q2.x + q1.y * q2.y + q1.z * q2.z; float ss = 1.0f - qr * qr; if (ss == 0.0f) { for(int i=0;i 4;i++){ q.Index[i] = q1.Index[i]; } return q; }else{ float sp = sqrt(ss); float ph = acos(qr); float pt = ph * t; float t1 = sin(pt) / sp; float t0 = sin(ph - pt) / sp; for(int i=0;i 4;i++){ q.Index[i] = (q1.Index[i] * t0 + q2.Index[i] * t1); } return q; } } //線形補間 MATRIX HIERARCHY Linear_Interpolation(MATRIX a,MATRIX b,float t){ MATRIX ret,r1,r2,r3; QUATERNION q1,q2,q3; Vector3f vec_A, vec_B, vec_R; //平行移動 vec_A.x=a._41; vec_A.y=a._42; vec_A.z=a._43; vec_B.x=b._41; vec_B.y=b._42; vec_B.z=b._43; vec_R=vec_A*(1.0f-t) + vec_B*t; ret._41=vec_R.x; ret._42=vec_R.y; ret._43=vec_R.z; //スケーリング成分抜き出し vec_A.x=sqrt(a._11*a._11+a._21*a._21+a._31*a._31); vec_A.y=sqrt(a._12*a._12+a._22*a._22+a._32*a._32); vec_A.z=sqrt(a._13*a._13+a._23*a._23+a._33*a._33); vec_B.x=sqrt(b._11*b._11+b._21*b._21+b._31*b._31); vec_B.y=sqrt(b._12*b._12+b._22*b._22+b._32*b._32); vec_B.z=sqrt(b._13*b._13+b._23*b._23+b._33*b._33); for(int i=0;i 4;i++){ for(int j=0;j 4;j++){ r1.mat_4x4[j][i]=a.mat_4x4[j][i]; r2.mat_4x4[j][i]=b.mat_4x4[j][i]; if(i==0){if(j 3){r1.mat_4x4[j][i]=a.mat_4x4[j][i]/vec_A.x;r2.mat_4x4[j][i]=b.mat_4x4[j][i]/vec_B.x;}} if(i==1){if(j 3){r1.mat_4x4[j][i]=a.mat_4x4[j][i]/vec_A.y;r2.mat_4x4[j][i]=b.mat_4x4[j][i]/vec_B.y;}} if(i==2){if(j 3){r1.mat_4x4[j][i]=a.mat_4x4[j][i]/vec_A.z;r2.mat_4x4[j][i]=b.mat_4x4[j][i]/vec_B.z;}} } } //クォータニオンを補間 q1=r1.ToQuaternion(); q2=r2.ToQuaternion(); q3=Spherical_Linear_Interpolation(q1,q2,t); r3=q3.ToMatrix(); vec_R=vec_A*(1.0f-t) + vec_B*t; ret._11=r3._11*vec_R.x; ret._21=r3._21*vec_R.x; ret._31=r3._31*vec_R.x; ret._12=r3._12*vec_R.y; ret._22=r3._22*vec_R.y; ret._32=r3._32*vec_R.y; ret._13=r3._13*vec_R.z; ret._23=r3._23*vec_R.z; ret._33=r3._33*vec_R.z; return ret; } //フレーム描画 void HIERARCHY Draw_Frame(NODE node,int Frame_Time,MATRIX mat){ MATRIX current=mat; while(1){ if(node.Mesh!=NULL){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glPushMatrix(); glMultMatrixf( mat.mat_16[0]); //線形補間 for(int k=1;k (signed)node.Anim.Key.size();k++){ int Length=node.Anim.Key[k]-node.Anim.Key[k-1];//キー間の長さ int Current=Frame_Time-node.Anim.Key[k-1];//キー間の現在位置 float t=(float)Current/(float)Length; if((node.Anim.Key[k-1] =Frame_Time) (node.Anim.Key[k] Frame_Time)){ MATRIX Linear = Linear_Interpolation(node.Anim.Matrix[k-1],node.Anim.Matrix[k],t); mat=mat.Multiplication(Linear); glMultMatrixf( Linear.mat_16[0]); } } for(int i=0;i (signed)node.Mesh- Material.size();i++){ 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); } 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()); } } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); //glDisableClientState(GL_TEXTURE_COORD_ARRAY); //glDisable(GL_TEXTURE_2D); glPopMatrix(); } if(node.Node!=NULL)Draw_Frame(*node.Node,Frame_Time,mat); if(node.Next!=NULL)Draw_Frame(*node.Next,Frame_Time,current); if(node.Node==NULL)return; if(node.Next==NULL)return; return; } } //アニメーション描画 void HIERARCHY Animation_Draw(int Animation_NO,int Frame){ MATRIX mat; Draw_Frame(Root,Frame,mat); } //描画 void HIERARCHY Draw(){ MATRIX mat; Draw_Frame(Root,0,mat); } //フレームを探す 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]; char *next; int hierarchy=0,count=0,key=0,dummy=0,x=0,y=0,z=0,w=0; //合成行列 MATRIX mix; //読み込み while(!feof( fp)) { ZeroMemory(buf,sizeof(buf)); fscanf_s( fp, %s ,buf,sizeof(buf)); //テンプレート読み飛ばし if(strcmp(buf, template )==0){ while(strcmp(buf, } )){ fscanf_s( fp, %s ,buf,sizeof(buf)); } continue; } //AnimationSetを探す if(strcmp(buf, AnimationSet )==0){ while(!feof( fp)) { fgets(buf,sizeof(buf), fp); if((!strstr(buf, Animation )==NULL) (strstr(buf, Animation_ )==NULL)){ fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp); if((!strstr(buf, { )==NULL) (!strstr(buf, } )==NULL)){//名前の抽出 sscanf_s(buf, { %s } , name,sizeof(name)); strtok_s( name, } , next); pNode=NULL; Find_Frame(Root,name); while(!feof( fp)){ fgets(buf,sizeof(buf), fp); if(!strstr(buf, AnimationKey )==NULL){ fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp);//キータイプ 4…行列タイプ] if(strstr(buf, 4; )==NULL)printf( 対応していません ); fgets(buf,sizeof(buf), fp);//キー数 count=atoi(buf); for(int i=0;i count;i++){ fscanf_s( fp, %d;%d; , key, dummy);//キーの位置;データの数 if((count-1==i) (Animation_MaxFrame key))Animation_MaxFrame=key; pNode- Anim.Key.push_back(key); if(dummy!=16)printf( 対応していません ); fscanf_s( fp, %f,%f,%f,%f, , mix.mat_16[0], mix.mat_16[1], mix.mat_16[2], mix.mat_16[3]); fscanf_s( fp, %f,%f,%f,%f, , mix.mat_16[4], mix.mat_16[5], mix.mat_16[6], mix.mat_16[7]); fscanf_s( fp, %f,%f,%f,%f, , mix.mat_16[8], mix.mat_16[9], mix.mat_16[10], mix.mat_16[11]); fscanf_s( fp, %f,%f,%f,%f;; , mix.mat_16[12], mix.mat_16[13], mix.mat_16[14], mix.mat_16[15]); fgets(buf,sizeof(buf), fp); mix._41*=Size; mix._42*=Size; mix._43*=Size; pNode- Anim.Matrix.push_back(mix); } break; } } } } } } } return true; } //メッシュ読み込み bool HIERARCHY Load_Mesh(FILE fp,NODE node){ vector Vector3f Vertex;//頂点 vector Vector3f Normal;//法線 vector UV uv;//UV vector int VertexIndex; vector int NormalIndex; vector int MaterialIndex; vector int FaceIndex; char key[255]; char buf[255]; int v1=0,v2=0,v3=0,v4=0; int Count=0,matCount=0,Hierarchy=1; string str= ; fscanf_s( fp, %s ,key,sizeof(key)); //読み込み while(!feof( fp)) { //キーワード 読み込み ZeroMemory(key,sizeof(key)); fscanf_s( fp, %s ,key,sizeof(key)); //階層+ if(strcmp(key, { )==0){ Hierarchy++; } //階層- if(strcmp(key, } )==0){ Hierarchy--; if(Hierarchy==0){ Count=0; if(Vertex.size() 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]]; if(MaterialIndex[i] =(signed)node.Mesh- Material.size()){ mtl.MaterialName=this- OutSide_Mat[MaterialIndex[i]].MaterialName; mtl.MaterialColor=this- OutSide_Mat[MaterialIndex[i]].MaterialColor; mtl.Shininess=this- OutSide_Mat[MaterialIndex[i]].Shininess; node.Mesh- Material.push_back(mtl); } 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; } } }else{ node.Mesh=NULL; } Vertex.clear(); Normal.clear(); uv.clear(); VertexIndex.clear(); NormalIndex.clear(); MaterialIndex.clear(); FaceIndex.clear(); return true; } } if(strcmp(key, Frame )==0){ Count=0; if(Vertex.size() 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); if(MaterialIndex[i] =(signed)node.Mesh- Material.size()){ mtl.MaterialName=this- OutSide_Mat[MaterialIndex[i]].MaterialName; mtl.MaterialColor=this- OutSide_Mat[MaterialIndex[i]].MaterialColor; mtl.Shininess=this- OutSide_Mat[MaterialIndex[i]].Shininess; node.Mesh- Material.push_back(mtl); } 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; } } }else{ node.Mesh=NULL; } Vertex.clear(); Normal.clear(); uv.clear(); VertexIndex.clear(); NormalIndex.clear(); MaterialIndex.clear(); FaceIndex.clear(); return true; } //頂点 読み込み if(strcmp(key, Mesh )==0) { node.Mesh =new MESH(msh); Hierarchy++; fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i Count ;i++) { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Vertex.push_back(vec3d*(float)Size); } //頂点インデックス読み込み fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i Count ;i++) { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type tab = str.find_first_not_of( \t ); string size_type index = str.find( 3; ); if(index-first-tab==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-first-tab==0)){ 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) { Hierarchy++; fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp); Count=atoi(buf); for(int i=0;i Count ;i++) { fscanf_s( fp, %f;%f;%f;, , vec3d.x, vec3d.y, vec3d.z); Normal.push_back(vec3d); } //法線インデックス読み込み fgets(buf,sizeof(buf), fp); fgets(buf,sizeof(buf), fp); while(strchr(buf, ; )==NULL){fgets(buf,sizeof(buf), fp);}//空行対策 Count=atoi(buf); for(int i=0;i Count ;i++) { int dammy=0; fgets(buf,sizeof(buf), fp); str=buf; string size_type first = str.find_first_not_of( ); string size_type tab = str.find_first_not_of( \t ); string size_type index = str.find( 3; ); if(index-first-tab==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-first-tab==0)){ 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) { Hierarchy++; fgets(buf,sizeof(buf), fp);//空改行 fgets(buf,sizeof(buf), fp);//マテリアル数 matCount=atoi(buf); fgets(buf,sizeof(buf), fp);//リスト要素数 Count=atoi(buf); for(int i=0;i Count;i++) { fgets(buf,sizeof(buf), fp); int test=atoi(buf); MaterialIndex.push_back(test); } char *next; for(int i=0;i matCount;i++) { fgets(buf,sizeof(buf), fp); sscanf_s(buf, { %s } , buf,sizeof(buf)); strtok_s( buf, } , next); for(int j=0;j (signed)this- OutSide_Mat.size();j++){ if(strcmp(this- OutSide_Mat[j].MaterialName.c_str(),buf)==0)node.MatNo.push_back(j); } } } } return false; } //フレーム読み込み bool HIERARCHY Load_Frame(FILE fp,NODE node,int hierarchy){ char key[255]; char *next; int begin=0,end=0; int current=hierarchy;//現在の階層 int file_pos; int count; MATRIX dum; 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, Material )==0) { begin++; fgets(key,sizeof(key), fp); strtok_s( key, \n , next); outmtl.MaterialName=key; fgets(key,sizeof(key), fp); //ディフューズ fscanf_s( fp, %f;%f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z, vec4d.w); outmtl.MaterialColor.diffuse=(const Color4 )vec4d; //SHININESS fscanf_s( fp, %f; , outmtl.Shininess); //スペキュラー fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); outmtl.MaterialColor.specular=(const Color4 )vec4d; //エミッシブ fscanf_s( fp, %f;%f;%f;; , vec4d.x, vec4d.y, vec4d.z); outmtl.MaterialColor.ambient=(const Color4 )vec4d; this- OutSide_Mat.push_back(outmtl); } //ボーン if(strcmp(key, SkinWeights )==0){ begin++; fgets(key,sizeof(key), fp); fscanf_s( fp, %s; ,key,sizeof(key)); sscanf_s(key, \ %s\ ; , key,sizeof(key)); strtok_s( key, \ , next); Bone_Name.push_back(key); fgets(key,sizeof(key), fp); fgets(key,sizeof(key), fp); count=atoi(key); for(int i=0;i count*2;i++){fgets(key,sizeof(key), fp);} fscanf_s( fp, %f,%f,%f,%f, , dum.mat_16[0], dum.mat_16[1], dum.mat_16[2], dum.mat_16[3]); fscanf_s( fp, %f,%f,%f,%f, , dum.mat_16[4], dum.mat_16[5], dum.mat_16[6], dum.mat_16[7]); fscanf_s( fp, %f,%f,%f,%f, , dum.mat_16[8], dum.mat_16[9], dum.mat_16[10], dum.mat_16[11]); fscanf_s( fp, %f,%f,%f,%f;; , dum.mat_16[12], dum.mat_16[13], dum.mat_16[14], dum.mat_16[15]); bone_ofset.push_back(dum); } //親フレームからのトランスフォーム行列 if(strcmp(key, FrameTransformMatrix )==0){ begin++; fgets(key,sizeof(key), fp); fscanf_s( fp, %f,%f,%f,%f, , node.FrameTransformMatrix.mat_16[0], node.FrameTransformMatrix.mat_16[1], node.FrameTransformMatrix.mat_16[2], node.FrameTransformMatrix.mat_16[3]); fscanf_s( fp, %f,%f,%f,%f, , node.FrameTransformMatrix.mat_16[4], node.FrameTransformMatrix.mat_16[5], node.FrameTransformMatrix.mat_16[6], node.FrameTransformMatrix.mat_16[7]); fscanf_s( fp, %f,%f,%f,%f, , node.FrameTransformMatrix.mat_16[8], node.FrameTransformMatrix.mat_16[9], node.FrameTransformMatrix.mat_16[10], node.FrameTransformMatrix.mat_16[11]); fscanf_s( fp, %f,%f,%f,%f;; , node.FrameTransformMatrix.mat_16[12], node.FrameTransformMatrix.mat_16[13], node.FrameTransformMatrix.mat_16[14], node.FrameTransformMatrix.mat_16[15]); node.FrameTransformMatrix._41*=Size; node.FrameTransformMatrix._42*=Size; node.FrameTransformMatrix._43*=Size; } //フレーム 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; node.Node- isBone=false; 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; node.Next- isBone=false; 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; node.Next- isBone=false; 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 current))return true; } } 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 640 #define HEIGHT 480 float angle=0.0f; SKINNEDMESH* SkinMesh; GLFONT *font; wstring wstr; wchar_t wchar[255]; int CurrentFrame; MATRIX mat; 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, 5000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(-1000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glRotatef(angle, 0.0f, 1.0f, 0.0f); SkinMesh- Animation_Draw(0,CurrentFrame); glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); SkinMesh- Animation_Draw(0,CurrentFrame); SkinMesh- Draw_Joint(SkinMesh- Root,CurrentFrame,mat); glEnable(GL_DEPTH_TEST); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_LIGHTING); 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(SkinMesh- 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(SkinMesh- Animation_MaxFrame CurrentFrame)CurrentFrame=0; glutPostRedisplay(); } //タイマー void timer(int value) { CurrentFrame+=30; angle+=1.0f; glutTimerFunc(10 , 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); SkinMesh = new SKINNEDMESH( box.x ,1.0f); 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/mgrpgar2e/pages/691.html
メニュー>称号>ハイランダー>チェンジショット [Sup,-,Spc,-,5,1/Eq魔導剣→Rg 20(HdAk不可.~mARel,Sn)] ☆☆ 冒険では敵にエンゲージできないほど移動を制限されることもままある。中レベル以上の白兵系なら射撃武器や長射程スキルなどで対策しているはずだが、基本的にハイランダーには武器を持ち替えるという選択肢はない。そこでこれの出番ということになる。 のであるが、実質セットアップとマイナーを潰すこのスキルはさほど優秀な保険ではない。《ソニックブーム》なり《ファイナルストライク》なりの方が良いように思う。射撃を延々と続ける必要があるとか、低筋力で投射してきたというなら別だが。 -- 灯 (2012-05-01 19 29 11) 魔導剣の武器種別に関係無く使えるので、キャリバーに使えば射程を伸ばせる…がそれだけなら《シューターハンド》でいいだろう。他にハイランダーになる理由があったなら悪くはないと思う。 -- 名無し (2012-10-29 08 59 03) 実は《インターフィアレンス》の射程が伸びるので魔導銃手にも大いに価値がある。《シューターハンド》の記事でも指摘されている通り、魔導銃の「武器の射程」自体を変更するスキルは意外とないのである。 それはさておきこのスキルの強みは、スリップや移動制限といった白兵系にとって機能停止レベルの状況に対する保険を、たった1枠で取れるという点にある。《ソニックブーム》は優秀ではあるが、2枠取らないと射程が足りなかったり《シークレットフォーミュラ》を要求されたりするしで意外と枠を取ってしまうし、貴重な装備を《ファイナルストライク》する気にもなかなかなれないだろう。 一応、武器が明示的に変形するという部分にロマンを感じる人にもどうぞ。チェンジ三種の中ではこれが一番格好いいと思う。 -- 名無しさん (2019-03-17 22 38 59) ↑《ソニックブーム》に《シークレットフォーミュラ》は要らなかった。失礼しました。 -- 名無しさん (2019-03-17 22 41 08) あらかじめキャリバーの「白兵攻撃が出来る」パッシブ効果を切っておいた状態でこのスキルを使用 再びONにする事で射程20mと白兵攻撃を両立できるのだろうかというのが気になるところ。 フリーアクションが空いてさえいればノーリスクで《インターフィアレンス》が伸びると考えると非常に大きい。 -- 名無しさん (2019-03-28 23 14 47) ↑キャリバーに「白兵攻撃ができる」パッシブ効果は存在しない。兎にも角にもまずはルールブックをよく読もう -- 名無しさん (2019-03-29 22 03 46) ↑旧版ルルブの《ラストリゾート》のことを指していると考えられる。それでもタイミングはパッシブじゃなくてアイテムだけど。 PSG第1版では《ラストリゾート》は「武器攻撃と同時に使用、至近への攻撃を白兵攻撃に変更する」というスキルになっている。このスキルを《チェンジショット》中に使用すると効果が矛盾するが、普通に考えるならPSG.P12「効果の重複」ルールを援用し、《ラストリゾート》による白兵攻撃への変更は(白兵攻撃可能性の上書きに該当するので)可能、と見るのが妥当だろう。 なお、その場合であっても初回のセットアップを潰すことになるのは全くノーリスクではない。よく考えて取得しよう。 -- 名無しさん (2019-04-02 08 51 41) 名前 コメント
https://w.atwiki.jp/anime_wiki/pages/6604.html
ここを編集 1991 ■きまぐれオレンジ☆ロード <OVA 91>(制作協力) 1993 ■映画 クレヨンしんちゃん アクション仮面VSハイグレ魔王(制作協力 めがてんスタジオ、じゃんぐるじむ、座円洞と共同) 1994 ■映画 クレヨンしんちゃん ブリブリ王国の秘宝(制作協力 めがてんスタジオ、シマスタジオ、じゃんぐるじむと共同) 1996 ■新きまぐれオレンジ☆ロード そして、あの夏のはじまり(制作協力) 2000 ■劇場版ポケットモンスター 結晶塔の帝王 ENTEI(制作協力 スタジオコクピット、動画工房、ゆめ太カンパニーと共同) 2002 ■ナースウィッチ小麦ちゃんマジカルて(~2話 タツノコプロと共同) ■劇場版ポケットモンスター 水の都の護神 ラティアスとラティオス(制作協力 スタジオコクピットと共同) 2003 ■MUNTO 2005 ■AIR ■フルメタル・パニック! The Second Raid ■MUNTO 時の壁を越えて 2006 ■Kanon ■涼宮ハルヒの憂鬱 ■フルメタル・パニック! The Second Raid わりとヒマな戦隊長の一日 2007 ■CLANNAD ■らき☆すた 2008 ■CLANNAD ~AFTER STORY~ 2009 ■けいおん! ■涼宮ハルヒちゃんの憂鬱 ■涼宮ハルヒの憂鬱 2009 ■空を見上げる少女の瞳に映る世界 ■天上人とアクト人最後の戦い ■にょろーん☆ちゅるやさん 2010 ■けいおん!! ■涼宮ハルヒの消失 2011 ■映画 けいおん! ■日常 2012 ■中二病でも恋がしたい! ■氷菓 2013 ■境界の彼方 ■小鳥遊六花・改 ~劇場版 中二病でも恋がしたい!~ ■たまこまーけっと ■Free!(アニメーションDoと共同) 2014 ■甘城ブリリアントパーク ■たまこラブストーリー ■中二病でも恋がしたい!戀 ■Free! Eternal Summer(アニメーションDoと共同) 2015 ■劇場版 境界の彼方 -I LL BE HERE- 過去篇 ■劇場版 境界の彼方 -I LL BE HERE- 未来篇 ■映画 ハイ☆スピード!-Free! Starting Days- ■響け!ユーフォニアム 2016 ■映画 聲の形 ■劇場版 響け!ユーフォニアム~北宇治高校吹奏楽部へようこそ~ ■響け!ユーフォニアム2 ■無彩限のファントム・ワールド 2017 ■小林さんちのメイドラゴン ■バジャのスタジオ ■劇場版 響け!ユーフォニアム~届けたいメロディ~ ■劇場版 Free!-Timeless Medley- 絆(アニメーションDoと共同) ■劇場版 Free!-Timeless Medley- 約束(アニメーションDoと共同) ■特別版 Free!-Take Your Marks-(アニメーションDoと共同) 2018 ■ヴァイオレット・エヴァーガーデン ■映画 中二病でも恋がしたい! Take On Me ■ツルネ ―風舞高校弓道部― ■Free! Dive to the Future(アニメーションDoと共同) ■リズと青い鳥 2019 ■ヴァイオレット・エヴァーガーデン 外伝 -永遠と自動手記人形- ■劇場版 響け!ユーフォニアム~誓いのフィナーレ~ ■劇場版 Free!-Road to the World- 夢(アニメーションDoと共同) 2020 ■劇場版 ヴァイオレット・エヴァーガーデン ■バジャのスタジオ ~バジャのみた海~ 2021 ■小林さんちのメイドラゴンS ■劇場版 Free!-the Final Stroke- (前編) 2022 ■劇場版ツルネ ―はじまりの一射― ■劇場版 Free!-the Final Stroke- (後編) 2023 ■ツルネ ―つながりの一射― ■特別編 響け!ユーフォニアム~アンサンブルコンテスト~ 2024 ■京都アニメーション×紫式部ゆかりのまち宇治 PR動画「うじには物語がある」 ■響け!ユーフォニアム3 ■関連タイトル Blu-ray 劇場版ツルネ -はじまりの一射- Blu-ray 劇場版 Free!-the Final Stroke- 前編 劇場版 ヴァイオレット・エヴァーガーデン Blu-ray 特別版 小林さんちのメイドラゴンBlu-ray BOX Free! Blu-ray BOX 響け! ユーフォニアム Blu-ray BOX リズと青い鳥 台本付初回限定版 Blu-ray 映画『聲の形』Blu-ray 初回限定版 涼宮ハルヒの大成ーSuper Blu-ray BOXー 初回生産限定版 氷菓 BD-BOX Blu-ray 映画 たまこラブストーリー 特製フィルムしおり付き 廉価版 AIR Blu-rayコンパクト・コレクション 初回限定生産 けいおん! Blu-ray BOX rakuten_design= slide ;rakuten_affiliateId= 053df7e0.7c451bd1.0c852203.190c5695 ;rakuten_items= ctsmatch ;rakuten_genreId=0;rakuten_size= 468x160 ;rakuten_target= _blank ;rakuten_theme= gray ;rakuten_border= on ;rakuten_auto_mode= on ;rakuten_genre_title= off ;rakuten_recommend= on ; 随時更新! pixivFANBOX アニメ@wiki ご支援お待ちしています! ムック本&画集新刊/個人画集新刊/新作Blu-ray単巻/新作Blu-ray DVD-BOX アニメ原画集全リスト スタッフインタビューwebリンク集 最新登録アイテム Switch ゼルダの伝説 Tears of the Kingdom Switch 世界樹の迷宮Ⅰ・Ⅱ・Ⅲ HD REMASTER Switch ピクミン 4 大友克洋 Animation AKIRA Layouts Key Frames 2 小説 機動戦士ガンダム 水星の魔女 1 ONE PIECE FILM REDデラックス・リミテッド・エディション 4K ULTRA HD Blu-ray Blu-ray 劇場版 ソードアート・オンライン -プログレッシブ- 冥き夕闇のスケルツォ 完全生産限定版 Blu-ray 映画『ゆるキャン△』 Blu-ray 【コレクターズ版】 Blu-ray ウマ娘 プリティーダービー 4th EVENT SPECIAL DREAMERS!! Blu-ray 天地無用!GXP パラダイス始動編 Blu-ray第1巻 特装版 天地無用!魎皇鬼 第伍期 Blu-ray SET 「GS美神」全話いっき見ブルーレイ Blu-ray ソードアート・オンライン -フルダイブ- メーカー特典:「イベントビジュアル使用A3クリアポスター」付 ラブライブ!虹ヶ咲学園スクールアイドル同好会 5th Live! 虹が咲く場所 Blu-ray Memorial BOX 宇宙戦艦ヤマト2202 愛の戦士たち Blu-ray BOX 特装限定版 地球へ… Blu-ray Disc BOX 完全生産限定版 神風怪盗ジャンヌ Complete Blu-ray BOX HUNTER×HUNTER ハンター試験編・ゾルディック家編Blu-ray BOX BLEACH Blu-ray Disc BOX 破面篇セレクション1+過去篇 完全生産限定版 MAZINGER THE MOVIE 1973-1976 4Kリマスター版 アニメ・ゲームのロゴデザイン シン・仮面ライダー 音楽集 テレビマガジン特別編集 仮面ライダー 完全版 EPISODE No.1~No.98 MOVIE リスアニ!Vol.50.5 ぼっち・ざ・ろっく!号デラックスエディション ヤマノススメ Next Summit アニメガイド おもいでビヨリ アニメ「魔入りました!入間くん」オフィシャルファンブック 『超時空要塞マクロス』パッケージアート集 CLAMP PREMIUM COLLECTION X 1 トーマの心臓 プレミアムエディション パズル ドラゴンズ 10th Anniversary Art Works はんざわかおり こみっくがーるず画集 ~あばばーさりー!~ あすぱら画集 すいみゃ Art Works trim polka-トリムポルカ- つぐもも裏 超!限界突破イラスト&激!すじ供養漫画集 開田裕治ウルトラマンシリーズ画集 井澤詩織1st写真集 mascotte 鬼頭明里写真集 my pace 内田真礼 1st photobook 「まあやドキ」 進藤あまね1st写真集 翠~Midori~ 声優 宮村優子 対談集 アスカライソジ 三石琴乃 ことのは 亀田祥倫アートワークス 100% 庵野秀明責任編集 仮面ライダー 資料写真集 1971-1973 金子雄司アニメーション背景美術画集 タローマン・クロニクル ラブライブ!サンシャイン!! Find Our 沼津~Aqoursのいる風景~ 機動戦士ガンダム 逆襲のシャア 友の会[復刻版] 梅津泰臣 KISS AND CRY 資料集 安彦良和 マイ・バック・ページズ 『機動戦士ガンダム ククルス・ドアンの島』編 氷川竜介 日本アニメの革新 歴史の転換点となった変化の構造分析 Blu-ray THE IDOLM@STER CINDERELLA GIRLS 10th Anniversary Celebration Animation ETERNITY MEMORIES Blu-ray おいら宇宙の探鉱夫 ブルーレイ版 Blu-ray 映画 バクテン!! 完全生産限定版 アイカツ! 10th STORY ~未来へのSTARWAY~ Blu-ray BOX 初回生産限定版 はたらく細胞 Blu-ray Disc BOX 完全生産限定版 Blu-ray 長靴をはいた猫 3作品収録 Blu-ray わんぱく王子の大蛇退治 Blu-ray 魔道祖師 完結編 完全生産限定版 魔道祖師Q Blu-ray Disc BOX 完全生産限定盤 にじよん あにめーしょん Blu-ray BOX 【特装限定版】 Blu-ray 鋼の錬金術師 完結編 プレミアム・エディション Blu-ray付き やはりゲームでも俺の青春ラブコメはまちがっている。完 限定版【同梱物】オリジナルアニメ Blu-ray「だから、思春期は終わらずに、青春は続いていく。」
https://w.atwiki.jp/geothermrg/pages/20.html
スケール 熱水や温泉水などからの沈殿物がパイプラインなどに張り付いているもの。目詰まりの原因となり邪魔である。除去技術がいろいろ開発されている。