Skinned Mesh Renderer コンポーネントは、可変 (deformable) のメッシュをレンダリングします。可変メッシュには、スキンされたメッシュ (ボーンとバインドポーズを持つメッシュ)、ブレンドシェイプを持つメッシュ、クロス (布) のシミュレーションを実行するメッシュが含まれます。
通常のメッシュを描画するには、代わりにメッシュレンダラーとメッシュフィルターを使用します。
可変のメッシュやそれを持つモデルをシーンに追加すると、Unity は生成されたゲームオブジェクトにSkinned Mesh Renderer コンポーネントを追加します。
C# コードでは、SkinnedMeshRenderer クラスは Skinned Mesh Renderer コンポーネントを表します。SkinnedMeshRenderer クラスは、その機能の多くを Renderer クラスから継承しています。そのため、このコンポーネントは Renderer を継承する他のコンポーネント、例えば Line Renderer や Trail Renderer などと多くの共通点があります。
| プロパティ | 説明 | |
|---|---|---|
| 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 | 頂点ごとに最大 4 つのボーンを使用します。5 つ以上のボーンが 1 つの頂点に影響を与えるようにするには、Auto 設定を使用します。 | |
| Update When Offscreen | このオプションを有効にすると、メッシュがどのカメラからも見えない場合でも、すべてのフレームでバウンディングボリュームを計算します。このオプションを無効にすると、ゲームオブジェクトがオフスクリーンのときにスキニングを停止し、ゲームオブジェクトが再び表示されたときに再開します。 これは、パフォーマンス上の理由から、デフォルトでは無効になっています。 このプロパティは SkinnedMeshRenderer.updateWhenOffscreen API に対応します。 |
|
| Mesh | このレンダラーが使用するメッシュを設定します。メッシュは、有効なポーズとスキンウェイトを含むか、ブレンドシェイプを使用するか、クロスシミュレーションを実行する必要があります。メッシュがこれらのテクニックのいずれも使用していない場合は、メッシュレンダラーとメッシュフィルターの使用を検討してください。 SkinnedMeshRenderer.sharedMesh プロパティに対応します。 |
|
| Root bone | スケルトンの “ルート” であるトランスフォームを設定します。境界線はこのトランスフォームに沿って動きます。 | |
| Rendering Layer Mask | このプロパティは、Unity がこのレンダラーを割り当てるレンダリングレイヤーを決定します。このプロパティを使用して、追加のレンダリング固有のレイヤーマスクを指定できます。レンダラーが持つマスクに基づいてレンダラーをフィルタリングします。 このプロパティは Renderer.renderingLayerMask API に対応します。 Unity がこのプロパティを表示するのは、スクリプタブルレンダーパイプラインを使用する場合のみです。 |
|
| Renderer Priority | レンダラーを優先度でソートします。低い値が最初に描画され、高い値が最後に描画されます。 このプロパティは Renderer.rendererPriority API に対応します。 Unity がこのプロパティを表示するのは、HD レンダーパイプライン (HDRP) を使用する場合のみです。 |
|
Materials セクションには、このコンポーネントが使用するすべての マテリアル が列挙されています。
| プロパティ | 説明 |
|---|---|
| Size | マテリアルリストにある要素の数。 要素の数を減らすと、リストの末尾にある要素が削除されます。要素の数を増やすと、新しい要素がリストの末尾に追加されます。新しい要素には、リストの末尾の要素と同じマテリアルが設定されます。 |
| Element | リスト内のマテリアル。マテリアルアセットを各要素に割り当てることができます。 デフォルトでは、リストはマテリアルの名前に基づくアルファベット順に並んでいます。このリストは並べ替えることができ、順序を変更すると要素の数が自動的に更新されます。 |
注意マテリアルが完全に不透明でない場合、さまざまなマテリアルを重ねて、興味深い視覚効果を作成できます。ただし、完全に不透明なマテリアルは前のレイヤーを上書きします。そのため、Unity が最後のサブメッシュに不透明なマテリアルを加えると、パフォーマンスに悪い影響があり、メリットがありません。
Lighting セクションには、ライティングに関連するプロパティが含まれています。
| プロパティ | 説明 | |
|---|---|---|
| Cast Shadows | 適切な ライト に照らされたときに Renderer が影を作るかどうか、また、その方法を指定します。 このプロパティは Renderer.shadowCastingMode API に対応します。 |
|
| On | 影を作るライトが当たると、Renderer は影を作ります。 | |
| Off | Renderer は影を作りません。 | |
| Two-sided | この Renderer は両面シャドウを作ります。これは、光源がメッシュの背後にある場合でも、プレーンやクアッドのような片面のオブジェクトにシャドウを作れることを意味します。 ベイクしたグローバルイルミネーション または Enlighten リアルタイムグローバルイルミネーション で両面シャドウがサポートされる場合、マテリアルは Double Sided Global Illumination をサポートしている必要があります。 |
|
| Shadows Only | この Renderer は影を作りますが、Renderer 自体は表示されません。 | |
| Receive Shadows | この Renderer に投影された影を Unity が表示するかどうかを指定します。 このプロパティには、このシーンで ベイクしたグローバルイルミネーション または Enlighten の リアルタイムグローバルイルミネーション を有効にした場合にのみ効果があります。 このプロパティは Renderer.receiveShadows API に対応します。 |
|
| Contribute Global Illumination | : このレンダラーをベイク時に行われるグローバルイルミネーションの計算に追加します。 このプロパティには、このシーンで ベイクしたグローバルイルミネーション または Enlighten の リアルタイムグローバルイルミネーション を有効にした場合にのみ効果があります。 このプロパティを有効にすると、ゲームオブジェクトの 静的エディターフラグ の Contribute GI フラグが有効になります。StaticEditorFlags.ContributeGI API に対応します。 |
|
| Receive Global Illumination | Unity がベイクしたライトマップからこのレンダラーにグローバルデータを提供するか、ランタイムのライトプローブから提供するか。 このプロパティは、Contribute Global Illumination を有効にしている場合にのみ編集可能です。このプロパティには、このシーンで ベイクしたグローバルイルミネーション または Enlighten の リアルタイムグローバルイルミネーション を有効にした場合にのみ効果があります。 このプロパティは MeshRenderer.receiveGI API に対応します。 |
|
| Lightmaps: | Unity はライトマップからこのレンダラーにグローバルイルミネーションのデータを提供します。 | |
| Light Probes | Unity は、シーンの ライトプローブ からこのレンダラーにグローバルイルミネーションのデータを提供します。 | |
| Prioritize Illumination: | このプロパティを有効にすると、このレンダラーが常に Enlighten リアルタイムグローバルイルミネーションの計算に含まれます。これにより、パフォーマンス上の理由からグローバルイルミネーションの計算から通常除外されている遠くのエミッシブであっても、レンダラーが影響を受けるようになります。 このプロパティは、ゲームオブジェクトの 静的エディターフラグ で Contribute GI が有効になっており、プロジェクトでビルトインレンダーパイプラインが使用され、シーンで Enlighten リアルタイムグローバルイルミネーション が有効になっている場合にのみ表示されます。 |
|
Probes セクションには、Light Probe と Reflection Probes に関連するプロパティが含まれています。
| プロパティ | 説明 | |
|---|---|---|
| Light Probes | このレンダラーが Light Probes システムからライトを受け取る方法を設定します。 このプロパティは Renderer.lightProbeUsage API に対応します。 |
|
| Off | レンダラーは補間したライトプローブを全く使用しません。 | |
| Blend Probes | レンダラーは補間したライトプローブ 1 つを使用します。これはデフォルトの設定です。 | |
| Use Proxy Volume | レンダラーは補間したライトプローブの 3D グリッドを使用します。 | |
| Custom Provided | レンダラーは、MaterialPropertyBlock から Light Probe シェーダーの共通の値を抽出します。 | |
| Proxy Volume Override | Light Probe Proxy Volume コンポーネントを持つ別のゲームオブジェクトへのリファレンスを設定します。 このプロパティは、Light Probes が Use Proxy Volume に設定されている場合にのみ表示されます。 |
|
| Reflection Probes | レンダラーが リフレクションプローブ システムからリフレクションを取得する方法を設定します。 このプロパティは Renderer.probeAnchor API に対応します。 |
|
| Off | リフレクションプローブを無効にします。Unity はリフレクションにスカイボックスを使用します。 | |
| Blend Probes | リフレクションプローブを有効にします。ブレンドはリフレクションプローブ間でのみ発生します。これは、ライティング設定の異なるエリア間をキャラクターが通過する場合の屋内環境で役立ちます。 | |
| Blend Probes and Skybox | リフレクションプローブを有効にします。ブレンドはリフレクションプローブ間、またはリフレクションプローブとデフォルトのリフレクション間で発生します。これは屋外環境で役立ちます。 | |
| Simple | リフレクションプローブを有効にします。ただし、2 つの重複したボリュームがあるとき、リフレクションプローブ間でブレンドは発生しません。 | |
| Anchor Override |
Light Probe、または Reflection Probe のシステムを使用する場合に Unity で使用される、補間する位置を決めるための Transform を設定します。デフォルトでは、これはレンダラーのジオメトリのバウンディングボックスの中心です。 このプロパティは Renderer.probeAnchor API に対応します。 |
|
レイトレーシングセクションには、レイトレーシングエフェクトに関連するプロパティが含まれています。
このセクションは、グラフィックスカードがレイトレーシングをサポートしており、Player Settings ウィンドウで DirectX 12 を使用するようにプロジェクトをアップグレードする場合にのみ表示されます。
これらのプロパティは、以下のいずれかの方法でプロジェクトを設定しない限り効果がありません。
| プロパティ | 機能 | |
|---|---|---|
| Ray Tracing Mode | レイトレーシング中に Unity がこの Renderer を更新するかどうか、および更新の頻度を指定します。更新頻度が多いほど、レンダリング時間が長くなります。 | |
| Off | Unity はこの Renderer をレイトレーシング計算から除外します。このオプションを使用すると、Renderer は例えばレイトレースによるリフレクションに表示されません。 | |
| Static | ゲームオブジェクトの Transform またはメッシュのジオメトリが変更された場合、Unity はレイトレーシング加速構造を更新しません。つまり、レイトレーシング効果はランタイムには変更されません。 | |
| Dynamic Transform | Unity は、ゲームオブジェクトの Transform が変更された場合はレイトレーシング加速構造を更新しますが、メッシュジオメトリが変更された場合は更新しません。これは Mesh Renderer のデフォルト値です。プロジェクトで HDRP が使われる場合、HDRP はフレームごとに加速構造を再構築するため、この設定は Dynamic Geometry と同じです。 | |
| Dynamic Geometry | Unity は、ゲームオブジェクトの Transform とメッシュジオメトリを使用して、レイトレーシング加速構造をフレームごとに更新します。これは Skinned Mesh Renderer のデフォルト値です。 | |
| Procedural Geometry | Unity は、この Renderer を、Mesh Filter コンポーネントのメッシュではなく、交差シェーダーで連続的にレンダリングします。 | |
| Acceleration Structure Build Flags | レイトレーシング加速構造の作成時に指定したデフォルトのビルドフラグを、Renderer がオーバーライドするかどうかを指定します。 | |
Additional Settings セクションには付加的なプロパティが含まれています。
| プロパティ | 説明 | |
|---|---|---|
| Skinned Motion Vectors | これを有効にすると、メッシュのスキンデータをダブルバッファにします。そのため、Unity はスキンしたモーションを補間し、モーションベクトルテクスチャにそれを置くことができます。これは、より多くの GPU メモリを使用しますが、より正確なモーションベクトルになります。 | |
| Dynamic Occlusion |
Dynamic Occlusion を有効にすると、レンダリングされるゲームオブジェクトを静的遮蔽物がカメラのビューから遮断した場合に、Unity の occlusion culling がそのゲームオブジェクトをカリングし (除き) ます。有効でない場合、レンダリングされるゲームオブジェクトは、静的遮蔽物によってカメラのビューから遮断されてもカリングされません。 Dynamic Occlusion はデフォルトで有効になっています。壁の後ろのキャラクターのアウトラインを描画するといった効果を得るには、これを無効にします。 |
|
SkinnedMeshRenderer