Skinned Mesh Renderer コンポーネントは、可変 (deformable) のメッシュをレンダリングします。可変メッシュには、スキンされたメッシュ (ボーンとバインドポーズを持つメッシュ)、ブレンドシェイプを持つメッシュ、クロス (布) のシミュレーションを実行するメッシュが含まれます。
通常のメッシュをレンダリングする場合は、代わりに Mesh Renderer と Mesh Filter を使用します。
可変のメッシュやそれを持つモデルをシーンに追加すると、Unity は生成されたゲームオブジェクトにSkinned Mesh Renderer コンポーネントを追加します。
C# コードでは、SkinnedMeshRenderer クラスは、Skinned Mesh Renderer コンポーネントを表します。SkinnedMeshRenderer
クラスは、その機能の多くを Renderer クラスから継承しています。そのため、このコンポーネントは Renderer
を継承する他のコンポーネント、例えば Line Renderer や Trail Renderer などと多くの共通点があります。
Unity はメッシュの境界を使用して、それをレンダリングするかどうかを決定します。メッシュのバウンディングボリューム全体がアクティブなカメラの視野の外側にあると、Unity はそのメッシュをレンダリングしません。
Skinned Mesh Renderer の場合、そのメッシュ境界は変形に伴って変化します。Unity はインポート時に存在するすべてのアニメーションを考慮して最大のバウンディングボリュームを計算し、この値を使用して可視性を決定します。ただし、インポート後に発生する以下の状況では、頂点やボーンが既知の最大境界の外に押し出される可能性があります。
頂点やボーンが境界の外に押し出されると、Unity がメッシュの可視性を正しく判断できず、表示されるべき時に表示されないことがあります。
このような場合は、以下のいずれかの解決策で問題を解決できます。
プロパティ | 説明 | |
---|---|---|
Bounds | Unity がメッシュをいつオフスクリーンにするかを決定するために使用するバウンディングボリュームを設定します。Unity はモデルファイルにメッシュとアニメーションをインポートするときに境界を事前計算し、シーンビューでモデルの周囲の境目をワイヤーフレームで表示します。 Update When Offscreen を True に設定すると、Unity はフレームごとにこれらの境界を再計算し、計算された値を使用してこのプロパティを上書きします。 このプロパティは Mesh.Bounds API に対応します。 |
|
BlendShapes | メッシュに定義された ブレンドシェイプ に使用するウェイト値を保存します。 | |
Quality | 頂点に影響を与えることができるボーンの最大数のランタイムの上限を設定します。 Unity がメッシュをインポートするとき、Unity は 1 - 32 の数のボーンですべての頂点をスキンできます。影響力のあるボーン数が多いほど、動きの結果は向上します。ただし、これは必要な計算リソースも増加させるため、パフォーマンスに影響を与える可能性があります。 パフォーマンス上の理由から、ランタイムの上限を使用するのではなく、インポート時に頂点に影響を与えるボーン数を設定する方が良いでしょう。これを行うには、Model Import Settings ウィンドウ の Rig タブを使い、Skin Weights 設定を調整します。 この設定を使用してコンポーネントごとにランタイムの上限を設定するほかに、Edit > Project Settings > Quality > Other > Skin Weights でプロジェクトのグローバルの制限を設定することもできま す。 このプロパティは、SkinnedMeshRenderer.quality API に対応します。 |
|
Auto |
Quality Settings > Skin Weights で設定したグローバルの制限を使用します。 ノート: スキンウェイトのカスタム数をインポートし 5 つ以上のボーンに影響を与えたい場合は、このオプションを選択し Skin Weights を Unlimited に設定する必要があります。 |
|
1 Bone | 1 つの頂点につき、1 つのボーンのみを使用します。 | |
2 Bones | 1 つの頂点につき、最大 2 つのボーンを使用します。 | |
4 Bones | 1 つの頂点につき、最大 4 つのボーンを使用します。5 つ以上のボーンが 1 つの頂点に影響を与えるようにするには、Auto 設定を使用します。 | |
Update When Offscreen | これを有効にすると、どのカメラからも見えない場合でも、すべてのフレームでバウンディングボリュームを計算します。このオプションを無効にすると、ゲームオブジェクトが画面上にないときにスキニングを停止し、ゲームオブジェクトが再び表示されるとスキニングを再開します。 これはパフォーマンス上の理由から、デフォルトでは無効になっています。 このプロパティはSkinnedMeshRenderer.updateWhenOffscreen API に対応します。 |
|
Mesh | このレンダラーが使用するメッシュを設定します。メッシュは、有効なバインドポーズとスキンウェイトを含むか、ブレンドシェイプを使用するか、クロス (布) のシミュレーションを実行する必要があります。メッシュがこれらの技術を使用しない場合は、Mesh Renderer と Mesh Filter の使用を検討してください。 SkinnedMeshRenderer.sharedMesh プロパティに対応します。 |
|
Root bone | スケルトンの “ルート” であるトランスフォームを設定します。境界線はこのトランスフォームに沿って動きます。 | |
Rendering Layer Mask | このプロパティは、このレンダラーが割り当てられるレンダリングレイヤーを決定します。このプロパティを使用して、レンダリング固有のレイヤーマスクを追加で指定できます。これにより、レンダラーが持つマスクに基づいてレンダラーがフィルタリングされます。 このプロパティは、Renderer.renderingLayerMask API に対応します。 Unity は、Scriptable Render Pipeline を使用する場合にのみ、このプロパティを表示します。 |
|
Renderer Priority | レンダラーを優先度でソートします。低い値が最初に描画され、高い値が最後に描画されます。 このプロパティは、Renderer.rendererPriority API に対応します。 Unity は、HD レンダーパイプラインを使用する場合にのみ、このプロパティを表示します。 |
Materials セクションには、このコンポーネントが使用するすべての マテリアル が列挙されています。
プロパティ | 説明 |
---|---|
Size | マテリアルリストの要素数です。 要素数を減らすと、リストの末尾にある要素が削除されます。要素数を増やすと、リストの末尾に新しい要素が追加されます。新しい要素には、リストの末尾にある要素が使用しているマテリアルと同じマテリアルが使用されます。 |
Element | リスト内のマテリアル。各要素にマテリアルアセットを割り当てることができます。 デフォルトでは、Unity はマテリアルの名前に基づいて、リストをアルファベット順に並べます。このリストは順序を変更することができ、順序を変更すると Unity は自動的に要素の番号を更新します。 |
ノート: サブメッシュの数よりもマテリアルの数が多い場合、Unity は最後のサブメッシュを残っている各マテリアルでレンダリングし、1 つずつ重ねていきます。マテリアルが完全に不透明でない場合、さまざまなマテリアルを重ねて、興味深い視覚効果を作成できます。ただし、完全に不透明なマテリアルは前のレイヤーを上書きします。そのため、Unity が最後のサブメッシュに不透明なマテリアルを加えると、パフォーマンスに悪い影響があり、メリットがありません。
Lighting セクションには、ライティングに関連するプロパティを含まれています。
プロパティ | 説明 | |
---|---|---|
Cast Shadows | このレンダラーが、適切な Light に照らされるときに影を作るかどうか、また影を作る方法を指定します。 このプロパティは Renderer.shadowCastingMode API に対応します。 |
|
On | このレンダラーは、影を投影するライトが当たるときに影を投影します。 | |
Off | このレンダラーは、影を作りません。 | |
Two-sided | このレンダラーは 2 面の影を作ります。つまり、平面や四角形のような片面オブジェクトは、光源がメッシュの背後にある場合でも、影を落とすことができます。 ベイクしたグローバルイルミネーション または Enlighten リアルタイムグローバルイルミネーション が両面シャドウをサポートするためには、マテリアルが Double Sided Global Illumination をサポートする必要があります。 |
|
Shadows Only | このレンダラーは影を作りますが、レンダラー自体は可視ではありません。 | |
Receive Shadows | このレンダラーに投影された影を表示するかどうかを指定します。 このプロパティは、このシーンで Baked Global Illumination または Enlighten Realtime Global Illumination を有効にする場合にのみ、効果があります。 このプロパティは、Renderer.receiveShadows API に対応します。 |
|
Contribute Global Illumination | ベイク時に行われるグローバルイルミネーションの計算に、このレンダラーを加えます。 このプロパティは、このシーンで Baked Global Illumination または Enlighten Realtime Global Illumination を有効にした場合にのみ、効果があります。 このプロパティを有効にすると、ゲームオブジェクトの Static エディターフラグ にある Contribute GI フラグが有効になります。これは、StaticEditorFlags.ContributeGI APIに対応します。 |
|
Receive Global Illumination | Unity が、ベイクされたライトマップから、またはランタイムのライトプローブから、このレンダラーにグローバルイルミネーションデータを提供するかどうかを指定します。 このプロパティは、Contribute Global Illumination を有効にした場合にのみ編集可能です。このシーンに対して Baked Global Illumination または Enlighten Realtime Global Illumination を有効にした場合にのみ、効果があります。 このプロパティは、MeshRenderer.receiveGI API に対応します。 |
|
Lightmaps | Unity は、ライトマップからこのレンダラーにグローバルイルミネーションデータを提供します。 | |
Light Probes | Unity はシーン内の Light Probes からこのレンダラーにグローバルなイルミネーションデータを提供します。 | |
Prioritize Illumination | このプロパティを有効にすると、Enlighten リアルタイムグローバルイルミネーションの計算にこのレンダラーが常に含まれるようになります。これにより、パフォーマンス上の理由から通常グローバルイルミネーションの計算から除外されるものであっても、レンダラーが遠くのエミッシブの影響を受けることが保証されます。 このプロパティは、Contribute GI がゲームオブジェクトの Static エディターフラグ で有効になっており、プロジェクトがビルトインレンダーパイプラインを使用し、Enlighten Realtime Global Illumination がシーンで有効になっている場合にのみ表示されま す。 |
Probes セクションには、ライトプローブ と リフレクションプローブ に関するプロパティが含まれています。
プロパティ | 説明 | |
---|---|---|
Light Probes | このレンダラーが ライトプローブ システムから、ライトを受ける方法を設定します。 このプロパティは、Renderer.lightProbeUsage APIに対応します。 |
|
Off | レンダラーは補間されたライトプローブを使用しません。 | |
Blend Probes | レンダラーは補間されたライトプローブを 1 つ使用します。これはデフォルトです。 | |
Use Proxy Volume | レンダラーは、補間されたライトプローブの 3D グリッドを使用します。 | |
Custom Provided | レンダラーは Light Probe シェーダーの統一値を MaterialPropertyBlock から抽出します。 | |
Proxy Volume Override | Light Probe Proxy Volume コンポーネントを持つ別のゲームオブジェクトへの参照を設定します。 このプロパティは、Light Probes が Use Proxy Volume に設定される場合にのみ表示されます。 |
|
Reflection Probes | レンダラーが リフレクションプローブ システムからどのようにリフレクションを受けるかを設定します。 このプロパティは Renderer.probeAnchor API に対応します。 |
|
Off | リフレクションプローブを無効にします。Unity はリフレクションにスカイボックスを使用します。 | |
Blend Probes | Reflection Probes を有効にします。ブレンドはリフレクションプローブ間のみで発生します。これは、キャラクターが異なるライティング設定のエリア間を移動する可能性がある屋内環境で便利です。 | |
Blend Probes and Skybox | リフレクションプローブを有効にします。ブレンドは、リフレクションプローブ間、または、リフレクションプローブとデフォルトのリフレクションとの間で行われます。これは、屋外環境に便利です。 | |
Simple | リフレクションプローブを有効にしますが、2 つのボリュームが重なっている場合、リフレクションプローブ間のブレンドは行われません。 | |
Anchor Override |
ライトプローブ または リフレクションプローブ システムを使用するときに、Unity が補間位置を決定するために使用する Transform を設定します。デフォルトでは、レンダラーのジオメトリのバウンディングボックスの中心です。 このプロパティは、Renderer.probeAnchor API に対応します。 |
Additional Settings には付加的なプロパティが含まれています。
プロパティ | 説明 | |
---|---|---|
Skinned Motion Vectors | これを有効にすると、メッシュのスキンデータをダブルバッファにします。そのため、Unity はスキンしたモーションを補間し、モーションベクトルテクスチャにそれを置くことができます。これは、より多くの GPU メモリを使用しますが、より正確なモーションベクトルになります。 | |
Dynamic Occlusion | これを有効にすると、静的遮蔽物 (Static Occluder) によってカメラのビューから隠されると、Unity はこのレンダリング対象オブジェクトをカリングし (除き) ます。これが無効になっている場合、このレンダリング対象オブジェクトが静的遮蔽物によってカメラのビューから隠されている場合、Unity はこのオブジェクトをカリングしません。 動的オクルージョンはデフォルトで有効になっています。壁の後ろにキャラクターの輪郭を描くなどの効果を出すには無効にします。 |
SkinnedMeshRenderer