reckfellENGINE

VoxelTool

Класс помощника для беспрепятственного доступа и модификации вокселей

На этой странице
class VoxelToolReckfellSharpНаследует RefCounted

Класс помощника для беспрепятственного доступа и модификации вокселей

Обобщающий интерфейс для доступа и редактирования вокселей. Он позволяет получать доступ к индивидуальным вокселям или осуществлять оптовые операции, такие как вырезать большие кусочки или копировать/пастовые ящики. Это не класс, чтобы замедлиться в одиночестве, вы можете получить его из воксельских объектов, с которыми вы хотите работать, потому что он имеет несколько производных реализаций. По умолчанию, если операция пересекает нередактируемую область (если, например, она еще не загружена), операция отменяется. Такое поведение может варьироваться в производных классах.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства9

ChannelСвойство
# Channel
C#
public VoxelBuffer.ChannelId Channel { get; set; }

Установите, какой канал будет отредактирован. Если он будет использоваться на площадном узле, он будет по умолчанию установлен на первом доступном канале на основе потока и генератора.

EraserValueСвойство
# EraserValue
C#
public ulong EraserValue { get; set; }

Установки, которые будут использованы для стирания вокселей при редактировании VoxelBuffer.ChannelId.ChannelType канал в VoxelTool.ModeEnum.Remove Относится только к закупоренным вокселям.

ModeСвойство
# Mode
C#
public VoxelTool.ModeEnum Mode { get; set; }

Устанавливает, как do_* Это может варьироваться в зависимости от канала.

SdfScaleСвойство
# SdfScale
C#
public float SdfScale { get; set; }

При работе с гладкими вокселями шкала применяется к подписанных полям дистанции. Высокая шкала (одна или более) будет, как правило, давать запутанные результаты, а низкая шкала (менее 1, но не слишком близко к нулю) будет, как правило, более гладкой.

Это связано с VoxelBuffer.Depth Конфигурация на вокселях. Для 8-битных и 16-битных значений существует ограниченный диапазон значений, которые может взять Подпись Дистанционное Поле, и по умолчанию он зажимается до -1, так что градиент может варьироваться только через 2 воксела. Но когда используется LOD, лучше растянуть этот диапазон на более длительном расстоянии, и это достигается путем масштабирования значений SDF.

SdfStrengthСвойство
# SdfStrength
C#
public float SdfStrength { get; set; }

При редактировании VoxelBuffer.ChannelId.ChannelSdf гладких хребтов в VoxelTool.ModeEnum.Add или VoxelTool.ModeEnum.Remove, определяет этап интерполяции между текущими значениями и значениями, установленными инструментом.

TextureFalloffСвойство
# TextureFalloff
C#
public float TextureFalloff { get; set; }

Range VoxelTool.ModeEnum.TexturePaintБолее низкие значения дают более резкие изменения. Можно сравнить с щеткой мягкости в программе редактирования изображений. Это имеет значение только в случае гладких вокселей и текстовых режимов, которые поддерживают длинные градиенты.

TextureIndexСвойство
# TextureIndex
C#
public int TextureIndex { get; set; }

Индекс текстуры, используемый в нормальном режиме текстуры voxel. Выбор этого индекса зависит от того, как вы настроите текстурированный воксель meshes (например, индекс слоя в массиве текстуры).

TextureOpacityСвойство
# TextureOpacity
C#
public float TextureOpacity { get; set; }

Range VoxelTool.TextureIndex когда инструмент установлен в VoxelTool.ModeEnum.TexturePaint. Можно сравнить с непрозрачностью в программе редактирования изображений.

ValueСвойство
# Value
C#
public ulong Value { get; set; }

Установки, в которых будет использоваться значение voxel. Это не имеет значения при редактировании VoxelBuffer.ChannelId.ChannelSdf.

Методы47

ColorToU16int
# ColorToU16
C#
public static int ColorToU16(Color color);

Коды нормализованы 4-float Цвет в 16-битные целые данные. Он используется каналом COLOR, в тех случаях, когда канал представляет прямые цвета (без использования палитры).

Параметры
ИмяТипПо умолчанию
colorColor—
Возвращает int
ColorToU16Weightsint
# ColorToU16Weights
C#
public static int ColorToU16Weights(Color _UnnamedArg0);

