Форум

Кнопки изменения материала в HTML

27 февраля 2018 15:47
Спасибо
27 февраля 2018 23:26
Ответ на сообщение пользователя tonick555
Спасибо
а что у вас в js, html файлах?
28 февраля 2018 01:33
Александр Романов. а в через вебшторм можно запустить проект через локалхост?
(извиняюсь за выражения… :)
28 февраля 2018 13:01
Александр Романов. а в через вебшторм можно запустить проект через локалхост?
(извиняюсь за выражения… :)

Если вы используете нотацию с ES6 модулями, то dev-версию пиложения запустить не получится, поскольку b4w сервер для dev-версий производит некоторые действия по сборке. Build-версия работать будет. Если вы не используете ES6 модули, то работать должны обе версии на любом статическом сервере, необходимо только правильно его настроить.
Александр (команда Blend4Web)
twitter
28 февраля 2018 15:37
Есть пара вопросов…
"Если вы не используете ES6 модули" - это какие?
"то работать должны обе версии на любом статическом сервере, необходимо только правильно его настроить." как настроить?
СПС!
28 февраля 2018 16:53
ES6-модули - это нотация, в которой подключаемый в html скрипт имеет тип "module", например:
<script type="module" src="simple_app.js"></script>

А js файлы используют ключевые слова import и export.

Сейчас в СДК все проекты используют ES6-модули, за исключением проекта simple_app, это приложение реализовано в двух вариантах (см. simple_app.html и simple_app-es5.html). Сравните их. Менеджер проектов генерирует проекты в старом стиле, без использования ES6.


"то работать должны обе версии на любом статическом сервере, необходимо только правильно его настроить."

Я вызвал меню на html-ке и выбрал Run название_хтмл и приложение открылось. В доке написано что сервер у вебстрорма запущен всегда. У меня он например висит на порту 63342.
Александр (команда Blend4Web)
twitter
01 марта 2018 22:19
А можете разъяснить код построчно? в смысле что откуда и куда… буду оч. благодарен.
"use strict"

// register the application module
b4w.register("project1_main", function(exports, require) {

// import modules used by the app
var m_app       = require("app");
var m_cfg       = require("config");
var m_data      = require("data");
var m_preloader = require("preloader");
var m_ver       = require("version");

// detect application mode
var DEBUG = (m_ver.type() == "DEBUG");

// automatically detect assets path
var APP_ASSETS_PATH = m_cfg.get_assets_path("project1");

/**
 * export the method to initialize the app (called at the bottom of this file)
 */
exports.init = function() {
    m_app.init({
        canvas_container_id: "main_canvas_container",
        callback: init_cb,
        show_fps: DEBUG,
        console_verbose: DEBUG,
        autoresize: true
    });
}

/**
 * callback executed when the app is initialized 
 */
function init_cb(canvas_elem, success) {

    if (!success) {
        console.log("b4w init failure");
        return;
    }

    m_preloader.create_preloader();

    // ignore right-click on the canvas element
    canvas_elem.oncontextmenu = function(e) {
        e.preventDefault();
        e.stopPropagation();
        return false;
    };

    load();
}

/**
 * load the scene data
 */
function load() {
    m_data.load(APP_ASSETS_PATH + "ring_5.json", load_cb, preloader_cb);
}

/**
 * update the app's preloader
 */
function preloader_cb(percentage) {
    m_preloader.update_preloader(percentage);
}

exports.inherit_mat = function(obj_name, mat_name) {
    var m_mat = require("material");
    var m_scenes = require("scenes");

    var ring = m_scenes.get_object_by_name("01");
    var Sphere_001 = m_scenes.get_object_by_name(obj_name);
    m_mat.inherit_material(ring, "gold_nod", Sphere_001, mat_name);
}

/**
 * callback executed when the scene data is loaded
 */
function load_cb(data_id, success) {

    if (!success) {
        console.log("b4w load failure");
        return;
    }

    m_app.enable_camera_controls();

    // place your code here

}


});

function inherit_mat1() {
    b4w.require("project1_main").inherit_mat("Sphere.001", "chrome");
}

function inherit_mat2() {
    b4w.require("project1_main").inherit_mat("Sphere", "chrome.003");
}

// import the app module and start the app by calling the init method
b4w.require("project1_main").init();
01 марта 2018 23:06
Кручу проект… текстуры не выходит загрузить (в приложении)… только одна gold_nod срабатывает, и желательно все таки убрать из сцены эти лишние три объекта (3 шара). и оставить управление только кнопками по типу ваших "click me1" и "click me2" я боюсь если их (3 шара) удалю, то кнопки вряд ли будут работать…
03 марта 2018 21:31
Шары можно загружать скрытыми - опция Hidden на панели Render Properties у объекта. А чтобы не грузить меши шаров, можно заменить их на треугольники. Так приложение будет оптимизированнее.
Код типичен для b4w приложения. Отличие лишь в следующем:
function inherit_mat1() {
    b4w.require("project1_main").inherit_mat("Sphere.001", "chrome");
}

function inherit_mat2() {
    b4w.require("project1_main").inherit_mat("Sphere", "chrome.003");
}

Здесь просто объявлены коллбэки, которые задействованы в html.
Попробуйте выполнить этот урок. Там поэтапно разбирается структура.
Александр (команда Blend4Web)
twitter
04 марта 2018 03:28
Если я правильно понял. все таки объекты (по типу dummy в 3DMax) какие то остаются внутри сцены для управления? а без этих объектов никак нельзя? чтоб сцену не засорять, чтоб вдруг в каком то браузере или с каким то траблом эти объекты не появились…
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.