Форум

Сообщения, созданные пользователем Кирилл
05 марта 2017 08:46
Ответ на сообщение пользователя Йеджи Заборовски
Было или не было - не нашел подобного вопроса.
Суть: чтобы не грузить весь движок и лишние модули…
Какова последовательность и минимальный список модулей?
если, скажем, не грузить весь b4w.full.min.js, а отдельно подключать только требуемые модули.
Я так понял, что в менеджере проектов для этого есть функция check modules. Которая покажет что лишнее, а чего не хватает. После этого при выполнении build project в деплой собирается проект только с нужными модулями (хотя это утверждение я ни где не увидел, оно может быть ложным, просто вывод ).
Подробнее в доках
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
01 марта 2017 23:08
Ответ на сообщение пользователя CyberKatana
1) Камера перевернулась вверх ногами, подскажите как исправить?)
2) Как отрубить возможность изменять точку обращения для таргет камеры в ссцене(СКМ), что бы пользователь мог только вращать камеру вокруг объекта
3) Можно ли как то отлавливать коллизию камеры с полом и не пускать ее сквозь него?
4) Подскажите где почитать про реализацию такой логики. Когда камера сталкивается с объектом, срабатывает эвент и объект плавно скрывается, когда камера выходит за пределы объекта он снова начинает отображаться.

За ранее, спасибо)
1. Можете показать blend файлик, где проявляется это?
2. Снимите галку Use Panning Mode в настройках камеры
3. Можно через API трейсить колизию с полом, а можно использовать вот такой недокументированный немного дёрганный хак с физикой. Пример cam_phisics.blend (работает при экспорте в json или в fast preview, т.к. используется физика чть чуть )
4. Можно внутрь камеры поместить шар с галкой Ghost и повесить на него сенсор на столкновения. И вы будете получать объект с которым началось или закончилось взаимодействие. Но предлагаю более простой путь, использовать в материале ноду Camera Data на output alpha. Так можно добиться плавного перехода в прозрачность определённых частей объекта. Пример cam_data_alpha.blend

P.S. Про соприкосновение объектов можно почитать тут
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
28 февраля 2017 21:34
Ответ на сообщение пользователя Семенцов Роман
что-то всё равно у меня с воспроизведением этого бага не зашло дело) будем после релиза тщательнее тестировать физику

Тест на ATI Radeon HD 3470, windows 7 x64, Intel Core2 Duo Processor E6320, Chrome 56.0.2924.87 (64-bit).
Баг повторяется но рывками и чаще.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 19:46
Добрый вечер. Спасибо за ответы!

Я как-то решал такую задачку следующим образом: брал объект-кубик, парентил его к персонажу, чтобы он брал только его перемещение. Ставил на него сенсор, чтобы он брал вращение камеры. Затем на этот кубик ставил сенсор-кастер луча на 15 метров. Если этот луч во что-то попадал, то выставлял камере это расстояние до объекта (использовал сферическую систему координат для камеры, но это не обязательно).
Можно и из персонажа кастить луч, но у меня у объекта для луча и у персонажа были настроены разные группы коллизии (объект кастер игнорировал некоторые группы коллизии)
Спасибо за наводку, ещё думаю возможен вариант с привязкой пустышки к персонажу а внутри пустышки локально двигать камеру по одной из осей опираясь на рэйкастинг от пустышки до камеры.

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

А нельзя использовать Blend тип прозрачности и анимировать альфу? Blend учитывает глубину и будет соответсововать Opaque при единичной альфе
Думал о таком подходе, но сцена большая, чувствую, что это плохо отразится на производительности приложения.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 15:19
Ответ на сообщение пользователя Семенцов Роман
Думаю, что дело в том, что камера припаренчена к физическому объекту, с которым происходит взаимодействие. Физика работает в другом потоке, поэтому возможны некоторые проблемы с обменом информацией.