Коды нормализованы 4-float Цвет в 16-битные целые данные для использования каналом WEIGHTS.

Параметры
ИмяТипПо умолчанию
_UnnamedArg0Color—
Возвращает int
ColorToU32uint
# ColorToU32
C#
public static uint ColorToU32(Color color);

Коды нормализованы 4-float Раскрасить в 32-битные целые данные для использования каналом COLOR.

Параметры
ИмяТипПо умолчанию
colorColor—
Возвращает uint
Copyvoid
# Copy
C#
public void Copy(Vector3I srcPos, VoxelBuffer dstBuffer, int channelsMask = 255, bool withMetadata = true);

Копировать воксели в коробке и хранить их в прошедшем буфере. Исходный формат перезаписать пункт назначения. src_pos - самый низкий угол ящика, и его размер определяется размером dst_buffer. channels_mask bitmask, где каждый бит указывает, какие каналы будут копироваться. Пример: 1 << VoxelBuffer.CHANNEL_SDF для получения только данных SDF. VoxelBuffer.ChannelMask.AllChannelsMask Если ты хочешь их всех.

Параметры
ИмяТипПо умолчанию
srcPosVector3I—
dstBufferVoxelBuffer—
channelsMaskint255
withMetadatabooltrue
DoBoxvoid
# DoBox
C#
public void DoBox(Vector3I begin, Vector3I end);

Оперируйте на прямоугольном кубоидном участке местности. С закупоренными вокселями, begin и end являются всеохватными. с гладкими вокселями, end эксклюзивный. Вы можете выбрать, какую операцию сделать до вызова этой функции, настроить VoxelTool.Mode. С закупоренными вокселями вы также можете установить VoxelTool.Value чтобы выбрать, какой воксель следует использовать.

Параметры
ИмяТипПо умолчанию
beginVector3I—
endVector3I—
DoMeshvoid
# DoMesh
C#
public void DoMesh(VoxelMeshSdf meshSdf, Transform3D transform, float isolevel = 0f);

Применяется форма сетки к местности. Модель должна быть запечена в подписанное поле дистанции VoxelMeshSdf. transform Неунифицированная шкала может привести к появлению артефактов. isolevel Качество зависит от разрешения SDF модели, и эффективность будет ниже, чем примитивные формы, такие как: VoxelTool.DoSphere.

Параметры
ИмяТипПо умолчанию
meshSdfVoxelMeshSdf—
transformTransform3D—
isolevelfloat0f
DoPath2 перегрузки
# DoPath · 1/2
C#
public void DoPath(Vector3[] points, float[] radii);

Отслеживает "трубу", определенную перечнем точек, каждая из которых имеет соответствующий радиус для контроля ширины трубы в каждой точке. Начало и конец пути округлены. Это эквивалентно установке/извлечению нескольких подключенных капсул с изменяющимся верхним/нижним радиусом. Путь не использует безье или сплин, каждая точка соединена линейно с следующей. Если вам нужна более гладкая, вы можете добавить точки в области, которые в них нуждаются. Чем больше точек, тем медленнее она.

Параметры
ИмяТипПо умолчанию
pointsVector3[]—
radiifloat[]—
# DoPath · 2/2
C#
public void DoPath(ReadOnlySpan<Vector3> points, ReadOnlySpan<float> radii);

Отслеживает "трубу", определенную перечнем точек, каждая из которых имеет соответствующий радиус для контроля ширины трубы в каждой точке. Начало и конец пути округлены. Это эквивалентно установке/извлечению нескольких подключенных капсул с изменяющимся верхним/нижним радиусом. Путь не использует безье или сплин, каждая точка соединена линейно с следующей. Если вам нужна более гладкая, вы можете добавить точки в области, которые в них нуждаются. Чем больше точек, тем медленнее она.

Параметры
ИмяТипПо умолчанию
pointsReadOnlySpan<Vector3>—
radiiReadOnlySpan<float>—
DoPointvoid
# DoPoint
C#
public void DoPoint(Vector3I pos);

Оперирует на одном вокселе. Вы можете выбрать, какую операцию сделать до вызова этой функции, настроить VoxelTool.Mode. С закупоренными вокселями вы также можете установить VoxelTool.Value чтобы выбрать, какой воксель следует использовать. Эта функция не очень хорошо приспособлена к гладким вокселям, и она может создать блокировку.

