Плоская кнопка. Подскажите как реализовать в блендере
22 февраля 2018 14:09
Подскажите в каком направлении копать… Нужно реализовать пару кнопок, для переключения анимации/камеры/текстуры.
Я глянул, что можно через Anchor попытаться это сделать, задать стили и используя API управлять объектами в сцене отслеживанием нажатия onclick function и т. д. Но для меня это пока проблема, т. к. я только начал разбираться с blend4web и блендером вообще, поэтому в код особо лезть не хочется.
С логикой blend4web уже разобрался. Можно ли как-то средствами блендера (без написания стилей и скриптов для кнопок) реализовать простые 2д кнопки, зафиксировать в одном положении на экране и обрабатывать через узловую логику?
Т. е. проблема в том, чтоб закрепить интерфейс с кнопками поверх сцены…
Спасибо.
Я глянул, что можно через Anchor попытаться это сделать, задать стили и используя API управлять объектами в сцене отслеживанием нажатия onclick function и т. д. Но для меня это пока проблема, т. к. я только начал разбираться с blend4web и блендером вообще, поэтому в код особо лезть не хочется.
С логикой blend4web уже разобрался. Можно ли как-то средствами блендера (без написания стилей и скриптов для кнопок) реализовать простые 2д кнопки, зафиксировать в одном положении на экране и обрабатывать через узловую логику?
Т. е. проблема в том, чтоб закрепить интерфейс с кнопками поверх сцены…
Спасибо.
22 февраля 2018 16:21
Почему вы не хотите сделать html кнопки? А если нужна нодовая логика то нажатие на html элемент можно контролировать нодой JS callback
22 февраля 2018 16:21
Подскажите в каком направлении копать… Нужно реализовать пару кнопок, для переключения анимации/камеры/текстуры.Добрый день!
Я глянул, что можно через Anchor попытаться это сделать, задать стили и используя API управлять объектами в сцене отслеживанием нажатия onclick function и т. д. Но для меня это пока проблема, т. к. я только начал разбираться с blend4web и блендером вообще, поэтому в код особо лезть не хочется.
С логикой blend4web уже разобрался. Можно ли как-то средствами блендера (без написания стилей и скриптов для кнопок) реализовать простые 2д кнопки, зафиксировать в одном положении на экране и обрабатывать через узловую логику?
Т. е. проблема в том, чтоб закрепить интерфейс с кнопками поверх сцены…
Спасибо.
Можно воспользоваться настройками Viewport Alignment для объектов
22 февраля 2018 17:50
23 февраля 2018 08:14
Ответ на сообщение пользователя Михаил БеззубиковЯ уже наученный опытом… Я майщик… Блендер единственный 3д софт, который меня пощадил (были попытки с КСИ, Максом) ))) И я вроде даже как свыкся с ним )) Но по собственному опыту - я предпочитаю изучать что-то долями. Т. е. не лезть сразу и везде, а идти от простого к сложному (хотя это в принципе и не сложно скорее всего)… Просто хочется понять можно ли это сделать чисто визуальными инструментами без кода?
Почему вы не хотите сделать html кнопки? А если нужна нодовая логика то нажатие на html элемент можно контролировать нодой JS callback
У меня был опыт по изучению майки в 04 году, когда я сходу забурился в MEL (т. к. программирование в то время для меня было ближе и я пытался идти в сторону создания эффектов используя партиклы и флюиды) в итоге получилась такая каша, которая меня отбросила скорее назад. С того времени у меня простое правило в изучении новых технологий - идти от простого к сложному закрепляя знания экспериментально.
23 февраля 2018 08:21
Ответ на сообщение пользователя ice99Спасибо за подсказку, а blend4web позволяет сразу отправить на хардваррендер несколько вьюпортов? (пока не читал вашу ссылку, но на заметку взял)
Пробовал - надписи получаются заблюренными. Даже тему как-то создавал на форуме. Для больших кнопок пойдёт, а если на 3В-кнопке текстура с текстом - выглядит плохо. Оптимально - html.
23 февраля 2018 08:27
23 февраля 2018 08:31
23 февраля 2018 11:05
Еще вопрос, понимая логику API… В JS как мы обращаемся к объекту? Например у меня в сцене есть меш с именем cube. Как мне его потрогать из JS? Если можно, то буду благодарен за пример простой конструкции с пояснениями. СпасибоЕсли хотите потрогать из консоли, то для этого создается глобальный объект b4w. Должно выглядеть примерно так:
b4w.scenes.get_object_by_name("cube")
В коде это лучше всего делать через require. Посмотрите как это делается в приложении simple_app, поставляемом в sdk.
Любопытно, где можно узнать об этом подробнее?есть несколько уроков, но по-моему только на английском.
Выступление с B4W конференции: https://www.youtube.com/watch?v=dWEHg5Yzcys&feature=youtu.be&t=1113
API: https://www.blend4web.com/api_doc/module-logic_nodes.html#.append_custom_callback
Статья на русском: https://www.blend4web.com/ru/community/article/352/
Урок на английском: https://www.youtube.com/watch?v=xSMShlFXAu0
Александр (команда Blend4Web)
twitter
02 марта 2018 08:18
Решил пробовать через HTML
Сразу появился вопрос.
В html есть кнопка и стиль к ней:
В JS создаю обработчик:
function load_cb(data_id, success) {
if (!success) {
console.log("b4w load failure");
return;
}
m_app.enable_camera_controls();
$('#tester').click(function(){
// alert('ok');
});
}
Теперь как мне сконнектить 3д сцену с этой функцией?
Т. е. чтоб по нажатию по кнопке запускалась например нодовая логика или проигрывание/остановка???
https://www.blend4web.com/ru/community/article/352/
Эту статью читал, но не могу врубиться, как поменять направление управления. Т. е. не когда событие происходит в сцене, а наоборот передать его в сцену.
Т. е. output[0] отправляется в сцену как я понял???
function node_cb(input,output) {
console.log (input[0]);
output[0] = " Hey Logic!";
}
Если управление сценой создается напрямую из JS типа этого:
b4w.require("project1_main").inherit_mat("Sphere.001", "chrome");
То где посмотреть перечень всех возможностей?
Как мне например по клику на кнопку остановить анимацию? Или перепрыгнуть на нужный кадр?
Сразу появился вопрос.
В html есть кнопка и стиль к ней:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<link rel="stylesheet" href="izuran_slider.css" type="text/css">
<script type="text/javascript" src="b4w.simple.min.js"></script>
<script type="text/javascript" src="jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="izuran_slider.js"></script>
<style>
#tester {
position: absolute;
z-index: 1000;
background-color: #ffa201;
border-radius: 5px;
color: #000;
cursor: pointer;
top: 200px;
left: 400px;
width:200px;
height: 30px;
line-height: 30px;
text-align: center;
}
</style>
</head>
<body>
<div id="tester"> button </div>
<div id="main_canvas_container"></div>
</body>
</html>
В JS создаю обработчик:
function load_cb(data_id, success) {
if (!success) {
console.log("b4w load failure");
return;
}
m_app.enable_camera_controls();
$('#tester').click(function(){
// alert('ok');
});
}
Теперь как мне сконнектить 3д сцену с этой функцией?
Т. е. чтоб по нажатию по кнопке запускалась например нодовая логика или проигрывание/остановка???
https://www.blend4web.com/ru/community/article/352/
Эту статью читал, но не могу врубиться, как поменять направление управления. Т. е. не когда событие происходит в сцене, а наоборот передать его в сцену.
Т. е. output[0] отправляется в сцену как я понял???
function node_cb(input,output) {
console.log (input[0]);
output[0] = " Hey Logic!";
}
Если управление сценой создается напрямую из JS типа этого:
b4w.require("project1_main").inherit_mat("Sphere.001", "chrome");
То где посмотреть перечень всех возможностей?
Как мне например по клику на кнопку остановить анимацию? Или перепрыгнуть на нужный кадр?