Вопрос - ответ

10 марта 2016 11:07
Прочтите внимательно документацию в соответствующем разделе на эту тему.
Прочитал. Все так и сделал. Отражения не видно. Файл приложил выше.
Но в целом понимаю, что все равно надо уходить в текстурирование и различные карты, нормалей, спекуляров… А тени, отражения и т.п. выключать.
Рендер в самом блендере итак небыстро рисует, а если еще через яваскрипт гнать, в реалтайме, в динамике физически малореально, похоже. В общем пока нет четкого понимания необходимого минимума для получения на выходе быстрой графики. Пока даже просто скорость отклика на мышь не могу получить приемлемую.
10 марта 2016 11:47

Прочитал. Все так и сделал. Отражения не видно. Файл приложил выше.
Для того что бы отражение работало нужно использовать ноду Extended Material так как в простой ноде Material нету параметра отражения. Для объемных объектов лучше использовать тип отражения кубический (сферы, объекты вписывающиеся в куб и пр.), для плоских Plane. И лучше не использовать эффект френеля и подобыне эффекты основывающие своё вычисление на вьюспейсе и нормалях объекта, при отражении они будут себя неадекватно вести. Вообще стоит немного планомерней подходить к эффектам типа отражение/кубамапа и маткап или френель, так как по сути кубамапа, отраение и маткап это автозаменяемые эффекты, не стоит их миксовать на одном материале в одной сцене, лучше ограничится чем то одним или двумя максимум (кубамапа+маткап или отражение+ничего). Динамическое отражение лучше ни с чем не мешать.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
10 марта 2016 17:14
Спасибо, Михаил, немного прояснили, учту
10 марта 2016 17:26
Как использовать функции модулей vec3 движка и другие позаимствованные из gl-matrix2
Использую b4w.min.js
10 марта 2016 17:49

Как использовать функции модулей vec3 движка и другие позаимствованные из gl-matrix2
Использую b4w.min.js

Добрый день.
Для удобства использования gl-matrix2 разделена на модули. Пример:
"use strict";

b4w.register("my_application", function(exports, require) {
var m_vec3   = require("vec3");
var m_vec4   = require("vec4");
var m_quat   = require("quat");

var _vec3_tmp = new Float32Array(3);

function fun(vec) {
    m_vec3.copy(vec, _vec3_tmp);
}
....
12 марта 2016 15:01
Добрый день. По поводу медленного отклика по mousedown, возник вопрос.
Можно ли добавить лисенер на сам меш? (пока не получилось)
И если нет, но это реально, то планируется ли сделать это в дальнейшем? (ведь это было бы довольно мощной штукой по-моему, чтобы можно было вешать обработчики на сам меш при необходимости, т.е. нам бы не требовалось искать его на сцене с помощью API через сабрендер, лучи и т.д.).
12 марта 2016 17:04
>> Можно ли добавить лисенер на сам меш?

Насколько понимаю, то на уровне 'opengl/webgl' определения объекта идёт с помощью предварительного рендеренга в особом режиме. Если обработчик будет на меше, то для его обслуживания все равно будут задействованы существующие механизмы и скорости это не прибавит.

>> По поводу медленного отклика по mousedown, возник вопрос.
Можешь напомнить где лежат твои проблемные файлы или выложи их ещё раз, что-бы определить где действительно узкое место.

12 марта 2016 19:05
Можешь напомнить где лежат твои проблемные файлы или выложи их ещё раз, что-бы определить где действительно узкое место.
Оно похоже, где-то внутри.
Т.е. простой пример.
Надо по клику на канвасе выделить объект (аутлайном), ну и вообще поймать этот объект(меш) для дальнейших манипуляций с ним. Про его перемещение пока ничего не говорю (там тоже все не быстро),
но даже просто по клику на меше достать объект по которому клик, тоже не быстро.
Если использовать pick_object, то 04.-0.5сек задержка именно на нем.
Если доставать через физику append_ray_test_ext, то почему-то такая же задержка получается, но уже до прихода в onmousedown, а сам append_ray_test_ext отрабатывает быстро.

Т.е. здесь надежды уже не питаю.
Единственное, надеюсь проще создать массив клиентских координат мешей и привязаться к нему, т.е. пришли в onmousedowun и не вызываем pick_object, а сразу достаем меш по координатам в массиве. Благо все меши одной формы и находятся в одной плоскости (т.е. практически 2D сцена). Самому смешно читать
12 марта 2016 20:02
>> Если использовать pick_object, то 04.-0.5сек задержка именно на нем.
… не могу это подтвердить …
… для того чтобы получить задержку 0.5 секунды (500 миллисекунд) мне потребовалось пикнуть примерно четыре тысячи раз …

var now = new Date();
for(var i=0; i<4000; i++){
var obj = m_scenes.pick_object(x, y);
}
var now = (new Date() - now)/1000;
alert(now);
… то есть этот код после клика мыши выводит 0.5 (секунд) …

12 марта 2016 20:32
…не могу это подтвердить…
У меня на машине нет отдельной видеокарты, core i5 с интегрированной.
http://webglreport.com/
Max Varying Vectors = 10
При этом на Core i3 Max Varying Vectors = 30 и там немного пошустрее получается.
Плюс сама сцена: 50 мешей, каждый ~700 полигонов (мидллполи, если так можно сказать)
Ощутимо быстрее работает если отключить тени.
С тенями fps сцены максимум 5, без теней - 10-15.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.