Параметры
ИмяТипПо умолчанию
posVector3I—
DoSpherevoid
# DoSphere
C#
public void DoSphere(Vector3 center, float radius);

Оперируйте на вокселях внутри сферы. Вы можете выбрать, какую операцию сделать до вызова этой функции, настроить VoxelTool.Mode. С закупоренными вокселями вы также можете установить VoxelTool.Value чтобы выбрать, какой воксель следует использовать.

Параметры
ИмяТипПо умолчанию
centerVector3—
radiusfloat—
GetChannelVoxelBuffer.ChannelId
# GetChannel
C#
public VoxelBuffer.ChannelId GetChannel();
Возвращает VoxelBuffer.ChannelId
GetEraserValueulong
# GetEraserValue
C#
public ulong GetEraserValue();
Возвращает ulong
GetModeVoxelTool.ModeEnum
# GetMode
C#
public VoxelTool.ModeEnum GetMode();
Возвращает VoxelTool.ModeEnum
GetSdfScalefloat
# GetSdfScale
C#
public float GetSdfScale();
Возвращает float
GetSdfStrengthfloat
# GetSdfStrength
C#
public float GetSdfStrength();
Возвращает float
GetTextureFallofffloat
# GetTextureFalloff
C#
public float GetTextureFalloff();
Возвращает float
GetTextureIndexint
# GetTextureIndex
C#
public int GetTextureIndex();
Возвращает int
GetTextureOpacityfloat
# GetTextureOpacity
C#
public float GetTextureOpacity();
Возвращает float
GetValueulong
# GetValue
C#
public ulong GetValue();
Возвращает ulong
GetVoxelulong
# GetVoxel
C#
public ulong GetVoxel(Vector3I pos);

Получает данные от Вокселя по адресу: pos Координаты. Возвращенное значение будет неподписанным целым числом. Значение значения зависит от VoxelTool.Channel инструмент установлен. При использовании VoxelBuffer.ChannelId.ChannelSdf Для гладких вокселей возвращаемое значение будет кодировано, так что вы можете использовать VoxelTool.GetVoxelF чтобы получить float Вместо этого стоимость.

Параметры
ИмяТипПо умолчанию
posVector3I—
Возвращает ulong
GetVoxelFfloat
# GetVoxelF
C#
public float GetVoxelF(Vector3I pos);

Получает данные от Вокселя по адресу: pos Координаты, интерпретирующие его как значение SDF в плавающей точке. VoxelBuffer.ChannelId.ChannelSdf канал для гладких вокселей.

Параметры
ИмяТипПо умолчанию
posVector3I—
Возвращает float
GetVoxelMetadataVariant
# GetVoxelMetadata
C#
public Variant GetVoxelMetadata(Vector3I pos);

Получает произвольные данные, прикрепляемые к конкретному вокселю.

Параметры
ИмяТипПо умолчанию
posVector3I—
Возвращает Variant
GrowSpherevoid
# GrowSphere
C#
public void GrowSphere(Vector3 sphereCenter, float sphereRadius, float strength);

Добавления/изменения (в зависимости от VoxelTool.Mode) значение по отношению ко всем вокселям в пределах сферы. strength В центре сферы и линейно уменьшаются до нуля на поверхности сферы. sphere_center Это положение на местности, которое будет сглажено. sphere_radius радиус сферы от center где будут затронуты значения вокселя, должны быть больше нуля. strength - значение, которое контролирует максимальную стоимость, добавляемую/отменяемую к воксам/из них. [0, 10]. Примечание 1: В настоящее время эта система применяется только в отношении местности, где используются данные СФР (сможные воксели). Примечание 2: Предполагалось, что это будет аналогично инструменту для покрытия поверхности из Unreal Engine Воксель Плугин. Примечание 3: Этот метод предполагает, что SDF местности непротиворечива. Если это не так, вы можете заметить различия в скорости, при которой рельеф разрушается или растет. Например, некоторые генераторы отступают к постоянному SDF, когда они находятся далеко от поверхности, чтобы ускорить расчеты (см. VoxelGeneratorGraph.SdfClipThreshold). Примечание 4: Если вы хотите использовать этот метод для раскопок местности «мягко», назвав ее «каждая рама», альтернативой является использование VoxelTool.DoSphere Но вместо того, чтобы центр находился на поверхности, отнесите его назад примерно на 0,95% радиуса, так что только небольшая часть сферы проникнет внутрь, постепенно выкапывая дыру.

