События

О якорях по-простому. Разбираемся с выводом аннотаций

2017-04-03

Работая с трехмерной графикой, поневоле начинаешь мыслить ее категориями. А что, удобно. Любую мысль можно воплотить в объеме, снабдить объект красочным материалом, добавить анимации и.… эх, развернись душа художника!

Вот только, некоторые простые задачи начинают выглядеть излишне сложными именно при реализации их в трехмерном пространстве. Возьмем конкретно, текст. Многие знают, что в Blender можно с легкостью создавать надписи. Есть даже нечто вроде трехмерного текстового редактора с выбором шрифтов, их начертаний, всевозможных отступов и всего остального. Мало того, Blend4Web прекрасно понимает текстовые объекты Blender и успешно их отображает в веб-браузере. Но нужно помнить, что эти объекты — самые обычные трехмерные модели, которые имеют массу ограничений именно для такого использования. Кто не поверил, вот список вполне реальных минусов:

1. Излишний объем. Каждая буква в трехмерном исполнении — это отдельный объект с массой вершин. А если у вас их сотни?

2. Низкое качество. Вы можете схитрить и создать уже готовую текстуру с надписью для обычной плоскости. Вот только выглядеть такой текст будет не очень, особенно на расстоянии.

3. Гибкость в изменении. Забудьте об этом сразу.

Для вывода текста гораздо удобнее было бы использовать сам текст, ну например, как я сейчас набираю его в редакторе.

Что... Вы что-то сказали про Canvas? О да, такая возможность есть. Можно прекрасно писать текст на канве, используя стандартные возможности HTML5. Это несложно, но медленно. WebGL буквально прорисовывает на холсте буковки, что более затратно по времени, нежели выводить текст средствами веб-браузера.

Blend4Web предлагает свой механизм, объединяющий быстроту работы рендера браузера и легкость использования в трехмерном пространстве.

Быстро и просто

В наборе демонстраций Blend4Web есть замечательное приложение Planetarium. Наша солнечная система представлена качественно выполненными моделями планет, кружащимся вокруг Солнца.

Интерес представляют интерактивные текстовые подписи. Каждая из них «привязана» к своей планете. Если щелкнуть по названию, то открывается дополнительная текстовая информация. Ну и они просто стильно выглядят.

Все начинается с Якоря. Его величество Якорь будет надежно удерживать вашу двухмерную надпись в объемном море сцены...

Как вы, наверное, уже догадались, Якорь — это специальный объект в сцене Blender. Его назначение в указании точки, где будет демонстрироваться текст. Например, в приложении Planetarium «якоря» жестко привязаны к своим планетам и двигаются вместе с ними.

В качестве якоря нужно использовать объект Empty. На иллюстрации выше он находится у полюса Сатурна. Добавить в сцену его можно из меню Add | Empty | Plain Axes (меню вызывается горячими клавишами Shift+A).

Если вы хотите, чтобы якорь был жестко привязан к конкретному объекту, то следует создать связь «родитель-потомок». Для этого выделите Empty, затем добавьте к нему корневой объект (удерживайте при этом клавишу Shift) и нажмите Ctrl+P.

Сам по себе Empty ничего не значит. Чтобы текст отображался в окне браузера, нужно включить опцию Enable Anchor в панели Object для Empty. Обязательно убедитесь, что в поле Type установлен режим работы Annotation. Сама текстовая информация хранится в группе Meta Tags.

Важно запомнить простые правила работы с якорями:

1. Если выключена опция Meta Tags, то название для якоря берется из названия объекта Empty.

2. В режиме работы Annotation используется встроенный дизайн якорей.

3. Если заполнить поле Description информацией, то щелчок по названию якоря в окне браузера отобразит текст в дополнительной панели.

4. Поле Description может содержать только текстовую информацию. Не стоит пытаться размещать в нем изображения, ссылки или код в iframe.

Есть еще одна интересная опция Detect Visibility в панели Anchors. Чтобы понять, в чем ее смысл гляньте на иллюстрацию ниже.

Здесь объект Mars скрылся за солнцем и его не видно. Однако якорь с названием все равно имеется. В некоторых случаях это оправдано, но бывает требуется скрывать якоря, когда объект становится невидимым для камеры. Именно для этого служит опция Detect Visibility.

