The WONDER ROAD

     

Uターンの失敗からリスタートするブログ

2021年09月

モデルの形状をつくり、それを本物っぽく見せる最初のステップがマテリアルの設定です。

Blender_Material


Contents

  1. マテリアルとマテリアルスロット
  2. リストビュー上のメニュー

1. マテリアルとマテリアルスロット


マテリアルとは、質感や色、光の反射などオブジェクトの外観を決めるデータブロックです。マテリアルはメッシュやオブジェクトと関係なく作成できます。そのため、マテリアルをつくった後にメッシュやオブジェクトとつなぐものが必要です。それがマテリアルスロットになります。
マテリアルを色、質感、光の反射などを記憶したデータカード。そして、オブジェクトにはそれを差し込むカードスロットがあると考えると分かりやすいかもしれません。
そのため、すでにマテリアルが設定されたマテリアルスロットには違うマテリアルを設定できず、新しくもう1つのスロットが必要です。
逆にマテリアルはほかの複数のオブジェクトのスロットに設定することも可能です。

Blender_Material_Slot_1

2. リストビュー上のメニュー

プロパティウィンドウのマテリアルタブには、選択したオブジェクトのマテリアルスロットとアクティブなマテリアルが表示されています。これをリストビューといいます。この中にもいくつかの操作メニューがあります。

Blender_Material_1

    マテリアルスロットを追加    

アクティブなマテリアルが表示されているリストの横の   +   をクリックすると、オブジェクトに新しいマテリアルスロットを追加します。

Blender_マテリアルスロットを追加


    マテリアルスロットを除去    

同じようにリストの横の   -   をクリックすると、オブジェクトからマテリアルスロットを除去します。

Blender_マテリアルスロットを除去


    マテリアルをコピー    

リストの横の   v   をクリックすると、メニューが表示されます。アクティブなシェーダーノードとその設定をクリップボードにコピーします。


    マテリアルを貼り付け    

「マテリアルをコピー」でクリップボードにコピーした設定を選択したマテリアルに貼り付けます。マテリアルの名前は変更されず元のままです。

マテリアルをコピー_貼り付け


    マテリアルを選択物にコピー    

リストの横の   v   をクリックして選択します。アクティブなオブジェクトに割り当てられているマテリアルを、選択された他のオブジェクトへコピーします。ここではマテリアルの設定ではなく、マテリアルそのものがコピーされるため、すべてが同じ名前のマテリアルとなります。

マテリアルを選択物にコピー


    未使用スロットを削除    

オブジェクトに割り当てられていないすべてのマテリアルスロットを削除します。

未使用スロットを削除


リストビューの下には、データブロックメニューが表示されています。
データブロックメニューについてはこちらの記事をどうぞ。




Blenderのチュートリアルなどを見ながら操作を確認していると、よく「データブロック」というワードが出てきます。この「データブロック」とは一体何でしょう?

Blender_Data_Block


Contents

  1. データブロックとは
  2. データブロックを扱うデータブロックメニュー
  3. データブロックの状態を確認

1. データブロックとは

データブロックとは、Blenderのプロジェクトを構成する基本要素となるデータのことです。言葉で表すととても難しく聞こえますが、実際にモデルを作る際によく使っているオブジェクト、メッシュ、マテリアルなどはすべてデータブロックと呼ばれます。

その他にも、カメラ、ライト、アマチュア、シーン、テクスチャ、ワークスペースなどもデータブロックに含まれます。つまり、Blenderのなかで扱う、このようなデータを総称して「データブロック」というわけです。

ただ、Blenderのすべてのデータを「データブロック」と呼ぶわけではないので、注意してください。

2. データブロックを扱うデータブロックメニュー

データブロックを新しく作成したり、編集したり、ほかのデータブロックに関連付けたりするメニューボタンのことを「データブロックメニュー」といい、それぞれのデータブロックを扱うプロパティウィンドウ内に用意されています。

ここではマテリアルを例に見ていきます。

Blender_データブロックメニュー_1

Blender_Data_Block_Menu_1


    ① タイプ    

データブロックのタイプを示すアイコンが表示されています。
クリックすると現在のファイルで有効なデータブロックのリストが表示されます。

Blender_データブロックメニュー_2


    ② 名前    

