Форум

Плоская кнопка. Подскажите как реализовать в блендере

22 февраля 2018 14:09
Подскажите в каком направлении копать… Нужно реализовать пару кнопок, для переключения анимации/камеры/текстуры.
Я глянул, что можно через 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 для объектов
Команда Blend4Web - разработчик
Twitter
LinkedIn
22 февраля 2018 17:50
Можно воспользоваться настройками Viewport Alignment для объектов
Пробовал - надписи получаются заблюренными. Даже тему как-то создавал на форуме. Для больших кнопок пойдёт, а если на 3В-кнопке текстура с текстом - выглядит плохо. Оптимально - html.
23 февраля 2018 08:14
Ответ на сообщение пользователя Михаил Беззубиков
Почему вы не хотите сделать html кнопки? А если нужна нодовая логика то нажатие на html элемент можно контролировать нодой JS callback
Я уже наученный опытом… Я майщик… Блендер единственный 3д софт, который меня пощадил (были попытки с КСИ, Максом) ))) И я вроде даже как свыкся с ним )) Но по собственному опыту - я предпочитаю изучать что-то долями. Т. е. не лезть сразу и везде, а идти от простого к сложному (хотя это в принципе и не сложно скорее всего)… Просто хочется понять можно ли это сделать чисто визуальными инструментами без кода?
У меня был опыт по изучению майки в 04 году, когда я сходу забурился в MEL (т. к. программирование в то время для меня было ближе и я пытался идти в сторону создания эффектов используя партиклы и флюиды) в итоге получилась такая каша, которая меня отбросила скорее назад. С того времени у меня простое правило в изучении новых технологий - идти от простого к сложному закрепляя знания экспериментально.
23 февраля 2018 08:21
Ответ на сообщение пользователя ice99
Пробовал - надписи получаются заблюренными. Даже тему как-то создавал на форуме. Для больших кнопок пойдёт, а если на 3В-кнопке текстура с текстом - выглядит плохо. Оптимально - html.
Спасибо за подсказку, а blend4web позволяет сразу отправить на хардваррендер несколько вьюпортов? (пока не читал вашу ссылку, но на заметку взял)
23 февраля 2018 08:27
Еще вопрос, понимая логику API… В JS как мы обращаемся к объекту? Например у меня в сцене есть меш с именем cube. Как мне его потрогать из JS? Если можно, то буду благодарен за пример простой конструкции с пояснениями. Спасибо
23 февраля 2018 08:31
Почему вы не хотите сделать html кнопки? А если нужна нодовая логика то нажатие на html элемент можно контролировать нодой JS callback
Любопытно, где можно узнать об этом подробнее?
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 есть кнопка и стиль к ней:

<!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");
То где посмотреть перечень всех возможностей?
Как мне например по клику на кнопку остановить анимацию? Или перепрыгнуть на нужный кадр?
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.