论坛

由用户创建的信息 Evgeny Rodygin
10 June 2015 10:49
Это здорово Думая о будущей организации сетевого протокола для мультиплеерной игры, понадобиться программировать сетевое сглаживание (что бы объекты двигались плавно). Наблюдая как работает физика в отдельном потоке, рискну предположить, что при рендеринге симуляции физики работает тот самый алгоритм, который пригодится для сглаживания перемещений.
Да, у нас действительно есть интерполяция полученных с физического потока значений. Интерполируем не всё, но почти всё.
Вопрос: верны ли мои предположения и возможно ли сделать api для задания анимированных перемещений без физического движка?
Что имеется в виду под анимированными перемещениями? Построение какой-то траектории на основе приходящих извне (в нашем случае - из физики) значений? Если так, то это несложно делать с помощью модуля transform. Но вообще, в мультиплеерных играх обычно симуляция крутится и на клиенте и на сервере, и вычисления просто сравниваются, если требуется отлавливать читеров.
10 June 2015 10:33
Неплохо бы увидеть код приложения. Я предполагаю, вы подгружаете сцены динамически в уже существующую базовую сцену, а динамическая подгрузка никак не переопределяет настройки мира, в котором у вас задан Environment Lighting. Плюс, характерный блик указывает на то, что в сцене действует Point Light, которого точно нет в прикрепленном файле.

Вероятнее всего, вам нужно просто перед загрузкой дописать m_data.unload();, чтобы выгрузить основную сцену с её настройками освещения.
08 June 2015 19:38
Ответ на сообщение пользователя Кирилл
Я использую для захвата управления камерой метод m_mouse.request_pointerlock(), из за чего мне пришлось менять константы в mouse.js.
Как я понял, если этот модуль не использовать, то меняются константы в app.js
Да. mouse.request_pointerlock() используется для управления с видом от первого лица, а в app.js описано поведение всех стандартных типов камер.
Как я ответил в другой теме - вынесем эти параметры в API, посколько, как видим, есть необходимость их менять.
08 June 2015 19:33
Именно так… Хотя, я бы не отказался от возможности менять эти значения через api или в интерфейсе блендера
P.S. в своём проекте уже убрал плавность
Да. Согласен с вами. Через API, конечно, удобнее. Внесли в TODO список.
08 June 2015 19:23
Да, декали - это общеупотребляемый термин. Насчет рейкастинга - в 15.06 мы как раз добавили функцию, позволяющую "стрелять" лучом только один раз и получать позицию соударения. Так что с этой частью проблем не будет. А вот каким образом автор сделал огибание декалью геометрии объекта - это уже интересный вопрос. Полагаю, была использована карта глубины, а может быть и анализируется геометрия.
Вообще, при желании такое можно сделать и с нашим текущим API, используя функцию extract_vertex_array. Но это не самый простой путь с математической точки зрения.
Так что, возможно, зашьем такой функционал внутрь движка.
08 June 2015 11:37
Ответ на сообщение пользователя Кирилл
Извиняюсь за долгий ответ. Программировать есть время только на выходных…

Спасибо, у меня заработало. Единственно почему то вообще пропали события столкновения персонажа со скопированными элементами. Но скопированные элементы соударяются с персонажем.
Либо может я чего напутал. (по факту это не проверял, просто подозрение)
Странное поведение. Так или иначе, физика уже довольно значительно дописана, и в 15.06 включены стабильные изменения в отношении ID. Если у вас будет возможность, было бы замечательно, если бы вы попробовали погонять ваш функционал на Developers preview. Ориентировочно - 22-24 июня.
04 June 2015 16:42
Ответ на сообщение пользователя Akira_san
Sounds great. One more question, is there a limit when it comes to number of polygons on screen?
Polygons count is not the main limiting factor nowadays. What really matters is the number of draw calls which is defined by how many dynamic objects are present on the scene or how many different materials are used. You can check this info by opening your scene in the debugging Viewer Application. Just start the development server, export your scene to some place inside SDK and turn on Run in Viewer flag.
04 June 2015 10:36
Ответ на сообщение пользователя kykyst
День добрый. У меня возникли трудности со сменой уровней с помощью load и unload методов. На уровнях многие объекты (стены, пол…) имеют в материалах свойство special: collision, чтобы игрок сталкивался с ними и не мог пройти насквозь. Когда я меняю уровень с помощью unload и load как описано в примере, загружается новый уровень, в нем так же есть объекты через которые нельзя пройти, а объекты с прошлого уровня как будто стали невидимыми. То есть, там где была стена на первом уровне игрок не может пройти, хотя стены больше нет.

Если вызвать m_scenes.get_all_objects(), то объектов с прошлого уровня не будет, они удалены.
Здравствуйте и добро пожаловать на форум!
В Blend4Web действительно сейчас не до конца реализована выгрузка статической физики на сценах загруженных после первой сцены, то есть на тех, у которых метод load() вернул ненулевое значение. Если вы хотите полностью выгрузить физику, то следует вызывать выгрузку нулевой сцены:
m_data.unload(0);

03 June 2015 18:44
Ответ на сообщение пользователя Akira_san
The idea is to use a real-time render, etc to use the tech from the game engines in order to save the render times. The WebGL, blend4web have got quite a lot of nice and cool features, that if used together can make a nice machinima.
I see. Actually, this is a pretty nice idea. We'll think if it is possible to implement such functionality in Blend4Web natively.
By the way, our artists are already using something that you have described in tutorials. For example, the first image in this article was created in similar manner. They use NLA or simple animation to bring some life to the scene and then run some screen-recorder to transform it all to GIF-animation.
03 June 2015 17:32
Слоты не получается запустить путем нажатия на HTML элемент, потому пробую программно. ВОт для этих целей СЛОТЫ удалить?
Конечно, лучше бы разобраться, почему не получается запустить анимацию через NLA-скрипт. Возможно, нашли бы какой-то баг.
Если делаете всё программно, то лучше отключить слоты.