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

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.