Режим эксперта

Предложенный разработчиками способ вывода текста очень простой и удобный, имеет красивый дизайн, а также функциональность. Но он достаточно жестко ограничен в использовании. Поэтому рассмотрим вариант создания собственного дизайна.

И здесь все выглядит очень просто. Вы работаете с тем же якорем, только в настройках панели Anchors нужно выбрать пункт Custom Element. С этого момента все заботы о дизайне перекладываются на вас. Только добавьте в поле HTML Element ID свой ID нужного элемента.

Все остальное делается уже средствами HTML, CSS и JavaScript. Здесь уже нет каких-либо ограничений.

Давайте попробуем сделать простенький вывод текста для якоря. Допустим, вывести какой-либо текст на фоне.

Сначала определим в файле HTML место для нового элемента. Учтите, что находится он должен ниже контейнера с Canvas:

<body>
  <div id="main_canvas_container"></div>
  <div id="my_design">This is my Anchor!</div>
</body>

В качестве ID используется название my_design. Именно его следует поместить в поле HTML Element ID (см. рис. выше).

Добавить в CSS описание элемента. Я немного поигрался с цветами фона и текста:

#my_design {
  position: absolute;
  background-color: #ffa201;
  border-radius: 5px;
  color: #000;
  font-weight: bold;
  box-shadow: 0 0 4px 2px #a94c00;
}

В итоге мой якорь стал выглядеть так.

Теперь усложним задачу. Добавим возможность открытия окна с описанием щелчком мыши по названию якоря.

Немного изменим файл HTML, добавив туда новый элемент для дополнительного окна:

<body>
  <div id="main_canvas_container"></div>
  <div id="my_design">This is my Anchor!
	<div id="my_design_child"> Oh, yes! I see it...</div>
  </div>
</body>

А также расширим CSS:

#my_design {
  cursor: pointer;
  position: absolute;
  background-color: #ffa201;
  border-radius: 5px;
  color: #000;
  font-weight: bold;
  box-shadow: 0 0 4px 2px #a94c00;
  display: none;
}
#my_design_child {
  position: absolute;
  top: 30px;
  background-color: #000;
  background-size: cover;
  height: 100px;
  border-radius: 5px;
  color: #ffa201;
  font-weight: bold;
  box-shadow: 0 0 4px 2px #a94c00;
  display: none;
}

Посмотрите внимательно на блоки CSS. Помимо всяких украшательств появились новые поля display. Именно с их помощью можно управлять показом блоков. Первоначально эти блоки выключены. Кстати, не пытайтесь использовать для контролирования видимости блока такое свойство CSS, как visibility. Оно полностью остается под контролем движка Blend4Web.

А теперь немного кода на JavaScript...

Весь код я разместил в функции load_cb, которая вызывается, когда выполнена загрузка сцены (стандартная заготовка JavaScript, генерируемая при создании нового проекта).

Находим нужные элементы HTML:

var my_design = document.getElementById("my_design");
var my_design_child = document.getElementById("my_design_child");

Включаем демонстрацию названия якоря:

my_design.style.display = "block";

Добавляем событие «click» к первому блоку. Теперь при щелчке мышью по названию якоря будет вызываться указанная функция, где происходит переключение видимости второго блока:

    my_design.addEventListener("click", function() {
		if (my_design_child.style.display == "block") {
			my_design_child.style.display = "none";	
		} else {
			my_design_child.style.display = "block";
		}
		
    }, false);

В целом у меня вышло следующее:

Как видите, режим работы якоря Custom Element полностью развязывает ваши руки и вы можете создавать GUI любой сложности. Все ограничивается только вашей фантазией.

Ссылка на проект.

Комментарии
15 мар. 2023 09:39
S10F S10H, suggesting that U2af1 S34F may be involved in the initiation but not the maintenance of AML <a href=http://zithromax.buzz>chlamydia treatment azithromycin</a>
29 июн. 2023 11:57
<a href=https://cialiss.buzz>cialis buy online</a> In Van Blerkom J, editor
26 июл. 2023 00:57
Microgaming is the world's first open online service provider. Microgaming has been around since 1994 and is still going strong until now providing the latest gacor slots Togel Deposit Pulsa slot server vietnam Slot Jepang demo mahjong pyramid bonanza slot demo bonanza gampang jp slot kakek petir slot hoki asia slot singapore starlight princess slot slot depo dana akun pro hongkong lucky neko demo kakek jp slot demo zeus kakek zeus slot slot olympus zeus agen slot online hoki slot gacor akun jp slot sdy slot agen gacor slot sering maxwin Gacor 5000 Gacor888 pasar jackpot slot dana gacor slot gacor maxwin slot petir pusat judi online SLOT LAPAK PUSAT SLOT LUAR NEGRI GACOR akun pro myanmar maxwin receh situs slot terbaru akun pro taiwan link slot zeus slot resmi gacor joker123 slot stusgampang maxwin data togel taiwan slot yang lagi gacor menang slot online situs judi resmi dewa4d daftar akun slot situsdeposit10k judilapakpusat perkumpulan info slot gacor raja slot 44 slot resmi terpercaya daftar olympus slot slot petir merah slot bet 200 kumpulan slot gacor bocoran slot admin riki slot sweet bonanza pagcor slot Zeus Slot Pragmatic Link Demo Slot slot555 link slot thailand bo slot terpercaya Slot 777 Gacor akun pro swiss toto slot gacor demo bonanza Xmas zeus gacor lapak zeus pay4dslot.asia slot mahjong akun pro rusia demo bonanza gold slot123 ada 777 slot slot mania olympus pulsa88 main slot 508 slot modal receh dewa slot 888 juara olympus dewa slot 777 slot promo situs slot terbesar agen asia ayam slot admin agus slot slot spain slot amerika slot filipina pragmatic128 data togel japan
26 июл. 2023 00:57
Togel Deposit Pulsa slot server vietnam Slot Jepang demo mahjong pyramid bonanza slot demo bonanza gampang jp slot kakek petir slot hoki asia slot singapore starlight princess slot slot depo dana akun pro hongkong lucky neko demo kakek jp slot demo zeus kakek zeus slot slot olympus zeus agen slot online hoki slot gacor akun jp slot sdy slot agen gacor slot sering maxwin Gacor 5000 Gacor888 pasar jackpot slot dana gacor slot gacor maxwin slot petir pusat judi online SLOT LAPAK PUSAT SLOT LUAR NEGRI GACOR akun pro myanmar maxwin receh situs slot terbaru akun pro taiwan link slot zeus slot resmi gacor joker123 slot stusgampang maxwin data togel taiwan slot yang lagi gacor menang slot online situs judi resmi dewa4d daftar akun slot situsdeposit10k judilapakpusat perkumpulan info slot gacor raja slot 44 slot resmi terpercaya daftar olympus slot slot petir merah slot bet 200 kumpulan slot gacor bocoran slot admin riki slot sweet bonanza pagcor slot Zeus Slot Pragmatic Link Demo Slot slot555 link slot thailand bo slot terpercaya Slot 777 Gacor akun pro swiss toto slot gacor demo bonanza Xmas zeus gacor lapak zeus pay4dslot.asia slot mahjong akun pro rusia demo bonanza gold slot123 ada 777 slot slot mania olympus pulsa88 main slot 508 slot modal receh dewa slot 888 juara olympus dewa slot 777 slot promo situs slot terbesar agen asia ayam slot admin agus slot slot spain slot amerika slot filipina pragmatic128 data togel japan
26 июл. 2023 00:58
Togel Deposit Pulsa slot server vietnam Slot Jepang demo mahjong pyramid bonanza slot demo bonanza gampang jp slot kakek petir slot hoki asia slot singapore starlight princess slot slot depo dana akun pro hongkong lucky neko demo kakek jp slot demo zeus kakek zeus slot slot olympus zeus agen slot online hoki slot gacor akun jp slot sdy slot agen gacor slot sering maxwin Gacor 5000 Gacor888 pasar jackpot slot dana gacor slot gacor maxwin slot petir pusat judi online SLOT LAPAK PUSAT SLOT LUAR NEGRI GACOR akun pro myanmar maxwin receh situs slot terbaru akun pro taiwan link slot zeus slot resmi gacor joker123 slot stusgampang maxwin data togel taiwan slot yang lagi gacor menang slot online situs judi resmi dewa4d daftar akun slot situsdeposit10k judilapakpusat perkumpulan info slot gacor raja slot 44 slot resmi terpercaya daftar olympus slot slot petir merah slot bet 200 kumpulan slot gacor bocoran slot admin riki slot sweet bonanza pagcor slot Zeus Slot Pragmatic Link Demo Slot slot555 link slot thailand bo slot terpercaya Slot 777 Gacor akun pro swiss toto slot gacor demo bonanza Xmas zeus gacor lapak zeus pay4dslot.asia slot mahjong akun pro rusia demo bonanza gold slot123 ada 777 slot slot mania olympus pulsa88 main slot 508 slot modal receh dewa slot 888 juara olympus dewa slot 777 slot promo situs slot terbesar agen asia ayam slot admin agus slot slot spain slot amerika slot filipina pragmatic128 data togel japan
31 май. 2024 03:19
I still didn t get pregnant <a href=http://cialis.lat/discover-the-best-prices-for-cialis>cialis for sale online</a>
17 июн. 2024 09:38
Привет! Начнем наше сотрудничество с ентузиазмом.


