Не забывать!

Блог, чтобы сохранить рабочие моменты, которые забываются или теряются, как ни обидно... Попробуем устранить это недоразумение. Возможно эти тексты еще кому пригодятся.

суббота, 5 апреля 2014 г.

Работа материалов и слоев Terrain

Есть три составляющие: материал, текстура и идентификатор слоя
На ландшафте имеем текстуру, которая определяет его цвет и видна издалека. И ее можно как нарисовать, так и импортировать. При приближении мы видим уже материал. Его можно наносить кистью. Кисть рисует на мэше ID-шник и цвет в ту текстуру осн. цвета, что видна издалека. 

Слои

Существуют слои в которых определены: материал, текстура-паттерн, цвет, яркость.
Все эти описания можно увидеть, экспортируя файл *.lay из модуля «Terrain Texture Layers». Он имеет общ. вид:

<LayerSettings> <SurfaceTypes>
...
</SurfaceTypes> <Layers>
...
</Layers> </LayerSettings>

Про его выкрутасы описал здесь
Кроме слоев описываются еще типы поверхности. Но практически для художника они не имеют значения. Потому, что описывают какой материал принадлежит этой поверхности, номер ID и еще кое-что ))

<SurfaceType Name="materials/terrain/grass_2" SurfaceTypeID="0" DetailTexture="" DetailScaleX="1" DetailScaleY="1" DetailMaterial="materials/terrain/grass_2" ProjectAxis="2" Bumpmap="" ProjAxis="Z"/>

Слои имеют более нужное для нас описание. Тут опред. имя слоя, имя SurfaceType, ID, текстура паттерна и все настройки кисти этого слоя. Именно ID слоя рисуется на мэше ландшафта. Есть еще куча не используемых параметров.

<Layer Name="Grass 2" GUID="{30418DE5-976B-4E79-9EDE-4C4F023AA1B3}" Texture="textures/defaults/grey.dds" TextureWidth="4" TextureHeight="4" Material="" AltStart="0" AltEnd="1024" MinSlopeAngle="0" MaxSlopeAngle="90" InUse="1" AutoGenMask="1" LayerId="4" SurfaceType="materials/terrain/grass_2" FilterColor="0.20392157,0.22745098,0.16862746" LayerBrightness="0.36078432" UseRemeshing="0" LayerTiling="1" SpecularAmount="0" SortOrder="0"/>

Текстура-паттерн для слоя

Texture="" — это текстура-паттерн. Там еще есть ее размер. Эта текстура рисуется фильтрующим цветом FilterColor="", множится на LayerBrightness="" и ложится в осн. текстуру паттерном. 

Материалы

Материалов поверхности может быть несколько и являются они шейдерами типа terrain.layer. Рисуется кистью вместе с цветом в осн. текстуру. Существование осн. текстуры влияет на шейдер материала. Шейдер имеет текстуру diffuse, обработанную фильтром «Hight Pass». Серые пиксели красятся цветом ландшафта. Материал всегда подобен по цвету цвету ландшафта. В материале рекомендуют цвет diffuse ставить только белым, чтобы правильно срабатывало смешивание между материалами. Материалы назначены слою, и могут быть заменены. На мэше ID слоев лежат похоже в вершинах. И нет возможности этот массив экспортировать и импортировать.

Тайлы ландшафтной текстуры и массив ID слоев

Она может делиться на Tiles. Это позволяет в разном кусочке иметь разное разрешение для текстуры и массива ID слоев. Эти Tiles можно экспортировать и импортировать. В модуле «Imp/Exp Terrain Texture». Изображения довольно темные, потому что это фактически альбедо поверхности. Должна быть большая разница между черной землей и снегом, например. Рекомендуется периодически генерировать текстуру командой «Generate Terrain Texture». В темных местах цвет при сжатии сильно искажается. Этого можно избежать. Там есть множитель. Его нужно увеличить если генерируется не очень качественно. Текстура будет осветляться для кодирования, но визуально не изменится. Однако светлые тона могут отрезаться. Так следует подобрать оптимальное значение. 
Есть еще ограничение на количество ID-шников слоев. Ландшафт делится на квадратики (я не опр. разм.) в каждом из которых может записаться только 12 ID. При попытке рисовать 13й, на этом месте не будет отображаться материал.