Вопросы по созданию игр.

Board index Геймдев в Blender Игровой движок Blender

Description: Все вопросы и обсуждения, касающиеся BGE
Moderators: exooman, denis8424

  • 0

Post #1by exooman » 25.01.2014, 14:45

В этой теме помогаем друг-другу разбираться в игростроении на движке BGE.
Внимание, прежде чем задать вопрос, просмотрите темы:
Blender Game Engine FAQ
Blender Game Engine примеры
Полезные ресурсы по BGE


Пожалуйста, выкладывайте бленд-файлы, изображения и другие ресурсы на сторонних хостингах. Приветствуется упаковывание файлов в архив, желательно в формате .7z. По возможности старайтесь использовать изображения формата .jpeg.
exooman
Posts: 1932



Post #21by denis8424 » 12.02.2014, 13:22

В бге нет, в самом блендере можно, хотя и не в одну строчку.
P.S. хотя наверное в бге можно тоже, через библиотеку bgl, но это сложно будет, одной строчкой не обойдешся.
denis8424
Avatar
Posts: 724

Post #22by exooman » 20.02.2014, 15:00

чего-то не пойму ЧЯДНТ? нужно заставить "прокручиваться" текстуру, пишу

Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    vert  = mesh.getVertex( 0, 0)
    if own['gears'] == 1:
        vert.UV[1] += 0.1

В итоге ноль реакции. Ошибок в консоли нет.
exooman
Posts: 1932


  • 1

Post #23by denis8424 » 21.02.2014, 10:43

exooman, во - первых, что тебя в стандартном скрипте из примеров не устроило?
Во-вторых, почему -то нельзя менять UV координаты напрямую, нужна промежуточная переменная.
В-третьих, ты получаешь UV-координату только одной точки меша, а если хочешь прокручивать текстуру, то надо менять UV-координаты всех вершин.
Spoiler
Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    vert  = mesh.getVertex( 0, 0)
    if own['gears'] == 1:
        UV = vert.UV
        UV[1] += 0.1
        vert.setUV(UV)
Твой код, вроде то, что ты хотел.
Code: Select all
from bge import logic
def wer(cont):
    own = cont.owner
    mesh = own.meshes[0]
    array = mesh.getVertexArrayLength(0)
    if own['gears'] == 1:
        for i in range(0, array):
            vert  = mesh.getVertex(0, i)
            uv = vert.UV
            uv[1] = uv[1] + 0.01
            vert.setUV(uv)
Код из примера. Наверно то, что тебе нужно.
denis8424
Avatar
Posts: 724

Post #24by exooman » 21.02.2014, 12:36

Хм, что-то все равно не так. Взял дефолтную сцену, включил GLSL, создал материал и текстуру кубу. Примотал к модулю пульсирующий сенсор Always - все работает. Делаю тоже самое в проекте - не пашет. Текстура только немного дергается при запуске и все. Как-то уже попадалась мне такая проблема, но она еще интереснее была - при виде из камеры все работало, а в остальных случаях - нет.
exooman
Posts: 1932


Post #25by maleficmax » 21.02.2014, 12:44

exooman, я в БГЕ ноль, но иногда в блене бывают глюки, от которых спастись можно спасает только тотальный аппенд в новую сцену. И всё вдруг начинает правильно работать. Или наоборот можно из работающей в неработающую попробовать. Если для БГЕ это глупость, прошу простить)
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
фашист і бандерівець
Avatar
Location: Україна, Кременчук
Posts: 4376


Post #26by exooman » 21.02.2014, 13:49

maleficmax, по своему опыту знаю, что просто где-то что-то не нажато или наоборот - нажато, но не то что нужно. Хотя, блендер и вправду любитель покапризничать в ответственный момент
exooman
Posts: 1932


Post #27by denis8424 » 21.02.2014, 13:58

exooman, Что тут скажешь? Фиг его знает. Попробуй вывести принтами значения UV, посмотри изменения данных.
denis8424
Avatar
Posts: 724

Post #28by exooman » 21.02.2014, 14:19

Попробуй вывести принтами значения UV, посмотри изменения данных.

У UV вектор меняется, но почему-то это не влияет на само отображение текстуры.

З.Ы. на скрине прибавляется единица, но я разные значения пробовал, включая дефолтное 0.1


Spoiler
Image

хм. Чего то оно как-то странно добавляется(значение +0.4)

Spoiler
Image
exooman
Posts: 1932


Post #29by denis8424 » 21.02.2014, 14:43

Действительно странно. Такое ощущение, что координаты развертки не меняются. Попробуй вместо этого скрипта использовать скрипт из примера. Тоже с принтами, если будет тоже самое, значит проблема не в скрипте.
denis8424
Avatar
Posts: 724

Post #30by vknw123 » 21.02.2014, 14:54