Добрый день! Ваше предложение должно быть замечено. Воспользуйтесь нашим сервисом рассылок по формам обратной связи и убедитесь в его эффективности. Это ваш инструмент к успешным продажам!


Спасибо за интерес к нашему предложению. Пожалуйста, посетите наш сайт и передайте информацию вашему руководителю. Желаем вам успехов в делах!

Ждем вашего ответа: Сайт: http://formsait.tilda.ws Почта: marketing.trafik@mail.ru

Быстро и эффективно: рассылки через формы обратной связи.
17 июн. 2024 17:54
Откройте для себя секреты психологии воздействия текста на аудиторию и научитесь создавать эмоционально насыщенные тексты.

Наш курс копирайтинга предназначен для тех, кто хочет быстро и эффективно освоить одно из самых востребованных направлений современного маркетинга. Вы узнаете, как писать тексты для вебсайтов, социальных сетей и рекламных кампаний. Начните новую профессиональную главу с нами! Хотите стать мастером слова? Вступайте в наше сообщество YL-агентства и получайте самые актуальные советы от гуру копирайтинга, редактуры и контент-маркетинга. Ваши тексты станут незабываемыми!

Станьте частью нашего сообщества ВКонтакте и делитесь своим мнением: vk.com/ylcontent.

Словами мы рисуем – бизнес новый надвигаем. Копирайтер классный, нов – успех мы создаем.
22 июн. 2024 09:38
Приветствуем Вас! Надеемся, нашем сотрудничестве удастся достичь больших высот!


Увеличьте количество своих клиентов с помощью нашей услуги рассылок по формам обратной связи. Это легкий, эффективный и доступный способ увеличения вашей аудитории при помощи интернет-маркетинга .


Мы рады, что вы рассмотрели наше предложение! Пожалуйста, посетите наш сайт для получения более полной информации или передайте это письмо вашему руководителю. Пусть ваши дела идут успешно!

Присоединяйтесь: Сайт: http://formos.tilda.ws Почта: marketing.trafik@mail.ru

На шаг впереди конкурентов: эффективное использование форм обратной связи.
14 авг. 2024 04:35
Привет! Рады предложить Вам свои услуги и обсудить перспективы партнерства!


Читаете это сообщение? Ваши клиенты могут сделать то же самое! Воспользуйтесь нашей рассылкой по формам обратной связи и сделайте ваш бизнес заметным. Простой шаг к большим результатам!


Спасибо за вашу открытость и интерес к нашему предложению. Надеемся, оно станет началом успешного сотрудничества. Желаем удачи и больших достижений вашему бизнесу. Пожалуйста, передайте это письмо руководителю компании или ознакомьтесь с нашим сайтом.

Не медлите: Сайт: http://formsait.tilda.ws Почта: marketing.trafik@mail.ru

Достигайте целевых клиентов через рассылку по формам обратной связи!
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.