User posts Roman Sementsov
22 January 2016 17:20
22 January 2016 17:16
22 January 2016 14:48
Hello.
end etc
The fourth param determines number of the anim iteration.
m_scenes.apply_outline_anim(cube, 0.5, 1) // cycle effect
m_scenes.apply_outline_anim(cube, 0.5, 1, 0) // cycle effect
m_scenes.apply_outline_anim(cube, 0.5, 1, 1) // not cycle effect
m_scenes.apply_outline_anim(cube, 0.5, 1, 2) // not cycle effect
end etc
The fourth param determines number of the anim iteration.
22 January 2016 12:16
17 January 2016 12:22
Hello and welcome to the forum.
Yes, it's possible. I've created a simple example, using dynamic geometry. I use browser local storage to save cnanged geometry, but you should use server requests.
The application remembers the latest geometry data and save it. When you open the app again, it sets the geometry from memory.
Here is the example (it was created with using the project manager)
And the application code:
Is either of these options possible with blend4web now?
Yes, it's possible. I've created a simple example, using dynamic geometry. I use browser local storage to save cnanged geometry, but you should use server requests.
The application remembers the latest geometry data and save it. When you open the app again, it sets the geometry from memory.
Here is the example (it was created with using the project manager)
And the application code:
"use strict"
// register the application module
b4w.register("test_geometry", 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_ver = require("version");
var m_scs = require("scenes");
var m_geom = require("geometry");
var m_obj = require("objects");
var m_stor = require("storage");
// detect application mode
var DEBUG = (m_ver.type() === "DEBUG");
// automatically detect assets path
var APP_ASSETS_PATH = m_cfg.get_std_assets_path() + "test_geometry/";
var _indices = new Uint16Array([0,1,2,3,4,5]);
var _changed_positions = new Float32Array([0,1,0, -1,0,1, 1,0,-1, 1,0,-1, -1,0,1, 1,0,1]);
var _default_positions = new Float32Array([-1,0,-1, -1,0,1, 1,0,-1, 1,0,-1, -1,0,1, 1,0,1]);
/**
* export the method to initialize the app (called at the bottom of this file)
*/
exports.init = function() {
m_stor.init("test_geometry");
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 initizalized
*/
function init_cb(canvas_elem, success) {
if (!success) {
console.log("b4w init failure");
return;
}
load();
}
/**
* load the scene data
*/
function load() {
m_data.load(APP_ASSETS_PATH + "test_geometry.json", load_cb);
}
/**
* callback executed when the scene is loaded
*/
function load_cb(data_id, success) {
if (!success) {
console.log("b4w load failure");
return;
}
m_app.enable_controls();
m_app.enable_camera_controls();
var plane = m_scs.get_object_by_name("Plane");
document.getElementById("def_geom").onclick = function() {
geometry_change(plane, "Material", _default_positions);
remember_positions(_default_positions);
}
document.getElementById("chan_geom").onclick = function() {
geometry_change(plane, "Material", _changed_positions);
remember_positions(_changed_positions);
}
var positions_str = m_stor.get("positions");
if (positions_str) {
var positions_float = new Float32Array(positions_str.toString().split(",").map(parseFloat));
geometry_change(plane, "Material", positions_float);
}
}
function geometry_change(obj, material_name, positions) {
m_geom.override_geometry(obj, material_name, _indices, positions, false);
m_obj.update_boundings(obj);
}
function remember_positions(positions) {
m_stor.set("positions", positions.toString());
}
});
// import the app module and start the app by calling the init method
b4w.require("test_geometry").init();
17 January 2016 10:55
15 January 2016 14:19
15 January 2016 10:22
Позволю себе высказать предположение.
Ведь ассоциации индивидуальны: кто-то может каждый год пересматривать гексалогию Звездных Войн; кто-то просматривая календарь вспоминает все, что успел сделать за прошедший год или же превращает покупку нового календаря в целый ритуал.
Вы идеально написали это сообщение. Низкий поклон и снимаю перед вами шляпу!
Кстати, однажды был в жюри фото-конкурса там мы чуть не передрались, т.к. репортажники хвалили и видели только сюжет, пейзажисты цвет и свет, портретисты момент. Комплексные оценки всегда выносят на верх "середнячков".
Лично я выше всех оценил работу Кирилла с раннером. В ней самая сложная и интересная логика работы приложения. Но опять же:
Я тоже хотел бы, чтобы победили зайцы, но к сожалению, жюри меня не послушало и решило иначе
25 December 2015 18:54
Да, именно это имел ввиду. Подзабыл что свойство называется "Dynamic Geometry". Приношу извинение.
Мы решили, что копирование канвас-текстур должно происходить только при "глубоком" копировании.
Из консоли следует, что объект не скопировался, потому что не имеет динамической геометрии, функция копирования вернула нуль, далее по коду нуль попытался добавиться на сцену.
Написали бы сразу как не получилось.
Мы решили, что копирование канвас-текстур должно происходить только при "глубоком" копировании.
Из консоли следует, что объект не скопировался, потому что не имеет динамической геометрии, функция копирования вернула нуль, далее по коду нуль попытался добавиться на сцену.
Написали бы сразу как не получилось.
25 December 2015 16:23