データブロックの名称が表示されます。ダブルクリックして、テキストを入力することで名前を変更することもできます。すでに割り当てられた同じ名称のデータブロックがある場合は、末尾に".001"など数字が自動的に追加されます。

    ③ ユーザー数    

そのデータブロックを使用しているユーザーの数が表示されます。ユーザーと言うと人のようですが、そのデータブロックと関連付けられているその他のデータブロックがいくつあるか?ということです。例えば、マテリアルで考えると、そのマテリアルが割り当てられているオブジェクトがいくつあるかを表示します。

このボタンをクリックすると、現在アクティブなデータブロックとのリンクが解除され、新しいマテリアルがリンクされます。

Blender_データブロックメニュー_3


    ④ フェイクユーザー    

盾のアイコンで表示されたボタンです。

Blenderでは、使用されていないデータブロックについてはファイル内に保存されないことになっています。そのため、「今は使用していないけれど、ファイルには保存しておきたい」といった場合は、このボタンを押して仮のユーザーを設定します。
フェイクユーザーを有効にすると、アイコンが青に変更されます。

Blender_データブロックメニュー_4


    ⑤ 新規    

ファイルのアイコンで表示されたボタンです。
アイコンをクリックすると、アクティブなデータブロックが複製され、アクティブなオブジェクトに割り当てられます。

Blender_データブロックメニュー_5


    ⑥ Open File    

フォルダのアイコンで表示されています。

外部に保存されたデータを読み込むときに、フォルダを開きます。
マテリアルのメニューには表示されていません。


    ⑦Unpack File    

ゴミ箱のアイコンで表示されています。

パックされた外部ファイルを解除します。パックというのは、外部ファイルを参照するのではなく、同じファイル内に取り込んで、一緒に保存するようなイメージです。


    ⑧データブロックのリンク削除    

「✕」印で表示されたボタンです。

ほかのデータブロックとリンクされている場合、このボタンをクリックするとリンクが解除されます。

Blender_データブロックメニュー_6


3. データブロックの状態を確認

Blenderでは未使用のデータブロックは保存されません。そのため、以前つくったファイルを開くとデータブロックがなくなった。ということも起こります。そのためにフェイクユーザーを設定するのですが、では、どうやってリンクされたデータブロックがあるのかを調べればよいのでしょうか?


データブロックメニューのタイプアイコンをクリックするとリストが表示されます。ここにそれぞれのデータブロックのユーザー数が表示されます。
ユーザーがひとつもない場合は「0」、ひとつだけの場合は「1」というように、データブロックの名前の横に数字が表示されます。さらに、フェイクユーザーが設定されている場合は「F」が表示されます。フェイクユーザーもユーザー数に数えられるので、同時に「1」が表示されます。

Blender_データブロックメニュー_7



前回はモディファイアーについて説明しましたが、今回はそのなかのひとつ、キャストモディファイアーについて紹介します。

前回の記事はこちらをどうぞ。



Blender_Modifier_Cast


Contents

  1. キャストモディファイアーの効果
  2. オプションを変更してみる

1. キャストモディファイアーの効果

キャストモディファイアーの "キャスト" とは「型にはめる、成型する」という意味で、メッシュや曲線、サーフェス、格子などを指定した形状に合わせて変更していきます。

2. オプションを変更してみる

キャストモディファイアーの効果を決めるためにいくつかのオプションが用意されています。これによって仕上がりの形状や効果の具合などを変更することができます。

    シェイプ    

目標とする形状を「球」「円柱」「直方体」の中から選択します。これによって形状が「球」では「球」っぽく、「円柱」では「円柱」っぽく、「直方体」では「直方体」っぽくなります。ためしにUV球オブジェクトに対して「シェイプ」を変更し、効果を確認してみます。

Blender_Modifier_Cast_なし
モディファイアーなし
Blender_Modifier_Cast_球
Blender_Modifier_Cast_円柱
円柱
Blender_Modifier_Cast_直方体
直方体

    座標軸    

モディファイアーを有効にする軸方向をボタンで選択します。シェイプを「直方体」にした場合が一番わかりやすいので、X,Y,Z それぞれ1方向のみを有効にしてどのように変化するかを見てみます。

Blender_Modifier_Cast_直方体
すべての方向に有効
Blender_Cast_Modifier_Axis_X
X軸方向のみ
Blender_Cast_Modifier_Axis_Y
Y軸方向のみ
Blender_Cast_Modifier_Axis_Z
Z軸方向のみ

    係数    

