しゅみぷろ読者になるしゅみぷろプログラミングとかこの広告は、90日以上更新していないブログに表示しています。Unityはじめに何かが衝突した影響でモノが変形したり...といった表現は結構巷にあふれていて、その手法も様々です。シンプルに思いつく実装方法といえば、衝突の際に実際にジオメトリを変形させることでしょうか?今回は実際の頂点データを弄らず、GPUで頂点を変形してレンダリングさせています。ランタイムでの利用を想定しています。用途としては...アルミ缶とかに何かをぶつけて適当に凹ませたり...?あんまり用途は思いつかなかったです。実装といっても、特殊なことは何もありません。ただのDisplacementMappingです。基本的にはInkPainterの、TessellateHeightTransformサンプルを改造していく感じで作りました。GitHubなので処理的にはDisplaementMapに対して、凹凸情報を好きなように書き込むこの凹凸情報を参照して変形するShaderを書いてモデルの描画に使うようにするという感じです。書き込みはInkPainterの機能を使い回しました。変形処理ですが、引き伸ばされた辺をいい感じに分割してほしかったので頂点シェーダーで変形後の頂点の辺の長さを考慮してTessellationを行っています。動画を見ると結構目立つのですが、ポリゴンがポリポリしています(シェーディングの関係でポリゴンが目立つ、陰でポリゴンが際立つ感じ...)。少々コストはかかりますが、DisplacementMapから動的にNormalMapを生成してやって、それを使ってShadingを行うと良くなりそうに思います。最後にコード等公開しようと思いましたが、これ以上更新しようと思うほど楽しくなかったので今回はここまででお蔵入りします。シンプルなメッシュに対して、ざっくりとした変形は実際に頂点を変形させ、ディティールな変形には今回のような手法を用いるような、ハイブリッドな実装ができれば結構面白そうかなと思いました。全部Uniteのせい。雪が積もって高さがもとに戻っていくやつ書いた。)はてなブログをはじめよう!es_programさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。