Параметры
ИмяТипПо умолчанию
sphereCenterVector3—
sphereRadiusfloat—
strengthfloat—
IsAreaEditablebool
# IsAreaEditable
C#
public bool IsAreaEditable(Aabb box);

Returns (Возврат) true - при использовании LOD можно редактировать только ближайший LOD (0).

Параметры
ИмяТипПо умолчанию
boxAabb—
Возвращает bool
NormalizeColorColor
# NormalizeColor
C#
public static Color NormalizeColor(Color _UnnamedArg0);

Метод помощи для определения суммы каналов Color к 1.

Параметры
ИмяТипПо умолчанию
_UnnamedArg0Color—
Возвращает Color
Pastevoid
# Paste
C#
public void Paste(Vector3I dstPos, VoxelBuffer srcBuffer, int channelsMask = 255);

Вставить воксель в коробку из данного буфера в определенном месте. dst_pos - самый низкий угол ящика, и его размер определяется размером src_buffer. channels_mask bitmask, где каждый бит указывает, какие каналы будут изменены. Пример: 1 << VoxelBuffer.CHANNEL_SDF Записать только данные SDF. VoxelBuffer.ChannelMask.AllChannelsMask Если ты хочешь их всех.

Параметры
ИмяТипПо умолчанию
dstPosVector3I—
srcBufferVoxelBuffer—
channelsMaskint255
PasteMaskedvoid
# PasteMasked
C#
public void PasteMasked(Vector3I dstPos, VoxelBuffer srcBuffer, int channelsMask, int maskChannel, long maskValue);

Воксель, имеющий особое значение в канале маски, не будет вставляться. dst_pos - самый низкий угол ящика, и его размер определяется размером src_buffer. channels_mask bitmask, где каждый бит указывает, какие каналы будут изменены. Пример: 1 << VoxelBuffer.CHANNEL_SDF Записать только данные SDF. VoxelBuffer.ChannelMask.AllChannelsMask Если ты хочешь их всех. src_mask_channel канал из буфера источника, который будет использоваться для поиска значений маскировки. src_mask_value Если волки буфера источника имеют это значение в канале, указанном для маскировки, то они не будут вставляться.

Параметры
ИмяТипПо умолчанию
dstPosVector3I—
srcBufferVoxelBuffer—
channelsMaskint—
maskChannelint—
maskValuelong—
PasteMaskedWritableList2 перегрузки
# PasteMaskedWritableList · 1/2
C#
public void PasteMaskedWritableList(Vector3I position, VoxelBuffer voxels, byte channelsMask, byte srcMaskChannel, ulong srcMaskValue, byte dstMaskChannel, int[] dstWritableList);

Вставить воксель в ящике из данного буфера в определенном месте. Воксели, имеющие конкретное значение в канале маски буфера источника, не будут вставляться, а существующие воксели в пункте назначения будут модифицироваться только в том случае, если они имеют конкретные значения. dst_pos - самый низкий угол ящика, и его размер определяется размером src_buffer. channels_mask bitmask, где каждый бит указывает, какие каналы будут изменены. Пример: 1 << VoxelBuffer.CHANNEL_SDF Записать только данные SDF. VoxelBuffer.ChannelMask.AllChannelsMask Если ты хочешь их всех. src_mask_channel канал из буфера источника, который будет использоваться для поиска значений маскировки. src_mask_value Если волки буфера источника имеют это значение в канале, указанном для маскировки, то они не будут вставляться. dst_mask_channel канал из пункта назначения, который будет использоваться для отбора запрограммируемых вокселей. dst_writable_list Список значений, которые должны быть указаны в вокселях места назначения, должен составлять от 0 до 65535.