元の形状の各頂点を目標とする形状の頂点にどの程度移動するかを指定します。
「0」であれば元の座標のまま、「1」とすれば目標形状となる位置まで移動します。0以下や1以上の値もとることができ、効果が誇張された形状となります。

Blender_Cast_Modifier_Factor_0
係数 0
Blender_Cast_Modifier_Factor_1
係数 1
Blender_Cast_Modifier_Factor_-1_Z
係数 -1
Blender_Cast_Modifier_Factor_2B
係数 2

    半径    

モディファイアーの影響を受ける範囲を指定します。0のときは全体にモディファイアーの効果が追加され、0以外の値ではその半径より外ではモディファイアーの効果はなくなります。
ここでは半径1の球を例に「半径」による影響を確認してみます。半径0.5では元の球の中におさまってしまうので効果は表現されません。半径0.8では角部のみ球の外に現れます。半径1ではすべての効果が表現されます。

Blender_Cast_Modifier_Radius_0.5
半径 0.5
Blender_Cast_Modifier_Radius_0.8
半径 0.8
Blender_Cast_Modifier_Radius_1
半径 1

    サイズ    

モデルのサイズを指定します。「0」のときは元のモデルと同じサイズとなり、「0」以外の値とするとその倍率だけ拡大・縮小されます。「1」のときも元のモデルと同じサイズになります。「サイズに半径を使用」にチェックを入れると、入力された値に関係なく「半径」で入力した値を「サイズ」でも使用します。




モデル上のなめらかな面や、複雑な曲面を表現するのはとても大変な作業に思えますが、モディファイアーを使うと、実はそんなに大変ではありません。

Blender_Modifier

Contents

  1. モディファイアーとは
  2. モディファイアーの4つのタイプ
  3. モディファイアーの適用方法

1. モディファイアーとは

CGでつくられた画像や映像を見ていると、現実に存在するもののように複雑でなめらかな曲面が見事に再現されています。

「同じようなものがつくってみたい」と思ってつくってみても、画面の中ではカクカクしたポリゴンモデルが表示されるだけです。一つ一つのメッシュをものすごく小さくして、それぞれを少しずつずらして配置しながら、なめらかな曲面を表現することは可能です。ただ、そうなると複雑なモデルを表現することはとても大変な作業になります。

これを解決してくれるのがモディファイアーです。モディファイアーは実際のモデル形状は変更せず、自動的な操作でレンダリング画像に表示する形状にだけ影響を与えます。そのため、元の形状を後から変更することもできますし、モディファイアーを変更して違った効果を追加することも出来ます。

Blenderにはいろいろな効果が表現できるモディファイアーが準備されていて、いくつかのモディファイアーを重ねることもできます。

Blender_Modifier_なし
モディファイアーなし
Blender_Modifier_あり
モディファイアーあり

2. モディファイアーの4つのタイプ

Blenderに用意されているモディファイアーは次の4つがあります。
  1. 変更 (Modify)
  2. 生成 (Generate)
  3. 変形 (Deform)
  4. 物理演算 (Simulate)

    変更    

オブジェクトの形状そのものは変更せずに、頂点グループなどほかのデータを変更します。

    生成    

各メッシュ間の位置関係に変更を加えることで、オブジェクトの外観を変えたり、新しい形状を追加したりすることになります。

    変形    

オブジェクトのなかのメッシュどうしの関係は変えることなく、オブジェクトの形状だけを変更します。

    物理演算    

ほとんどの場合は、パーティクルや物理演算を起動すると自動的にこのモディファイアーが追加される。このモディファイアーの役割はスタックのなかのどの順番に適用されるかを決めるためだけです。この順番によって、シミュレーションに使用するベースデータが変わってくるので結果も変わります。通常、プロパティは別のセクションで定義されます。

3. モディファイアーの適用方法

モディファイアーをオブジェクトに追加するには
  1. モディファイアーはアクティブなオブジェクトに適用されるので、まず追加したいオブジェクトを選択します。

  2. プロパティエディターにある「モディファイアープロパティ」タブから「モディファイアーを追加」をクリックするといろいろな種類のモディファイアーのリストが表示されるので希望のものを選択します。

    Blender_Modifier_1

  3. うまく追加できていればアウトライナーのオブジェクトの下に追加したモディファイアーが表示されます。

    Blender_Modifier_2