А кто расскажет как применять лоды?
http://wiki.blender.org/index.php/User:Kupoman/Level_Of_Detail
Last edited by vknw123 on 21.02.2014, 15:14, edited 1 time in total.
vknw123
Avatar
Posts: 1336

Post #31by exooman » 21.02.2014, 15:03

прикрутил скрипт из старого примера. Все так же - в дефолтном файле пашет, в проекте - нет

Spoiler
Code: Select all
from bge import logic
def wer(cont):

    own = cont.owner
    mesh = own.meshes[0]
    array = mesh.getVertexArrayLength(0)

   
    speed = own['speed']
    axis = own['axis']

   
    if axis == "x":
       axis = 0
    if axis == "y":
       axis = 1
      
       
 
    for v in range(0,array):
       vertex = mesh.getVertex(0,v)
       UV = vertex.getUV()
       UV[axis] = UV[axis]+speed
       vertex.setUV(UV)
    print(UV)

В консоле все вроде норм.

Spoiler
Image
exooman
Posts: 1932


Post #32by denis8424 » 21.02.2014, 15:17

vknw123, А где его взять?
exooman, Черт его знает, может сама развертка?
denis8424
Avatar
Posts: 724

Post #33by exooman » 21.02.2014, 15:29

может сама развертка?

уже перепробовал разные виды разверток, настроек текстуры - тщетно. Думаю тут есть какая-то взаимосвязь с багом, когда не желал запекаться амбиент. В качестве ошибки указывалось отсутствие изображения, хотя оно присутствовало. Такая же беспричинная мутатень.


Вынос мозга, вообщем - всё заработало в версии 2.65а. В 2.66, 2.67 и 2.68 НЕРАБОТАЕТ ;-(

В блендер-плеере то же самое - только в 2.65а работает.
exooman
Posts: 1932


Post #34by denis8424 » 21.02.2014, 15:47

А моделька откуда?
Может обратной совместимости нет?
denis8424
Avatar
Posts: 724

Post #35by exooman » 21.02.2014, 15:55

А моделька откуда?

Да вот же только создал куб.
Материал и текстура тоже только что были созданы. Сам проект в 2.69-й версии начат.
exooman
Posts: 1932


Post #36by vknw123 » 21.02.2014, 16:01

denis8424, кого взять? вроде как пишут появились в 2.7 лоды в игре. или нет? я просто ещё не смотрел,
сижу изучаю новое меню.
vknw123
Avatar
Posts: 1336

  • 2

Post #37by exooman » 21.02.2014, 21:52

вроде как пишут появились в 2.7 лоды в игре.

таки да, товарищи! Потестил я эти лоды и остался доволен. Теперь, во вкладке объекта можно задать меши для его трансформации на определенном расстоянии. Я сделал сферу и две вариации лодов к ней. Затем продублировал всё это дело - вот сколько таких сфер у меня потянул комп(4-х ядерник q9550 + GTX 560ti).


Spoiler
Image

Лагов при подгрузке лодов нету вообще.
Учитывая, что количество объектов чрезмерно высокое(в игре графику лучше блоками делать), то результат довольно не плохой. Уже можно состряпать шутерок типа CoD4, с псевдо-открытыми локациями.
exooman
Posts: 1932


  • 1

Post #38by vknw123 » 21.02.2014, 22:05

А вот как интересно делать лоды врагов с костной анимацией, кости одни и теже у них анимация, меш прикреплён у него анимация прописана.... короче надо наверно пробовать.
vknw123
Avatar
Posts: 1336

Post #39by andreymal » 21.02.2014, 22:11

Если верить скриншоту, у этих лодов есть страшный косяк: они не зависят ни от разрешения экрана, ни от фокусного расстояния камеры. Будешь в игре через снайперскую винтовку целиться — а тебе вместо человека куб покажут.
Читая эту подпись, вы впустую потратили 5 секунд своей жизни.
andreymal M
Avatar
Posts: 1195

Post #40by exooman » 21.02.2014, 22:40

Если верить скриншоту, у этих лодов есть страшный косяк: они не зависят ни от разрешения экрана, ни от фокусного расстояния камеры. Будешь в игре через снайперскую винтовку целиться — а тебе вместо человека куб покажут.

да, есть такой косяк. Но травку мутить уже можно.
Spoiler
Image

Image


к тому же, думаю в API добавят дополнительные функции по манипуляциям лодов. К примеру, можно сделать так, что при виде из прицела у нужных объектов расстояние замены мешей будет увеличиваться. Нам ли о костылях беспокоится? :)

Added after 8 minutes 56 seconds:
А вот как интересно делать лоды врагов с костной анимацией, кости одни и теже у них анимация, меш прикреплён у него анимация прописана.... короче надо наверно пробовать.

Попробовал - нужно припэрентить меш-дублер к арматуре и задать весы. Затем меш можно "отпэрентить" и убрать на другой слой - лод уже будет работать с данной арматурой.
exooman
Posts: 1932


PreviousNext

Return to Игровой движок Blender

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest