Кнопки изменения материала в HTML
27 февраля 2018 23:26
28 февраля 2018 01:33
28 февраля 2018 13:01
Александр Романов. а в через вебшторм можно запустить проект через локалхост?
(извиняюсь за выражения… :)
Если вы используете нотацию с ES6 модулями, то dev-версию пиложения запустить не получится, поскольку b4w сервер для dev-версий производит некоторые действия по сборке. Build-версия работать будет. Если вы не используете ES6 модули, то работать должны обе версии на любом статическом сервере, необходимо только правильно его настроить.
Александр (команда Blend4Web)
twitter
28 февраля 2018 15:37
28 февраля 2018 16:53
ES6-модули - это нотация, в которой подключаемый в html скрипт имеет тип "module", например:
А js файлы используют ключевые слова import и export.
Сейчас в СДК все проекты используют ES6-модули, за исключением проекта simple_app, это приложение реализовано в двух вариантах (см. simple_app.html и simple_app-es5.html). Сравните их. Менеджер проектов генерирует проекты в старом стиле, без использования ES6.
Я вызвал меню на html-ке и выбрал Run название_хтмл и приложение открылось. В доке написано что сервер у вебстрорма запущен всегда. У меня он например висит на порту 63342.
<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 приложения. Отличие лишь в следующем:
Здесь просто объявлены коллбэки, которые задействованы в html.
Попробуйте выполнить этот урок. Там поэтапно разбирается структура.
Код типичен для 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