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

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

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


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

moveHiMap.blend.7z (~150 kB)

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

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


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

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

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






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

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

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



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

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

Побочный продукт.

   В процессе подготовки алгоритма движения по ландшафту с помощью карты высот создал небольшой пример во-первых, определения векторов направления координатных осей объекта, обзовем его опорным, а во-вторых, пересчета координат другого объекта (цели) из локальной системы координат опорного объекта в мировые. Пару раз перечитал предыдущее предложение, вроде сам понял, что написал ))).  Качайте, если интересно. Управление - стрелочки. Размер небольшой.
rotAxis.blend.7z
    Мне такая штука нужна для определения координат опорных, в прямом смысле этого слова точек. С помощью этих координат я буду выковыривать значения высоты из карты высот, а по значениям высоты буду строить матрицу ориентации для юнита, если сумею, конечно. По идее я как раз должен был сейчас делать алгоритм построения матрицы и проверять, корёжит ли юнит при движении по холмистой местности и не погружает ли он свои "колеса" слишком глубоко. А вот отвлёкся. И с картой высот и блочным ландшафтом тоже интересная вещь получается - в процессе "прикидок" выбирал размер блока как компромисс, что бы и блок был не слишком мелким, и расстояние между высотами не слишком большим, поскольку полагал, что блоки возьмут на себя функцию карты высот. А теперь получается, что карта будет отдельно от блоков. И можно опять (!) переделывать блочный ландшафт под удобный размер. Всегда советовал для начала выбирать удобный формат данных, а потом уже реализовывать, а сам получается своим советам не последовал.

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

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

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






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

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

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

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

Получение списка файлов в папке с помощью os.listdir()

Внезапно обнаружил, что не написал про такую удобную функцию питона. А ведь собирался! Склероз проклятый...

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import os

def main():
    # получаем список имен всех файлов в папке, где лежит наш скрипт, если хотите другой           # путь, то его нужно указывать вместо точки в кавычках в аргументе функции listdir.
    L = os.listdir('.')
    # "фильтруем", любуемся в консоли на список бленд-файлов в текущей паке.
    for obj in L:
        if '.blend' in obj:
            print(obj)
    return 0

if __name__ == '__main__':
    main()