由用户创建的信息 Roman_Sementsov
27 January 2016 18:54
27 January 2016 17:52
I have added a 1x1 pixel texture map to the world and exported to html.
And don't forget, that the CubeMap texture must have 3x2 width to height ratio.
The error is gone but when opening in Chrome the loader stops at 46%…
In this case you should open the browser console and read the error message there.
27 January 2016 16:23
27 January 2016 16:21
Если подкините пример кода для реализации поворта камеры вместе с направлением персонажа тачем (что бы после поворота камеры он продолжал идти прямо при нажатии кнопки W) этого примера, буду очень признателен. А пока что пользуюсь сенсорами touch_move.
У нас есть для поинтерлока rotation_cb, куда можно передать функцию поворота персонажа. Если нет поинтерлока, но есть мышка, то можно использовать request_mouse_drag. Но эти варианты для мобильника не подходят, и надеюсь в будущем мы поправим это.
Посмотрите как просто выглядит пример для декстопа.
Для мобильника пришлось повозиться. Вот пример сырой версии, подойдет в качестве отправной точки для создания своего обработчика тача: test.zip
Проверил на iPad - работает норм, разве что надо подобрать под себя скорость вращения камеры. Делается это через объявленные константы. Да и надо проверять насколько мы опустили камеру, а не то можно попасть под землю камерой.
27 January 2016 10:06
Пробовал разобраться, но пока не вышло.
Расскажите лучше про вашу задачу. Каким именно образом вы хотите двигать камеру по событиям тача.
У нас обработчики события навешиваются в момент, когда вы вызываете m_app.enable_camera_controls
Затем на объект камеры навешивается множество сенсоров на разные события мыши и тача. В каждом обработчике проверяется какой тип камеры мы используем и вычисляем перемещение камеры и записываем его в переменные (к примеру для тача мы записываем в dest_x_touch и dest_y_touch). А затем в другом сенсоре смотрим на все эти переменные и смещаем камеру. Примерно так.
Опять же, вся логика управления камерой находится в аддоне app.js
26 January 2016 11:20
Кстати по поводу мобильных устройств. Не подскажите как через API движка реализовать поворот камеры по жестам на мобильных устройствах. Такой алгоритм работает в плеере.
Если вы про управление камерой на мобильном девайсе, то эти алгоритмы заложены в аддона app.js. Вас должны интересовать функции, в названии которых есть слово touch. Обработчики у нас там реализованы через сенсоры модуля controls.js
Надеюсь, я правильно понял ваш вопрос
26 January 2016 11:15
Добрый день.
Пробежался глазами по вашим функциям для рассчета угла между векторами.
Давайте рассмотрим функцию нахождения угла.
В идеале ваша формула должна иметь вид для векторов a и b:
atan (( |a| * |b| * sin(alpha)) / (( |a| * |b| * cos(alpha))
где информация о знаке угла заложена в нечетной функции sin.
Но у вас в формуле расчет идет через модуль вектора, полученного в результате векторного произведения. И формула принимает вид:
atan (( |a| * |b| * |sin(alpha)|) / (( |a| * |b| * cos(alpha))
Таким образом потерялась информация о направлении вектора, полученного в результате векторного произведения.
Обратите внимание на эту статью (тут вас должны заинтересовать формулы и таблицы):
http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/
Она должна вам помочь сохранить знак векторного произведения.
Пробежался глазами по вашим функциям для рассчета угла между векторами.
Давайте рассмотрим функцию нахождения угла.
// Функция для вычисления угла между 2 векторами
Vector.angleBetweenTwoVectors = function(vector1, vector2) {
// скалярное произведение векторов
// Вычисляем косинус угла между векторами
return Math.atan2(Vector.module(Vector.vecMultVectors(vector1,vector2)),Vector.scalMultVectors(vector1,vector2));
};
В идеале ваша формула должна иметь вид для векторов a и b:
atan (( |a| * |b| * sin(alpha)) / (( |a| * |b| * cos(alpha))
где информация о знаке угла заложена в нечетной функции sin.
Но у вас в формуле расчет идет через модуль вектора, полученного в результате векторного произведения. И формула принимает вид:
atan (( |a| * |b| * |sin(alpha)|) / (( |a| * |b| * cos(alpha))
Таким образом потерялась информация о направлении вектора, полученного в результате векторного произведения.
Обратите внимание на эту статью (тут вас должны заинтересовать формулы и таблицы):
http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/
Она должна вам помочь сохранить знак векторного произведения.
25 January 2016 15:39
Добрый день и добро пожаловать на форум!
Ну это раздел форума "проекты", тут выкладывают готовые и интересные проекты. Автор мог продолжить свою работу в этом направлении и создать еще много чего
Приятно слышать, что вы начали использовать наш движок, если будут вопросы - задавайте, с удовольствием ответим. А будет свободное время - еще и примером поможем
Эх… Жаль тема не продолжается
Ну это раздел форума "проекты", тут выкладывают готовые и интересные проекты. Автор мог продолжить свою работу в этом направлении и создать еще много чего
Приятно слышать, что вы начали использовать наш движок, если будут вопросы - задавайте, с удовольствием ответим. А будет свободное время - еще и примером поможем
25 January 2016 15:29
Так что лучше в блендере использовать .png
А движок сам подхватит .dss-текстуру, если при инициализации разрешите вашему приложению использовать dds-текстурирование (параметр assets_dds_available в функции m_app.init)
но не все видео карты поддерживают ddsА особенно мобильные устройства. Если мне не изменяет память, это высказывание относится ко многим топовым девайсам от Apple