Unity 6.3
0 онлайн 90 гостей 3 в системе
Вход

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,