版本: Unity 6 (6000.0)
语言英语
  • C#

Mesh.GetBoneWeightBuffer

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实阅读了用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public GraphicsBuffer GetBoneWeightBuffer(SkinWeights layout);

参数

layout 根据每个顶点最大骨骼数访问哪个缓冲区。

返回值

GraphicsBuffer 骨骼权重数据作为 GraphicsBuffer

描述

检索一个 GraphicsBuffer,它提供对 GPU 骨骼权重数据的直接读写访问。

此函数返回的缓冲区称为骨骼权重缓冲区。它包含用于蒙皮的索引和权重。

要了解网格正在使用哪个缓冲区,请调用 skinWeightBufferLayout

可以使用较低的 SkinWeigts 设置访问缓冲区,例如,可以使用 SkinWeights.FourBonesSkinWeights.TwoBones 访问具有 SkinWeights.Unlimited 的网格。但是,无法使用 SkinWeights.Unlimited 访问具有 SkinWeights.FourBones 的网格。

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