Version: 2022.3

Mesh.GetBoneWeightBuffer

切换到手册
public GraphicsBuffer GetBoneWeightBuffer (SkinWeights layout);

参数

layout Which buffer to access, based on maximum bones per vertex.

返回

GraphicsBuffer The bone weight data as a GraphicsBuffer.

描述

Retrieves a GraphicsBuffer that provides direct read and write access to GPU bone weight data.

The buffer that this function returns is called the bone weight buffer. It contains indices and weights to use for skinning.

To know which buffer the mesh is using, call skinWeightBufferLayout.

It is possible to access the buffer with a lower SkinWeigts setting, for instance a mesh with SkinWeights.Unlimited can be accessed with SkinWeights.FourBones and SkinWeights.TwoBones. However, a mesh with SkinWeights.FourBones can not be accessed using SkinWeights.Unlimited.

Mesh.isReadable does not need to be true to access this data.

After using this buffer, you should dispose of it.

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(); }

}

See Also: Mesh.skinWeightsBufferLayout, Mesh.GetBlendShapeBuffer

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961