Mesh.GetBoneWeightBuffer
Declaration
public GraphicsBuffer GetBoneWeightBuffer(SkinWeights layout);Параметры
| Параметр | Описание |
|---|---|
| макет | Буфер для доступа, основанный на максимальном количестве костей на вершину. |
Возвращаемое значение
GraphicsBuffer Данные о массе кости в виде GraphicsBuffer.
Описание
Получает GraphicsBuffer, который обеспечивает прямой доступ для чтения и записи к GPU данным о весе костей.
Буфер, возвращаемый этой функцией, называется буфером веса костей. Он содержит индексы и веса, используемые для скининга.
Чтобы узнать, какой буфер использует сетка, вызовите skinWeightBufferLayout.
Можно получить доступ к буферу с более низкой настройкой SkinWeigts, например, сетку с SkinWeights.Unlimited можно получить с помощью SkinWeights.FourBones и SkinWeights.TwoBones. Однако сетку с SkinWeights.FourBones нельзя получить с помощью SkinWeights.Unlimited.
Mesh.isReadable не обязательно быть true для доступа к этим данным.
После использования этого буфера, его следует удалить.
using UnityEngine;
public class Example : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader;
void Start() { // Fetch GraphicsBuffer with Bone Weight data var boneWeightBuffer = mesh.GetBoneWeightBuffer(mesh.skinWeightBufferLayout);
// Set Bone Weight data to a compute shader computeShader.SetBuffer(0, "BoneWeightBuffer", boneWeightBuffer);
// Dispatch compute shader and access Bone Weight data on the GPU computeShader.Dispatch(0, 64, 1, 1);
// Dispose of GraphicsBuffer to avoid leaking memory boneWeightBuffer .Dispose(); }
}
Дополнительные ресурсы: Mesh.skinWeightsBufferLayout, ,Mesh.GetBlendShapeBuffer,