суббота, 4 июля 2015 г.

Жара...

Вот только в отличии от Flogger-K, никаких систем охлаждения в моей халупе не предусмотрено. Я еще прокатился по жаре на моем корче, не оборудованном кондиционером, километров пятьдесят - душегубка, однако. Хотя, если вспомнить, как я на "жигуле" в менее жаркую погоду ездил, то еще ничего. Перегрелся малость. К чему это я?, а вспомнил - при такой температуре и сколько-нибудь длительном мыслительном процессе мозги перегреваются и срабатывает защита, в виде лени. Посему охлаждаюсь пивом, у которого есть еще один приятный в моем случае побочный эффект - креатив прёт как на дрожжах. Конечно, я не рискую лезть с серьезными переделками в свои проекты, поелику точный расчет зависимости необходимого количества потребленного пива в отношении температуры окружающего воздуха не поддается формализации, в силу неизвестности скорости протекания метаболических процессов... что-то меня понесло, перепил. ))) В общем склепал пример, полезный при создании файтингов. Камера следит за двумя персами, и приближается/удаляется, что бы они влезли в экран.  Позже выложу в свои примеры. А пока вот:

camTo2pers.blend.7z (~61 kB)

P.S. Добавил.

P.P.S. Весь код после 50 строки можно заменить на
camera.applyMovement([0.0, 0.0, pers1scrX * -2 +0.2], True)


пятница, 3 июля 2015 г.

Сообразил, как сделать более плавный ландшафт.

   Пикассо конечно, однако пока это лучший вариант, в отличии от текущего. И с высотой блока не придется мучатся брать среднюю высоту, да и все. Хотя с переделкой спешить пока не буду, вдруг еще чего в голову придет... Ниже картинка, для пояснения:



четверг, 2 июля 2015 г.

Отвлекся.

Пришло в голову проверить простейший алгоритм обхода препятствий. Сделал. Результат - как сказал Винни-Пух Пятачку: "Не то что бы совсем не попал..." Иной раз удивительным образом обходит все препятствия, прямо гордость берет, а иной раз упрется как баран в новые ворота.  Но похоже на движения юнитов в DuneII, аж ностальгия пробивает, кто играл, тот поймет. Коротенькое видео:




вторник, 30 июня 2015 г.

Опять переписал генератор регионов.

   Уже наверное, пора ярлык вводить - "переписал генератор регионов". Однако, буду еще переписывать, похоже, есть такое ощущение... Еще добавил для регионов генерацию словаря связанных регионов, со списком индексов общих блоков для каждого. Оно будет надо сильно впоследствии, для вывода юнита в соседний регион.
  Так и не сообразил, как указать высоту блока, тем более, что блок может иметь сразу несколько высот. Типа "b,c,b,a" - весь диапазон высот присутствует. Это для "а,а,а,а" или "с,с,с,с" - никаких проблем.  Надо думать...
Ниже код, хотя без кода классов, оно малопонятно. Длиннота:

пятница, 26 июня 2015 г.

Немного переписал генератор регионов.

А то совсем странно выглядело. Сейчас оно сделано так:

def genRegions(self):
        tempRegionList = []
        for currentBrick in self.brickList:
            if currentBrick.regions == []:
                relList = []
                tempList = list(currentBrick.relatedList)
                for i in tempList:
                    brick = self.brickList[i]
                    #print(brick.h - currentBrick.h)
                    if (brick.regions != [] or 
                    brick.h - currentBrick.h > self.maxH or 
                    self.getDistTo2(currentBrick.position, brick.position) > self.regionDist):
                        brick.regions.append(currentBrick.index)
                        relList.append(brick.index)
                    else:
                        brick.regions.append(currentBrick.index)
                        relList.append(brick.index)
                        #print(brick.relatedList)
                        for appB in brick.relatedList:
                            if appB not in tempList:
                                tempList.append(appB)
                            
                        
                #print(currentBrick.index, relList)
                newRegion = landRegion.landRegion(currentBrick.index, relList)
                tempRegionList.append(newRegion)
                        
        print(tempRegionList)                 
        return 0

Еще надо дописать определение соседних регионов и списка общих точек. И как сделать определение высоты точки, вот в чем вопрос, ведь один блок ландшафта может содержать в себе все уровни высоты...

воскресенье, 7 июня 2015 г.

Начал набрасывать генератор регионов.

   Зато пока сообразил, как сделать, чуть мозг не поломал, но вроде сдвинулось с мертвой точки, тьфу-тьфу-тьфу... Здорово помог MyPaint - редактор графический. Рисовал вручную точки, соединял их линиями, пытался прикинуть, как оно должно работать. Немножко отвлекся, нарисовал картинку, смотрите ниже. Код пока еще страшный, состоит только из генератора списка блоков. Наверное вынесу его в отдельную функцию - пригодится для расчета полей зрения и вообще... Сам класс региона я написал аж в двух вариантах, и оба пойдут в утиль. Еще надо написать определение связанных регионов. Код ниже:


среда, 27 мая 2015 г.

Набросал парсер

Сие поделие создает файл в текущей директории и пишет в него данные блоков ландшафта в текстовом виде. Оно относится к классу ландшафта, поэтому нет проблем со сбором информации. Текст:

def parser(self, filename):
        f = open(sys.path[0] + '/' + filename, 'w')
        # просматриваем все блоки ландшафта
        for brick in self.brickList:
            # создаем строку - список связанных блоков
            relL = '|'
            # проходим список связанных блоков
            for rel in brick.relatedList:
                # добавляем в строку индекс связанного блока
                relL = relL + str(rel) + '|'
            # собираем данные в кучу, для записи
            line = (str(brick.index) + '-' + str(brick.position[0]) + '|' +
            str(brick.position[1]) + '|' + str(brick.position[2]) + '-' +
            brick.nameMesh + '-' + relL + '-\n')
            # записываем
            f.write(line)
        f.close()

Кусочек результата:

0-0.0|0.0|0.0-a,a,a,a-|1|16|17|-
1-2.0|0.0|0.0-a,a,a,a-|0|2|17|16|18|-
2-4.0|0.0|0.0-a,a,a,a-|1|3|18|17|19|-
3-6.0|0.0|0.0-a,a,a,a-|2|4|19|18|20|-
4-8.0|0.0|0.0-a,a,a,a-|3|5|20|19|21|-
5-10.0|0.0|0.0-a,a,a,a-|4|6|21|20|22|-
6-12.0|0.0|0.0-a,a,a,a-|5|7|22|21|23|-
7-14.0|0.0|0.0-a,a,a,a-|6|8|23|22|24|-
8-16.0|0.0|0.0-a,a,a,a-|7|9|24|23|25|-
9-18.0|0.0|0.0-a,a,a,a-|8|10|25|24|26|-