Как поставить текстуру на террейн в unity
Перейти к содержимому

Как поставить текстуру на террейн в unity

  • автор:

Создание и редактирование terrain’ов

Вы можете добавить объект terrain’а в сцену, выбрав GameObject > Create Other > Terrain из меню (это также добавит соответствующий ассет terrain’а в окно Project). При этом, ландшафт изначально будет ничем иным, как просто большой, плоской равниной. Однако, если вы посмотрите на инспектор при выделенном объекте terrain’а, вы увидите, что там представлен ряд инструментов, которые вы можете использовать для создания любых нужных вам ландшафтов.

Инструменты редактирования terrainа, появившиеся в инспекторе

За исключением инструмента размещения деревьев и панели настроек, все остальные инструменты на панели инструментов обеспечивают набор “кистей” и настроек для размера и прозрачности кисти. То что, эти кисти похожи на кисти из графических редакторов — не совпадение, т.к. именно так создаются детали у terrain’а, с помощью их “рисования” на ландшафте. Если вы выберете первый слева инструмент на панели инструментов (Raise/Lower Terrain) и передвинете мышь над terrain’ом в окне Scene, вы увидите, что курсор напоминает прожектор на поверхности. Кликая кнопку мыши, вы можете нарисовать постепенные изменения в высоте ландшафта в точке расположения мышки. Вы можете менять форму кисти в панели Brushes. Опции Brush Size и Opacity влияют на область кисти и силу “нажима” соответственно.

Подробное описание для каждого из инструментов можно найти в соответствующих разделах. Однако, все они основаны на концепте рисования деталей и, за исключением инструмента размещения деревьев, все они имеют одинаковые настройки кистей, размер кисти и “нажим”. Инструменты можно использовать для изменения высоты terrain’а, для добавления окраски, для размещения растительности и других объектов.

Быстрые клавиши terrain’а

Вы можете использовать следующие сочетания клавиш в инспекторе terrain’а:-

  • Нажатия на клавиши от Q до Y с зажатой клавишей shift выбирают соответствующий инструмент (например, Shift-Q выбирает инструмент Raise/Lower).
  • Запятая (,) и точка (.) циклично переключают доступные кисти.
  • Shift-запятая (<) и Shift-точка (>) циклично переключают доступные объекты для деревьев, текстур и деталей.

Кроме того, стандартная клавиша F работает несколько иначе для terrain’ов. Обычно, она показывает в кадре окна Scene выбранный объект, если мышка располагается в окне Scene. Однако, так как terrain’ы обычно очень крупные объекты, нажатие F будет фокусировать вид окна Scene на области terrain’а, над которой в данный момент находится мышь/кисть. Это обеспечивает очень быстрый и интуитивный способ перепрыгивания к области terrain’а, которую вы желаете отредактировать. Если вы нажимаете F, когда мышка удалена от объекта terrain, клавиша работает в обычном режиме, как описано выше.

Текстуры

Вы можете добавлять текстуры на поверхность terrain’а для создания окраски и мелких деталей. Так как terrain’ы довольно большие объекты, к ним обычно применяют текстуры, которые можно бесшовно стыковать, чтобы замостить ими поверхность (повтор обычно не заметен с точи зрения персонажа, который находится близко к земле). Одна текстура будет служить как “фоновая” картинка по всему ландшафту, но вы также можете рисовать области, используя другие текстуры, чтобы симулировать различные покрытия, такие как трава, пустыня и снег. Нарисованные текстуры могут быть применены с разной прозрачностью, так, чтобы у вас получился плавный переход между травянистой местностью и песчаным пляжем, например.

Terrain песчаной дюны с песочной текстурой

Включение текстур

Кнопка с кистью на панели инструментов включает рисование текстур.

Изначально у terrain’а не будет текстур, назначенных для рисования. Если вы кликнете кнопку Edit Textures и из выпавшего меню выберите Add Texture, вы увидите окно, в котором вы можете указать текстуру и её свойства.

Depending on the material type you set in Terrain Settings, the color channels of the main texture map may have different uses. These are listed below in Terrain Texture Settings.

Click on Select to see your texture assets in a separate Select Texture window (not shown). Click on the texture you want and it displays in the Add Terrain Texture window. (See Add Terrain Texture window, before and after, in Fig 1 below.)

