Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
僕は雪が見たい(雪シェーダーの作成)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
a-pxl
October 25, 2019
Technology
830
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
僕は雪が見たい(雪シェーダーの作成)
雪シェーダーを作成する
・反射計算
・頂点座標の変更
・歩いた跡をつける
・テッセレーションシェーダー
a-pxl
October 25, 2019
More Decks by a-pxl
See All by a-pxl
俺、女の子になります
aizupxl
0
82
Blender 簡単ピストンリグ
aizupxl
0
730
Other Decks in Technology
See All in Technology
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
690
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
300
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
130
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
440
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
170
React改造してみた
tsukina_7mochi
0
120
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
610
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
200
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Test your architecture with Archunit
thirion
2
2.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Transcript
僕は雪が見たい 照屋 尚志
自己紹介 ・照屋 尚志(てるや ひさし) ・修士1年 ・筋トレサボってた ・それとうどん過剰摂取 ・そして少し太った
皆さんは雪はお好きですか
よく言われること 沖縄には海があるじゃん めんどくさいよ 自転車使えなくなるよ
こちとら雪に夢を抱いてんだよ
私にとっての雪
皆が夢見るように
目標 雪原を作る
始めに ・Planeの作成
雪原の完成!!
嘘です
シェーダーを作成します ・雪の反射を作る ・凹凸を作る ・歩いたところを凹むようにする
シェーダーでやったこと ・ランバート反射、スペキュラ反射 ・ホワイトノイズ、パーリンノイズ作成 ・テッセレーションシェーダー ・頂点座標の変更・法線を求める ・depthカメラを使用した軌跡描画
1.雪の反射について
雪はチカチカ反射する
反射の実装 ・ランバート反射、スペキュラ反射の実装 ・ホワイトノイズテクスチャの作成 ・テクスチャを使用してチカチカ反射させる
ランバート反射について
説明する前に ・法線ベクトル - 面に対して垂直なベクトル(wikipediaより)
ランバート反射 θ 法線ベクトル:N 光源方向ベクトル:L 反射 = max(0, (N ・L)) ベクトルNとベクトルLの内積
0以下であれば値を0にする
スペキュラ反射について
スペキュラ反射について ・スペキュラ反射には主に2種類あります - フォンの反射モデル : 計算が大変 - ブリン・フォン反射モデル : 計算が楽 ・ここでは後者について解説します
ブリン・フォン反射モデル 法線ベクトル:N 光源方向ベクトル:L 視点方向ベクトル:V ハーフベクトル:H θ θ ハーフベクトル : H
= (V + L) / 2 反射量 = max(0, (N ・H)) ベクトルNとベクトルHの内積 0以下であれば値を0にする
実装する
チカチカ反射させる ・先程のスペキュラ反射にホワイトノイズを加える
ホワイトノイズ ・1マスごとにランダムな値を書き込む ・ここでは白~黒の色をランダムに書き込む ・反射で白の部分を反射させ、黒は反射させない
ノイズを追加
表面を凸凹したい
頂点について
凹凸を作る ・ノイズを使って頂点の高さを変える ・パーリンノイズを使う 今はネットから見つけたものを使用
実際にやってみた
問題に気づく ・凹凸がカクカクしている ・頂点数が少ない ・反射がちゃんと出来ていない ・法線が垂直のまま
頂点数を増やしたい..... テッセレーションシェーダー!
テッセレーションシェーダー
テッセレーションシェーダー
テッセレーションシェーダーの実装 ・わけわからんことをずらずら書く ・調べたら出てくるのでそこを 参照してください ※こちらは開発途中のものです
テッセレーションシェーダーの実装
結果
まだ足りない
法線を求める ・反射は法線を元に計算される ・凹凸に合わせた法線を求める必要がある
法線を求める ・隣の頂点同士の高さの差を求める ・隣の頂点の高さはノイズテクスチャから求められる
隣の高さをみる (i, j) (i + 1, j) (i - 1,
j) (i, j - 1) (i, j + 1)
隣の高さをみる (i, j) (i + 1, j) (i - 1,
j) (i, j - 1) (i, j + 1) 黒:低い 白:高い 低 高 低 高
外積を計算 ・隣の高さを使用して外積を計算
外積を計算 法線 =
結果
歩いた後を付ける
カメラの深度 ・カメラでは深度を取ることが出来ます ・深度を使って距離を計ることが出来ます
カメラの深度
カメラの深度
RenderTexture ・カメラが取ったものをRenderTextureに 書 きこむことが出来ます ・RenderTextureを使用して 赤い部分を 凹ませます 実際に書き込んだもの →
カメラの準備 ・Planeの下にカメラを仕込む
結果
凹凸と足跡を合わせる
凹凸と足跡を合わせる ・頂点を上げる計算と下げる計算で法線の求め方が変わる ・凹凸を作成する場合と凹ませる場合の両方とも頂点を 下げ るよう変更 ・2つのテクスチャデータを計算して求める ・どこにも参考記事がない.......
頑張った結果
考察 ・頂点の計算の仕方によって法線の計算が変わる ・丁度よい計算が未だ決まっていない ・改良の余地あり
最後に
ユニティちゃんを歩かせてみた
ユニティちゃんを歩かせてみた
参考にしたゲーム 風ノ旅ビト
参考資料(反射関係)
参考資料(テッセレーション) ・Esさんのサイトから UnityTexturePaintでリアルタイムにオブジェクトを変形する ハイトマップから法線情報の生成 テッセレーション基礎
参考資料(足跡) [Unity] CustomRenderTextureに移動跡を書き込む 【Unity】雪をかき分けるような処理の実装を見ることができる「Snow Trail」紹介