Показаны сообщения с ярлыком редактор ландшафта. Показать все сообщения
Показаны сообщения с ярлыком редактор ландшафта. Показать все сообщения

суббота, 30 июля 2016 г.

Проверил одну мысль...

    В связи с сильными дождями появилась свободная минутка и я решил проверить одну мысль: что если генерировать Stencil - маску "на лету"? Таки получилось. Что это дает?


суббота, 9 июля 2016 г.

Вершины в словаре.

    Время доступа по ключу к записанному в словаре значению величина постоянная и не зависит от размера словаря. Казалось бы, что сразу не сообразить, закидывать в словарь всякое разное? А вот поди же... Сообразил, что если вершины меша записать в словарь, то для изменения каких-то характеристик конкретной вершины не надо перебирать их всех циклом, а просто вызвать по ключу.
   Ключи в словарях это нечто невероятно удобное. Достаточно сказать, что они могут быть разных типов. Как вам понравится идея использования в качестве ключа например числа типа float? Или экземпляр собственноручно написанного класса? А ведь можно. Потому что всё есть объект.
    Вот, сообразив всё вышеописанное, соорудил даже не пример, нет, это скорее альфа - прототип ландшафта, в котором рельеф задается изменением z-координаты вершин меша. Оно еще весьма корявое, но если кому интересно:

SculptLand.blend.7z (108 kB)

воскресенье, 10 апреля 2016 г.

Хорошо, когда некогда возиться...

   По причине недостатка времени пришлось залезть в модуль bpy для ускорения работы - ну вот не могу я три десятка блоков клонировать три раза, каждый раз смещая и поворачивая клон на 90 градусов, да еще применяя поворот. А надо ведь еще переименовать каждый блок, чтобы имя объекта совпадало с именем меша, да еще добавить каждому блоку игровое проперти с определенным значением - ручками будет нудно и долго. Проперти надо добавлять, потому что у меня редактор должен использовать bge, а проперти будет служить указанием типа, для сборки в список имен блоков одного типа. Я еще не решил как оно лучше будет сделать. И наверное, надо выстроить блоки в линию.
    Запишу, читателям может пригодится, мне как страховка от склероза.

*****
Клонировать и покрутить:

import bpy
# получаем выделенный объект
object = bpy.context.object
# дублируем
bpy.ops.object.duplicate()
# поскольку после дублирования выделенным становится клон, то переполучаем
# выделенный объект.
object = bpy.context.object
# двигаем, тут понятно и так
object.location[1] = object.location[1] - 4.0
# вращаем, угол задается в радианах
bpy.ops.transform.rotate(value = 1.5708, axis = (0.0, 0.0, 1.0))
# применяем вращение
bpy.ops.object.transform_apply(rotation = True)

*****
Создать новое проперти и изменить его значение:

import bpy
# получаем выделенный объект
object = bpy.context.object
# создаем новое проперти типа STRING
bpy.ops.object.game_property_new(type = 'STRING', name = 'TYPE')
# получаем к новому проперти доступ по имени и изменяем значение
object.game.properties.get('TYPE').value = 'bla-bla'

*****
Переименовать объект и меш:

import bpy
# получаем выделенный объект
object = bpy.context.object
# Переименовываем сам объект блока
object.name = 'NEW_NAME'
# Переименовываем меш блока
object.data.name = 'NEW_NAME'



среда, 2 марта 2016 г.

Блоки.

Наклепал еще блоков.
Сделал все текстуры формата dds.
Наложил большую текстуру маски, правда еще толком не настроил.


понедельник, 29 февраля 2016 г.

Сделал десяток блоков.

    Нужно еще:
1) Настроить нормально материалы, добавить большую черно-белую маску, что бы не так заметна была плитка текстур.
2) Переделать текстуры на размер кратным 2. У меня их там всего пяток, так что недолго.
3) Переименовать блоки и как объекты, и как меши.
5) Сделать еще кучу блоков поворота и блоки плавного спуска. Дофига еще.
6) Создать таблицу высот для каждого блока.

Пока выглядит так:



четверг, 25 февраля 2016 г.

Создание блока.


Опишу, как я создаю блок. Мало ли, вдруг прогрессирующий склероз совсем заест. Или вдруг кто совет полезный даст.


