Редактирование:Рендер блоков

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 
<div class="mw-parser-output"><div class="mw-parser-output">
 
 
<div class="mw-parser-output">
 
<div class="mw-parser-output">
<div class="mw-parser-output">
+
= <span style="font-size:18.0pt"><span style="line-height:107%">Введение в рендер блоков</span></span> =
= Введение в рендер блоков =
 
  
Кроме формы из одного параллелепипеда, которой обладает большинство блоков, Inner Core позволяет задать им почти любой внешний вид.&nbsp;&nbsp;
+
Кроме формы из одного параллелепипеда, которой обладает большинство блоков, Inner Core позволяет задать им почти любой внешний вид. &nbsp;
</div>
 
  
 
== Формат описания текстуры и ее наложение на блок ==
 
== Формат описания текстуры и ее наложение на блок ==
Строка 15: Строка 11:
  
 
Текстура целого блока может быть описана либо двумя параметрами - именем и индексом текстуры, в таком случае весь блок будет иметь одну и ту же текстуру, либо массивом текстур, формат которого приведен ниже.
 
Текстура целого блока может быть описана либо двумя параметрами - именем и индексом текстуры, в таком случае весь блок будет иметь одну и ту же текстуру, либо массивом текстур, формат которого приведен ниже.
 +
 +
&nbsp;
 
<syntaxhighlight lang="Javascript">[
 
<syntaxhighlight lang="Javascript">[
 
     ["название1", индекс1], // bottom
 
     ["название1", индекс1], // bottom
Строка 21: Строка 19:
 
     ["название4", индекс4], // front
 
     ["название4", индекс4], // front
 
     ["название5", индекс5], // left
 
     ["название5", индекс5], // left
     ["название6", индекс6] // right
+
     ["название6", индекс6]  // right
 
]</syntaxhighlight>
 
]</syntaxhighlight>
Каждый из элементов массива отвечает за одну текстуру, если элементов меньше 6, то текстуры недостающих сторон скопируют последний элемент массива.</div> </div> </div> </div>
+
 
 +
&nbsp;
 +
 
 +
Каждый из элементов массива отвечает за одну текстуру, если элементов меньше 6, то текстуры недостающих сторон скопируют последний элемент массива.''
 +
 
 
== Статичная модель блока ==
 
== Статичная модель блока ==
  
Строка 29: Строка 31:
  
 
Основной, хоть и не единственный элемент модели - бокс - является текстурированным параллелепипедом с заданными начальными и конечными координатами x1, y1, z1, x2, y2, z2 в пространстве конкретного блока (0 означает начало блока, 1 - конец по данной координате, координаты могут выходить за пределы 0-1).&nbsp;&nbsp;
 
Основной, хоть и не единственный элемент модели - бокс - является текстурированным параллелепипедом с заданными начальными и конечными координатами x1, y1, z1, x2, y2, z2 в пространстве конкретного блока (0 означает начало блока, 1 - конец по данной координате, координаты могут выходить за пределы 0-1).&nbsp;&nbsp;
 +
 +
&nbsp;
  
 
Пустая статичная модель создается с помощью конструктора ''new BlockRenderer.Model()'' и обладает следующими методами:
 
Пустая статичная модель создается с помощью конструктора ''new BlockRenderer.Model()'' и обладает следующими методами:
  
<span style="line-height:108%">model.addBox(x1, y1, z1, x2, y2, z2, id, data) - добавляет бокс с текстурой блока с данными id, data</span>
+
<span style="line-height:108%">''model.addBox(x1, y1, z1, x2, y2, z2, id, data) - добавляет бокс с текстурой блока с данными id, data''</span>
  
<span style="line-height:108%">model.addBox(x1, y1, z1, x2, y2, z2, "name", index) - добавляет бокс с текстурой с именем name и индексом index на всех сторонах</span>
+
<span style="line-height:108%">''model.addBox(x1, y1, z1, x2, y2, z2, "name", index) - добавляет бокс с текстурой с именем name и индексом index на всех сторонах''</span>
  
<span style="line-height:108%">model.addBox(x1, y1, z1, x2, y2, z2, [… texture set ...]) - добавляет бокс с заданным массивом текстур (формат см. выше)</span>
+
<span style="line-height:108%">''model.addBox(x1, y1, z1, x2, y2, z2, [… texture set ...]) - добавляет бокс с заданным массивом текстур (формат см. выше)''</span>
  
