この記事は 本篇 のつづきです(ページが重くなりすぎたので分割しました)。
【もくじ】
- はじめに
- でこぼこ感のつくり方
- 概要と実装手順
- 高さマップを作る
- 高さマップを法線マップに変換する
- 法線マップからピクセルごとの陰影情報を計算する
- ピクセルごとの陰影情報を、面のテクスチャと合成する
- Processing.jsのバグと回避策
- その他がんばったこと
- ゆるふわ感アップ大作戦
- 描画の高速化(焼け石に水)
- あとがき
- 謝辞
- 参考文献
みなさんこんにちは。
Processing Advent Calendar 2015 5日目担当の たーせる と申します。
今回は、小さなスケッチをひとつだけ投稿します。
(スマフォやタブレットでご覧の皆様は甚だしく処理落ちするかもしれません)
Diff アルゴリズムを C# でてきとうに実装しました(タイトルそのままです)。
ちなみに 2 年半ほど前にも Java で似たようなことをしていましたが、当時はスクリーンショットだけ載せてはいおしまいでした。今回はせっかくなので超カオスなC#のソースも載せておこうと思います。tercel-tech.hatenablog.com
Diffとは異なるデータの差分を検出する処理のことで、業界の符丁では「Diffを取る」などと言ったりします。例として、2つのテキストのDiffを取ってみましょう。ちなみに例文はアンサイクロペディアからパクりました。
テキスト1:
個のよ鵜な返還ミスノお御杉る分掌はな2がなん打か輪からないの出、中石て乳緑し魔性。
テキスト2:
このような変換ミスの多すぎる文章はなにがなんだか分からないので、注意して入力しましょう。
テキスト1とテキスト2のDiffを取った結果:
こ個のよう鵜な変換返還ミスの多すノぎお御杉る文章分掌はなに2がなんだ打か分輪からないので出、 注意し中石て入力乳緑しまし魔ょ性う。
リハビリも兼ねてDiff情報を求めるための拡張メソッドを作りました。
以下の使用例のように、string
オブジェクトに対して直接Diff
メソッドを呼べるようになります。
使用例:
// 「おっぱい」と「いっぱい」のDiffを取る var result = "おっぱい".Diff("いっぱい"); // 結果を出力する foreach (var item in result) { Console.WriteLine("{0} {1}", item.Key, item.Value); }
実行結果:
い + お - っ = ぱ = い =
これを見た人は、「あぁ、『おっぱい』を『いっぱい』に書き換えるためには、1文字目に『い』を追加して、代わりに『お』を削除すればいいんだね。『っぱい』は共通要素だからそのままでいいんだね」とたちどころに理解できます。よかった。めでたい。
なお、出力の見た目をもう少しマシにする方法をこの記事の最後に載せておきました。
HTMLフォームの中でも、チェックボックスは外観のカスタマイズに技巧的な手法を要します。
とはいえ適当にぐぐるだけでも 「CSSだけでチェックボックスをカスタマイズする方法」 の解説ページがいくつか見つかるので、外観を変えるだけならば特に問題なくできます。
ちなみに今回はこちらの記事を参考にしました。感謝!plustrick.com
そこまではよかったのですが、 外観をカスタマイズしたチェックボックスを ASP.NET MVC 5 でそのまま使おうとすると、入力値がモデルにうまくバインドされず、丸一日ドはまりしました(具体的には、チェックボックスにチェックを入れても、Post 先のアクションメソッドでは入力値が常に false と見なされてしまう現象です)。
加えて、カスタマイズ版チェックボックスはデフォルトのビューヘルパーで生成できないため、一筋縄ではいきません。
まるでサウザー戦で北斗神拳が通用しないことに落胆するケンシロウのようなみじめな気持ちになりましたが、とりあえずなんとかなったのでここに書き留めておくことにします。
前回に引き続きカメラネタです。
今日は、2つほど秘密兵器を入荷したのでご紹介しようと思います。
きれいな青空を撮るために、円偏光フィルタというチートアイテムを購入しました。
これを手持ちのレンズ SEL1635Z に取り付ければ、白飛びしがちな空を蒼々と写すことができて超便利。
これからの季節、秋空や紅葉などを撮る際にも重宝しそうです。
続いての商品は、中望遠マクロレンズ SEL90M28G です。シルバーウィークに備えて調達しました*1。
まさかの単焦点。まさかの中望遠。まさかのマクロ。
なにやら一癖ありそうですが、これがまた面白いレンズで、そこらへんに生えている木とか草とかを割と適当に撮るだけでも奇跡のショットになります。ちなみにこの写真、新宿のすみっこで撮りました。
おまけ。ペットボトルもなんか格調高くなります。まりこって誰。
そんなわけで、連休が楽しみだなと思うたーせるなのでした(今日のわんこっぽく)。
いじょ。
*1:本当はBatis 1.8/85も気になりましたが、、、
君と話していた夜が懐かしい。
僕がほんの少しだけ夜空に近かった。
TM NETWORK 〝Here, There & Everywhere〟
少し前の話になりますが、念願の一眼カメラを手に入れました。
購入したのは、α7S*1 と、広角ズームレンズSEL1635Z*2です。
数ある一眼カメラの中でも特別これが欲しかったたったひとつの理由は、星空を撮りたかったから。
α7Sは暗所の撮影に長けた唯一無二の超高感度カメラ[要出典]で、発表当初から一部の星景写真家の話題となっていた[要出典]代物です。結論としては、買って正解でした*3。大事にします*4。
*1:Sonyが誇る超高感度フルサイズ一眼。最高ISO感度409,600。
*2:このレンズの焦点距離は16mm〜35mm。広角端の16mmは、一般的に「超広角(≒視野が広い)」といわれている。ちなみに広角になればなるほど、視野が広がる・パースがきつくなる・被写界深度が深くなる等の特徴が顕著に現れる。
*4:カメラ本体 + レンズ + プロテクター + ゴリラポッドフォーカス + リモートコマンダー + とれるカメラバッグを買い揃えたら夏のボーナスの半分が飛んだので、冗談ではなく本当に大切にしないと……。ちなみに「とれるカメラバッグ」も心底おすすめ。これがないと一眼を持ち歩く気になれない。
Copyright (c) 2012 @tercel_s, @iTercel, @pi_cro_s.