3D CGをつくっているとよく「HDRI」という文字を目にします。今回は、直接Blenderの操作や機能には関係ありませんが、この「HDRI」についてです。

Blender_HDRIレンダリング

Contents

  1. HDRIとは
  2. なぜHDRIが必要か
  3. HDRIの入手方法

1. HDRIとは

HDRIは "High Dynamic Range Image" の略で、日本語では超高階調画像となります。

これは現実に目で見える世界に近いレンジの明るさを表現できる画像フォーマットです。

これまでも書きましたが、レンダリングを実行すると、画像の各ピクセルの色を決めるためにカメラ側から光源までたどります。

記事リンク追加

その際に背景もライティングの色情報としてつかわれますが、この背景画像に精密な画像をつかったものをイメージベースドライティングといい、これにより実写と合成しても違和感のない画像に仕上がります。

2. なぜHDRIが必要か


コンピューターの色情報のひとつに24ビットカラーがあります。これは赤、緑、青のそれぞれが2の8乗=256階調の色を持ちます。つまり、256の3乗=1677万色という人間の目では区別ができないくらいの色の違いを表現することができます。
しかし、その画像をつかって合成などの作業を行うと、誤差がかさなり画像が劣化します。つまり、元の画像は24ビットカラー以上が必要ということになります。これがHDRIが必要な理由です。

このHDRIをつかったレンダリングを「HDRIレンダリング」といいます。

3. HDRIの入手方法

それではHDRIが何かわかったところで、どこで入手できるのでしょうか?
これにはとても便利なサイトがあります。「Poly Haven」というサイトでは完全無料でHDRIをダウンロードすることができます。このサイトでは、他にもテクスチャや3Dモデルもダウンロードすることができます。






 

時間をかけてしっかりレンダリングした画像やアニメーションが思っていたような出来じゃなかったら、なかなかショックが大きくないですか?今回はそうならないための方法です。

Blender_ビューポートレンダリング

Contents

  1. ビューポートレンダリングとは
  2. ビューポートレンダリングの注意点
  3. ビューポートレンダリングの実行方法

1. ビューポートレンダリングとは

3Dモデルがモデルのレイアウトを変更したり、通常作業しているウインドウを「3Dビューポート」といいます。ビューポートレンダリングとは、この3Dビューポートでレンダリング画像やアニメーションを事前に確認することができます。

このとき、ソリッドモードではWorkbenchのレンダリングセッティングを使用し、マテリアルプレビューモードではEeveeのレンダリングセッティングを使用します。

2. ビューポートレンダリングの注意点

ビューポートレンダリングは通常のレンダリングとは違う点がいくつかあるので注意が必要です。
  • カメラビューではなく現在画面にうつっている視点で画像がつくられる
  • カメラオブジェクトや背景の座標軸やグリッドなども含んだ画像がつくられる
まず、通常のレンダリングでは、自分で設定したカメラからの視点で画像がつくられますが、ビューポートレンダリングでは現在アクティブなビュー、つまり現在画面上に表示されている視点で画像がつくられます。実際のレンダリング画像と同様にカメラからの視点での画像を確認したい場合は  0  キーを押して、カメラビューに変更してから、ビューポートレンダリングを実行します。

ためしに次のようなモデルをビューポートレンダリングと通常通りのレンダリングで比較してみます。

Blender_Viewport_Rendering_Before


ビューポートレンダリング
ビューポートレンダリング
ビューポートレンダリング_2
通常のレンダリング

3. ビューポートレンダリングの実行方法

ビューポートレンダリングの実行方法は次の通りです。

    静止画のレンダリング    

3Dビューポート内の「ビュー」→「ビューで画像をレンダリング」

    アニメーションのレンダリング    

3Dビューポート内の「ビュー」→「ビューで動画をレンダリング」

    キーフレームのレンダリング    

3Dビューポート内の「ビュー」→「ビューでキーフレームをレンダリング」

キーフレームのレンダリングでは、キーフレームが挿入されたフレームのみレンダリングされ、そのほかのフレームは1つ前のキーフレームが繰り返されます。




