论坛

由用户创建的信息 Ivan Lyubovnikov
09 January 2016 00:26
Скажите, планируется ли создание 3D-объектов непосредственно из кода, деформация их и т.д., так же интересно непосредственно создание 3D-текста, и если да, то когда?

Не планировали, разве что примитивы. Создание сложной геометрии как и текста - специфический функционал, который потребует серьёзной проработки. Вообще, процедурная генерация - интересная тема, которая может быть довольно востребованной. Возможно, в каком-то виде она у нас и появится, но вряд ли в ближайшем будущем.


Как в программе openjscad
Вот что она умеет
Сделана на базе http://www.openscad.org/
тут вроде тоже JS, WebGl и он вроде открытый… что если прикрутить оттуда? smiling-open-mouth (ну это я так по-нубски предложилopen-moth-tightly-closed-eyes)
Интересная штука. В блендере есть близкий по духу аддон Сверчок.
"Прикрутить" - это самый лучший вариант, потому что, зачем нам реализовывать то, что уже сделано до нас. По первой ссылке зашел посмотреть - там можно произвести экспорт модели в stl-формат. Теоретически можно преобразовать эту геометрию в наш формат и подать в функцию override_geometry. Т.е. получится как-то так:
- задаем модель в openjscad
- экспортируем в stl (или в какой-другой)
- парсим stl и формируем вертексный/индексный буферы для b4w
- подаем все, что натворили override_geometry()
08 January 2016 23:12

How can I set Canvas Resolution Factor when i export json to my project?
This is also can be done through the config module by passing the "canvas_resolution_factor" option in the m_app.init() method.

You can also call config.set() method anytime during the application work to dynamically change the resolution:
m_config.set("canvas_resolution_factor", factor);

08 January 2016 22:45
Hi, again!
Actually you're moving the camera not the papyrus itself. Try to set STATIC move style on the camera in Blender.
30 December 2015 11:16

я хочу анимировать объект, допустим куб-пермещение, кодом через API (не просто переместить, а именно анимировать, то есть за определенное количество времени пршел опрделенный путь и это можно наблюдать)

Можете глянуть код в примере Code Snippets -> Camera Animation - там как-раз используется elapsed-сенсор.

Можно использовать метод set_render_callback() для установки своего колбэка, который будет вызываться каждый кадр, остается только постепенно сдвигать объект в течение некоторого времени. Однако, elapsed-сенсор удобнее тем, что возвращает количество времени, прошедшее с предыдущего кадра.
30 December 2015 10:22
blend framerate settings are used only for animation
It also refers to video textures.
29 December 2015 15:16
А как это будет работать? Когда камера будет покидать определённую область сработает колбек, который вернёт предыдущие координаты камеры, так ?
Ну, в данном случае сенсор простой - он вызывает колбэк каждый кадр. В нем можно проверить текущие координаты камеры и подвинуть, если нужно. А так можно задавать и более сложную логику вызова колбэка.

Вообще, для подобных действий больше бы подошёл метод set_render_callback() - просто добавляем колбэк перед рендерингом и делаем в нем - что хотим. Это проще, чем разбираться в системе сенсоров. Но сейчас он в некоторых случаях некорректно работает - нам уже жаловались: https://www.blend4web.com/ru/forums/topic/992/. Этот баг мы пофиксим в январском релизе. А вообще, мы планируем поработать с камерой на предмет API для изменения/наследования поведения камеры определённого типа.

29 December 2015 10:55

Вроде подходящего лимита предусмотренного движком для данной ситуации нет.
Нет, можно только вообще отключить перетаскивание галочкой "Use Panning Mode".

Поведение камеры можно изменить, используя систему сенсоров. После загрузки приложения, например, в load_cb() можно создать сенсорное множество на камере, которое регистрирует колбэк limit_cam_cb - в нем можно поменять позицию камеры непосредственно перед рендерингом:

var m_ctl  = require("controls");
var m_scenes  = require("scenes");

function limit_cam_cb(cam, id, pulse) {
    ...
}

function load_cb(data_id, success) {
    var elapsed = m_ctl.create_elapsed_sensor();
    var cam = m_scenes.get_active_camera();
    m_ctl.create_sensor_manifold(cam, "MANIFOLD_NAME", m_ctl.CT_CONTINUOUS,
                [elapsed], null, limit_cam_cb);
}
28 December 2015 14:35
по конкретной сцене - это той, которая грузится первой? То есть он смотрит, что в нулевой сцене нет объектов Selectable и думает, что функция выделения не нужна и не включает ее и для последующих загруженных сцен?
(у меня выставлено AUTO, видимо это по-умолчанию)
Да, всё именно так.

хотя на самом деле должно быть написано Objects Selection
Да, ошибочка, поправим.

Про специфику режима AUTO где можно прочитать?
Пока нигде, но задача описания этих панелей уже стоит, так что стоит ждать в ближайших релизах.




28 December 2015 11:48
Надо на панели Scene выбрать Objects Selection = ON. Там вообще ряд настроек имеет опции OFF - отключить напрочь, AUTO - определять по конкретной сцене, ON - включать всегда.
28 December 2015 11:21

Эта особенность может ввести в ступор того, кто начинает с этим сталкиваться и потому предложил уточнить в документации, что уникальность достигается только при копировании

Да, спасибо, добавим уточнение.


Force Dynamic Geometry.
Уже заметили, исправим.