<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.mineprogramming.org/index.php?action=history&amp;feed=atom&amp;title=InnerCore%2F%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh</id>
		<title>InnerCore/Класс RenderMesh - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.mineprogramming.org/index.php?action=history&amp;feed=atom&amp;title=InnerCore%2F%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh"/>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;action=history"/>
		<updated>2026-04-28T15:57:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=2014&amp;oldid=prev</id>
		<title>80LK в 21:12, 6 апреля 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=2014&amp;oldid=prev"/>
				<updated>2019-04-06T21:12:12Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 21:12, 6 апреля 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot; &gt;Строка 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат файлов .obj является достаточно распространенным не бинарным форматом 3D моделей, который поддерживают многие редакторы. RenderMesh позволяет одной функцией загружать модели из файлов с таким форматом. Загружаются данные о вершинах, текстурных координатах и полигонах, остальные данные избыточны и игнорируются.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат файлов .obj является достаточно распространенным не бинарным форматом 3D моделей, который поддерживают многие редакторы. RenderMesh позволяет одной функцией загружать модели из файлов с таким форматом. Загружаются данные о вершинах, текстурных координатах и полигонах, остальные данные избыточны и игнорируются.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== API моделей ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== API моделей ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot; &gt;Строка 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 24:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.addVertex(x, y, z, u, v) - добавляет вершину в модель, x, y, z - координаты в пространстве, u, v - координаты текстуры (от 0 до 1). Каждые 3 последовательно идущие вершины объединяются в треугольник, кол-во вершин обязательно должно быть кратно 3.&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.addVertex(x, y, z, u, v) - добавляет вершину в модель, x, y, z - координаты в пространстве, u, v - координаты текстуры (от 0 до 1). Каждые 3 последовательно идущие вершины объединяются в треугольник, кол-во вершин обязательно должно быть кратно 3.&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;mesh.setColor(r, g, b) - устанавливает цвет, который будет использован для всех добавленных далее вершин, пока цвет не изменится (по умолчанию белый) mesh.resetColor() - сбрасывает цвет обратно до белого&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;mesh.setColor(r, g, b) - устанавливает цвет, который будет использован для всех добавленных далее вершин, пока цвет не изменится (по умолчанию белый)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;&lt;/ins&gt;mesh.resetColor() - сбрасывает цвет обратно до белого&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.setBlockTexture(&amp;quot;name&amp;quot;, index) - данный метод нужен в случае, когда модель используется для блока. После вызова этого метода все текстурные координаты будут заданы для конкретной текстуры блока.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.setBlockTexture(&amp;quot;name&amp;quot;, index) - данный метод нужен в случае, когда модель используется для блока. После вызова этого метода все текстурные координаты будут заданы для конкретной текстуры блока.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot; &gt;Строка 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.scale(x, y, z) - изменяет размер модели по каждой координате соответственно в x, y, z раз&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.scale(x, y, z) - изменяет размер модели по каждой координате соответственно в x, y, z раз&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.rebuild() - пересчитывает нормали всех треугольников, нужные для корректного освещения, нужно вызвать это после завершения модификации модели.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.rebuild() - пересчитывает нормали всех треугольников, нужные для корректного освещения, нужно вызвать это после завершения модификации модели.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt; &amp;lt;/div&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=2013&amp;oldid=prev</id>
		<title>80LK в 21:11, 6 апреля 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=2013&amp;oldid=prev"/>
				<updated>2019-04-06T21:11:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 21:11, 6 апреля 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot; &gt;Строка 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат файлов .obj является достаточно распространенным не бинарным форматом 3D моделей, который поддерживают многие редакторы. RenderMesh позволяет одной функцией загружать модели из файлов с таким форматом. Загружаются данные о вершинах, текстурных координатах и полигонах, остальные данные избыточны и игнорируются.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат файлов .obj является достаточно распространенным не бинарным форматом 3D моделей, который поддерживают многие редакторы. RenderMesh позволяет одной функцией загружать модели из файлов с таким форматом. Загружаются данные о вершинах, текстурных координатах и полигонах, остальные данные избыточны и игнорируются.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== API моделей ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== API моделей ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot; &gt;Строка 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.resetTexture() - сбрасывает состояние, полученное вызовом метода setBlockTexture.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.resetTexture() - сбрасывает состояние, полученное вызовом метода setBlockTexture.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;mesh.clear() - очищает модель mesh.translate(x, y, z) - смещает всю модель на вектор x, y, z&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;mesh.clear() - очищает модель&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;&lt;/ins&gt;mesh.translate(x, y, z) - смещает всю модель на вектор x, y, z&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.scale(x, y, z) - изменяет размер модели по каждой координате соответственно в x, y, z раз&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.scale(x, y, z) - изменяет размер модели по каждой координате соответственно в x, y, z раз&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.rebuild() - пересчитывает нормали всех треугольников, нужные для корректного освещения, нужно вызвать это после завершения модификации модели.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.rebuild() - пересчитывает нормали всех треугольников, нужные для корректного освещения, нужно вызвать это после завершения модификации модели.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Импорт из файла ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Импорт из файла ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=1555&amp;oldid=prev</id>
		<title>Admin в 14:21, 13 июня 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=1555&amp;oldid=prev"/>
				<updated>2018-06-13T14:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 13 июня 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/ins&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:18.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Работа с RenderMesh&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= &amp;lt;span style=&amp;quot;font-size:18.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Работа с RenderMesh&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l107&quot; &gt;Строка 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 107:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;[[File:Нечто блоком без текстуры.jpg|upright|Нечто блоком без текстуры.jpg]][[File:Нечто со светом.jpg|upright|Нечто со светом.jpg]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;[[File:Нечто блоком без текстуры.jpg|upright|Нечто блоком без текстуры.jpg]][[File:Нечто со светом.jpg|upright|Нечто со светом.jpg]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/div&amp;gt; &lt;/ins&gt;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=1527&amp;oldid=prev</id>
		<title>Admin: Новая страница: «&lt;div class=&quot;mw-parser-output&quot;&gt;&lt;div class=&quot;mw-parser-output&quot;&gt; = &lt;span style=&quot;font-size:18.0pt&quot;&gt;&lt;span style=&quot;line-height:107%&quot;&gt;Работа с RenderMesh&lt;/span&gt;&lt;/sp…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_RenderMesh&amp;diff=1527&amp;oldid=prev"/>
				<updated>2018-05-06T11:33:03Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt; = &amp;lt;span style=&amp;quot;font-size:18.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Работа с RenderMesh&amp;lt;/span&amp;gt;&amp;lt;/sp…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
= &amp;lt;span style=&amp;quot;font-size:18.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Работа с RenderMesh&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Класс RenderMesh позволяет создавать, загружать и использовать в любом типе рендера произвольные трехмерные модели, созданные из полигонов.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;[[File:Корова.jpg|upright|Корова.jpg]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Принцип ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;3D модель представлена как набор вершин, цветов, текстурных координат и полигонов, последние объединяют первые 3 в треугольники (каждая вершина треугольника является ссылкой на вершину, цвет и текстурные координаты). Из треугольников и создается модель.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Формат OBJ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат файлов .obj является достаточно распространенным не бинарным форматом 3D моделей, который поддерживают многие редакторы. RenderMesh позволяет одной функцией загружать модели из файлов с таким форматом. Загружаются данные о вершинах, текстурных координатах и полигонах, остальные данные избыточны и игнорируются.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== API моделей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;Создание:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;var mesh = new RenderMesh() - создает пустую модель&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Основные методы для модификации:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.addVertex(x, y, z, u, v) - добавляет вершину в модель, x, y, z - координаты в пространстве, u, v - координаты текстуры (от 0 до 1). Каждые 3 последовательно идущие вершины объединяются в треугольник, кол-во вершин обязательно должно быть кратно 3.&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;mesh.setColor(r, g, b) - устанавливает цвет, который будет использован для всех добавленных далее вершин, пока цвет не изменится (по умолчанию белый) mesh.resetColor() - сбрасывает цвет обратно до белого&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.setBlockTexture(&amp;quot;name&amp;quot;, index) - данный метод нужен в случае, когда модель используется для блока. После вызова этого метода все текстурные координаты будут заданы для конкретной текстуры блока.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.resetTexture() - сбрасывает состояние, полученное вызовом метода setBlockTexture.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;mesh.clear() - очищает модель mesh.translate(x, y, z) - смещает всю модель на вектор x, y, z&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.scale(x, y, z) - изменяет размер модели по каждой координате соответственно в x, y, z раз&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;mesh.rebuild() - пересчитывает нормали всех треугольников, нужные для корректного освещения, нужно вызвать это после завершения модификации модели.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Импорт из файла ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Для импорта модели из файла используется метод mesh.importFromFile(path, type, params) или конструктор с такими же аргументами. Импорт автоматически вызовет метод rebuild() после завершения.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Аргументы:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;path - абсолютный путь к файлу&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;type - тип файла (на данный момент доступен только &amp;quot;obj&amp;quot;)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
*&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;params - объект настроек импорта или null, если настройки должны быть по умолчанию.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Формат объекта настроек и их значения по умолчанию:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;{&lt;br /&gt;
    clear: false, // очищать ли модель перед импортом&lt;br /&gt;
    invertV: false, // в некоторых моделях вторая текстурная координатаинвертирована, это инвертирует ее обратно. &lt;br /&gt;
    translate: [0, 0, 0], // аналогичен по действию метода translate, но происходит прямо во время импорта, что ускоряет процесс&lt;br /&gt;
    scale: [1, 1, 1] // аналогичен методу scale, вызывается после примененияпараметра translate &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Пример:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;var mesh = new RenderMesh(__dir__ + &amp;quot;models/barrel.obj&amp;quot;, &amp;quot;obj&amp;quot;, null); // импортирует модель из &amp;quot;директория мода/models/barrel.obj&amp;quot; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Использование для рендера мобов:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;'' ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Модель RenderMesh может быть установлена для конкретной части рендера моба и тогда она будет отрисовываться в ее системе координат. Модель заменит остальные элементы этой части рендера, и они не будут отрисовываться.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Для того, чтобы установить модель в объекте ModelPart есть метод setMesh(mesh), который может принимать объект модели или null.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Пример:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;var mesh = new RenderMesh(__dir__ + &amp;quot;models/barrel.obj&amp;quot;, &amp;quot;obj&amp;quot;, null); // создать модель из файла (см. прошлый пример)  &lt;br /&gt;
var render = new Render(); // создать пустой рендер &lt;br /&gt;
var bodyPart = render.getPart(&amp;quot;body&amp;quot;); // получить часть (ModelPart) с именем &amp;quot;body&amp;quot; &lt;br /&gt;
bodyPart.setMesh(mesh); // установить модель для полученной части рендера моба&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;После установки мобу текстуры для этой модели и созданного в примере рендера был получен следующий результат:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Нечто.jpg|upright|Нечто.jpg]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Использование для модели блока:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Модель RenderMesh может быть добавлена в модель объекта блока (BlockModel), при этом ее текстурой будет текстура всех блоков (см метод setBlockTexture). В одну модель блока может быть добавлено несколько моделей RenderMesh и они не будут заменять друг друга и другие части модели блока.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Для добавления RenderMesh в BlockModel используется метод последнего addMesh(mesh), который добавляет RenderMesh в модель блока, или конструктор new BlockModel(mesh), который создает модель блока из переданного RenderMesh.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;В отличии от рендера мобов, рендер блоков имеет такую механику как culling (треугольники будут видны только с той стороны, с которой их вершины идут по часовой стрелке), это сделано в самом MCPE для оптимизации и при создании моделей для блоков это стоит учитывать.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:162%&amp;quot;&amp;gt;Пример:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;var mesh = new RenderMesh(); // создать пустую модель&lt;br /&gt;
mesh.setBlockTexture(&amp;quot;quartz_block_side&amp;quot;, 0); // установить текстуру кварца (можно добавить произвольную текстуру, как текстуру блока и использовать ее)&lt;br /&gt;
mesh.importFromFile(__dir__ + &amp;quot;models/barrel.obj&amp;quot;, &amp;quot;obj&amp;quot;, null); // загрузить из файла с использованием текстуры кварца &lt;br /&gt;
var blockModel = new BlockRenderer.Model(mesh); // создать модель для рендера &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:135%&amp;quot;&amp;gt;После установки нашей модели блоку (к примеру с помощью ICRender), получаем результат:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Нечто блоком без текстуры.jpg|upright|Нечто блоком без текстуры.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Заменяя текстуру кварца на развертку бочки, которая была использована до этого и добавляя ее в текстуры блоков получаем ту же самую модель, но для блока (подобные текстуры стоит изменять до квадрата размера степени 2, это оптимальнее и развертка при этом сохраняется):&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Нечто блоком.jpg|upright|Нечто блоком.jpg]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Освещение =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;Для моделей блоков актуальны настройки освещения моделей (для мобов оно рассчитывается самим MCPE). Они задаются следующими методами:'''''setLightParams(min, max, smooth) - задает значения освещения, рассчитанного по нормалям, min, max - минимальное и максимальное (от 0 до 1), smooth - значение сглаживания (больше 0, 1 является нейтральным элементом, по умолчанию 1.9)'''''&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;setLightDir(x, y, z) - устанавливает направление света, нужное для рассчета освещения по нормалям.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;''&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;setLightIgnore(ignoreBlockLight, ignoreSkyLight) - задает игнорирование разных типов освещения мира (если тип игнорируется, то освещение всегда максимальное)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Одна и та же модель при значениях по умолчанию и после вызова setLightParams(0, 1,&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;1):&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;[[File:Нечто блоком без текстуры.jpg|upright|Нечто блоком без текстуры.jpg]][[File:Нечто со светом.jpg|upright|Нечто со светом.jpg]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>