mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 10:31:50 +00:00
add vca docs
This commit is contained in:
parent
9826aedee3
commit
b180a29bb5
2 changed files with 106 additions and 0 deletions
|
|
@ -21,4 +21,5 @@
|
|||
- [Скриптинг](scripting.md)
|
||||
- [Стили текста](text-styles.md)
|
||||
- [Формат моделей VCM](vcm.md)
|
||||
- [Формат анимации VCA](vca.md)
|
||||
- [Частицы](particles.md)
|
||||
|
|
|
|||
105
doc/ru/vca.md
Normal file
105
doc/ru/vca.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# VCA
|
||||
|
||||
Текстовый формат анимации, использующий синтаксис [VCM](vcm.md).
|
||||
|
||||
VCA файл состоит из набора директив, порядок следования которых не влияет на порядок применение трансформаций.
|
||||
|
||||
Директивы применяются к переданной цели, которая может быть скелетом сущности и камерой.
|
||||
При использовании скелета, в директиве указывается имя кости через атрибут `bone`:
|
||||
|
||||
```vcd
|
||||
@move bone имя_кости ...
|
||||
```
|
||||
|
||||
Директивы отвечают за отдельные скалярные значения, такие как x, y, z и т.д., указываемые через атрибут `by`:
|
||||
|
||||
```vcd
|
||||
@move bone hand by y ...
|
||||
```
|
||||
|
||||
На данный момент доступны два вида описания кривых, дающих значение `f(t) = x` где t - время:
|
||||
- [кривые с ключевыми кадрами (curve)](#кривые-с-ключевыми-кадрами)
|
||||
- [кривые через выражения (func)](#)
|
||||
|
||||
## Директивы анимации
|
||||
|
||||
- `@move` - смещение объекта/кости
|
||||
- `@rotate` - поворот объекта/кости
|
||||
- `@scale` - масштабирование объекта/кости (множитель)
|
||||
- `@zoom` - масштаб камеры (множитель)
|
||||
|
||||
## Мета-информация
|
||||
|
||||
Информация о анимации в файле настраивается через директиву `configure`:
|
||||
- `fps` - частота кадров, являющаяся делителем при рассчёте длительности
|
||||
- `frames` - число кадров анимации, являющееся делимым при рассчёте длительности
|
||||
- `duration` - явно указанная длительность в секундах (требуется указание fps при наличии ключевых кадров)
|
||||
- `rotation-order` - указывает порядок применения углов Эйлера при вращении (так как порядок директив не учитывается форматом). Примеры: XYZ, ZYX, YZX.
|
||||
|
||||
## Кривые с ключевыми кадрами
|
||||
|
||||
Требуется через атрибут `curve` указать тип кривой:
|
||||
- `const` - значения не интерполируются, сменяясь в момент достижения ключевого кадра
|
||||
- `linear` - ломанная линия, используется линейная интерполяция
|
||||
- `bezier` - ключевые кадры кривой Безье с явно указанными левой и правой касательными (lx, ly, rx, ry)
|
||||
|
||||
Ключевые кадры описываются в последующем `{...}` блоке в виде упорядоченных `@key` директив:
|
||||
|
||||
```vcd
|
||||
@rotate by z curve linear {
|
||||
@key ...
|
||||
@key ...
|
||||
}
|
||||
```
|
||||
|
||||
Ключевой кадр должен содержать номер кадра `frame` и значенин `value`. Для `bezier` кадров также описываются касательные.
|
||||
|
||||
Пример для `curve bezier`:
|
||||
```vcd
|
||||
@key frame 138 value 53.00411 lx 127.067 ly 53.00411 rx 138.001 ry 53.00411
|
||||
```
|
||||
|
||||
## Кривые через выражения
|
||||
|
||||
Через атрибут описывается функция `f(t) = x` где t - время в секундах.
|
||||
|
||||
Пример: `func (sin(t * 2.5) + pi)`.
|
||||
|
||||
Операции доступные в выражениях:
|
||||
|
||||
- `a + b` - сложение
|
||||
- `a * b` - умножение
|
||||
- `a / b` - деление
|
||||
- `a % b` - деление по модулю
|
||||
- `a ^ b` - возведение в степень
|
||||
|
||||
Константы доступные в выражениях:
|
||||
|
||||
- `pi` число π
|
||||
- `e` число Эйлера
|
||||
|
||||
Функции доступные в выражениях:
|
||||
|
||||
- `sin(x)` - синус от x
|
||||
- `cos(x)` - косинус от x
|
||||
- `tan(x)` - тангенс от x
|
||||
- `noise(x, octaves)` - быстрый одномерный шум от x с указанным числом октав
|
||||
- `noise2d(x, y, octaves)` - двумерный шум от x,y с указанным числом октав
|
||||
- `sign(x)` - целое число, указывающее знак x (-1/0/1)
|
||||
- `rand(low, high)` - псевдослучайное дробное число в диапазоне от low до high
|
||||
- `round(x, places)` - округляет значение x до указанного количества знаков после запятой places (опционально).
|
||||
- `floor(x)` - округляет значение x до ближайшего меньшего целого
|
||||
- `ceil(x)` - округляет значение x до ближайшего большего целого
|
||||
- `exp(x)` - $e^{x}$
|
||||
- `min(x, ...)` - выбирает наименьшее значение из переданных аргументов
|
||||
- `max(x, ...)` - выбирает наибольшее значение из переданных аргументов
|
||||
- `sqrt(x)` - квадратный корень от x
|
||||
- `log(x)` - $ln({x})$
|
||||
- `log10(x)` - $log_{10}({x})$
|
||||
- `deg(x)` - конвертирует радианы в градусы
|
||||
- `rad(x)` - конвертирует градусы в радианы
|
||||
|
||||
|
||||
>[!WARNING]
|
||||
> Использование незадокументированных функций может иметь иметь любые незадокументированные последствия.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue