Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

リアルタイムレンダリングでのNPR表現

5,000 views

Published on

3DCGmeetup12で講演したセッションです
UE4のマテリアルを用いて、リアルタイムレンダリングでのNPR表現について解説しました

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • im online here www.sexsearch.online
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

リアルタイムレンダリングでのNPR表現

  1. 1. #3DCGMeetUp リアルタイムレンダリングでのNPR表現 3DCG Meetup #12 kurosawa
  2. 2. #3DCGMeetUp 自己紹介 Name : Kurosawa Twitter ID : kurosaurus URL : the-saurus.net 都内のゲーム会社に勤務 UnrealEngine4やMayaを使う仕事をしています。
  3. 3. #3DCGMeetUp おしながき  さまざまな入力情報  計算式を加える  さまざまな入力情報をつかう  まとめ
  4. 4. #3DCGMeetUp さまざまな入力情報 本当にたくさんあるので、使い勝手のいいものだけ紹介します ※ 今回はパーティクル系は割愛
  5. 5. #3DCGMeetUp Constant Constant Constant2Vector Constant3Vector Constant4Vector 特定のチャンネル数の数値(定数)をつくる。 この数値はゲーム内では変更できない。
  6. 6. #3DCGMeetUp Parameter ConstantとParameterの違い Parameterはゲーム内で変更できる/Constantは変更できない 何でもかんでもParameterにすると管理が大変 ScalarParameter VectorParameter 変更可能な数値(変数)をつくる。 ゲーム内で変更可能。
  7. 7. #3DCGMeetUp ObjectPositionWS WS=ワールドスペース オブジェクトごとのワールド空間の中心位置を出力
  8. 8. #3DCGMeetUp WorldPosition ワールド空間の現在のピクセル位置を出力
  9. 9. #3DCGMeetUp ScreenPosition スクリーン空間の位置を出力
  10. 10. #3DCGMeetUp (余談1)グラデーションの正体 ComponentMask 選択したチャンネルだけに制限する MaskでRのみの表示にすると横方向のグラデーション
  11. 11. #3DCGMeetUp MaskでGのみの表示にすると縦方向のグラデーション
  12. 12. #3DCGMeetUp 赤成分のグラデーション 緑成分のグラデーション + =
  13. 13. #3DCGMeetUp (余談2) マニュピレーターの色ってどうやって決まっているかわかりますか? これ こたえ RGB = XZYだから(MayaはXYZ)
  14. 14. #3DCGMeetUp WorldPositionのBチャンネルに使うと高さ方向のグラデーションになる (例)WorldPositionのグラデーションをMaskしてみる
  15. 15. #3DCGMeetUp PixelDepth/SceneDepth ピクセルのカメラからの深度(距離)を出力 SceneDepthは実際に描画されていないピクセルにも使えるが、 半透明マテリアルのみにかぎり使用できる
  16. 16. #3DCGMeetUp PixelNormalWS/ VertexNormalWS ピクセルが向いている方向/頂点が向いている方向を出力
  17. 17. #3DCGMeetUp (補足)ここまででてきた数式のおさらい Add たしざん Subtract ひきざん Multiply かけざん Divide わりざん Saturate 0以下と1以上を切り捨て ComponentMask 特定のチャンネルだけにする
  18. 18. #3DCGMeetUp Time 時間を出力
  19. 19. #3DCGMeetUp (補足)Sine Sine 正弦波に変換する → 入力 出 力
  20. 20. #3DCGMeetUp CameraPositionWS ワールド空間のカメラ位置を出力
  21. 21. #3DCGMeetUp TextureCoordinate UVを出力、使用するUV番号を決定 UとVそれぞれのチャンネルにTimeを加算
  22. 22. #3DCGMeetUp チャンネルとは? マテリアルの中で扱うときは、 色は3チャンネル、時間は1チャンネル、位置は3チャンネル、UVは2チャンネル として扱える。 一つのチャンネルを持つものはScalar 2つ以上のチャンネルを持つものはVector Vectorは単に2つ以上のチャンネルとしても表現可能ですが、 向き(3つのチャンネル)と大きさを持った単位です。 大きさを1に変換することを正規化といいます。
  23. 23. #3DCGMeetUp CGにおいてすごくたいせつなこと 「色も時間も位置もUVもテクスチャもみんなおなじ」 (ここだけ覚えて帰ってもらっても大丈夫!) マニュピレーターの話を思い出してください コンピューターにとってはRGBもXZYも同じものなので XZYに対応するRGBがそれぞれの軸の色になっています
  24. 24. #3DCGMeetUp 計算式を加える
  25. 25. #3DCGMeetUp バウンディングボックス ノード一つで簡単に!でもじつは…
  26. 26. #3DCGMeetUp じつはファンクションの中身はこんなだったり (ファンクションかどうかは最初は気にしなくていいです)
  27. 27. #3DCGMeetUp グラデーションをシャープにする グラデーションをシャープにすることができます。 ちなみに、シャープにするのは簡単ですがぼかすのはすごく重い処理が必要です。 少しずらして重ねるということを繰り返す必要があります。
  28. 28. #3DCGMeetUp 球を描く 中心の位置から半径の値を引くことで球は簡単に書けます。 (WorldPositionは塗りつぶす対象として必要です)
  29. 29. #3DCGMeetUp 球と円の違い 球と円の違いはZ軸(高さ方向)の値を持たない球が円であるといえます カメラと球の中心位置からBチャンネル(この場合はZ)をMaskすると 円(円柱)になります。
  30. 30. #3DCGMeetUp 球を多重にしてみる Fmod 余りを出力 余りを出力することでノコギリ波に変換できます
  31. 31. #3DCGMeetUp 円を描くもう一つの方法 VectorToRadiusVaueで極座標変換できるのでこれでも円は描けます (これもマテリアルファンクション)
  32. 32. #3DCGMeetUp 螺旋を作る 時計回りのグラデーションを利用して螺旋にしてみました
  33. 33. #3DCGMeetUp さまざまな入力情報をつかう ここまでは変数とWorldPositionだけでマテリアルを表現してみました 次は最初に覚えた様々な入力系を使ってみます
  34. 34. #3DCGMeetUp カメラ座標を使ってみる 球を描く式の中心の座標の代わりにカメラの座標を使ってみる 近づくと穴が開く仕組みができる
  35. 35. #3DCGMeetUp UVにテクスチャを入れる ※ 左のTextureSampleにはコントラストのついたグラデーションが入っています テクスチャのUVを指定する領域にテクスチャを入れる UVとは0-1の2つの値を画像にマッピングしてるともいえる
  36. 36. #3DCGMeetUp UVをゆがめる 左側のテクスチャで右側のテクスチャが歪む
  37. 37. #3DCGMeetUp 内積について ここから先は内積を理解していないと難しいので先におさらい 難しそうに聞こえる内積 実はCG屋さんにはなじみ深いあるもので 考えれば簡単です。 ライティングされた球体 (マテリアルプレビューとかでまいにち見てますよね)
  38. 38. #3DCGMeetUp 内積について2 面の明るさはどうやって決まるか? 光源(Intensity1) 面の明るさはライトベクトルと法線ベクトルの内積で決まります 法線ベクトル ここのあかるさに注目 ライトベクトル ライトベクトルと法線の内積
  39. 39. #3DCGMeetUp 内積について2 法線ベクトル 0°(1) 30°(0.866) 45°(0.7071) 60°(0.5) 法線の角度(法線とライトベクトルの内積≒面の明るさ) 135°(-0.7071) 180°(-1) ライトベクトル(1) 90°(0) (補足) 内積の計算式自体には今回はふれない (数学アレルギーを抑えるのが目的なので) 最初のうちは(正規化された)同じベクトルの場 合は1、90°の場合は0、反対側では-1となるとい うことだけ分かればOK 2つのベクトル同士のおりなす量がわかるので、その 値をどう使っていくかということが本題
  40. 40. #3DCGMeetUp カメラと法線の内積 ランプシェーダー(パラメーターを調整すればフレネルに似たの効果)
  41. 41. #3DCGMeetUp 任意のベクトルと法線の内積 マテリアル内でライティングのようなことができます 詳しくはもんしょ先生のブログを参考にしてください http://monsho.blog63.fc2.com/blog-entry-128.html
  42. 42. #3DCGMeetUp グラデーションを描く 点が2つあれば2点間のグラデーションが作れる
  43. 43. #3DCGMeetUp まとめ マテリアルで様々なことができるようになれば、 テクスチャを貼っただけではない、多様な表現ができる 「環境が変わった時の変化」 「動きのある表現」 「実在しない内部の表現」

×