Текстуры

From Vintage Story Wiki
This page is a translated version of the page Modding:Textures and the translation is 100% complete.
Other languages:

Эта страница проверялась в последний раз для версии Vintage Story 1.15.


Перед настройкой текстур рекомендуется сначала прочитать страницы базовые предметы, базовые блоки и базовые сущности чтобы понять это руководство.


Текстурирование предмета

Плоское текстурирование

Текстурирование ваших предметов и блоков в vintage story довольно простое, но есть некоторые вещи, которые следует учитывать при использовании форм. Начнем с использования плоской текстуры для элемента:

texture: { base: "item/resource/texture" }

Если у вашего элемента есть вариация, вы также можете использовать его в текстурах, даже без функции byType:

texture: { base: "path to texture/texture-{variant}" }

Текстурирование формы

Если ваш элемент отображается с пользовательской формой, используя shape: { base: "path to shape" } вы можете управлять его текстурами, используя множественную версию "textures". Для этого необходимо использовать один и тот же идентификатор "#texture" который используется на каждой стороне куба формы.

Давайте посмотрим на пример. Сначала мы рассмотрим несколько кубов в форме JSON:

{
  "name": "Cube_1",
  "from": [ 0.5, 0.0, 2.0 ], 
  "to": [ 5.5, 1.0, 2.5 ], 
  "rotationOrigin": [ 1.0, 0.0, -1.0 ],
  "faces": {
    "north": { "texture": "#metal", "uv": [ 0.0, 0.0, 5.0, 1.0 ] },
    "east": { "texture": "#metal", "uv": [ 7.0, 3.0, 7.5, 4.0 ] },
    "south": { "texture": "#metal", "uv": [ 1.0, 2.0, 6.0, 3.0 ] },
    "west": { "texture": "#metal", "uv": [ 7.0, 0.0, 7.5, 1.0 ] },
    "up": { "texture": "#metal", "uv": [ 0.0, 3.0, 5.0, 3.5 ] },
    "down": { "texture": "#metal", "uv": [ 0.0, 0.0, 5.0, 0.5 ] }
  }
}
{
  "name": "Cube_2",
  "from": [ 0.5, 0.0, 2.0 ], 
  "to": [ 5.5, 1.0, 2.5 ], 
  "rotationOrigin": [ 1.0, 0.0, -1.0 ],
  "faces": {
    "north": { "texture": "#wood", "uv": [ 0.0, 0.0, 5.0, 1.0 ] },
    "east": { "texture": "#wood", "uv": [ 7.0, 3.0, 7.5, 4.0 ] },
    "south": { "texture": "#wood", "uv": [ 1.0, 2.0, 6.0, 3.0 ] },
    "west": { "texture": "#wood", "uv": [ 7.0, 0.0, 7.5, 1.0 ] },
    "up": { "texture": "#wood", "uv": [ 0.0, 3.0, 5.0, 3.5 ] },
    "down": { "texture": "#wood", "uv": [ 0.0, 0.0, 5.0, 0.5 ] }
  }
}

Теперь мы можем назначить ссылки #texture из нашего элемента или блока JSON, используя этот формат, который также может использовать варианты в обычном формате:

textures: {
  "metal": {base: "path to metal texture" },
  "wood": {base: "path to wood texture" }
},

Это полезный метод, поскольку как «металл», так и «дерево» могут быть назначены нескольким кубам в форме JSON.

Воксилезированная текстура формы

Если вы решили, что хотите, чтобы вариации элемента не отображались с использованием формы JSON, вы можете использовать свойство "voxelizeTexture" при определении формы. Давайте посмотрим, что делает JSON с красным мясом:

shapebytype: { 
  "redmeat-vintage": { base: "item/empty", voxelizeTexture: true },
  "*": { base: "item/food/meat/red" },
},
texturesbytype: {
  "redmeat-raw": { 
    "meat": {base: "item/food/meat/raw" }
  },
  "redmeat-cooked":  { 
    "meat": {base: "item/food/meat/cooked" }
  },
  "redmeat-cured":  { 
    "meat": {base: "item/food/meat/cured" }
  },
  "redmeat-vintage": {
    "item/empty":  { base: "item/food/meat/vintage" }
  }
},

Здесь мы видим, что только «винтажный» вариант будет отображаться как обычная вокселизированная текстура элемента, в то время как остальные будут использовать форму красного мяса и применять к ней свою текстуру.

Текстурирование блока

Простой блок

Блоки текстурированы немного по-другому, так как по умолчанию они имеют общую форму куба. Это означает, что они не используют единственный «текстурный» метод, а вместо этого всегда используют версию множественных «текстур»:

textures: {
  all: {base: "path to texture*"}
},

Текстурирование других граней блоков

При назначении текстур «all» будет давать каждой стороне одну и ту же текстуру, но мы можем легко настроить каждую сторону, особенно если мы хотим использовать некоторые варианты поведения блоков, такие как "Pillar" или "HorizontalOrientable":

textures: {
  up: { base: "path to top texture" },
  down: { base: "path to bottom texture" },
  south: { base: "path to back texture" },
  north: { base: "path to front texture" },
  west: { base: "path to left texture" },
  east: { base: "path to right texture" },
},

Имейте в виду, что если вы используете поведения "Pillar" или "HorizontalOrientable", вам потребуются направленные варианты для каждого (например, updown, northsouth, eastwest и т. Д. ) и вам, скорее всего, придется организовать его, используя функциональность ByType. Прекрасным примером этого является бревна (Pillar) и алтарь (HorizontalOrientable) JSONS.

Текстурирование сущности

Основная текстура сущности

Все сущности используют фигуру, но обычно они применяются с использованием одной текстуры карты сущностей, которая по сути представляет собой файл текстуры с каждой стороной куба, нанесенной на нее. Делать это вручную было бы невероятно утомительно, и лучше всего это сделать с помощью редактора Vintage Story Model Builder здесь.

Как только у вас есть правильно наложенная текстура, вы можете назначить ее вашей сущности:

texture: { base: "path to texture map" }

Альтернативные текстуры сущностей

После определения первой текстуры вы также можете добавить альтернативы к той же сущности. Давайте посмотрим на Волка для примера:


texture: { base: "entity/wolf/wolf1", alternates: [ { base: "entity/wolf/wolf2" }, { base: "entity/wolf/wolf2" }, {...} ] }

Каждая последующая альтернатива должна быть пронумерована (начиная с 1).



Icon Sign.png

Куда делись некоторые ссылки?
Навигационное меню моддинга обновляется! Загляните в Navigation Box Updates для дополнительной информации и поиска определённых страниц.

Моддинг
Введение в Моддинг Первые Шаги Набор Тем
Контентные Моды Контентные Моды Разработка Контентного мода Руководства для Начинающих Руководства для Любителей Руководства для Продвинутых Концепты Контентных Модов
Программные Моды Программные Моды Настройка Среды Разработки
Разбор Cодержимого ПредметыСущностиМодели Поведения СущностейБлокиМодели Поведения БлоковКлассы БлоковБлочные СущностиМодели Поведения Блочных СущностейCollectible BehaviorsСвойства Мира
Рабочие Процессы и Инфраструктура Советы по Эффективности МоддингаСовместимость Мод-движокРасширяемость МодовДвижок VS
Дополнительные ресурсы Ресурсы Cообщества Обновления API Моддинга Языки Программирования Список команд сервераСписок команд клиентаПараметры запуска клиентаПараметры запуска сервера
Примеры МодовAPI ДокументацияРепозиторий GitHub