Параметры
ИмяТипПо умолчанию
positionVector3I—
voxelsVoxelBuffer—
channelsMaskbyte—
srcMaskChannelbyte—
srcMaskValueulong—
dstMaskChannelbyte—
dstWritableListint[]—
# PasteMaskedWritableList · 2/2
C#
public void PasteMaskedWritableList(Vector3I position, VoxelBuffer voxels, byte channelsMask, byte srcMaskChannel, ulong srcMaskValue, byte dstMaskChannel, ReadOnlySpan<int> dstWritableList);

Вставить воксель в ящике из данного буфера в определенном месте. Воксели, имеющие конкретное значение в канале маски буфера источника, не будут вставляться, а существующие воксели в пункте назначения будут модифицироваться только в том случае, если они имеют конкретные значения. dst_pos - самый низкий угол ящика, и его размер определяется размером src_buffer. channels_mask bitmask, где каждый бит указывает, какие каналы будут изменены. Пример: 1 << VoxelBuffer.CHANNEL_SDF Записать только данные SDF. VoxelBuffer.ChannelMask.AllChannelsMask Если ты хочешь их всех. src_mask_channel канал из буфера источника, который будет использоваться для поиска значений маскировки. src_mask_value Если волки буфера источника имеют это значение в канале, указанном для маскировки, то они не будут вставляться. dst_mask_channel канал из пункта назначения, который будет использоваться для отбора запрограммируемых вокселей. dst_writable_list Список значений, которые должны быть указаны в вокселях места назначения, должен составлять от 0 до 65535.

Параметры
ИмяТипПо умолчанию
positionVector3I—
voxelsVoxelBuffer—
channelsMaskbyte—
srcMaskChannelbyte—
srcMaskValueulong—
dstMaskChannelbyte—
dstWritableListReadOnlySpan<int>—
RaycastVoxelRaycastResult
# Raycast
C#
public VoxelRaycastResult Raycast(Vector3 origin, Vector3 direction, float maxDistance = 10f, uint collisionMask = 4294967295);

Запустит воксельский луч, чтобы найти первый удар от источника и направления. Координаты находятся в мировом пространстве. Возвращает объект результата, если воксель попал в него, в противном случае возвращает null. Это полезно в тех случаях, когда нельзя полагаться на коллайдеры. Он также может быть быстрее (по крайней мере на коротком расстоянии) и более точен для определения того, на кого бьет воксель. Он использует алгоритм ДВР. collision_mask в настоящее время используется только с закупорочными вокселями. VoxelBlockyModel.CollisionMask чтобы решить, с каким вокселем может столкнуться луч.

Параметры
ИмяТипПо умолчанию
originVector3—
directionVector3—
maxDistancefloat10f
collisionMaskuint4294967295
Возвращает VoxelRaycastResult
SetChannelvoid
# SetChannel
C#
public void SetChannel(VoxelBuffer.ChannelId v);
Параметры
ИмяТипПо умолчанию
vVoxelBuffer.ChannelId—
SetEraserValuevoid
# SetEraserValue
C#
public void SetEraserValue(ulong v);
Параметры
ИмяТипПо умолчанию
vulong—
SetModevoid
# SetMode
C#
public void SetMode(VoxelTool.ModeEnum m);
Параметры
ИмяТипПо умолчанию
mVoxelTool.ModeEnum—
SetRaycastNormalEnabledvoid
# SetRaycastNormalEnabled
C#
public void SetRaycastNormalEnabled(bool enabled);

Устанавливает ли VoxelTool.Raycast Вычислить нормальные хиты. Это правда по умолчанию.

Параметры
ИмяТипПо умолчанию
enabledbool—
SetSdfScalevoid
# SetSdfScale
C#
public void SetSdfScale(float scale);
Параметры
ИмяТипПо умолчанию
scalefloat—
SetSdfStrengthvoid
# SetSdfStrength
C#
public void SetSdfStrength(float strength);
Параметры
ИмяТипПо умолчанию
strengthfloat—
SetTextureFalloffvoid
# SetTextureFalloff
C#
public void SetTextureFalloff(float falloff);
Параметры
ИмяТипПо умолчанию
fallofffloat—
SetTextureIndexvoid
# SetTextureIndex
C#
public void SetTextureIndex(int index);
Параметры
ИмяТипПо умолчанию
indexint—
SetTextureOpacityvoid
# SetTextureOpacity
C#
public void SetTextureOpacity(float opacity);
Параметры
ИмяТипПо умолчанию
opacityfloat—
SetValuevoid
# SetValue
C#
public void SetValue(ulong v);
Параметры
ИмяТипПо умолчанию
vulong—
SetVoxelvoid
# SetVoxel
C#
public void SetVoxel(Vector3I pos, ulong v);

