由用户创建的信息 masterjiamaster
28 November 2016 17:41
Здравствуйте, скачал новую версию b4w.min.js библиотеки, скачал новую версию блендера, и почему-то сейчас если вывести массив полученный методом get_all_objects() то выведет следующую структуру в консоли
а раньше вот у меня осталась стараюя наработка структура 1 объекта была следующей:
у меня на сцене было около 300 объектов я запускал анимацию путем получения объектов через метод get_all_objects() а затем я в цикле я получал имя и action объекта и добавлял анимацию через apply(obj,action); ну и дальше соответственно запускал через play
дк вот интересует вопрос часто ли будет меняться структура объектов ? и правильно ли я вообще применяю анимацию к массе объектов, для полноты картины скину часть кода который отвечает за воспроизведение анимации
и теперь чтобы получить имя action объекта мне нужно прописывать mas[key].Tf[0].action.name
что за Tf ? непонятное сочетание символов, раньше чтобы получить имя action объекта
нужно было написать mas[key].actions[0].name все понятно)
0
:
Object
Aq
:
null
Aw
:
Array[0]
C
:
null
Ct
:
null
Ee
:
null
Ek
:
false
Fs
:
null
Fu
:
Array[0]
G
:
Array[1]
Hc
:
Array[0]
Ib
:
""
La
:
true
Lj
:
20
NB
:
false
Ok
:
"Cube"
P
:
null
Qo
:
false
Sp
:
true
Sq
:
"AUTO"
Tb
:
null
Tf
:
Array[1]
Vj
:
true
Vl
:
null
Wl
:
null
XB
:
Object
Ya
:
null
Zk
:
Array[0]
anchor
:
null
ba
:
Array[8]
cj
:
false
cz
:
false
dp
:
""
gi
:
"67f7a46bfa49ad77dc3b8411678a11a8"
is_character
:
false
jg
:
Object
k
:
Object
kl
:
false
name
:
"Cube"
ns
:
Array[0]
og
:
null
os
:
null
ow
:
false
parent
:
null
pe
:
Array[0]
pf
:
null
qp
:
Array[0]
qz
:
null
type
:
"MESH"
v
:
null
ve
:
false
vq
:
Array[3]
zf
:
Array[0]
__proto__
:
Object
а раньше вот у меня осталась стараюя наработка структура 1 объекта была следующей:
0
:
Object
action_anim_cache
:
Array[2]
actions
:
Array[1]
anchor
:
null
anim_behavior_def
:
10
anim_slots
:
Array[8]
armobj
:
null
bpy_origin
:
true
character_settings
:
null
collision_id
:
""
cons_armat_bone_descends
:
Array[0]
cons_descends
:
Array[1]
constraint
:
null
correct_bounding_offset
:
"AUTO"
field
:
null
floater
:
null
floating_settings
:
null
is_character
:
false
is_dynamic
:
true
is_floating
:
false
is_hair_dupli
:
false
is_vehicle
:
false
light
:
null
meta_objects
:
Array[0]
metatags
:
null
name
:
"zazhimnoe_kolco_r.001"
need_update_transform
:
false
nla_events
:
Array[0]
origin_name
:
"zazhimnoe_kolco_r.001"
outline_animation
:
Object
parent
:
null
parent_bone
:
""
parent_is_dupli
:
false
physics
:
null
physics_constraints
:
Array[0]
physics_settings
:
Object
pinverse_tsr
:
null
reflective_objs
:
Array[0]
render
:
Object
scenes_data
:
Array[1]
sensor_manifolds
:
null
sensor_manifolds_arr
:
Array[0]
sfx
:
null
type
:
"MESH"
use_default_animation
:
false
use_obj_physics
:
false
uuid
:
"58db198a8d33bfa6ca28e43acd11b6c0"
vehicle
:
null
vehicle_settings
:
null
vertex_anim
:
Array[0]
viewport_alignment
:
null
__proto__
:
Object
у меня на сцене было около 300 объектов я запускал анимацию путем получения объектов через метод get_all_objects() а затем я в цикле я получал имя и action объекта и добавлял анимацию через apply(obj,action); ну и дальше соответственно запускал через play
дк вот интересует вопрос часто ли будет меняться структура объектов ? и правильно ли я вообще применяю анимацию к массе объектов, для полноты картины скину часть кода который отвечает за воспроизведение анимации
var _anim_get_frame = 1;//устанавливаем изначально 1 кадр текущим для анимации
var _frame = 1;
var _add_anim = 0;/*если равен 1, это значит что для объектов мы уже добавили анимацию и можно с ними работать*/
var _timerId;
function play_anim(_frame,speed) {
clearInterval(_timerId);
_timerId = setInterval(function() {
$('.clock').text(parseInt($('.clock').text())+1);
$('#time').val(parseInt($('#time').val())+24);
if (parseInt($('.clock').text())>=80) {
setTimeout(function() {
clearInterval(_timerId);
$('.clock').text(80);
$('#time').val(1800);
}, 0);
}
}, 1000);
setTimeout(function() {
clearInterval(_timerId);
$('.clock').text(0);
}, 100000);
//alert(_frame);
$('.button_container:nth-child(2)').css("display","block");
$('.button_container:nth-child(1)').css("display","none");
var mas = m_scs.get_all_objects("ALL",m_obj.DATA_ID_ALL);
//console.log(mas);
var mas_name = [];
var lok = 1;
for (var key in mas) {
console.log(mas);
mas_name[lok] = mas[key].name
lok++;
if (mas[key].type == 'Lamp' || mas[key].type == "WORD" || mas[key].type == 'EMPTY') {
}else{
var obj = m_scs.get_object_by_name(mas[key].name);//имя объекта
var amima = m_anim.is_animated(obj);
//console.log(amima);
if ($.isEmptyObject(mas[key].actions)) {
}else{
var action = mas[key].actions[0].name;//актион объекта
if (obj) {
if (_add_anim == 0) {
m_anim.apply(obj,action);
//_anim_get_frame = m_anim.get_frame(obj);/*получаем текущий кадр*/
//console.log("kadr="+_anim_get_frame);
m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
if (!_anim_playing_ob) {
//m_anim.set_speed(obj, anim_speed);
//console.log(anim_speed);
m_anim.play(obj,function(){
_anim_playing_ob = false;
//anim_speed *= -1;
_anim_get_frame = m_anim.get_frame(obj);
m_anim.set_frame (obj, _anim_get_frame);
});
}else{
}
}else{
if (parseInt(_frame) != 1 && typeof(_frame) == "string") {
var anim_lenght = m_anim.get_anim_length(obj);
if (parseInt(_frame) >= parseInt(anim_lenght)) {
m_anim.set_last_frame (obj);
}else{
m_anim.set_frame (obj,parseInt(_frame));
}
}
//
//}else{
// if (anim_speed == 1) {
// m_anim.set_frame (obj, _anim_get_frame);/*устанавливаем текущий кадр после остановки анимации*/
// }else{
// m_anim.set_last_frame (obj);
// }
//}
//_anim_get_frame = m_anim.get_frame(obj);/*получаем текущий кадр*/
//console.log("kadr="+_anim_get_frame);
m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
if (!_anim_playing_ob) {
m_anim.set_speed(obj, speed);
//console.log(anim_speed);
m_anim.play(obj,function(){
_anim_playing_ob = false;
//anim_speed *= -1;
_anim_get_frame = m_anim.get_frame(obj);
m_anim.set_frame (obj, _anim_get_frame);
});
}
}
}
}
}
}
console.log(mas_name);
_add_anim = 1;/*добавили к объектам анимацию и можно с ними уже работать*/
}
$('#play').click(function(_frame){
var speed = 1;
play_anim(_frame,speed);
});
и теперь чтобы получить имя action объекта мне нужно прописывать mas[key].Tf[0].action.name
что за Tf ? непонятное сочетание символов, раньше чтобы получить имя action объекта
нужно было написать mas[key].actions[0].name все понятно)
06 October 2016 11:42
Доброго времени суток! есть 3д модель из кучи мелких деталей с анимацией, не могу понять почему не работает анимация в обратном направлении, создал тестово кнопку "revers", если запустить анимацию и затем нажать на кнопку "revers" то она вроде как работает в обратном направлении, но как то слишком быстро и неправильно, подскажите в чем может быть проблема ?
тут около 300 объектов, сначала получаю все имена объектов , проверяю на анимацию и запускаю анимацию, реверсивную анимацию сделал изменив скорость на -1
вот ссылка на сам проект http://vellift.ru/anim-sgr-10_11/
вот код:
тут около 300 объектов, сначала получаю все имена объектов , проверяю на анимацию и запускаю анимацию, реверсивную анимацию сделал изменив скорость на -1
вот ссылка на сам проект http://vellift.ru/anim-sgr-10_11/
вот код:
function play_anim(_frame,speed) {
clearInterval(_timerId);
_timerId = setInterval(function() {
$('.clock').text(parseInt($('.clock').text())+1);
$('#time').val(parseInt($('#time').val())+24);
if (parseInt($('.clock').text())>=80) {
setTimeout(function() {
clearInterval(_timerId);
$('.clock').text(80);
$('#time').val(1800);
}, 0);
}
}, 1000);
setTimeout(function() {
clearInterval(_timerId);
$('.clock').text(0);
}, 100000);
$('.button_container:nth-child(2)').css("display","block");
$('.button_container:nth-child(1)').css("display","none");
var mas = m_scs.get_all_objects("ALL",m_obj.DATA_ID_ALL);
var mas_name = [];
var lok = 1;
for (var key in mas) {
mas_name[lok] = mas[key].name
lok++;
if (mas[key].type == 'LAMP' || mas[key].type == 'WORLD' || mas[key].type == 'EMPTY') {
}else{
var obj = m_scs.get_object_by_name(mas[key].name);//имя объекта
var amima = m_anim.is_animated(obj);
if ($.isEmptyObject(mas[key].actions)) {
}else{
var action = mas[key].actions[0].name;//актион объекта
if (obj) {
if (_add_anim == 0) {
m_anim.apply(obj,action);
m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
if (!_anim_playing_ob) {
m_anim.play(obj,function(){
_anim_playing_ob = false;
_anim_get_frame = m_anim.get_frame(obj);
m_anim.set_frame (obj, _anim_get_frame);
});
}
}else{
if (parseInt(_frame) != 1 && typeof(_frame) == "string") {
var anim_lenght = m_anim.get_anim_length(obj);
if (parseInt(_frame) >= parseInt(anim_lenght)) {
m_anim.set_last_frame (obj);
}else{
m_anim.set_frame (obj,parseInt(_frame));
}
}
m_anim.set_behavior(obj,m_anim.AB_FINISH_STOP);
if (!_anim_playing_ob) {
m_anim.set_speed(obj, speed);
//console.log(anim_speed);
m_anim.play(obj,function(){
_anim_playing_ob = false;
//anim_speed *= -1;
_anim_get_frame = m_anim.get_frame(obj);
m_anim.set_frame (obj, _anim_get_frame);
});
}
}
}
}
}
}
console.log(mas_name);
_add_anim = 1;/*добавили к объектам анимацию и можно с ними уже работать*/
}
$('#play').click(function(_frame){
var speed = 1;
play_anim(_frame,speed);
});
$('#revers').click(function(_frame){
var speed = -1;
play_anim(_frame,speed);
});
27 July 2016 15:02
Столкнулся с такой проблемой, в блендере создал цилиндр увеличил его по z, иными словами увеличил высоту цилиндра экспортировал, открыл в браузере но цилиндр остался по высоте таким же размером как и по " х" как и по "y", если поменять размер по ''x" или по "y" то и по z цилиндр меняется, как будто стоит какой то ограничитель, подскажите как можно избавиться от этого ?
и еще такой вопрос для отображения размеров деталей какие лучше использовать элементы для стрелочек ?
и еще такой вопрос для отображения размеров деталей какие лучше использовать элементы для стрелочек ?
27 July 2016 08:51
26 July 2016 18:53
Здравствуйте, подскажите как лучше сделать временную шкалу для анимации, например у меня есть 3д объект с анимацией и хочу его выложить на сайт, и чтобы пользователь мог запустить анимацию остановить анимацию, и с помощью временной шкалы регулировать текущий кадр, что вы можете посоветовать ?
у меня такая идея, создать ползунок в виде html элементов, повешать на них события зажатия и отжатия кнопки мыши, и получать из ползунка значение и подставлять в массив с функцией которая возращает кадр анимации и применять это все к объекту
у меня такая идея, создать ползунок в виде html элементов, повешать на них события зажатия и отжатия кнопки мыши, и получать из ползунка значение и подставлять в массив с функцией которая возращает кадр анимации и применять это все к объекту