mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-11 14:01:49 +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)
|
- [Скриптинг](scripting.md)
|
||||||
- [Стили текста](text-styles.md)
|
- [Стили текста](text-styles.md)
|
||||||
- [Формат моделей VCM](vcm.md)
|
- [Формат моделей VCM](vcm.md)
|
||||||
|
- [Формат анимации VCA](vca.md)
|
||||||
- [Частицы](particles.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