Там сейчас отключены воркеры, т.е. физика и графика работают в одном потоке. Можно попробовать сделать тоже самое для тестов, передать в app.init флаг physics_use_workers: false , но при этом просядет фпс

А когда именно воспроизводится баг? может быть такое, что он воспроизводится после применение возвращающего колёса на землю момента?

UPD: для Linux в Firefox отключаются воркеры

Прописал
m_app.init({
        canvas_container_id: "main_canvas_container",
        callback: init_cb,
        show_fps: true,
        console_verbose: true,
        autoresize: true,
        quality: quality,
        physics_use_workers: false
    });


Но ситуация повторилась. Баг проявляется, когда авто смотрит колёсами вверх. Лежит вверх тормашками и при этом движется по инерции.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 13:10
Ответ на сообщение пользователя Семенцов Роман
Добрый день.

Пробовал подхачить фпс, тестить на устройствах, которые выдают небольшой фпс, но так и не получилось стабильно воспроизвести баг (был один случай похожий на баг).

Не могли вы чуть-чуть помочь с описаным багом? напирмер, повыводить в консоль tsr камеры, можно взять методом get_tsr из модуля transform, было бы интересно узнать что в него попадает в случае бага

Мне тоже интересно, повторил баг, вот что мне выдал get_tsr(camera) опрашиваемый 2 раза в секунду:
car_trash.js:109 [-78.47039794921875, -146.37815856933594, -3.50821852684021, 1, 0.6240626573562622, -0.18421277403831482, -0.21494212746620178, 0.7282934188842773]
car_trash.js:109 [-79.26668548583984, -145.40957641601562, -8.568613052368164, 1, 0.7329508662223816, -0.15200720727443695, -0.13470467925071716, 0.649254560470581]
car_trash.js:109 [-81.70136260986328, -143.62820434570312, -3.749629259109497, 1, 0.6551865339279175, -0.0861118733882904, -0.09787999093532562, 0.7441336512565613]
car_trash.js:109 [-89.54557800292969, -138.993896484375, -4.241490364074707, 1, 0.6403578519821167, -0.18133768439292908, -0.2033119648694992, 0.7181383371353149]
car_trash.js:109 [-90.96529388427734, -137.8053741455078, -9.590490341186523, 1, 0.7321239113807678, -0.18564565479755402, -0.1611299067735672, 0.6352695822715759]
car_trash.js:109 [-91.99422454833984, -137.0234375, -12.087574005126953, 1, 0.7732382416725159, -0.1642482876777649, -0.1272553950548172, 0.5991086959838867]
car_trash.js:109 [-94.24473571777344, -135.84458923339844, -12.454672813415527, 1, 0.7723591923713684, -0.19174669682979584, -0.1459057331085205, 0.5877125263214111]
car_trash.js:109 [-95.46898651123047, -135.20291137695312, -12.481498718261719, 1, 0.767805814743042, -0.2110842764377594, -0.16035202145576477, 0.5832708477973938]
car_trash.js:109 [-95.79409790039062, -135.02816772460938, -12.475667953491211, 1, 0.765352725982666, -0.2194472849369049, -0.1667628139257431, 0.5816082954406738]
car_trash.js:122 ok
car_trash.js:109 [-94.66805267333984, 1.7137953484637963e+27, -12.228086471557617, 1, -0.000001319376224273583, 0.7071068286895752, 0.7071067094802856, -0.0000013018639037909452]
car_trash.js:109 [-93.0475845336914, 1.4067691789470122e+26, -9.079962730407715, 1, -2.1603164678148101e-13, 0.7071068286895752, 0.7071067094802856, -2.1316421663832713e-13]0: -93.04758453369141: 1.4067691789470122e+262: -9.0799627304077153: 14: -2.1603164678148101e-135: 0.70710682868957526: 0.70710670948028567: -2.1316421663832713e-13buffer: (…)byteLength: (…)byteOffset: (…)length: (…)Symbol(Symbol.toStringTag): (…)__proto__: TypedArray
car_trash.js:109 [-94.06132507324219, 1.1547464640564892e+25, -3.5258185863494873, 1, -3.537269545403671e-20, 0.7071068286895752, 0.7071067094802856, -3.4903189677056175e-20]
car_trash.js:109 [-98.30631256103516, 9.478736223789848e+23, -2.250079870223999, 1, -2.930271361312988e-24, 0.7071068286895752, 0.7071067094802856, -2.930194447374729e-24]
car_trash.js:109 [-99.11412048339844, 7.780620477508575e+22, -2.2044715881347656, 1, -3.956214748052086e-23, 0.7071068286895752, 0.7071067094802856, -3.956214748052086e-23]
car_trash.js:109 [-98.56788635253906, 6.32301503328139e+21, -1.814573049545288, 1, -4.669106391725269e-22, 0.7071068286895752, 0.7071067094802856, -4.669106391725269e-22]
car_trash.js:109 [-98.50272369384766, 524254145813642500000, -1.7742888927459717, 1, -5.5809625512947024e-21, 0.7071068286895752, 0.7071067094802856, -5.5809625512947024e-21]
car_trash.js:109 [-98.4986572265625, 43033398571431890000, -1.7748340368270874, 1, -6.795939490620654e-20, 0.7071068286895752, 0.7071067094802856, -6.795939490620654e-20]
car_trash.js:109 [-98.49882507324219, 3532396333631537000, -1.7773079872131348, 1, -8.279002596859488e-19, 0.7071068286895752, 0.7071067094802856, -8.279002596859488e-19]
car_trash.js:109 [-96.46944427490234, 285917845500461060, -1.4406030178070068, 1, -7.719995593257377e-18, 0.7071068286895752, 0.7071067094802856, -7.719995593257377e-18]
car_trash.js:109 [-98.33283996582031, 23469567468634110, -1.7527470588684082, 1, -1.2210052726564644e-16, 0.7071068286895752, 0.7071067094802856, -1.2210052726564644e-16]
car_trash.js:109 [-98.48579406738281, 1926499259121664, -1.7783693075180054, 1, -1.5155516891715072e-15, 0.7071068286895752, 0.7071067094802856, -1.5155516891715072e-15]
car_trash.js:109 [-98.49833679199219, 158136686084096, -1.7804725170135498, 1, -1.8487625709842637e-14, 0.7071068286895752, 0.7071067094802856, -1.8487625709842637e-14]
car_trash.js:109 [-98.49938201904297, 12980650508288, -1.7806452512741089, 1, -2.252247867373658e-13, 0.7071068286895752, 0.7071067094802856, -2.252247867373658e-13]
car_trash.js:109 [-98.49943542480469, 1065516531712, -1.7806593179702759, 1, -2.7447083234682923e-12, 0.7071068286895752, 0.7071067094802856, -2.7447083234682923e-12]
car_trash.js:109 [-98.49943542480469, 87462903808, -1.7806599140167236, 1, -3.343690255230847e-11, 0.7071068286895752, 0.7071067094802856, -3.343690255230847e-11]
car_trash.js:109 [-98.49943542480469, 7215199744, -1.7806600332260132, 1, -4.051267654681112e-10, 0.7071068286895752, 0.7071067094802856, -4.051267654681112e-10]
car_trash.js:109 [-98.49943542480469, 589320320, -1.7806600332260132, 1, -4.961390409619071e-9, 0.7071068286895752, 0.7071067094802856, -4.961390409619071e-9]
car_trash.js:109 [-98.49943542480469, 48374240, -1.7806600332260132, 1, -6.047761047511813e-8, 0.7071068286895752, 0.7071067690849304, -6.047761758054548e-8]
car_trash.js:109 [-98.49943542480469, 3970677.75, -1.7806600332260132, 1, -7.367070224972849e-7, 0.7071064114570618, 0.7071071863174438, -7.36707818305149e-7]
car_trash.js:109 [-98.49943542480469, 325810.59375, -1.7806600332260132, 1, -0.000008971859642770141, 0.7071019411087036, 0.7071115970611572, -0.000008971985153038986]
car_trash.js:109 [-98.49943542480469, 26621.712890625, -1.7806600332260132, 1, -0.00010940779611701146, 0.7070479393005371, 0.7071655988693237, -0.00010942634253297001]
car_trash.js:109 [-98.49943542480469, 2062.793212890625, -1.7806600332260132, 1, -0.00133948540315032, 0.7063842415809631, 0.7078260183334351, -0.0013422714546322823]
car_trash.js:109 [-98.49943542480469, 46.874786376953125, -1.7806600332260132, 1, -0.017349230125546455, 0.6973759531974792, 0.7162736058235168, -0.0178295336663723]
car_trash.js:109 [-98.49943542480469, -118.60189056396484, -1.7806600332260132, 1, 0.3421396315097809, -0.3923483192920685, -0.643508791923523, 0.5611591935157776]
car_trash.js:109 [-98.49943542480469, -132.18502807617188, -1.7806600332260132, 1, 0.5735185146331787, -0.1716308891773224, -0.22966137528419495, 0.7673819065093994]
car_trash.js:109 [-98.49943542480469, -133.30001831054688, -1.7806600332260132, 1, 0.5831295251846313, -0.16209937632083893, -0.21320122480392456, 0.7669607996940613]
car_trash.js:109 [-98.49943542480469, -133.3915252685547, -1.7806600332260132, 1, 0.5838662385940552, -0.16135911643505096, -0.21194426715373993, 0.7669049501419067]
car_trash.js:109 [-98.49944305419922, -133.39906311035156, -1.7806601524353027, 1, 0.5839265584945679, -0.1612984985113144, -0.21184141933918, 0.7669001221656799]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]
car_trash.js:109 [-98.49944305419922, -133.39964294433594, -1.7806601524353027, 1, 0.5839312076568604, -0.16129375994205475, -0.2118333876132965, 0.766899824142456]