モデルを作り終わって、ポチっとボタンを押すと簡単に写真のような画像が出来上がるのがCGの面白いところですが、画像が出来上がるまでにはいろいろな処理がおこなわれています。そのため、細かな設定がいろいろ必要なのですが、この設定で画像の出来が変わるので少しでも理解しておきましょう。

Blender_レンダリング_サンプル

Contents

  1. インテグレーターとは
  2. 2つのサンプリング方法
  3. レンダー値を変更してみる

1. インテグレーターとは

インテグレーターとは、光の反射を計算するレンダリングアルゴリズムのことをいいます。BlenderのレンダリングエンジンであるCyclesでは、"パストレーシング"という方法をつかってレンダリング画像をつくります。

この方法は、カメラから出た光線がシーンにあるオブジェクトにぶつかりながら照明オブジェクトや光を出すオブジェクトに当たるまで飛び回ります。そして、そこから色や光の強さを計算して画像にしていきます。

2. 2つのサンプリング方法

カメラからの光線で各ピクセルの表現を決めていく方法をサンプリングといいますが、Cyclesには次の2つのサンプリング方法があります。

(1) パストレーシング

カメラから出た光線が、オブジェクトにぶつかったあとのランダムに跳ね返る光線を1方向のみとし、光が出る光源を1つ決めます。1方向だけなので、それぞれのサンプルの計算は早いです。ただ、1つのピクセルに対して、サンプリング1回だと情報がない部分ができ、ギザギザの画像になります。そのため、より良い画像をつくるためには、それぞれのピクセルにおいてサンプリング数を上げる必要があります。

(2)分岐パストレーシング

パストレーシングと同様にカメラからの光線をたどりますが、オブジェクトにぶつかったあとにひとつだけではなく複数の光線をたどりすべての光源を一度に取り込みます。複数の光源を同時に取り込むのでサンプリングに時間がかかりますがノイズを減らすことができます。

3. レンダー値を変更してみる

サンプリングの設定を変更して効果を確認します。

    レンダー    
< br /> レンダリング画像をつくるときに、それぞれのピクセルに対してトレースする数を設定します。サンプル数が多くなればノイズが少なくなりきれいな画像になります。下にレンダー値を変更したときの画像と、その画像のレンダリングにかかった時間をまとめます。
Blender_Render_10
パストレース 
レンダー10 (1秒以内)
Blender_Render_100
パストレース 
レンダー100 (5秒)
Blender_Render_200
パストレース 
レンダー200 (10秒)
Blender_Render_500
パストレース 
レンダー500 (25秒)


Blender_分岐パス_Render_10
分岐パストレース 
レンダー10 (1秒以内)
Blender_分岐パス_Render_100
分岐パストレース 
レンダー100 (5秒)
Blender_分岐パス_Render_200
分岐パストレース 
レンダー200 (11秒)

    ビューポート    

ビューポートレンダリング用のサンプリング数を設定します。
ビューポートレンダリングについてはこちらの記事をどうぞ。



オブジェクト表面の光の反射や、オブジェクト上の影などを表現するシェーダーを使いこなすために、詳しく見ていきましょう。

Blender_放射シェーダー

Contents

  1. 放射ノードとは
  2. 各入力値を変更してみる

1. 放射ノードとは

放射ノードではオブジェクト表面にランバート放射シェーダーを追加します。ランバート放射では、表面から放射される光の強さが、面の法線と見ている方向との角度のcosに比例します。


照明のポイントライト、スポットライトやエリアライトなどはW(ワット)で表されますが、太陽光はW/㎡で表されます。これは太陽光などの強い光をWで表すと、値が大きくなりすぎるのでW/㎡のほうが都合がよくなります。
メッシュに追加された放射シェーダーについても同様にW/㎡で表されます。

2. 各入力値を変更してみる

放射ノードには以下の値の設定が必要です。
 
    カラー    

発せられる光の色を設定します。

    強さ    

発せられる光の強さを設定します。ポイントライトやエリアライトについてはW(ワット)で指定します。マテリアルに追加する場合は数値で指定します。この場合、「1.0」に設定すると、表面全体が「カラー」で設定した色になります。
ここではマテリアルに放射シェーダーを追加して、強さを変更した場合を比較しました。

Blender_放射_強さ_0
強さ 0
Blender_放射_強さ_0.5
強さ 0.5
Blender_放射_強さ_1
強さ 1
Blender_放射_強さ_10
強さ 10
Blender_放射_強さ_100
強さ 100