Устанавливает первичное целое значение конкретного вокселя на текущем канале.

Параметры
ИмяТипПо умолчанию
posVector3I—
vulong—
SetVoxelFvoid
# SetVoxelF
C#
public void SetVoxelF(Vector3I pos, float v);

Устанавливает значение подписанных дистанционных полей (SDF) для конкретного воксела. Предпочтительно это следует использовать на канале SDF.

Параметры
ИмяТипПо умолчанию
posVector3I—
vfloat—
SetVoxelMetadatavoid
# SetVoxelMetadata
C#
public void SetVoxelMetadata(Vector3I pos, Variant meta);

Применяет произвольные данные по конкретному вокселю. Старые данные заменены. null будет стирать метаданные. Если ключевые вокселы могут быть сохранены, эти метаданные также будут сохранены, так что убедитесь, что данные поддерживают серийный процесс (т.е. вы не можете поместить узлы или произвольные объекты в него).

Параметры
ИмяТипПо умолчанию
posVector3I—
metaVariant—
SmoothSpherevoid
# SmoothSphere
C#
public void SmoothSphere(Vector3 sphereCenter, float sphereRadius, int blurRadius);

Противопоглощает местность, делая коробку размытой в сферической области. Прочность будет максимальной в центре сферы и линейно уменьшаться до нуля на поверхности сферы. Воксели за пределами сферы не будут затронуты. sphere_center Это положение на местности, которое будет сглажено. sphere_radius радиус сферы от center где будут затронуты значения вокселя, должны быть больше нуля. blur_radius - половина длины пятна в ящике, которая будет взята для расчета средних значений voxel. Более высокие значения приводят к более агрессивному сглаживанию. Примечание 1: В настоящее время эта система применяется только в отношении местности, где используются данные СФР (сможные воксели). Примечание 2: Остерегайтесь использования высоких sphere_radius и высокие blur_radius так как производительность может быстро падать, если это называется 60 раз в секунду.

Параметры
ИмяТипПо умолчанию
sphereCenterVector3—
sphereRadiusfloat—
blurRadiusint—
U16IndicesToVec4IVector4I
# U16IndicesToVec4I
C#
public static Vector4I U16IndicesToVec4I(int _UnnamedArg0);

Декодирует первичные воксель-полные данные с канала INDICES в четырехинтегерный вектор.

Параметры
ИмяТипПо умолчанию
_UnnamedArg0int—
Возвращает Vector4I
U16WeightsToColorColor
# U16WeightsToColor
C#
public static Color U16WeightsToColor(int _UnnamedArg0);

Декодирует первичные данные вокселя с канала WEIGHTS в нормализованный 4--float Цвет.

Параметры
ИмяТипПо умолчанию
_UnnamedArg0int—
Возвращает Color
Vec4IToU16Indicesint
# Vec4IToU16Indices
C#
public static int Vec4IToU16Indices(Vector4I _UnnamedArg0);

Кодирует 4-интегерный вектор в 16-битные целые воксельные данные для использования на канале INDICES.

Параметры
ИмяТипПо умолчанию
_UnnamedArg0Vector4I—
Возвращает int

VoxelTool.ModeEnum

ЗначениеОписание
Add = 0

При редактировании VoxelBuffer.ChannelId.ChannelSdfЭто будет полезно для строительства.

Remove = 1

При редактировании VoxelBuffer.ChannelId.ChannelSdfЭто полезно для раскопок.

Set = 2

Заменить воксель без смешивания. Полезно для закупорочных воксел.

TexturePaint = 3

При редактировании VoxelBuffer.ChannelId.ChannelSdf В гладких горностях можно рисовать текстуру. VoxelTool.TextureIndex Вес текстуры будет смешиваться на основе значений VoxelTool.TextureFalloff и VoxelTool.TextureOpacityРезультаты будут различаться в зависимости от того, какой режим текстузации используется мешером.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.