воскресенье, 21 февраля 2016 г.

Медленно.

    Скачал и поставил плагин к GIMP'у, экспортирующий изображение в формате .dds. Ну как скачал/поставил - в Центре приложений ввел в поисковую строку "dds", оно и вылезло, осталось только кнопку "Установить" нажать, да подтвердить паролем. Линукс развращает... Немного потестировал, но что-то особой разницы в производительности для BGE я не заметил. Надо еще поэкспериментировать.
    Возвращаясь к блочному ландшафту, не прошло и недели, как я немного переделал высокополигональный меш, запек с него новую карту нормалей и запек AO. Швов не видать, правда когда буду делать меши других типов, придется слегка помучатся. Ну да когда это будет ))). Надо бы еще разобраться с бликами - очень уж сильно бликует, словно маслом намазано.
Ниже результат в виде картинок:


четверг, 18 февраля 2016 г.

Хорошая мысля всегда приходит опосля.

    Внезапно сообразил как сделать более-менее вменяемую развертку для блока. Ниже картинки с перерисованной текстурой. Карта нормалей запекалась с корявого блока, я его не менял.


среда, 17 февраля 2016 г.

Война с разверткой окончилась ничем.

   Для начала конечно надо написать, почему я её затеял - всё дело в том, что текстуры не желали накладываться так, что бы между соседними блоками ландшафта не было швов.  Ниже на второй картинке заметно влияние карты нормалей, запеченной с криво сделанного высокополигонального меша. А тут еще и просто текстуры криво склеиваются - даже разница в яркости имеется. Вот и затеял я сделать развертку такую, чтобы текстуры на неё накладывались ровно-ровно, да вот только для такого типа геометрии блока это мне непосильно.Для предыдущих блоков еще куда не шло или для ровной стеночки без проблем, а тут ширина отвесной стенки получается в два раза больше ширины нижней или верхней поверхности. Собственно оно и видно. В общем мучал я развертку, резал её по всякому, а вот сейчас вдруг вспомнил, что в режиме Texture Paint можно включить симметрию и просто намалевать как надо. Развертку теперь можно сделать как удобно и не париться. Есть только одно замечание для Texture Paint - размер текстуры, используемой в качестве кисти, все же должен быть сообразен с размером модели.

Модели в этот раз не будет, геометрия не изменилась. Ниже картинки, что я сделал по-быстрому:


пятница, 12 февраля 2016 г.

Потихоньку вожусь с геометрией блоков ландшафта.

    Всё никак не выберу подходящую форму. И карты нормалей использовать охота, и карты затенения и АО. Да еще хочется, что бы текстуры накладывались без "растяжек", поэтому надо еще вменяемую развертку сделать. Губа не дура, однако. Заодно решил попробовать blend4Web в качестве вьювера для моделек. Вот ссылка, аж 2,2 МБ:

TEST_SLOPE.html

Кому неохота грузить модельку, ниже пара скриншотов. Текстурку рисовал прямо по модели в режиме Texture Paint. Освещение - один Sun и пара Hemi. 226 полигонов.



воскресенье, 24 января 2016 г.

С плавностью движения по карте высот разобрался.

    На видео результата можно полюбоваться:


Есть небольшие косяки, типа ошибки из-за выхода за пределы карты высот, но в целом я доволен.

moveHiMap.blend.7z (~150 kB)

Управление: WSAD - движение, 7,3,1, - выбор вида камеры. Но надо подождать пару минут, пока карта высот построится. Стартовая сцена так и называется - "start".

Опишу, как оно работает ниже.


вторник, 19 января 2016 г.

Подергунчик.

   Почти доделал движение по карте высот. Пока что юнит сильно дергается, потому что карта высот имеет между ячейками шаг в один метр. Это не по плавному ландшафту скользить... Надо как-то делать переходы по-плавнее. Есть еще косяк с "зарыванием" танчика в землю, на видео видно. Это уже недостаток выбранного мной подхода, как исправить пока не знаю.






понедельник, 18 января 2016 г.