オブジェクト表面の光の反射や、オブジェクト上の影などを表現するシェーダーを使いこなすために、詳しく見ていきましょう

Blender_光沢BSDF

Contents

  1. 光沢BSDFとは
  2. ディフューズBSDFの2つの反射モデル
  3. 各入力値を変更してみる

1. 光沢BSDFとは

光沢BSDFとは、オブジェクト表面上にマイクロファセットというごく小さな面を仮定し、金属表面や鏡面のような光の反射を表現します。

Blender_光沢なし_R0.5
光沢なし
Blender_光沢あり_R0.5
光沢あり
Blender_光沢のみ_R0.5
光沢のみ


2. 光沢BSDFのプロパティ

オブジェクトの材質や質感などの違いは、表面の小さな凹凸による光の散乱によって起こります。この凹凸を微小な平面で仮定するのですが、このような微小な平面全てについて光の反射を計算すると、膨大な計算となるので、これらの平面の法線がどの程度決まった方向を向いているかという法線の分布を数式で表します。これをマイクロファセット法線分布関数といいます。

これには様々な分布関数があり、Blenderには以下が準備されています。
  • シャープ
  • ベックマン
  • GGX
  • Ashikhmin-Shirrley
  • 複合散乱 GGX
それぞれの分布関数で大きな特徴があるというよりは、表面の粗さの値を変化させたときの反応が異なります。
Blender_光沢_R0.5_シャープ
シャープ
Blender_光沢_R0.5_ベックマン
ベックマン
Blender_光沢_R0.5_GGX
GGX
Blender_光沢_R0.5_Ashikhmin-Shirley
Ashikhmin-Shirley
Blender_光沢_R0.5_複合散乱GGX
複合散乱GGX

3. 各入力値を変更してみる

ディフューズBSDFノードには以下の値の設定が必要です。
 
    Color    

表面の色を設定します。デフォルトは白です。

    Roughness    

表面の粗さを指定します。値を小さくするとキラッとしたシャープな反射となり、値を大きくするとぼやけた反射になります。
Blender_ディフューズ+光沢_R0.2
粗さ0.2
Blender_ディフューズ+光沢_R0.5
粗さ0.5
Blender_ディフューズ+光沢_R0.8
粗さ0.8

    Normal    

法線を指定します。

オブジェクト表面の光の反射や、オブジェクト上の影などを表現するシェーダーを使いこなすために、詳しく見ていきましょう。

Blender_ディフューズBSDF

Contents

  1. BSDFとは
  2. ディフューズBSDFの2つの反射モデル
  3. 各入力値を変更してみる

1. BSDFとは

BSDF "Bidirectional Scatter Distribution Function" とは、双方向散乱分布関数といい、オブジェクト表面の光の反射や吸収を表現する計算モデルなります。

2. ディフューズBSDFの2つの反射モデル

ディフューズBSDFには、ランバート反射モデルとオーレン-ネイヤー反射モデルという2つの反射モデルが含まれています。2つは基本的には同じモデルで、オーレン-ネイヤー反射はランバート反射の一般形となります。

(1) ランバート反射

どの方向から見ても同じ明るさの光となるようなモデルで、ポリゴンごとに反射を計算します。違う角度から見ると明るさが変わるようなつやのある表面は表現しづらくなります。

(2)オーレン-ネイヤー反射

オブジェクトの表面に微小な面(マイクロファセット)を仮定し、粗い表面での光の拡散を計算します。これらの微小面それぞれについて計算するため、計算負荷が大きくなりますが、粗い面をうまく表現できます。

3. 各入力値を変更してみる

ディフューズBSDFノードには以下の値の設定が必要です。
 
    Color    

表面の色を設定します。デフォルトは白です。

    Roughness    

表面の粗さを指定します。「0」とするとランバート反射、0以外とするとオーレン-ネイヤー反射となります。

Blender_Diffuse_BSDF_Rough0
粗さ 0
Blender_Diffuse_BSDF_Rough0.5
粗さ 0.5
Blender_Diffuse_BSDF_Rough1
粗さ 1

ちょっと粗くなったような感じですが、もう少し複雑な形状のほうがわかりやすいのかもしれません。


    Normal    

法線を指定します。法線による違いについてはまた調べてみたいと思います。








このページのトップヘ