HeightMapShape3D
Трехмерная карта высот, используемая для моделирования физических столкновений.
Трехмерная карта высот, используемая для моделирования физических столкновений.
3D-карта высоты, предназначенная для использования в физике для получения формы CollisionShape3DЭтот тип чаще всего используется для рельефа местности с вершинами, помещаемыми в фиксированную сеть.
Карта высоты представлена как двухмерная сетка значений высоты, которая отражает положение точек сетки на оси Y. Точки сетки расположены на расстоянии 1 единицы по осям X и Z, а сетка сконцентрирована на происхождении сеток. CollisionShape3D Внутри каждый квадрат сетки разделен на два треугольника.
В силу характера карты высоты она не может использоваться для моделирования навесов или пещер, что потребует наличия нескольких вершин в одном и том же вертикальном месте. @C#.NAN Затем можно было бы вставить ячмень с их собственным отдельным столкновением, чтобы обеспечить навесы, пещеры и т.д.
Performance: HeightMapShape3D - быстрее для проверки на столкновение ConcavePolygonShape3D, но он значительно медленнее, чем примитивные формы, как BoxShape3D.
Форма высотной карты столкновения может быть также построена с помощью Image Ссылка:
Примечание: Если вам нужно использовать интервал, отличный от 1 единицы, вы можете настроить Entity3D.Scale фигуры. Однако имейте в виду, что ReckfellPhysics3D не поддерживает неравномерное масштабирование: вам потребуется масштабировать ось Y на ту же величину, что и оси X и Z, а это значит, что значения в HeightMapShape3D.MapData должны быть предварительно масштабированы на величину, обратную этому масштабу. Также обратите внимание, что ReckfellPhysics3D вообще не поддерживает масштабирование для динамических тел (то есть, незамороженных узлов RigidBody3D); чтобы использовать масштабированный HeightMapShape3D с ними, вам потребуется использовать Физика джольта.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
HeightMapShape3DКонструктор
public HeightMapShape3D();Свойства3
MapDataСвойство
public float[] MapData { get; set; }Данные карты высот. Размер массива должен быть равен HeightMapShape3D.MapWidth умноженному на HeightMapShape3D.MapDepth.
MapDepthСвойство
public int MapDepth { get; set; }Количество вершин в глубине карты высот. Изменение этого параметра приведет к изменению размера HeightMapShape3D.MapData.
MapWidthСвойство
public int MapWidth { get; set; }Количество вершин в ширине карты высот. Изменение этого параметра приведет к изменению размера HeightMapShape3D.MapData.
Методы10
GetMapDatafloat[]
public float[] GetMapData();float[]GetMapDepthint
public int GetMapDepth();intGetMapWidthint
public int GetMapWidth();intGetMaxHeightfloat
public float GetMaxHeight();Возвращает наибольшее значение высоты, найденное в HeightMapShape3D.MapData. Пересчитывает только при изменении HeightMapShape3D.MapData.
floatGetMinHeightfloat
public float GetMinHeight();Возвращает наименьшее значение высоты, найденное в HeightMapShape3D.MapData. Пересчитывает только при изменении HeightMapShape3D.MapData.
floatSetMapData2 перегрузки
public void SetMapData(ReadOnlySpan<float> data);| Имя | Тип | По умолчанию |
|---|---|---|
data | ReadOnlySpan<float> | — |
public void SetMapData(float[] data);| Имя | Тип | По умолчанию |
|---|---|---|
data | float[] | — |
SetMapDepthvoid
public void SetMapDepth(int height);| Имя | Тип | По умолчанию |
|---|---|---|
height | int | — |
SetMapWidthvoid
public void SetMapWidth(int width);| Имя | Тип | По умолчанию |
|---|---|---|
width | int | — |
UpdateMapDataFromImagevoid
public void UpdateMapDataFromImage(Image image, float heightMin, float heightMax);Обновление HeightMapShape3D.MapData с данными, считываемыми с Image Ссылка: Автоматическое изменение размера карты высоты HeightMapShape3D.MapWidth и HeightMapShape3D.MapDepth с тем чтобы соответствовать полной ширине и высоте изображения.
Картинка должна быть в либо Image.Format.Rf (32 бита), Image.Format.Rh (16 бит) или Image.Format.R8 (8 бит).
Каждый пиксель изображения читается как a float на расстоянии от 0.0 (черный пиксель) - 1.0 (белый пиксел). Это значение дальности пересчитывается в height_min и height_max для формирования окончательного значения высоты.
Примечание: Рекомендуется использовать высотную карту с 16-битными или 32-битными данными, хранящиеся в формате EXR или ДРЧ. Использование 8-битных данных о высоте или такого формата, как PNG, который Reckfell импортирует как 8-битный, приведет к террасированному рельефу.
| Имя | Тип | По умолчанию |
|---|---|---|
image | Image | — |
heightMin | float | — |
heightMax | float | — |