User posts Kirill
05 March 2017 08:46
Ответ на сообщение пользователя Йеджи ЗаборовскиЯ так понял, что в менеджере проектов для этого есть функция check modules. Которая покажет что лишнее, а чего не хватает. После этого при выполнении build project в деплой собирается проект только с нужными модулями (хотя это утверждение я ни где не увидел, оно может быть ложным, просто вывод ).
Было или не было - не нашел подобного вопроса.
Суть: чтобы не грузить весь движок и лишние модули…
Какова последовательность и минимальный список модулей?
если, скажем, не грузить весь b4w.full.min.js, а отдельно подключать только требуемые модули.
Подробнее в доках
01 March 2017 23:08
Ответ на сообщение пользователя CyberKatana1. Можете показать blend файлик, где проявляется это?
1) Камера перевернулась вверх ногами, подскажите как исправить?)
2) Как отрубить возможность изменять точку обращения для таргет камеры в ссцене(СКМ), что бы пользователь мог только вращать камеру вокруг объекта
3) Можно ли как то отлавливать коллизию камеры с полом и не пускать ее сквозь него?
4) Подскажите где почитать про реализацию такой логики. Когда камера сталкивается с объектом, срабатывает эвент и объект плавно скрывается, когда камера выходит за пределы объекта он снова начинает отображаться.
За ранее, спасибо)
2. Снимите галку Use Panning Mode в настройках камеры
3. Можно через API трейсить колизию с полом, а можно использовать вот такой недокументированный немного дёрганный хак с физикой. Пример cam_phisics.blend (работает при экспорте в json или в fast preview, т.к. используется физика чть чуть )
4. Можно внутрь камеры поместить шар с галкой Ghost и повесить на него сенсор на столкновения. И вы будете получать объект с которым началось или закончилось взаимодействие. Но предлагаю более простой путь, использовать в материале ноду Camera Data на output alpha. Так можно добиться плавного перехода в прозрачность определённых частей объекта. Пример cam_data_alpha.blend
P.S. Про соприкосновение объектов можно почитать тут
28 February 2017 21:34
Ответ на сообщение пользователя Семенцов Роман
что-то всё равно у меня с воспроизведением этого бага не зашло дело) будем после релиза тщательнее тестировать физику
Тест на ATI Radeon HD 3470, windows 7 x64, Intel Core2 Duo Processor E6320, Chrome 56.0.2924.87 (64-bit).
Баг повторяется но рывками и чаще.
27 February 2017 19:46
Добрый вечер. Спасибо за ответы!
Я как-то решал такую задачку следующим образом: брал объект-кубик, парентил его к персонажу, чтобы он брал только его перемещение. Ставил на него сенсор, чтобы он брал вращение камеры. Затем на этот кубик ставил сенсор-кастер луча на 15 метров. Если этот луч во что-то попадал, то выставлял камере это расстояние до объекта (использовал сферическую систему координат для камеры, но это не обязательно).Спасибо за наводку, ещё думаю возможен вариант с привязкой пустышки к персонажу а внутри пустышки локально двигать камеру по одной из осей опираясь на рэйкастинг от пустышки до камеры.
Можно и из персонажа кастить луч, но у меня у объекта для луча и у персонажа были настроены разные группы коллизии (объект кастер игнорировал некоторые группы коллизии)
По идее, центр тяжести становится в середине баундингбокса, можно с ним попробовать поиграться. А так - пока что нельзя изменять центр тяжести, такой задачи никогда не вставало)Тогда родилась идея. Можно основное шасси уменьшить по высоте и к нему присоединить/выше нарастить ещё одним физическим объектом с маленьким весом коллизию.
А нельзя использовать Blend тип прозрачности и анимировать альфу? Blend учитывает глубину и будет соответсововать Opaque при единичной альфеДумал о таком подходе, но сцена большая, чувствую, что это плохо отразится на производительности приложения.
27 February 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
});
Но ситуация повторилась. Баг проявляется, когда авто смотрит колёсами вверх. Лежит вверх тормашками и при этом движется по инерции.
27 February 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 машине браузера хрома… В фаерфоксе всё хорошо.
27 February 2017 10:04
Приветствую.
Накопилось у меня несколько вопросов.
1. Хочу сделать коллизию для камеры что бы она сквозь текстуры не проваливалась, думаю строить луч от объекта до камеры, находить препятствия и если они есть приближать камеру. Я пойду в правильном направлении или уже есть готовый алгоритм? В ферме взаимодействия коллизии с камерой не обнаружил.
2. Можно ли как то менять центр тяжести у авто? А то больно часто переворачивается
3. Можно ли из api включать/выключать прозрачность материалам и менять тип прозрачности (Alpha blend, Alpha clip, и т.д.)? Хочу попробовать сделать плавное появление объектов на горизонте и делать полупрозрачными некоторые объекты, которые находятся ближе к камере. Например деревья.
Накопилось у меня несколько вопросов.
1. Хочу сделать коллизию для камеры что бы она сквозь текстуры не проваливалась, думаю строить луч от объекта до камеры, находить препятствия и если они есть приближать камеру. Я пойду в правильном направлении или уже есть готовый алгоритм? В ферме взаимодействия коллизии с камерой не обнаружил.
2. Можно ли как то менять центр тяжести у авто? А то больно часто переворачивается
3. Можно ли из api включать/выключать прозрачность материалам и менять тип прозрачности (Alpha blend, Alpha clip, и т.д.)? Хочу попробовать сделать плавное появление объектов на горизонте и делать полупрозрачными некоторые объекты, которые находятся ближе к камере. Например деревья.
27 February 2017 08:28
В приложении ферма, после того как немного поездил на тракторе колёса сместились выше (видно как сквозь обшивку шины выглядывают ). Трактор стал очень плохо ехать.
27 February 2017 04:23
Если не ошибаюсь, вам поможет эта функция container.resize_to_container
Повешенная на коллбек ресайза окна браузера.
Повешенная на коллбек ресайза окна браузера.
27 February 2017 04:18
Спасибо за статью. Раньше использовал старт ссл, но его сертификатам неожиданно перестал доверять хром.