<span style="line-height:108%">model.addMesh(mesh) - добавляет в модель объект RenderMesh - произвольную полигональную 3D модель, о которых будет рассказано позднее</span>
+
<span style="line-height:108%">''model.addMesh(mesh) - добавляет в модель объект RenderMesh - произвольную полигональную 3D модель, о которых будет рассказано позднее''</span>
  
 
Существуют так же другие конструкторы, упрощающие быстрое создание простых моделей:
 
Существуют так же другие конструкторы, упрощающие быстрое создание простых моделей:
  
<span style="line-height:108%">new BlockRenderer.Model(mesh) - создает модель, которая содержит в себе данный объект RenderMesh</span>
+
<span style="line-height:108%">''new BlockRenderer.Model(mesh) - создает модель, которая содержит в себе данный объект RenderMesh''</span>
  
<span style="line-height:108%">new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, [… texture set ...]) - создает модель, которая является одним боксом с данным массивом текстур</span>
+
<span style="line-height:108%">''new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, [… texture set ...]) - создает модель, которая является одним боксом с данным массивом текстур''</span>
  
<span style="line-height:108%">new BlockRenderer.Model([… texture set ...]) - создает модель, которая является полным блоком с данным массивом текстур</span>
+
<span style="line-height:108%">''new BlockRenderer.Model([… texture set ...]) - создает модель, которая является полным блоком с данным массивом текстур''</span>
  
<span style="line-height:108%">new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, "name", index) - создает модель, которая является одним боксом с данной текстурой на всех сторонах</span>
+
<span style="line-height:108%">''new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, "name", index) - создает модель, которая является одним боксом с данной текстурой на всех сторонах''</span>
  
<span style="line-height:108%">new BlockRenderer.Model("name", index) - создает модель, которая является полным блоком с данной текстурой на всех сторонах</span>
+
<span style="line-height:108%">''new BlockRenderer.Model("name", index) - создает модель, которая является полным блоком с данной текстурой на всех сторонах''</span>
  
<span style="line-height:108%">new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, id, data) - создает модель, которая является одним боксом, копирующим текстуру из блока с данными id, data</span>
+
<span style="line-height:108%">''new BlockRenderer.Model(x1, y1, z1, x2, y2, z2, id, data) - создает модель, которая является одним боксом, копирующим текстуру из блока с данными id, data''</span>
  
<span style="line-height:108%">new BlockRenderer.Model(id, data) -&nbsp; создает модель, которая является полным блоком, копирующим текстуру из блока с данными id, data</span>
+
<span style="line-height:108%">''new BlockRenderer.Model(id, data) -&nbsp; создает модель, которая является полным блоком, копирующим текстуру из блока с данными id, data''</span>
  
 
== Основы ICRender ==
 
== Основы ICRender ==
Строка 60: Строка 64:
 
ICRender является системой, позволяющей заранее задать блоку внешний вид в зависимости от внешних условий. Основным объектом для рендера блоков является модель ICRender, которая является набором статических моделей и условий, при которых они будут отрисовываться.
 
ICRender является системой, позволяющей заранее задать блоку внешний вид в зависимости от внешних условий. Основным объектом для рендера блоков является модель ICRender, которая является набором статических моделей и условий, при которых они будут отрисовываться.
  
Для создания модели ICRender используется конструктор ''new ICRender.Model(), ''для добавления статичной модели в модель ICRender используется метод ''addEntry(model)'':
+
Для создания модели ICRender используется конструктор ''new ICRender.Model(), ''для добавления статичной модели в модель ICRender используется метод ''addEntry(model)'': ''var staticModel = new BlockRenderer.Model(); // модификация модели staticModel var icRenderModel = new ICRender.Model(); icRenderModel.addEntry(staticModel);&nbsp;''
<syntaxhighlight lang="Javascript">var staticModel = new BlockRenderer.Model(); // модификация модели staticModel  
+
 
var icRenderModel = new ICRender.Model();  
+
''&nbsp;''
icRenderModel.addEntry(staticModel); </syntaxhighlight>
 
  
 
Чтобы установить блоку модель ICRender используется метод
 
Чтобы установить блоку модель ICRender используется метод
 
<p style="margin-top:0cm; margin-right:3.2pt; margin-bottom:7.85pt; margin-left:0cm; text-align:justify"><span style="text-justify:inter-ideograph"><span style="line-height:108%">''BlockRenderer.setStaticICRender(id, data, model) - ''где id и data - целевой блок (если надо установить для любого значения data, вместо него нужно передать -1), а model - модель ICRender.</span></span></p>  
 