Fig 1: Click on Select in the Add Terrain Texture window and choose a texture asset from the Select Texture window (not shown) - it then displays, ready to add to the terrain

Нанесение текстур на ландшафт

Depending on the material type you set in Terrain Settings, the color channels of the main texture map may have different uses. The different Add Terrain Texture windows are listed here.

Standard [image above in Fig 1]: RGB channels are the albedo color of the terrain surface, while alpha channel controls the smoothness. There is also a ‘Metallic’ slider which controls the overall look of the surface.

Diffuse: RGB channels are the diffuse color. Alpha channel is not used.

Окно Add Texture

Specular: RGB channels are the diffuse color. Alpha channel is the gloss map.

Окно Add Texture

Custom: How the splat map is used depends on your custom shader, but usually you want the RGB channels to be the base color.

Окно Add Texture

Besides the main texture map, you can also specify a normal texture for all of the 3 built-in material types. The texture type of the normal texture used here must be ‘Normal Map’ (you can change the texture type of a texture asset in its import settings). Shader code that handles normal map will be turned on only when at least one normal texture is set for the terrain, so you don’t need to pay the performance cost of normal map if you don’t use them.

Свойство Size (прямо под селекторами текстур) позволяет вам установить ширину и высоту на которую будет растягиваться изображение по поверхности terrain’а. Свойство Offset определяет, как далеко от точки вращения terrain’а будет начинаться тайлинг; вы можете установить его в 0, чтобы начать тайлинг прямо от угла. После того как вы установили текстуру и нужные вам свойства, нажмите на кнопку Add, чтобы сделать текстуру доступной terrain’у.

To make changes to an added terrain texture, select its thumbnail, click the ‘Edit Textures’ button and select ‘Edit Texture…’ from the menu. Or, you can simply double click on its thumbnail. To remove a terrain texture, select its thumbnail, click the ‘Edit Textures’ button and select ‘Remove Texture’ from the menu.

Рисование текстурами

Первая текстура, которую вы добавите, будет использоваться в качестве “фона” для покрытия terrain’а. Однако, вы можете добавить сколько угодно текстур; последующие текстуры будут доступны для рисования с помощью привычных кистей. Под текстурами в инспекторе terrain’а вы увидите не только обычные опции Brush Size и Opacity, но и дополнительную опцию Target Strength. Она устанавливает максимальную степень непрозрачности, которую достигнет кисть, даже если повторно пройдётся по одной и той же точке. Это может быть полезно при добавлении едва заметных островков разнообразия цветов на одном типе terrain’а для разбавления монотонности большой, плоской области с такой же затайленой текстурой, повторяющейся снова и снова.

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

Текстуры на объекте Terrain рисуются во вкладке Paint Terrain, в котором надо выбрать режим Paint Texture.

Unity. Paint Texture

Затем надо нажать на кнопку Edit Terrain Layers… и в выпадающем списке выбрать Create Layer…, где можно выбрать материал (текстуру), которой можно рисовать по объекту Terrain.

Если материалов нет, их можно импортировать через Asset Store.

Unity. Terrain. Create Layer

Изменить размер текстуры можно через параметр Size.

Unity. Terrain. Tiling Settings. Size

В результате объект Terrain будет выглядеть примерно как на картинке ниже.

Unity. Terrain

Обновлено: 01 ноября 2020

  • Поверхность (Terrain)
  • Текстурирование Terrain

Как наложить текстуру на объект Terrain в Unity?

На процедурно-сгенерированную поверхность надо наложить текстуру, для начала — хотя бы одну. Однако в уроках по Юнити сплошь рассказывают про накладывание текстур в редакторе, в то время, как мне нужно программное наложение. Попытка сделать это через компонент Renderer

terrobj.AddComponent(); terrobj.GetComponent().material = material; 

выдаёт ошибку:

MissingComponentException: There is no ‘Renderer’ attached to the «Chunk» game object, but a script is trying to access it. You probably need to add a Renderer to the game object «Chunk». Or your script needs to check if the component is attached before using it. UnityEngine.Renderer.set_material (UnityEngine.Material value) (at :0) ChunkLoader.Start ()

хотя я, вроде как, явно добавил рендерер. Подскажите, пожалуйста, где ошибка, и правильно ли я вообще делаю?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *