## VCM Текстовый формат описания 3D моделей, являющийся заменой устаревшего свойства `model-primitives`. Синтаксис: ``` @примитив атрибут (значение1,значение2,...) атрибут2 "значение3" { @внутренний_примитив ... } ``` Аналогичная структура в XML: ```xml <примитив атрибут="значение1,значение2,..." атрибут2="значение3"> <внутренний_примитив .../> ``` В отличие от XML в корне может находиться несколько элементов. На данный момент существует два вида примитивов: box и rect, а также, part (описывает часть примитива, такую как, например, сторона куба). > [!NOTE] > По-умолчанию текстурные координаты определяются размерами примитивов. > При размерах более 1.0 результат не определён и может измениться в последующих обновлениях. > Используйте `region` или `region-scale` для ручной настройки. ### Свойства `rect` - `from` - точка начала примитива. Пример: `from (0,0.5,0.125)` - `right` - вектор X, также определяющий ширину примитива. Пример: `right (1,0,0)` - `up` - вектор Y, также определяющий высоту примитива. Пример: `up (0,1,0)` - `texture` - отображаемая текстура. По-умолчанию: `$0`. Пример: `texture "blocks:sand"` - `region` - UV регион в границах выбранной текстуры, определяется позициями противоположных углов. Пример: `region (0,0,1,1)` - `region-scale` вектор-множитель для автоматически выбранного UV региона. Пример: `region-scale (0.5,1)` - `shading` определяет возможность затенения на примитиве. Пример: `shading off` - `flip` отражает UV регион по горизонтали или вертикали. Пример: `flip v` ### Свойства `box` - `from` - точка начала примитива. Пример: `from (0,0,0)` - `to` - противоположная от начала точка. Пример: `to (1,1,1)` - `origin` - точка, относительно которой будет применено вращение. По-умолчанию: центр примитива. Пример: `origin (0.5,0.5,0.5)` - `rotate` - вращение вокруг осей (x,y,z) в градусах, или кватернион (x,y,z,w). Пример: `rotate (45,0,0)` или `rotate (0.3826834, 0, 0, 0.9238795)` - `texture` - отображаемая текстура для всех сторон по-умолчанию. - `shading` определяет возможность затенения на примитиве. Пример: `shading off` - `delete` удаляет стороны по именам (top, bottom, east, west, north, south) ### Свойства `part` (в `box`) - `tags` - определяет то, на какаие из сторон будут применены свойства. Пример: `tags (top,bottom)` - `texture` - отображаемая текстура. По-умолчанию: `$индекс_стороны`. - `region` - UV регион в границах выбранной текстуры, определяется позициями противоположных углов. Пример: `region (0,0,1,1)` - `region-scale` вектор-множитель для автоматически выбранного UV региона. Пример: `region-scale (0.5,1)`