Т.е. тут момент до бага, потом когда всё происходит и возвращается обратно вконце. Не хило так плавает второе значение в массиве

P.S. В логе можно увидеть "car_trash.js:122 ok", его вызывает этот код:
    perevenut.onclick = function(){
        //m_trans.set_rotation_euler(car, 0, 180, 0);
        m_phy.apply_torque(car, 0, 30000, 0);
        setTimeout(function(){m_phy.apply_torque(car, 0, 0, 0);},550)
        console.log('ok');
    }


И в отрицательную сторону значения тоже прыгают:


UPD: Возможно глюк в js машине браузера хрома… В фаерфоксе всё хорошо.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 10:04
Приветствую.
Накопилось у меня несколько вопросов.
1. Хочу сделать коллизию для камеры что бы она сквозь текстуры не проваливалась, думаю строить луч от объекта до камеры, находить препятствия и если они есть приближать камеру. Я пойду в правильном направлении или уже есть готовый алгоритм? В ферме взаимодействия коллизии с камерой не обнаружил.
2. Можно ли как то менять центр тяжести у авто? А то больно часто переворачивается
3. Можно ли из api включать/выключать прозрачность материалам и менять тип прозрачности (Alpha blend, Alpha clip, и т.д.)? Хочу попробовать сделать плавное появление объектов на горизонте и делать полупрозрачными некоторые объекты, которые находятся ближе к камере. Например деревья.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 08:28
В приложении ферма, после того как немного поездил на тракторе колёса сместились выше (видно как сквозь обшивку шины выглядывают ). Трактор стал очень плохо ехать.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 04:23
Если не ошибаюсь, вам поможет эта функция container.resize_to_container

Повешенная на коллбек ресайза окна браузера.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
27 февраля 2017 04:18
Спасибо за статью. Раньше использовал старт ссл, но его сертификатам неожиданно перестал доверять хром.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/