約 3,986,475 件
https://w.atwiki.jp/fkbkr/pages/13.html
マガシーク Soareak 2014 福袋 ¥10,500(税込) 商品説明 ¥50,000相当以上→¥10,500(税込) アウター1点、ワンピース1点、ニット1点、ストール1点、レッグウエア1点、ヘッドアクセ1点6点入って¥10,500! ※1点ごとに中身が異なる場合がございますので、予めご了承ください。 LABOO 【2014年福袋】Soareak ¥10,500 FREE アウター、ワンピース、ニット、雑貨2点(ストール、レッグウエア、ヘッドアクセのうちいずれか2点)の合計5点が入ったボリュームたっぷりな内容となっています♪♪ 雑貨には人気のインポートアイテムも含まれています。 福袋の中身は合計50,000円相当の商品になります。
https://w.atwiki.jp/fukubukuro/pages/678.html
【評価】福 【ブランド】アリスバーリー 【金額】10K 【購入場所】 イケセイ 【中身】 黒の夏物薄手ジャケット \23100 白の鍵編みカーディガン \10395 紺地に小花?柄のスカート \16800 白のベルト \7245 保温下着 \3990 【まとめサイトへの転載】可 初めてのアリスバーリーだけど着られないものがないから福 下着じゃなく洋服が良かったけど着られないのが来るより全然良い 他がフレイとミニマムだから余計評価が上がったよ 【評価】福 【ブランド】Aylesbury 【金額】 10k 【購入場所】 鱗 【中身】 ◯ツイードぽいジャケット 値札なし 専用品? ◯プリーツスカート黒 15750 ◎透け編み綿カーディガン 10395 ◯ユニクロみたいな白ハイネックインナー 3990 △パールネックレス 8295 掲示板にもうpしました。 ジャケットは値札がなかったので多分専用品。 でもまあ使いやすそうだし、他のものは好みなのでよかった。 特にカーディガンは、ところどころ編み模様が違っていてかわいい。 ちょっと全体的に甘めだから好みはあるけど、自分的には福でした。 【評価】微福 【ブランド】Aylesbury 【金額】 10k 【購入場所】西武 【中身】 自分も西武で買いツイードぽいジャケットで同じ形の濃いベージュでした。 483さんの色の方が好きかも スカートは明るい茶色。形違うみたい。 透け編み綿カーディガンは白でした。いいですよね。 ユニクロみたいな黒ハイネックインナーw ネックレスはなく紺のスカーフでした。イルカ柄。 全体的に茶系でした。服系の福袋初めてなのでとりあえずよくわかりません。 ただ小柄で腹が出てるので、9号を買ってますがアウターはぴったりですが スカートだけ腹がパンパンなので痩せないと無理です。 【評価】福 【ブランド】Aylesbury 【金額】 10k 【購入場所】 松坂屋 【中身】 △グレーのジャケット 24.150 いたってシンプルな型なのであわせやすいと思うけど、あんまりジャケット好きじゃない ○白の七部丈パンツ 12.600 超ストレッチが効いててとっても履き易い!難点は私の脚が短いので微妙な丈になることと白いので汚れが怖いこと。 ○キャメルの半袖トップス 9.345 いたってシンプルな、最近はやりのゆったり感。触り心地がいいし、あれば使う。 ◎茶色のワンピース 14.700 超大当たり、テンションアップした!上品で落ち着いたワンピ。 Aylesburyは私的にはフェミニン系の印象だったんだけど、私の福袋にはカジュアルというか、ベーシックというか、そんなのが来た気がする。 【評価】福 【ブランド】 Aylesbury 【金額】 10K 【購入場所】地方デパ 【中身】 ○トレンチ風ショート丈ジャケットコート 白、麻素材。七分袖、フレアなシルエット。24K 着たら案外良かったけどあんまり履かないパンツの方が似合いそうだ。 ◎水玉ワンピ 茶に白ドット、薄いジャージー素材でスリップ付、半袖。15K フロントにタックがあって、ライン綺麗。着心地すごくいい。 ◎刺繍のティアードSK 薄茶、楊柳のコットンにレースと裾スカラップ刺繍。19.5K 丈が半端に長いの苦手って思ったけど、着てみたらあんまり広がらないし素材涼しい。夏によさ気。 △七分袖ブラウス 紺ギンガム、フリルとタックとレース飾り。13K チュニック系似合うボトムあんま履かないけど、でも犬散歩とかで着るかな。 【まとめサイトへの転載】可 【評価】福 【ブランド】 Aylesbury 【金額】 10K 【購入場所】地方デパ 【中身】 ◎水玉ワンピ 七分で白に茶ドット、シフォン素材、花の飾り付き。22K 彼親に会うこと多いからこういうお出かけ用なの助かる。 ◎花柄SK ベージュにピンク、リバティの小花ペイズリー。18K これ可愛い。 ○シフォンSK ピンクベージュ、水玉サテンにサークル柄のシフォン重ねてある。14K 着てみたら綺麗だったし合わせやすそう。 △チュニックシャツ 茶色、ドルマンっぽいゆったり系、ストライプにドットの織り柄。13K これも犬(略 【まとめサイトへの転載】可 初めのが税込で75K位、二番目のが70K。 チュニックの出番少ないから、いっそボディキュアとかのがよかったけど まぁこれも使えるし、パーティー用のストールだった去年と違って困るもの入ってなくて良かった。 【評価】福 【ブランド】Aylesbury 【金額】10k 【購入場所】イケセイ(オンライン) 【中身】 ◎茶色ノーカラースエード風ジャケット 店頭で見たと思う!ちょっと薄め。初秋に良い。ノーカラーはおなかいっぱいだけど着る。 ◎花柄スカート これも店頭で見てちょっと気になってたスカート!秋っぽい素材。 ◎透かし編みカーディガン 麻っぽい肌触りだけど綿100。暖かい季節に着る。 ○ボディキュア タートルネック白 ヒートテックのパクリ。普通。どうやらボディキュアはほぼ固定の模様。 ○白とベージュの合皮ベルト 普通。無難に使える。 【まとめサイトへの転載】可 9号を買ったのにボトムだけ11号だった。間違えて入れた? でも丁度良かったから許す。全体的に秋っぽい色味。 店頭で見た物が多くて福だった! -
https://w.atwiki.jp/pmswiki/pages/34.html
会場跡地 ジャンル名 曲名 アーティスト 5 N H EX PLUS BMS配布先 PMS差分 差分作者名(空欄可) オレンジポップ orange tea Ym1024 17 27 37 BOF2008会場 @ C. aurantium var. amara MMシーケンサー M-A Musical Masterpiece 26 40 43 BOF2008会場 @ ippi@ ワンダリングスター ring MilkT / 猫松しぐら (菊地 真 / 如月 千早) 16 26 36 BOF2008会場 @ 旧706 ワールドトロニカ エピトゥリカの祀 Team SASAKURATION 20 33 38 BOF2008会場 @ 155 ニューエイジ 遥かなるインカ SHOCK.C 38 BOF2008会場 @ 琴音 千秋楽 ピアノ協奏曲第1番 月光条例 ルナ・ヴィオーラ / iimode-do 41 BOF2008会場 @ negyo_X Star Cluster Milly Barll ㍊ゼ ㍊ BOF2008会場 @ anon ハーモニー evangelize (blurry images) stereoberry (original syatten BGA π=72) 15 29 37 BOF2008会場 @ lcle ソフトロックREMIX Homesick Pt.7716 ねこみみ魔法使い 25 35 42 BOF2008会場 @ 29 PSG WORKS ~ラピ*クエスト~ 旅立ち music rapi* / bms tako (obj k) 25 36 40 BOF2008会場 @ 琴音 Ω AVALON Team SASAKURATION 22 24 36 42 BOF2008会場 @ o HAPPY TRANCE CORE LIKE A WIND kazu. 20 35 42 BOF2008会場 @ yokosuka プログレッシブジャズ Vacant Between You and Me Musical Masterpiece 25 37 42 BOF2008会場 @ 86 鮭Break おいしいふりかけ Pierre/muhi 21 31 39 BOF2008会場 @ ippi@ ヴァリアス Uma fonte de luz yosk! from ELECTRIC駄菓子店 22 32 36 29 BOF2008会場 @ Socri Nostal Ambient ヒカリ光ヒカル Pastel Factory 32 BOF2008会場 @ 通りすがり trance core 月童 - Awaking!!神奈 celas(上杉うた) 30 35 40 42 43 BOF2008会場 @ MEGALO
https://w.atwiki.jp/metalmetabo/pages/24.html
- visitors Science Jobs Vacancies from Nature Jobs http //www.nature.com/naturejobs/science/ Database Annotator Cambridge United Kingdom http //www.nature.com/naturejobs/science/jobs/156990-Database-Annotator We are seeking an annotator to work on two public enzyme databases developed within the Thornton research group at the European Bioinformatics Institute (EBI) located on the Wellcome Trust Genome Campus near Cambridge in the UK. The MACIE database and the Catalytic Site Atlas (CSA) databases contain information relating to the chemical mechanism of each enzyme and the active site description. Postdoctoral Positions in the Enzyme Function Initiative United States http //www.nature.com/naturejobs/science/jobs/160802-Postdoctoral-Positions-in-the-Enzyme-Function-Initiative The Enzyme Function Initiative (EFI) has been established with a Glue Grant from NIGMS/NIH (U54GM093342). The EFI’s goal is to develop a general sequence/structure based strategy for facilitating discovery of in vitro enzymatic and in vivo metabolic/physiological functions of unknown enzymes discovered in genome projects, a crucial limitation in genomic biology. This goal will be accomplished by integrating bioinformatics, structural biology, and computation with enzymology, genetics, and metabolomics. The EFI includes 13 investigators located at 8 academic institutions.
https://w.atwiki.jp/fukubukuro/pages/528.html
Theoryアウトレット三点行きます。 Luxe1個Theory2個購入。 【評価】神寄りの福 【ブランド】Theory Luxe 【金額】10k 【購入場所】近所のアウトレットモール 【中身】 ○グレーのジャケット48300 形がきれい!出てきたときはテンション上がったけど・・・理由は下に記載。 ◎ストライプシャツワンピ25200 可愛い!絶対着る! ◎ベージュグレーのパンツ28350 これのみLuxe。ストレッチ素材で形がきれい ×ロゴバック3675 どう見ても専売品。 【評価】福 【ブランド】Theory 【金額】10k 【購入場所】近所のアウトレットモール 【中身】 ○グレーのジャケット48300 Luxeと全く一緒だった・・・色まで一緒なのでオク行き。もしかして福袋用専売品? ◎ブラウンのパンツ29400 これもラインがきれい。 ◎パープルストレッチスカート26250 自分では買わない感じだけど案外あわせやすい。品のある紫。 △ざっくり編みのタートルネック長袖ニット(エメラルド)28000 これ値段絶対うそだと思う。何年か前の売れ残りかもしれない。毛100でこの値段は無い。 二つに入らなかった・・・ラストです。 【評価】福 【ブランド】Theory 【金額】10k 【購入場所】近所のアウトレットモール 【中身】 △ノーカラージャケット40950 形が遊びすぎて好みじゃない。素材は良いのに・・・なぜかluxe。 ◎羊革アシメスカート57000 出たとき叫んだ!めっちゃ可愛いし素敵だ!大切に着ます! ◎ライトベージュのパンツ25200 仕事には欠かせません。 ×ナイロンバック9450 どう見ても専売品。 【まとめサイトへの転載】可 判定が甘めなのはスーツを着る仕事をしているから。 正直ジャケットが形も色も被ったのが痛い。 と言うかluxeとTheoryごっちゃに入れてるから、福袋を分ける必要無いのでは…? Theoryはスーツ職なら神に近い福袋だけど、それ以外は鬱かもしれん。 -
https://w.atwiki.jp/lspdfrinfo/pages/64.html
ここでは、LSPDFR、GTA5以外のおしらせ(このwikiや管理者に関するお知らせ)を書いていきます。 お知らせになにもなくこのwikiがしばらくの間更新されない場合、管理者がサボっている、失踪している等です。 上に行けば行くほど最新のお知らせです。 おしらせ一覧 2024/6/26 「FLAG」ページを更新しました。 2024/6/24 「管理者の環境」ページを更新しました。 車両は....写真の用意がめんどくさかったので更新してません。 2024/6/23 「carvariations.meta」解説ページを更新しました。 2024/6/22 「GrammarPolice」ページを更新しました。 2024/6/21 「ELSのxml」ページを作成しました。随時更新されます。 2024/6/18 「FLAG」ページを更新しました。またまたまた随時更新されます。 2024/6/17 「FLAG」ページを更新しました。またまた随時更新されます。 2024/6/16 「FLAG」ページを更新しました。また随時更新されます。 2024/6/14 「carvariations.meta」解説ページが完成しました。今後改善されていきます。 「よくある疑問」ページを更新しました。 2024/6/13 「Vehicles.meta」解説ページが完成しました。今後改善されていきます。 「FLAG」ページを作成しました。随時更新されます。 2024/6/11 「carvariations.meta」解説ページを作成しました。こちらも随時更新されます。 「よくある疑問」ページを更新しました。 2024/6/10 「Vehicles.meta」解説ページを更新しました。また随時更新されます。 2024/6/3 「追加プラグイン?」ページを更新し、このwikiで解説されているプラグイン一覧を作成し始めました。 プラグイン「Vehicle Push」のLCPDFR.comサイトでの配布終了に伴い、解説ページを更新しました。 2024/6/2 プラグイン「Heli Assistance」の解説ページを作成しました。 2024/5/27 「SuperCallouts」の更新に伴い、解説ページを更新しました。 「Deadly Weapons」の更新に伴い、解説ページを更新しました。 2024/5/18 「EUP」ページを改善しました。 プラグイン「Riskier Traffic Stops」の更新に伴い、解説ページを更新しました。 コールアウトパック「686 Callouts」の更新に伴い、解説ページを更新しました。 2024/5/6 プラグイン「Riskier Traffic Stops」の更新に伴い、解説ページを更新しました。 2024/5/4 コールアウトパック「686 Callouts」の更新に伴い、解説ページを更新しました。 2024/4/14 コールアウトパック「SuperCallouts」の更新に伴い、解説ページを更新しました。 プラグイン解説ページのダウンロードリンクを開いた際に、別のウィンドウで表示されるようになりました。 2024/4/13 プラグイン「Deadly Weapons」の更新に伴い、解説ページを更新しました。 その他、更新されたプラグイン・コールアウトの解説ページも随時更新予定です。 2024/4/12 「警察車両」ページを更新しました。 2024/3/16 プラグイン「Immersive Ambient Events」の更新に伴い、解説ページを更新しました。 2024/3/12 警察車両紹介ページを改善・更新しました。 今後も随時更新予定です。 2024/3/11 プラグイン「StopThePed」の更新に伴い、解説ページを更新しました。 スクリプト「SimpleHUD」の更新に伴い、解説ページを更新しました。 Q Aページを改善しました。 openIV・車両の設定Q&A よくある疑問 プラグイン設定のQ&A 2024/3/7 「STP.xml」ページを更新しました。 改善も含め完成まではもう少しかかります。 2024/3/4 スクリプト「SimpleHUD」の更新に伴い、解説ページを更新しました。 2024/2/27 プラグイン「Ransom Ambience」の更新に伴い、解説ページを更新しました。 2024/2/22 下記のプラグインの更新に伴い、解説ページを更新しました。 「686 Callouts」 「BLK Highway Callouts」 「Forestry Callouts」 「Riskier Traffic Stops」 2024/2/5 スクリプト「SimpleHUD」の更新に伴い、解説ページを更新しました。 プラグイン「Riskier Traffic Stops」の更新に伴い、解説ページを更新しました。 2024/1/16 iniなどのQ&Aページを更新しました。 2024/1/10 プラグイン「ELS」の解説ページを改善しました。 随時、ELSのxmlファイルの解説ページも作成予定です。 2024/1/6 プラグイン「More Fire」の解説ページを作成しました。 一部プラグインの解説ページの誤字修正 2024/1/3 管理人が新型コロナウイルスに感染してしまったため、しばらく更新を停止します。 2024/1/2 下記のプラグインの更新に伴い、解説ページを更新しました。 「Ransom Ambience」 「Automatic Roadblocks」 「Riskier Traffic Stops」 2024/1/1 Happy New Year! 皆様、よいお年を! 2023/12/12 GTA5のアップデートに伴い、GTA5アップデートページを更新しました。 2023/12/5 この度、管理人はnoteにてブログをはじめました! こちら↓ https //note.com/lspdinfo_private 始めた理由やブログでは何をするのか等はこちらをご覧ください。 2023/12/2 プラグイン「Vehicle Push」の更新に伴い、解説ページを更新しました。 プラグイン「Riskier Traffic Stops」の更新に伴い、解説ページを更新しました。 2023/11/27 スクリプト「SimpleHUD」の更新に伴い、解説ページを更新しました。 コールアウトパック「686 Callouts」の更新に伴い、解説ページを更新しました。 2023/11/22 管理者が再び繫忙期に突入したため、更新がしばらく停止します。 2023/10/31 Happy Halloween! プラグイン「Immersive Ambient Events」の更新に伴い、解説ページを更新しました。 2023/10/25 プラグイン「Ransom Ambience」の解説ページを作成しました。 その他、細かな修正中です。 2023/10/24 誤字・脱字等の修正をしました。 2023/10/19 プラグイン「Automatic Roadblocks」の解説ページを作成し終えました。 2023/10/18 プラグインAutomatic Roadblocksの解説ページを少し更新しました。 プラグインの依存関係をわかる範囲で記載するようにしました。 今まで適当だったインストール方法を詳しく記載しました。(随時更新予定) 2023/10/16 プラグイン「Automatic Roadblocks」の解説ページを作成し始めました。 他ページも随時更新予定です。 2023/10/03 GTA5のアップデートに伴い、GTA5アップデートページを更新しました。 2023/9/28 Vehicles.metaの解説ページを作成しはじめました。 管理者の環境ページを更新しました。 車両などもだいぶ変わっているのですが、画像を撮るのが面d... 2023/9/27 metaファイルに関する解説を作成し始めました。 プラグイン「BetterEMS」の解説ページを作成しました。 時間があるときにxmlファイルに関する更新をいたします。 2023/9/20 すこし時間ができたので更新します。 ほとんどのLSPDFRプラグイン、コールアウトの現在一般公開されている最新バージョンを記載しました。 プラグイン「Immersive Ambient Events」の更新に伴い、ページを更新しました。 その他の更新されたプラグインは後々更新します。 一部のページの誤字・誤植の修正 2023/8/30 プラグイン「Stop The Ped」と プラグイン「Ultimate Backup」の詳細なプラグイン説明を追加しました。 2023/8/26 プラグイン「Ransom Ambience」の解説ページを間違えて削除してしまいました... 時間が整い次第、書き直しますのでもう少しお待ちください... 2023/8/24 プラグイン「MoreLicensePlates (No More 46EEK572)」の解説ページを作成しました。 その他プラグイン解説ページの修正 また、最近から管理者が多忙なためしばらく更新が遅くなります。 2023/8/18 プラグイン「Immersive Ambient Events」の更新に伴いページを更新しました。 コールアウト「Forestry Callouts」の解説ページが完成しました。 2023/8/17 コールアウト「Forestry Callouts」の解説ページを作成しはじめました。 2023/8/13 プラグイン「Immersive Ambient Events」の解説ページを作成しました。 管理人個人的のプラグインの見どころをそれぞれ書くことにしました。(不定期更新) その他、一部の誤字を修正、一部ページを削除しました。 2023/8/10 プラグインRadio Realism FRの.ini解説を記載しました 2023/8/9 車両の表示名を変更する方法を解説するページ、 metaファイルに関する解説ページを作成しました。 ですが、作成当時は非常にテンションがおかしいため解説になっていないかもしれません。 時が来たら更新しマトモにしておきます... 2023/8/8 勤務開始と設定ページにてLSPDFR.iniの解説を記載しました。 管理者の環境ページにて使用しているグラフィックmodの記載&武器モデルのリプレイス先を記載しました。 2023/8/7 新プラグイン「Ransom Ambience」の解説ページを作成しました。 2023/8/4 気づいたらトップページの合計アクセス数が2000回を突破してました。 最近更新が全然できていないのでそろそろSTPの.xmlを更新しないとなぁ...と思っております。 一度でもこのwikiの情報を参考にしてくれた方、ありがとうございます! 2023/7/31 STP、UB、Conpuliteの解説ページを書き直しました。 (誤字・脱字チェックは未定) 2023/7/30 両手銃にサブマシンガン・スナイパーライフルのおすすめを記載します(随時更新) 2023/7/27 おすすめの武器モデルmod紹介ページを作成しました。(多分随時更新) 2023/7/24 誤字修正、変な文章を書き直し その他細かい修正 2023/7/23 長引きましたが管理者がPCに戻ってこれるようになったため更新を再開します。 多忙が終わったわけではないですが少しずつ更新を増やしていきますのでよろしくお願いいたします! 今日の更新点↴ 「管理者の環境」ページにて管理者が設定したプラグインの設定を抜粋し変更した場所として書いておきました。 また、使用しているサウンドや武器のモデル等も記載しました。 その他ページ修正、一部の誤字・脱字を修正しました。 2023/7/5 記念として書き直すといってすぐのところ大変申し訳ございませんが、管理者のリアルが多忙により最低2、3週間更新を停止します。 長くても4週間はかかるかもしれません。ですが失踪はしないのでご安心ください。改めて謝罪します。大変申し訳ございません。 2023/7/3 だいぶ遅くなりましたが、このwikiのトップページの視聴回数が1000回を突破したため記念としてSTP.iniを書き直します。 また、「RPHログの読み方」も含め作成中のページも更新する予定です。 これまで1回でもこのwikiを頼りにしてくれた心優しい方々、本当にありがとうございます! 2023/6/30 「RPHログの読み方」ページを作成し始めました。(随時更新ですが、管理者が最近多忙なため更新が遅れます。ご了承ください。) 2023/6/25 コールアウト「BLK Highway Callouts」の解説ページを作成しました。 2023/6/23 スクリプト「Simple HUD」の解説ページ作成が完了しました。 2023/6/22 LSPDFRの手動・自動インストール方法の紹介ページをなるべくわかりやすいように書き直しました。 2023/6/21 asi「Basic Vehicle Actions」の解説ページを作成しました。 スクリプト「Simple HUD」の解説ページを作成し始めました。(随時更新) 2023/6/19 コールアウト「SuperCallouts」の解説ページを作成しました。 2023/6/17 一部のプラグイン解説ページの.ini解説を見やすいように更新しました。 2023/6/16 公開し忘れていたリプレイス導入例ページを公開しました。 GTAアップデートページでアップデートログを残すようにしました。 2023/6/13 プラグイン「Spotlight」の解説ページを作成開始しました。 2023/6/8 一部のページの情報を修正。 プラグイン「Vehicle Push」の解説ページを作成しました。 UBやSTPのxmlもそのうち更新されます。(多分) 車両紹介「その他」を更新しました。 2023/6/3 iniのQ&A、GTA5アップデートページを更新しました。 Calloutinterfaceの大型アップデートに基づき、Calloutinterfaceと互換性のあるプラグインページを更新。 2023/5/29 プラグイン「Riskier Traffic Stops」の解説ページを更新しました。 2023/5/27 新プラグイン「Riskier Traffic Stops」の解説ページを作成しました。 2023/5/23 現時点対応の元Albo1125氏策のプラグイン解説ページを作成しました。 随時更新します。最初に更新されるのはPoliceSmartRadioです。 2023/5/22 目次を整理し、いらないページを削除。一部誤字の修正をしました。 2023/5/20 Deadly Weapons - Guns are actually dangerous! の解説ページを作成しました。 2023/5/18 10コードや警察無線コードの解説ページを作成しました。 2023/5/17 おまたせしました。 UBの.xmlを書き始めました。STPの.xmlも一緒に更新していく予定です。 ですが管理者が多忙のためしばらく更新されないかもしれません。ご了承ください。
https://w.atwiki.jp/nostradamus/pages/624.html
bienfait は現代フランス語では「恩恵」「利益」などの意味。中期フランス語では「武勲、勲功」(haut fait, prouesse)などの意味もあった。 登場箇所 百詩篇第10巻77番(未作成) 予兆詩第35番(旧31番) 名前 コメント
https://w.atwiki.jp/dotnetradio/pages/66.html
2010年の秋葉原の福袋開封配信です。 福袋一覧 画像 動画 福袋一覧 TUKUMO つくもたん福袋(アルティメットセット)(30,000円) クレバリー 不況箱(2,000円) PC-NET 福袋(5,000円) あきばんぐ 福袋(5,000円) あきばんぐ 不幸袋(1,000円) 三月兎 謎福袋(2,500円) ラムタラ やってしまった袋(2,000円) 画像 動画 ニコニコ動画非会員の方はこちらです。 1/10 http //www.nicovideo.jp/watch/sm9279168 2/10 http //www.nicovideo.jp/watch/sm9279247 3/10 http //www.nicovideo.jp/watch/sm9279511 4/10 http //www.nicovideo.jp/watch/sm9279648 5/10 http //www.nicovideo.jp/watch/sm9279895 6/10 http //www.nicovideo.jp/watch/sm9280182 7/10 http //www.nicovideo.jp/watch/sm9280252 8/10 http //www.nicovideo.jp/watch/sm9280368 9/10 http //www.nicovideo.jp/watch/sm9280474 10/10 http //www.nicovideo.jp/watch/sm9280597
https://w.atwiki.jp/opengl/pages/296.html
環境マッピングです。 正面の球に部屋を反射させて描画します。 room.xは、ここからダウンロードできます。 右クリックして、名前を付けてリンク先を保存してください。 wall.png vertex.shader varying vec3 P; varying vec3 N; varying vec4 Reflect; uniform mat4 ViewTranspose;//ビュー変換だけのモデルビュー行列の転置行列 void main(void) { P = vec3(gl_ModelViewMatrix * gl_Vertex); N = normalize(gl_NormalMatrix * gl_Normal); vec3 incident = normalize(P);//入射視線ベクトル vec3 reflect0 = reflect(incident, N);//その反射ベクトル Reflect = ViewTranspose * vec4(reflect0, 0.0);//ビュー行列の転置行列を乗じる gl_Position = ftransform(); } flagment.shader varying vec3 P; varying vec3 N; varying vec4 Reflect; uniform samplerCube sampler; uniform float reflectivity; void main(void) { vec3 L = normalize(gl_LightSource[0].position.xyz - P); N = normalize(N); vec4 ambient = gl_FrontLightProduct[0].ambient; float dotNL = dot(N, L); vec4 diffuse = gl_FrontLightProduct[0].diffuse * max(0.0, dotNL); vec3 V = normalize(-P); vec3 H = normalize(L + V); float powNH = pow(max(dot(N, H), 0.0), gl_FrontMaterial.shininess); if(dotNL = 0.0) powNH = 0.0; vec4 specular = gl_FrontLightProduct[0].specular * powNH; //オブジェクトの色と環境マップを線形補間 gl_FragColor = mix(ambient + diffuse, textureCube(sampler, Reflect.stp), reflectivity) + specular; } GLSL.h #pragma once #include stdio.h //GLSLクラス class GLSL{ public GLuint ShaderProg; GLuint VertexShader, FragmentShader; void ReadShaderCompile(GLuint Shader, const char *File);//shader fileを読み込みコンパイルする void Link( GLuint Prog );//リンクする void InitGLSL(const char *VertexFile);//GLSLの初期化 void InitGLSL(const char *VertexFile, const char *FragmentFile);//GLSLの初期化 void ON();//シェーダー描画に切り替え void OFF();//シェーダー解除 ~GLSL(); }; void GLSL ReadShaderCompile(GLuint Shader, const char *File){ FILE *fp; char *buf; GLsizei size, len; GLint compiled; fopen_s( fp,File, rb ); if(!fp) printf( ファイルを開くことができません %s\n , File); fseek(fp, 0, SEEK_END); size = ftell(fp); buf = (GLchar *)malloc(size); if (buf == NULL) { printf( メモリが確保できませんでした \n ); } fseek(fp, 0, SEEK_SET); fread(buf, 1, size, fp); glShaderSource(Shader, 1, (const GLchar **) buf, size); free(buf); fclose(fp); glCompileShader(Shader); glGetShaderiv( Shader, GL_COMPILE_STATUS, compiled ); if ( compiled == GL_FALSE ) { printf( コンパイルできませんでした!! %s \n , File); glGetProgramiv( Shader, GL_INFO_LOG_LENGTH, size ); if ( size 0 ) { buf = (char *)malloc(size); glGetShaderInfoLog( Shader, size, len, buf); printf(buf); free(buf); } } } void GLSL Link( GLuint Prog ){ GLsizei size, len; GLint linked; char *infoLog ; glLinkProgram( Prog ); glGetProgramiv( Prog, GL_LINK_STATUS, linked ); if ( linked == GL_FALSE ){ printf( リンクできませんでした!! \n ); glGetProgramiv( Prog, GL_INFO_LOG_LENGTH, size ); if ( size 0 ){ infoLog = (char *)malloc(size); glGetProgramInfoLog( Prog, size, len, infoLog ); printf(infoLog); free(infoLog); } } } void GLSL InitGLSL(const char *VertexFile){ GLenum err = glewInit(); if (err != GLEW_OK) { printf( Error %s\n , glewGetErrorString(err)); } printf( VENDOR= %s \n , glGetString(GL_VENDOR)); printf( GPU= %s \n , glGetString(GL_RENDERER)); printf( OpenGL= %s \n , glGetString(GL_VERSION)); printf( GLSL= %s \n , glGetString(GL_SHADING_LANGUAGE_VERSION)); VertexShader = glCreateShader(GL_VERTEX_SHADER); ReadShaderCompile(VertexShader, VertexFile); ShaderProg = glCreateProgram(); glAttachShader(ShaderProg, VertexShader); glDeleteShader(VertexShader); Link(ShaderProg); } void GLSL InitGLSL(const char *VertexFile, const char *FragmentFile){ GLenum err = glewInit(); if (err != GLEW_OK) { printf( Error %s\n , glewGetErrorString(err)); } printf( VENDOR= %s \n , glGetString(GL_VENDOR)); printf( GPU= %s \n , glGetString(GL_RENDERER)); printf( OpenGL= %s \n , glGetString(GL_VERSION)); printf( GLSL= %s \n , glGetString(GL_SHADING_LANGUAGE_VERSION)); VertexShader = glCreateShader(GL_VERTEX_SHADER); FragmentShader = glCreateShader(GL_FRAGMENT_SHADER); ReadShaderCompile(VertexShader, VertexFile); ReadShaderCompile(FragmentShader, FragmentFile); ShaderProg = glCreateProgram(); glAttachShader(ShaderProg, VertexShader); glAttachShader(ShaderProg, FragmentShader); glDeleteShader(VertexShader); glDeleteShader(FragmentShader); Link(ShaderProg); } void GLSL ON(){ glUseProgram(ShaderProg); } void GLSL OFF(){ glUseProgram(0); } GLSL ~GLSL(){ glDeleteProgram(ShaderProg); } 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 #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 Triangle Tridata;//三角面データ vector Quadrangle Quaddata;//四角面データ }mtl; //モデルクラス class MODEL{ protected vector MATERIAL Material;//マテリアル vector TEXTURE* TexData;//テクスチャデータ vector GLuint TexID;//テクスチャID GLuint TexID2;//代入用 TEXTURE* tex;//代入用 public MODEL(); MODEL(char* FileName,int size);//コンストラクタ bool XFILE_Load(char* FileName,int size);//ロード void Draw(); }; MODEL MODEL(){ } MODEL MODEL(char* FileName,int size){ XFILE_Load(FileName, size); } //描画 void MODEL Draw(){ glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); for(int i=0;i (signed)Material.size();i++){ glPushMatrix(); glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,(const GLfloat *) Material[i].MaterialColor.ambient); glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,(const GLfloat *) Material[i].MaterialColor.diffuse); glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,(const GLfloat *) Material[i].MaterialColor.specular); glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,Material[i].Shininess); if(Material[i].TexNo 0){ glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, TexID[Material[i].TexNo-1]); }else{ glDisable(GL_TEXTURE_2D); glDisableClientState(GL_TEXTURE_COORD_ARRAY); } if(Material[i].Tridata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Tri) , Material[i].Tridata[0].TriVer.x); glNormalPointer(GL_FLOAT,sizeof(Tri), Material[i].Tridata[0].TriNor.x); if(Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Tri), Material[i].Tridata[0].TriUV.u); glDrawArrays(GL_TRIANGLES,0,Material[i].Tridata.size()); } if(Material[i].Quaddata.size() 1){ glVertexPointer(3, GL_FLOAT,sizeof(Quad) , Material[i].Quaddata[0].QuadVer.x); glNormalPointer(GL_FLOAT,sizeof(Quad), Material[i].Quaddata[0].QuadNor.x); if(Material[i].TexNo 0)glTexCoordPointer(2, GL_FLOAT, sizeof(Quad), Material[i].Quaddata[0].QuadUV.u); glDrawArrays(GL_QUADS,0,Material[i].Quaddata.size()); } glPopMatrix(); } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisable(GL_TEXTURE_2D); } //Xファイル読み込み bool MODEL XFILE_Load(char* FileName,int size){ 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]; //Xファイルを開いて内容を読み込む FILE* fp=NULL; fopen_s( fp,FileName, rt ); int v1=0,v2=0,v3=0,v4=0; int Count=0; bool flag=false; string str= ; //読み込み fseek(fp,SEEK_SET,0); 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, Material )==0) { if(flag)Material.push_back(mtl); flag=true; 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; //テクスチャー fscanf_s(fp, %s ,key,sizeof(key)); if(strcmp(key, TextureFilename )==0) { fgets(buf,sizeof(buf),fp);//直後の行にあると推定 改行する //map_Kd テクスチャー fscanf_s(fp, %s ,buf,255); mtl.TextureName=buf; str=mtl.TextureName; mtl.TextureName=str.substr(str.find_first_of( \ ,0)+1,str.find_last_of( \ ,255)-1); //テクスチャを作成 TexData.push_back(tex); TexData[TexData.size()-1] = new TEXTURE(mtl.TextureName.c_str());; mtl.TexNo=TexData.size(); TexID.push_back(TexID2); glGenTextures(1, (GLuint *) TexID[TexData.size()-1]); glBindTexture(GL_TEXTURE_2D, TexID[TexData.size()-1]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glEnable(GL_TEXTURE_2D); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,TexData[TexData.size()-1]- Width, TexData[TexData.size()-1]- Height, 0,GL_RGBA, GL_UNSIGNED_BYTE, TexData[TexData.size()-1]- image); glDisable(GL_TEXTURE_2D); } } //頂点 読み込み if(strcmp(key, Mesh )==0) { fgets(buf,sizeof(buf),fp);//データは2行下にあると推定 改行する 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);//データは2行下にあると推定 改行する 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 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 Count ;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 Count ;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, MeshTextureCoords )==0) { 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 Count ;i++) { fscanf_s(fp, %f;%f;, , vec2d.u, vec2d.v); uv.push_back(vec2d); } } //マテリアルリスト 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 Count;i++) { fgets(buf,sizeof(buf),fp); int test=atoi(buf); MaterialIndex.push_back(test); } } } if(flag)Material.push_back(mtl); fclose(fp); 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]]; 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]]; 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; } main.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #pragma comment(lib, glew32.lib ) #include stdio.h #include windows.h #include GL/glew.h #include GLSL.h #include math.h #include GL/freeglut/freeglut.h #include xfile.h #define PAI 3.141592f //affine変換用変数 float pos[] = { 0.0f, 1.5f, 0.0f }; //object中心のxyz座標 float scale[] = { 1.0f, 1.0f, 1.0f };//大きさ(倍率) float angle[] = { 0.0f, 0.0f, 0.0f };//回転角度 float lightPos[] = {0.0f, 5.0f, 0.0f, 1.0f};//光源位置 //カメラと視体積 struct View{ float pos[3];//位置(視点) float cnt[3];//注視点 float dist; //注視点から視点までの距離 float theta; //仰角(水平面との偏角) float phi; //方位角 //視体積 float fovY; //視野角 float nearZ; //前方クリップ面(近平面) float farZ; //後方クリップ面(遠平面) }; View view = { 0.0f, 0.0f, 0.0f,//pos(仮設定) 0.0f, 1.5f, 0.0f,//cnt 1.0f, 10.0f, 0.0f,//dist, theta, phi 60.0f, 0.1f, 100.0f//fovY,nearZ, farZ }; View view0 = view; //Windowのサイズ int width = 640; int height = 480; //アフィン変換 enum SELECT_KEY {ROTATE, SCALE, TRANSLATE, LIGHT}; SELECT_KEY sKey = TRANSLATE; //マウス操作 int xStart, yStart; bool flagMouse = false; //光源位置変更フラグ bool flagLight = false;//追加 float reflectivity0 = 0.5;//反射率 GLSL glsl; MODEL* model; //テクスチャ用 #define TEX_WIDTH 128 #define TEX_HEIGHT 128 //テクスチャー構造体 struct Target{ GLenum name;//ターゲット名 GLint x, y;//部分画像の位置 GLdouble cx, cy, cz;//注視点 GLdouble ux, uy, uz;//アップベクトル }; struct Target target[] = { { //右 GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, TEX_HEIGHT, 1.0, 0.0, 0.0, 0.0, -1.0, 0.0, }, { //左 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, }, { //天井 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, TEX_WIDTH, TEX_HEIGHT, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, }, { //床 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, TEX_WIDTH,0, 0.0, -1.0, 0.0, 0.0, 0.0, -1.0, }, { //手前 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 2*TEX_WIDTH, TEX_HEIGHT, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, }, { //奥 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 2*TEX_WIDTH, 0, 0.0, 0.0, -1.0, 0.0, -1.0, 0.0, } }; void setCubeMap() { for(int i = 0; i 6; i++) glTexImage2D(target[i].name,0,GL_RGBA,TEX_WIDTH,TEX_HEIGHT,0,GL_RGBA,GL_UNSIGNED_BYTE, 0); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_R,GL_REPEAT); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MIN_FILTER,GL_LINEAR); } void resize(int w, int h){ glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(view.fovY, (double)w/(double)h, view.nearZ, view.farZ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); if(cos(PAI * view.theta /180.0) = 0.0){//カメラ仰角90度でビューアップベクトル切替 gluLookAt(view.pos[0], view.pos[1], view.pos[2], view.cnt[0], view.cnt[1], view.cnt[2], 0.0, 1.0, 0.0); }else{ gluLookAt(view.pos[0], view.pos[1], view.pos[2], view.cnt[0], view.cnt[1], view.cnt[2], 0.0, -1.0, 0.0); } //表示ウィンドウのサイズ width = w; height = h; } void setCamera() { double pp = PAI / 180.0f; view.pos[2] =(float)(view.cnt[2] + view.dist * cos(pp * view.theta) * cos(pp * view.phi));//z view.pos[0] =(float)(view.cnt[0] + view.dist * cos(pp * view.theta) * sin(pp * view.phi));//x view.pos[1] =(float)(view.cnt[1] + view.dist * sin(pp * view.theta));//y resize(width, height); } void draw(void) { float ambient[] = { 0.3f, 0.3f, 0.3f, 1.0f}; float diffuse[] = { 0.7f, 0.7f, 0.7f, 1.0f}; float specular[]= { 0.5f, 0.5f, 0.5f, 1.0f}; glMaterialfv(GL_FRONT,GL_AMBIENT,ambient); glMaterialfv(GL_FRONT,GL_DIFFUSE,diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,specular); glMaterialf(GL_FRONT,GL_SHININESS,100); glPushMatrix(); glTranslatef(pos[0], pos[1], pos[2]); glRotatef(angle[2], 0.0f, 0.0f, 1.0f);//z軸回転 glRotatef(angle[1], 0.0f, 1.0f, 0.0f);//y軸回転 glRotatef(angle[0], 1.0f, 0.0f, 0.0f);//x軸回転 glScalef(scale[0], scale[1], scale[2]); glutSolidSphere(0.2, 20, 20); glPopMatrix(); } void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(90.0, 1.0, 0.1, 30.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // オブジェクトから見たシーンをテクスチャに利用 for (int i = 0; i 6; ++i){ // ビューポートをテクスチャのサイズに設定する glViewport(target[i].x, target[i].y, TEX_WIDTH, TEX_HEIGHT); // オブジェクト中心から見えるものをレンダリング glPushMatrix(); gluLookAt(pos[0], pos[1], pos[2], pos[0]+target[i].cx, pos[1]+target[i].cy, pos[2]+target[i].cz, target[i].ux, target[i].uy, target[i].uz); glLightfv(GL_LIGHT0, GL_POSITION, lightPos); model- Draw(); glTranslatef(0.0, 1.0, 0.0); glPopMatrix(); // レンダリングした画像をテクスチャメモリに転送 glCopyTexSubImage2D(target[i].name, 0, 0, 0, target[i].x, target[i].y, TEX_WIDTH, TEX_HEIGHT); } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); resize(width, height); glsl.ON(); GLint refLoc = glGetUniformLocation(glsl.ShaderProg, reflectivity ); glUniform1f(refLoc, reflectivity0); float m[16] ; glGetFloatv(GL_MODELVIEW_MATRIX, m); GLint ViewTransLoc = glGetUniformLocation(glsl.ShaderProg, ViewTranspose ); glUniformMatrix4fv(ViewTransLoc, 1, GL_TRUE, m); glLightfv(GL_LIGHT0, GL_POSITION, lightPos); //fragment shaderのユニフォーム変数texのインデックスを取得 GLint samplerLoc = glGetUniformLocation(glsl.ShaderProg, sampler ); glUniform1i(samplerLoc, 0); draw(); glsl.OFF(); model- Draw(); glutSwapBuffers(); } void setLight() { float lightAmbient0[] = {0.8f, 0.8f, 0.8f, 1.0f}; //環境光 float lightDiffuse0[] = {1.0f, 1.0f, 1.0f, 1.0f}; //拡散光 float lightSpecular0[] = {1.0f, 1.0f, 1.0f, 1.0f};//鏡面光 glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient0); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse0); glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpecular0); glLightfv(GL_LIGHT0, GL_POSITION, lightPos); glEnable(GL_LIGHT0); glEnable(GL_LIGHTING); } void mouse(int button, int state, int x, int y){ float pp = PAI / 180.0f; if(button == GLUT_LEFT_BUTTON state == GLUT_DOWN){ xStart = x; yStart = y; flagMouse = true; }else if(button == GLUT_RIGHT_BUTTON state == GLUT_DOWN){ if(x width/4 x 3*width/4 y height/4 y 3*height/4){ }else if(( x width/4 || x 3*width/4) (y height/4 y 3*height/4)){ if(x width/4 ) view.phi -= 1.0; else view.phi += 1.0; view.cnt[2] = view.pos[2] - view.dist * cos(pp * view.phi) * cos(pp * view.theta); view.cnt[0] = view.pos[0] - view.dist * sin(pp * view.phi) * cos(pp * view.theta); }else if((x width/4 x 3*width/4) (y height/4 || y 3*height/4)){ if( y height/4){ view.theta += 1.0; }else{ view.theta -= 1.0; } view.cnt[2] = view.pos[2] - view.dist * cos(pp * view.theta) * cos(pp * view.phi); view.cnt[0] = view.pos[0] - view.dist * cos(pp * view.theta) * sin(pp * view.phi); view.cnt[1] = view.pos[1] - view.dist * sin(pp * view.theta); }else if(x width/8 y 7*height/8) view.fovY -= 1.0;//zoom in else if(x 7*width/8 y 7*height/8) view.fovY += 1.0;//zoom out }else flagMouse = false; if(state == GLUT_DOWN) setCamera(); } void motion(int x, int y){ if(!flagMouse) return; if(cos(PAI * view.theta /180.0f) = 0.0f){ view.phi -= 0.5f * (float)(x - xStart) ;//tumble }else{ view.phi += 0.5f * (float)(x - xStart) ;//tumble } view.theta += 0.5f * (float)(y - yStart) ;//crane setCamera(); xStart = x; yStart = y; } void Init(void){ //背景色 glClearColor(0.2f, 0.2f, 0.3f, 1.0f); setCamera();//視点を求める setLight(); //光源設定 glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); //テクスチャの設定 setCubeMap(); glsl.InitGLSL( vertex.shader , flagment.shader ); model = new MODEL( room.x ,1); } void idle(void){ glutPostRedisplay(); } void main(int argc, char *argv[]){ glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutInit( argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutCreateWindow( 環境マッピング ); glutDisplayFunc(display); glutIdleFunc(idle); glutMouseFunc(mouse); glutMotionFunc(motion); glutReshapeFunc(resize); Init(); glutMainLoop(); return; }
https://w.atwiki.jp/mangaka/pages/5247.html
ZOMBIEPOWDERをお気に入りに追加 ZOMBIEPOWDERのリンク #blogsearch2 Amazon.co.jp ウィジェット ZOMBIEPOWDERのキャッシュ 使い方 サイト名 URL ZOMBIEPOWDERの報道 不死身のホラー・パンク・アイドル・ユニット ZOMBIE POWDER、最新ミニ・アルバムより表題曲「DEAD DIARY」MV公開! - 激ロック ニュース ZOMBIE POWDER × hiromitsu(deadbites/AIR SWELL)の座談会公開!不死身のホラー・パンク・アイドル・ユニットが感染度MAXの新作をドロップ!サウンド・プロデューサーとの座談会敢行! - 激ロック ニュース 不死身のアイドル・ユニット ZOMBIE POWDER、hiromitsu(AIR SWELL)サウンド・プロデュース手掛けるミニ・アルバム『DEAD DIARY』トレーラー映像公開! - 激ロック ニュース ZOMBIEPOWDERとは ZOMBIEPOWDERの75%は魂の炎で出来ています。ZOMBIEPOWDERの20%は電力で出来ています。ZOMBIEPOWDERの4%は玉露で出来ています。ZOMBIEPOWDERの1%は夢で出来ています。 ZOMBIEPOWDER@ウィキペディア ZOMBIEPOWDER 楽天売れ筋ランキング レディースファッション・靴 メンズファッション・靴 バッグ・小物・ブランド雑貨 インナー・下着・ナイトウエア ジュエリー・腕時計 食品 スイーツ 水・ソフトドリンク ビール・洋酒 日本酒・焼酎 パソコン・周辺機器 家電・AV・カメラ インテリア・寝具・収納 キッチン・日用品雑貨・文具 ダイエット・健康 医薬品・コンタクト・介護 美容・コスメ・香水 スポーツ・アウトドア 花・ガーデン・DIY おもちゃ・ホビー・ゲーム CD・DVD・楽器 車用品・バイク用品 ペット・ペットグッズ キッズ・ベビー・マタニティ 本・雑誌・コミック ゴルフ総合 掲示板 名前(HN) カキコミ すべてのコメントを見る ページ先頭へ ZOMBIEPOWDER このページについて このページはZOMBIEPOWDERのインターネット上の情報を集めたリンク集のようなものです。ブックマークしておけば、日々更新されるZOMBIEPOWDERに関連する最新情報にアクセスすることができます。 情報収集はプログラムで行っているため、名前が同じであるが異なるカテゴリーの情報が掲載される場合があります。ご了承ください。 リンク先の内容を保証するものではありません。ご自身の責任でクリックしてください。