<p style="margin-top:0cm; margin-right:3.2pt; margin-bottom:7.85pt; margin-left:0cm; text-align:justify"><span style="text-justify:inter-ideograph"><span style="line-height:108%">''BlockRenderer.setStaticICRender(id, data, model) - ''где id и data - целевой блок (если надо установить для любого значения data, вместо него нужно передать -1), а model - модель ICRender.</span></span></p>  
 
Пример:
 
Пример:
<syntaxhighlight lang="Javascript">BlockRenderer.setStaticICRender(BlockID.testRenderBlock, -1, icRenderModel); // после этого требуемый блок будет иметь созданную ранее модель</syntaxhighlight>
+
 
<div class="mw-parser-output"><div class="mw-parser-output">
+
<span style="line-height:108%">''BlockRenderer.setStaticICRender(BlockID.testRenderBlock, -1, icRenderModel); // после этого требуемый блок будет иметь созданную ранее модель''</span>
<div class="mw-parser-output">
+
 
 
== Маппинг рендера'' ==
 
== Маппинг рендера'' ==
  
 
Кроме обычной установки ICRender блокам, им можно так же включить режим ''маппинга рендера''. Он позволяет устанавливать любые модели ICRender конкретным блокам в мире, для которых маппинг включен, не затрагивая остальные блоки.
 
Кроме обычной установки ICRender блокам, им можно так же включить режим ''маппинга рендера''. Он позволяет устанавливать любые модели ICRender конкретным блокам в мире, для которых маппинг включен, не затрагивая остальные блоки.
  
Для включения маппинга используется метод ''BlockRenderer.enableCoordMapping(id, data, model) - ''где id и data - целевой блок, а model - модель ICRender, которая будет использована для данного блока по умолчанию.
+
Для включения маппинга используется метод ''BlockRenderer.enableCoordMapping(id, data, model) - ''где id и data - целевой блок, а model - модель ICRender, которая будет использована для данного блока по умолчанию.''
  
 
Без дополнительных действий такой вызов ничем не будет отличаться по действию от вызова ''BlockRenderer.setStaticICRender. ''Для маппинга используются следующие методы:
 
Без дополнительных действий такой вызов ничем не будет отличаться по действию от вызова ''BlockRenderer.setStaticICRender. ''Для маппинга используются следующие методы:
  
<span style="line-height:108%">BlockRenderer.mapAtCoords(x, y, z, model) - устанавливает данную модель ICRender на данные координаты, любой блок, для которого включен маппинг и который стоит на этих координатах, будет иметь эту модель.</span>
+
<span style="line-height:108%">''BlockRenderer.mapAtCoords(x, y, z, model) - устанавливает данную модель ICRender на данные координаты, любой блок, для которого включен маппинг и который стоит на этих координатах, будет иметь эту модель.''</span>
  
<span style="line-height:108%">BlockRenderer.unmapAtCoords(x, y, z) - отменяет действие предыдущей функции на данных координатах, возвращая стандартную модель любого блока.</span>
+
<span style="line-height:108%">''BlockRender.unmapAtCoords(x, y, z) - отменяет действие предыдущей функции на данных координатах, возвращая стандартную модель любого блока.''</span>
  
 
<u style="text-underline:black">Важно отметить:</u> ''&nbsp;''
 
<u style="text-underline:black">Важно отметить:</u> ''&nbsp;''
Строка 87: Строка 90:
 
#Все установленные на координатах модели очищаются при выходе из мира.  
 
#Все установленные на координатах модели очищаются при выходе из мира.  
 
#Наличие блока никак не связано с тем, что на данных координатах установлена модель, это значит, что если сломать блок, подверженный маппингу, у которого была изменена модель и поставить на его место другой блок, тоже подверженный маппингу, то модель сохранится. Потому важно следить, на какой именно блок вызывается mapAtCoords и обязательно вызывать unmapAtCoords при уничтожении блока.  
 
#Наличие блока никак не связано с тем, что на данных координатах установлена модель, это значит, что если сломать блок, подверженный маппингу, у которого была изменена модель и поставить на его место другой блок, тоже подверженный маппингу, то модель сохранится. Потому важно следить, на какой именно блок вызывается mapAtCoords и обязательно вызывать unmapAtCoords при уничтожении блока.  
 +
 +
''&nbsp;''
 
</div>
 
</div>

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. Mineprogramming wiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!