Норвегия и Лофотены — первое место, куда нам захотелось приехать еще раз. Захотелось, еще пока мы были там.
В тот раз мы приехали в Цей на 2 дня, и оба дня гуляли в окрестностях реки Цей. В первый день погода была необычная для этих мест — почти полностью ясно и солнечно. А во второй день спустились облака, шел мелкий дождик, который то прерывался, то снова начинал. Поэтому дождевики нам пригодились — брали их с собой совсем не зря.
Недалеко от альплагеря
В окрестностях альплагеря мы гуляли в первый день, тогда же я немного поснимал квадрокоптером. Первые две фотографии сделаны как раз в этот день. Первое фото — Сказский ледник. Это ущелье — горнолыжный склон. В сезон, конечно.
Но и пешком там погулять можно. Второе фото — один из видов в ущелье. Третье — урочище, на которое нельзя ходить женщинам.
Ура! Ксюша наконец смонтировала наше видео о поездке на Лофотенские острова летом 2019 года. Оно целиком и полностью снято на мобильные телефоны. Ничего содержательного вы в нём не найдёте, но настроение — надеюсь, есть :)
Читать далее: Поездка на Лофотенские острова (видео)Ну а если вам интересен подробный рассказ и фотографии, переходите сюда:
Плато Шаджатмаз — одна из промежуточных видовых точек по пути в Джилы-Су. К востоку от дороги находится видовая площадка, а к западу — обсерватория Шаджатмаз. И если на территории обсерватории делать нечего, то видовая площадка мне очень даже нравится. Даже несмотря на то, что двуногие уроды загадили ее окурками, влажными салфетками и бутылками.
Подробнейшее руководство — видео продолжительностью больше часа. Надеюсь, оно закроет все вопросы.
В этом видео я показал на примере сборки одной панорамы следующие действия:
Несколько дней назад в Пятигорск, где я отдыхаю (занимаюсь ремонтом), приехал хороший питерский друг. Собирался в наши края он года два, поэтому программа мной была предложена насыщенная. В частности, съездили в Джилы-Су, и я вновь увидел это место чужими глазами. Чужие глаза это такие глаза, которые позволяют тебе оказаться в знакомом месте вновь как в первый раз.
Список панорам с превьюшками
Да! Именно этого нам и не хватало, правда? Списка панорам с превьюшками. 21 сентября krpano обновил плагин combobox, и теперь не нужно колхозить какие-то собственные решения, а можно пользоваться этой фишкой «из коробки».
Чтобы добавить себе такой список, сделайте следующее:
1. Убедитесь, что в вашей папке plugins есть файл combobox.xml
2. Подключите в коде tour.xml плагин combobox.xml
<include url="%SWFPATH%/plugins/combobox.xml" />
3. Добавьте в код tour.xml вызов комбобокса:
<combobox name="cbscenes" design="vtour" align="lefttop" x="10" y="10" onloaded="add_scene_items();" />
Здесь вы можете менять дизайн. По умолчанию доступен default и vtour (последний на скришноте выше), но вы также можете оформить список на свой вкус. Например, можно добавить в код следующее:
<combobox_design name="rounded" margin="3" open_close_speed="0.25"> <style name="combobox_container_style" bgcolor="0xFFFFFF" bgalpha="0.95" bgborder="1 0xFFFFFF 0.5" bgroundedge="5" bgshadow="2 4 20 0x000000 0.5" /> <style name="combobox_marker_style" css="color:#999999;" bg="false" txtshadow="" /> <style name="combobox_item_style" css="color:#222222;" padding="4 4" bg="false" bgcolor="0xCCCCCC" bgalpha="1.0" bgroundedge="3" txtshadow="" onoveritem="set(css, 'color:#2277FF;');" onoutitem="set(css, 'color:#222222;');" /> </combobox_design>
Далее, указав design=»rounded» , вы получите следующее оформление списка панорам:
На настройках заострять внимание не буду, скажу лишь что они очень схожи с тем, что имеет в своём арсенале стандартный скин krpano.
4. Добавьте в код tour.xml функцию, которая создаёт список панорам с превьюшками:
<action name="add_scene_items" scope="local"> for(set(i,0), i LT scene.count, inc(i), caller.additem(calc('[img src=[dq]' + scene[get(i)].thumburl + '[dq] style=[dq]border:1px solid rgba(255,255,255,0.5);width:64px;height:48px;vertical-align:middle;margin-right:8px;[dq]/] '+scene[get(i)].title), calc('loadscene('+i+',null,MERGE,BLEND(0.5))') ); ); </action>
Здесь вы также можете вносить изменения в соответствии с синтаксисом CSS. Вся эта строка редактируема:
border:1px solid rgba(255,255,255,0.5);width:64px;height:48px;vertical-align:middle;margin-right:8px;
Подробнее про CSS читайте в гугле.
5. Проделав всё это и не ошибившись ни разу, вы получите список панорам, и вот что вышло у меня.
Как вставить ваш логотип в krpano?
Не успели вы сделать тур, как хочется зарядить в него побольше ссылок на себя любимого? Что ж, постараюсь вам помочь в этом нелёгком деле.
Всё, что вам нужно знать — layer. Это переводится как «слой». Так в krpano называют контейнер, который:
- может иметь цвет, прозрачность, быть активным или неактивным, скрываться, показываться и менять размеры
- может реагировать на события (наведение, клик и т.д.)
- привязан к координатам окна с панорамой (X и Y), и позиционируется относительно его углов или центра
- может содержать в себе изображения
Вот последний пункт нас как раз интересует.
1. Подготовьте изображение с вашим логотипом. Желательно чтобы это был PNG файл с прозрачностью. Например, ваша компания Google. Отлично, можем взять её логотип и вставить в панораму. Если у вас пока что нет своей картинки, возьмите эту:
2. Положите это изображение в папку с туром. А чтобы был порядок, пусть это будет папка skin.
3. Создайте контейнер <layer></layer> в вашем tour.xml и добавьте в него несколько переменных:
<layer name="mylogo" url="%SWFPATH%/skin/logo.png" keep="true" />
Если вы забыли, плейсхолдер %SWFPATH% заставляет krpano отсчитывать иерархию папок начиная от корневого каталога, где лежит ваш swf файл. name — просто название контейнера, оно не должно начинаться с цифры, содержать пробелов, спецсимволов и кириллицы. keep — boolean атрибут, который отвечает за сохранность вашего логотипа при переходе от одной панорамы к другой. Ну что, давайте посмотрим что вышло…
А вышла какая-то дичь. Но так и должно было быть, мы ведь не уменьшили заранее картинку, не указали её место в панораме, ну и вообще.
4. Причешите внешний вид логотипа:
<layer name="mylogo" url="%SWFPATH%/skin/logo.png" keep="true" align="topright" x="10" y="10" edge="topright" alpha="0.8" scale="0.2" />
align — атрибут, указывающий на расположение объекта на экране. В нашем случае topright — выравнивание относительно правого верхнего угла. Есть также:
- x и y — отступы от точки привязки (в нашем случае правый верхний угол). Исчисляются в пикселях или в процентах.
- edge — до какой точки контейнера замерять отступы x|y. Или, иными словами, точка симметрии. Давайте представим, что изображение выровнено по центру (align=»center» x=»0″ y=»0″). Тогда:
- edge=»center» — контейнер будет находиться строго в центре
- edge=»topleft» — верхний левый угол контейнера в центре экрана, остальной контейнер правее и ниже
- edge=»bottom» — середина нижней грани контейнера в центре экрана, весь контейнер выше середины
- Возможны и другие варианты (top, topright, right, bottomright, bottom, bottomleft, left, topleft, center).
- alpha — непрозрачность контейнера. 1 — непрозрачный, 0 — полностью прозрачный
- scale — масштабирование контейнера. 1 — 100% размер, 0.5 — 50% размер, 0.1 — 10% размер.
5. Добавьте логотипу несколько событий
<layer name="mylogo" url="%SWFPATH%/skin/logo.png" keep="true" align="topright" x="10" y="10" edge="topright" alpha="0.8" scale="0.2" onclick="openurl(https://pavelbogdanov.ru,_blank);" onover="tween(scale,0.25); tween(alpha, 1);" onout="tween(scale,0.2); tween(alpha, 0.8);" />
- onover — при наведении мыши
- onout — мышка ушла за пределы объекта
- onclick — по щелчку
Что же значат эти конструкции onover=»tween(scale,0.25); ? Функция tween вызывается при наступлении события onover (наведение мыши). Будучи вызванной 1 раз, tween плавно приводит значение атрибута scale к 0.25, делая это в течение секунды. Поскольку событие вложено в контейнер mylogo, то и результат его действий распространяется только на этот контейнер. Если вы хотите, что бы при наведении мышки на логотип менялся какой-то другой контейнер, вы должны сделать так: onover=»tween(layer[xxx].scale,0.25); где xxx — атрибут name того контейнера, к которому вы хотите применить это действие.
Функция tween может менять значения числовых переменных, точно так же она меняет прозрачность контейнера: tween(alpha, 1);
Если вы хотите, чтобы при наведении курсора на изображение выполнялось несколько функций, просто поместите их через точку с запятой: onover=»tween(scale,0.25); tween(alpha, 1);»
При вызове одиночной функции точка с запятой не обязательна: onover=»tween(scale,0.25)»
Так выглядит мой тур с логотипом.
Добавляем в виртуальный тур загрузчик
Давайте не будем всё усложнять. Просто откройте папку viewer\examples в вашем дистрибутиве krpano и найдите там всё необходимое. А именно, папку с названием loading-progress, в которой уже лежат рабочие примеры загрузчиков.
И ничего изобретать не нужно :) А вот как всё это работает на сайте krpano.
Чтобы сделать у себя полосу загрузки, просто добавьте в папку со своим туром один из трёх файлов или все три сразу:
Ну и не забудьте, что для анимированной загрузки нужно изображение в формате png.
Напомню! Эти файлы уже есть у вас в папке krpano\viewer\examples!
Подключаются файлы просто:
<include url="loading.xml" />
А вот что у меня получилось.
Внимание! Все приведённые здесь методы, функции и фишки — бледная тень того, что можно сделать на krpano. Помните об этом и читайте документацию krpano!
Долго я не делал эту статью, поскольку наивно полагал, что всё тут и так очевидно. Но, как оказалось, да: всё очевидно, но совсем не так. В заметке я расскажу, как просто и тупо добавить ваш созданный в krpano тур на ваш же сайт.
1. Вам нужен сайт
Нет, вы можете, конечно, пользоваться всякими viewat.org, 360cities.net или хранить панорамы в Просмотре улиц от Google (как добавить панораму в Просмотр улиц). Я тоже когда-то пользовался 360cities и viewat, вот только прошло время, и все панорамы, вставленные на мой сайт с 360cities, перестали работать. А Viewat поступил ещё более гадко — просто заменил мои панорамы какими-то непонятными левыми. Где гарантия, что у вас не гавкнутся панорамы, размещённые в Google?
Поэтому вам и нужен свой сайт.
2. К сайту нужен доступ через FTP
Да, есть другие варианты, но я рассмотрю именно этот — самый простой и банальный. Кроме того, вы должны знать, в какой именно папке должны храниться файлы на вашем сервере. Ответить на этот вопрос поможет документация вашего хостинга или техподдержка. Например, в моём случае это папка httpdocs. Но ваша папка может называться htdocs, public_html, может содержать имя вашего сайта, да и вообще я понятия не имею, как она называется. Это ваша забота, разобраться с этим.
Открыв папку, вы, вероятно, увидите там кучу разных файлов. Особенно если у вас уже есть работающий сайт, то вот именно здесь он и лежит. Вот корневая папка одного из моих сайтов, вам тоже нужно найти корневую папку своего сайта:
3. Создайте отдельную папку (каталог), где будете хранить свои туры
Я назвал её pano, но тут уж ваша воля выбирать имя. Однако, советую не делать длинных имён, отказаться от кириллицы и пробелов. Я вас предупреждал.
4. Открыв эту папку, загрузите туда целиком папку вашего тура
Хорошая примета — давать папкам с турами сразу осмысленные имена, без кириллицы, пробелов и дурацких сочетаний символов.
5. Теперь ваш тур будет открываться по адресу:
http://вашсайт.ру/pano/test/tour.html
И да, этот адрес придётся писать в браузере ручками. Уже неплохо, но не очень красиво. Давайте сделаем адрес немного красивее.
6. Просто переименуйте tour.html в index.html
После такой процедуры ваш тур будет открываться по адресу http://вашсайт.ру/pano/test/ — что смотрится приятнее, согласитесь?
7. Встройте ваш тур на сайт
Самый простой (и верный) способ — просто поставить ссылку на тур. Например, можете разместить на странице сайта изображение тура и сделать с этого изображения ссылку на http://вашсайт.ру/pano/test/ — такой тур будет открываться на весь экран, будет нормально смотреться на мобильных и ПК.
Второй способ. Если ваш тур должен открываться на странице, а вы не особо хотите заморачиваться, используйте iframe:
<iframe src="http://вашсайт.ру/pano/test/" width="900" height="500"> Что-нибудь, что увидит пользователь, если у него браузер 1980 года и на нем не работают фреймы </iframe>
width — ширина окна в пикселях, не должна превышать ширину окна вашего браузера. height — высота в пикселях, не должна ломать дизайн сайта. Ширину также можно указать в процентах: width=»100%» — это позволит вашему туру занимать всю ширину страницы, и смотреться будет всё это более гладко.
Третий способ (правильный):
Откройте файл tour.html и перенесите всё что там есть в вашу страницу (стараясь её не сломать). Сделать это в каком-нибудь визуальном редакторе wordpress уже не получится, надо будет ковыряться в коде, работать с дочерними темами, шаблонами. Но именно такой способ позволит вам сохранить deeplinking (подробнее тут), ну и вообще является наиболее корректным. После первого, разумеется.
Коротко: krpano сделали новый редактор тура и добавили крутые комбо-боксы. Теперь расставлять переходы можно непосредственно при помощи krpano Tools, не прибегая к запуску html файла tour_editor, а в углу экрана можно без проблем разместить список панорам с картинками.
А если немного подробнее, то теперь krpano Tools при запуске покажет вам следующее окошко:
Прям в это окошко можно перетащить ваш tour.xml:
После загрузки тура вы увидите уже довольно привычный интерфейс, в котором можно (по порядку):
- Load tour.xml — загрузить другой xml файл тура вместо текущего
- Set as startup view — сделать текущий поворот панорамы стартовым
- Add hotspot — добавить стрелку перехода (хотспот)
- Edit tour.xml — править файлик вручную
- Save tour.xml — сохранить tour.xml с заменой (будет сделан автоматический бекап предыдущей версии)
- Open tour folder — открыть папку с туром
Из всего перечисленного радует, в основном, кнопка Save tour.xml, которая избавляет от множества лишних движений. Раньше её очень не хватало. А в остальном практически ничего не изменилось. Как пользоваться редактором тура, я рассказал в статье Первые шаги.
Наиболее важно в этих изменениях следующее:
- krpano полностью отказались от старого flash редактора. Ура!
- Теперь превьюшки панорам обновляются автоматически в соответствии со стартовым направлением. Больше не нужно морочиться с их ручной заменой. Ура ура ура!
Что ещё изменилось (важное для меня)
Новый плагин combobox.xml — теперь на чистом xml, да ещё и с настройками.
Настройки можно весьма недурственно менять, хоть вообще полностью. Вот пример с круглыми уголками (третий на изображении выше):
<combobox_design name="rounded" margin="3" open_close_speed="0.25"> <style name="combobox_container_style" bgcolor="0xFFFFFF" bgalpha="0.95" bgborder="1 0xFFFFFF 0.5" bgroundedge="5" bgshadow="2 4 20 0x000000 0.5" /> <style name="combobox_marker_style" css="color:#999999;" bg="false" txtshadow="" /> <style name="combobox_item_style" css="color:#222222;" padding="4 4" bg="false" bgcolor="0xCCCCCC" bgalpha="1.0" bgroundedge="3" txtshadow="" onoveritem="set(css, 'color:#2277FF;');" onoutitem="set(css, 'color:#222222;');" /> </combobox_design>
Но что ещё приятнее, теперь combobox умеет показывать список панорам!
Чтобы у вас было так же, нужно использовать примерно следующий код:
<combobox name="cbscenes" design="vtour" align="leftbottom" x="10" y="10" onloaded="add_scene_items();" />
А функция add_scene_items имеет примерно такой вид:
<action name="add_scene_items" scope="local"> for(set(i,0), i LT scene.count, inc(i), caller.additem(calc('[img src=[dq]' + scene[get(i)].thumburl + '[dq] style=[dq]border:1px solid rgba(255,255,255,0.5);width:48px;height:32px;vertical-align:middle;margin-right:8px;[dq]/] '+scene[get(i)].title), calc('loadscene('+i+',null,MERGE,BLEND(0.5))') ); ); </action>
Разумеется, всё можно настраивать под себя.
Также вся документация krpano теперь доступна прямо на вашем локальном ПК, что приятно.
Ну и есть ряд других изменений, которые вряд ли заметит большинство из нас. Я вот тоже почти не заметил.
В этой статье предлагаю простой способ оставить только нужные превьюшки в нижней части окна krpano. Способ не автоматизированный, его можно сильно усовершенствовать, но времени нет. Поэтому принимайте как есть.
Итак, изначально имеет тур с такими превью:
Здесь мы видим сразу несколько картинок для бара. Если тур большой, то каждая панорама будет занимать своё место, и превьюшек будет дико много. В итоге разобраться в них очень сложно, гораздо логичнее оставить по одной для каждого помещения.
Как это сделать?
- Добавьте в ваши skin_settings в файле tour.xml строку preview_count=»»
Выглядеть это будет примерно так:<skin_settings preview_count="" maps="false" maps_type="bing" maps_bing_api_key="" maps_zoombuttons="false"
В эту переменную вы будете вписывать число превьюшек, которые останутся видимыми в интерфейсе тура.
- Откройте ваш vtourskin.xml, найдите <action name=»skin_startup»> и добавьте внутрь условный оператор:
if( skin_settings.preview_count, copy(preview_counter, skin_settings.preview_count) , copy(preview_counter, scene.count) );
Это условие проверяет, задана ли переменная preview_count , и если задана, то копирует её значение в переменную preview_counter . В противном случае в эту переменную копируется банальный счётчик сцен (учитываются все панорамы).
- Найдите функцию <action name=»skin_addthumbs»> и доработайте её напильником. А именно:
После строки add(thumbbarheight, thumbpadding); добавьте код:if( skin_settings.preview_count, mul(thumbbarwidth, thumbxoffset, preview_counter) , mul(thumbbarwidth, thumbxoffset, scene.count) );
Затем найдите строку for(set(i,0), i LT preview_counter, inc(i), и замените константу scene.count на переменную, заданную нами ранее: preview_counter
Должно получиться примерно так:
for(set(i,0), i LT preview_counter, inc(i), inc(thumb_cnt); txtadd(thumbname,'skin_thumb_',get(i)); addlayer(get(thumbname));
А ещё лучше подключите этот код отдельным файлом, удалив предварительно из vtourskin.xml
- Отсортируйте ваши сцены в файле tour.xml таким образом, чтобы вначале шли те панорамы, которые вы хотите оставить.
Просто переносите каждую сцену от <scene> до </scene> выше или ниже, вырезая и вставляя текст. - Вернитесь в пункт 1 и впишите в переменную preview_count=»» число превьюшек, которые хотите оставить в панели. Например, я оставлю только 4 превью: администратор, бар, кафе, жилой этаж. Всё остальное будет скрыто.
В типовом случае вам лучше сначала собрать весь тур, не меняя последовательность сцен, а уже после этого перетащить в конец документа сцены, которые хотите скрыть, и указать число видимых.
Знаю, способ не самый гладкий, и задачу можно решить гораздо красивее, например, отключая отдельные панорамы при помощи переменных. Но мне некогда этим заниматься, да и нет нужды. Пользуйтесь на здоровье тем, что уже есть!
Как всё это работает?
Очень просто. Функция skin_addthumbs проверяет, какое значение имеет переменная preview_count. Если переменная пустая, то в панели превьюшек выводятся все превью от всех панорам, в порядке очерёдности. Если там стоит число, то выводится именно такое количество панорам, как указано в переменной.
Вот что получилось у меня.
10 дней Зимы на юге
Этой зимой мы прилетели в Пятигорск всего дней на десять, и уже завтра — снова в Питер. Чтобы увидеть настоящую зиму, пришлось оказаться на Юге. И с первого же дня здесь начал сыпать снег, снег, СНЕГ! И морозы. Ну и я принял единственно верное решение, почти все дни кататься на сноуборде! До сих пор мало кто знает, но на горе Машук можно очень круто катать, а в этом году никонец-то появились ски-пассы на 3 и 5 подъемов. В итоге пятигорская канатка на райдерах озолотилась:)
Внешняя вспышка это здорово, но сама по себе она не делает ваши фотографии лучше. Напротив, при неумелом использовании внешняя вспышка способна непоправимо навредить вашим снимкам, сделав их гораздо хуже, чем вовсе без неё. Я считаю, что знания 9 простых правил достаточно для того, чтобы избежать большинства ошибок и существенно улучшить качество снимков.
В среднем 1-2 раза в день вы задаёте мне вопросы: какой фотоаппарат выбрать, какой объектив купить, новый или б.у., зеркалка или беззеркалка… И каждый раз я стараюсь вникнуть в вашу проблему выбора и помочь, дать совет, направить. В статье про выбор первой зеркалки есть много технических сравнений, описание отличий разных моделей камер, их преимущества и недостатки, но там нет главного — духовной составляющей.
Задумайтесь, почему вы фотографируете. Возможно, вам нравится процесс, результат, общение с людьми. Отлично. Но как мы пришли к фотографии? Мне кажется, если копнуть поглубже, то выяснится одна удивительная закономерность: интерес к фотографии напрямую зависит от первого знакомства с ней. В моём случае первое знакомство с фотографией происходило в детстве, когда я вертел в руках фотоаппараты «Зенит» — мамин и папин. Серьёзная, тяжёлая, железная, сложная штуковина в прочном кожаном чехле, которые мне в мои 6 лет и открыть-то было трудно. Примерно тогда же мама (кажется, всё-таки мама) объяснила, что чем ярче погода, тем короче нужна выдержка. Разумеется, я ничего тогда не понимал, но мог осознать разницу в звуке щелчка между 1/30 и 1/500. Тогда в голове отложилось чёткое понимание, что в солнечный день нужно ставить одну из крутилок на 500. Про другую крутилку — диафрагму — мама сказала, что на солнце нужно ставить 5.6 (при этом внутри уменьшается дырочка), а в помещении можно поставить 2. Ещё нужно сфокусироваться, чтобы изображение было чётким.
Заметил, что посетители попадают ко мне на сайт по запросу «Как сделать маленькую планету в виртуальном туре», но статьи, в которой было бы об этом подробно рассказано, у меня нет. А ведь создание заставки «маленькая планета» в krpano — совсем несложная затея, и отлично работает «из коробки».
Итак, чтобы сделать заставку в виде маленькой планеты, вам понадобится виртуальный тур, созданный в krpano. Если у вас пока что нет своего тура или лицензии krpano, можете использовать мой тур, скачав его на странице.
9 декабря, в пятницу, на этой странице пройдёт вебинар о ночной фотографии в городе и съёмке звёздного неба. Вебинар будет посвящён идущему сейчас метеорному потоку Геминиды. Основная целевая аудитория — новички, но и опытные фотографы смогут найти здесь что-нибудь интересненькое.