BlendShapeBufferLayout.PerShape
Описание
Используйте это перечисление, чтобы получить данные блендшейпов в порядке блендшейпов.
Когда вы вызываете Mesh.GetBlendShapeBuffer с этой опцией, она возвращает GraphicsBuffer, содержащие данные вершины формы смешивания, упорядоченные по форме смешивания.
В этом буфере каждая вершина формы смешивания состоит из:
- Целое число, представляющее индекс вершины сетки, к которой относятся эти данные.
- Vector3, который представляет позиционную дельту.
- Vector3, который представляет нормальную дельту.
- Vector3, который представляет дельту касательной.
В этом буфере все данные для каждой вершины формы смешивания смежны. Расположение данных выглядит следующим образом:
* Все вершины формы смешивания, принадлежащие к одной форме смешивания, хранятся смежными, за ними следуют все вершины формы смешивания, принадлежащие к другой форме смешивания, и так далее
Данные о вершинах смежной формы смешивания хранятся в виде массива 32-битных значений. Вы должны вручную преобразовать данные в соответствующий тип.
Чтобы определить, какие данные относятся к какой форме смешивания, используйте Mesh.GetBlendShapeBufferRange.
Unity создает этот буфер при создании сетки. Доступ к этому буферу не приводит к дополнительному выделению памяти.
using UnityEngine; using UnityEngine.Rendering;
public class Example : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader;
void Start() { // Fetch GraphicsBuffer with Blend Shape data, ordered per shape, from the mesh var perShapeBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerShape);
// Set Blend Shape data buffer to a compute shader computeShader.SetBuffer(0, "PerShape_BlendShapeBuffer", perShapeBuffer);
// Dispatch compute shader and access Blend Shape Data on the GPU computeShader.Dispatch(0, 64, 1, 1);
// Dispose of GraphicsBuffer to avoid leaking memory perShapeBuffer.Dispose(); } }
Дополнительные ресурсы: Данные сетки: объединенные формы, ,Mesh.GetBlendShapeBuffer,, UnityEngine.BlendShapeBufferRange.