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

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

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






    А получается вот что. Меш для "вершинного" ландшафта всё время находится в поле зрения камеры, целиком и полностью, никуда не "уползая", изменяются только Z  - координаты вершин, в зависимости от положения камеры относительно глобальной системы координат. Точнее конечно, положения ландшафта, но это не особо важные детали. Благодаря этому, можно а) смещать изображение текстурной маски с помощью скрипта UV-скроллинга или б) можно генерировать изображение текстурной маски исходя из, например, данных о высоте вершины, или прямо читая данные цвета из словаря.

Текст скрипта:

import bge
import random as r


cont = bge.logic.getCurrentController()
own = cont.owner
sens = cont.sensors['Always']
sensKey = cont.sensors['keySpace']
imageSize = 32

if sens.positive and 'text' not in own:
    own['text'] = bge.texture.Texture(own, 0, 1)
    own['text'].source = bge.texture.ImageBuff()
    own['text'].source.load(bytearray((int(r.random() * 255), int(r.random() * 255), int(r.random() * 255))) * (imageSize * imageSize), imageSize, imageSize)
    own['text'].refresh(False)
 

 
if sensKey.positive:
    own['text'].source = bge.texture.ImageBuff()
    tempBrush = []
    for x in range(0, imageSize * imageSize):
        R = int(r.random() * 255)
        tempBrush.append(R)
        tempBrush.append(R)
        tempBrush.append(R)      
    b = bytearray((tempBrush))  
    own['text'].source.load(b, imageSize, imageSize)
    own['text'].refresh(False)

Комментариев нет:

Отправить комментарий