Пожалуй успех.

   Как и собирался, собрал из векторов матрицу ориентации и присобачил к "юниту", что бы посмотреть, как оно будет вести себя. "Юнит" в кавычках, потому что настоящий юнит находится за пределами видимости камеры, а желтая болванка сложной формы это объект, отвечающий за отображение. "Юнит" ведет себя нормально, учитывая, что "опорные точки" находятся довольно далеко за пределами его корпуса. Если что - опорные точки находятся на углах белого прямоугольника. Там еще и направления осей ориентации отображаются соответствующим цветом, только их корпус "юнита" закрывает. Болванка имеет физический тип No Collision. Сделал ландшафт более плавным, для красоты. Придется, по видимому делать карту высот помельче.



   Что еще надо сделать: во-первых, определять координаты пустышек и всех опорных точек через вектора направления, а то у меня все координаты задаются ручками в скрипте, во-вторых, надо сделать "покататься" по более крупному ландшафту в произвольном направлении, просто для удовольствия, и поэтому, в-третьих,  надо вменяемое управление камерой.

суббота, 16 января 2016 г.

Пробую сделать движение по рельефу.

    Собственно видно пока что заготовку расчета огибания местности для двух осей. Высоты беру из  пустышек с сенсором Рэй, по идее нужно из карты высот выковыривать, да мне лень, какая собственно для черновика разница откуда брать данные? Потом конечно надо будет сделать. Собственно идея в том, чтобы строить на рассчитанных данных матрицу ориентации для юнита, причем без всякой физики. Естественно, что считаться это должно только когда юнит находится в поле зрения камеры. Не факт, правда, что получится сделать вменяемый расчет направления оси Z.  Посмотрим.






среда, 13 января 2016 г.

Повторение пройденного.

    Снова взялся делать ресурсы для блочного ландшафта - решил сделать разделение материалов с помощью текстурной маски. Все предыдущие файлы мягко говоря, для этой задачи не подходили - не хотелось возиться с разверткой. На сей раз саму геометрию сделал прямо-таки подозрительно быстро, тем более что сообразил, что для наложения материала не нужно делать "всякой твари по паре", достаточно собрать по одному блоку, а потом просто скопировать и покрутить их сколько надо и как надо. Ниже артинка с единым мешем-заготовкой. Его еще надо резать, размножать получившиеся блоки и переименовывать. Может еще надо будет переделать геометрию. 

вторник, 20 октября 2015 г.

Удалось сделать новый материал. "Кубизм" вылез в новом месте.

   Как обычно, ноды. Единственная неприятность - используется Vertex Color, для разделения материалов с одной высотой, а это означает, что если сетка не слишком частая, то вылезет "кубизм", а если почаще ставить, то возрастет нагрузка на движок. Может всё сделать в стиле пиксель-арт? )))
    Теперь еще надо разобраться до конца со спайсом, он ведь должен добавляться и исчезать и применить материал на блоках ландшафта.

    Ниже картинки, материал и результат:


понедельник, 12 октября 2015 г.

Геометрия капут. Вроде )))

    Вожусь потихоньку с материалами. Теперь на блоках аж три нодовых материала, один с разделением по высоте трех материалов, второй - двух, а еще один два материала смешивает по высоте и еще один всовывает в пятно от Vertex Color. Киш-миш и люля-кебаб. Ниже картинки:

суббота, 3 октября 2015 г.

Геометрия наносит ответный удар.

    Внезапно выяснил, что сделал перепад высот между уровнями a и d слишком большим, даже пологий спуск получается порядка пятидесяти градусов, что несколько занадто. Пришлось делать максимальную высоту в полтора метра вместо трех. Как результат - все предыдущие блоки отправились в пустыню в утиль. Начал делать всё снова, а раз уж пошла такая пьянка, несколько изменил геометрию, используя как образец для подражания вид кочки горы из сеговской Dune II:
 
    Однако без косяков не обошлось, плавные спуски надо переделывать, наверное уже в пятый или шестой раз. Геометрия, блин. Зато насобачился клепать их быстро, если бы еще без ошибок... Параллельно поправил материалы, сделал более жесткую границу между материалами, убрал реакцию на освещение, слегка выкрутив параметр Emit, убрал перебамп путем полного отключения и сделал размытие текстурной маске. Результат ниже: