{"id":756,"date":"2026-05-26T07:17:39","date_gmt":"2026-05-26T07:17:39","guid":{"rendered":"https:\/\/greenqual.eu\/?page_id=756"},"modified":"2026-05-26T08:09:31","modified_gmt":"2026-05-26T08:09:31","slug":"4thyblconference","status":"publish","type":"page","link":"https:\/\/greenqual.eu\/?page_id=756","title":{"rendered":"4th Ybl Conference"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Dr. habil Vikt\u00f3ria Sug\u00e1r and Martin Kolman represented \u00d3budai Egyetem at the 4th Ybl Conference on the Built Environment, presenting the latest research results and international collaborations related to the GREENQUAL project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Both researchers contributed as speakers to the conference program. Martin Kolman delivered a Hungarian-language presentation focusing on urban microclimate measurement campaigns and simulation methodologies, while Dr. habil Vikt\u00f3ria Sug\u00e1r gave an English-language presentation introducing the long-standing research cooperation between Osaka University and Obuda University, as well as the broader international scientific framework of the GREENQUAL project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">Martin Kolman\u2019s presentation focused on on-site measurement campaigns conducted in Budapest, Krak\u00f3w, and Osaka to investigate urban heat island effects and the microclimatic behavior of different urban spatial typologies. Urban squares, narrow streets, and park areas were analyzed using standardized methodologies measuring air temperature, relative humidity, wind speed, and wind direction. The collected data provide a strong basis for validating and calibrating urban microclimate simulation models.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">The presentation also highlighted the relationship between field measurements and ENVI-met simulations, emphasizing the influence of urban morphology, shading conditions, and green infrastructure on local microclimate and outdoor thermal comfort.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">In her presentation, Dr. habil Vikt\u00f3ria Sug\u00e1r introduced the research partnership between Osaka University and \u00d3budai Egyetem, active since 2008, focusing on sustainable urban development, climate adaptation, and historic urban fabric research. The talk also presented the international structure of the GREENQUAL project, including GIS-based analysis, UBEM approaches, urban health investigations, and green accessibility research.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\">The GREENQUAL project is implemented through the cooperation of \u00d3budai Egyetem, Osaka University, University of Agriculture in Krakow, and F4STER Future 4 Zrt., aiming to develop innovative green infrastructure solutions supporting climate-resilient and healthier urban environments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:20px\"><em>Original article available at: <\/em><a href=\"https:\/\/ybl.uni-obuda.hu\/en\/greenqual-research-presented-at-the-4th-ybl-conference\/\"><em>https:\/\/ybl.uni-obuda.hu\/en\/greenqual-research-presented-at-the-4th-ybl-conference\/<\/em><\/a><\/p>\n\n\n\n<title>Osaka gal\u00e9ria<\/title>\n  <style>\n    * {\n      box-sizing: border-box;\n    }\n\n    :root {\n      --accent: #95527c;\n      --accent-soft: #eadde6;\n      --surface: #ffffff;\n      --surface-soft: #faf8fa;\n      --text: #2a2a2a;\n      --muted: #d9e1e7;\n      --shadow: 0 12px 30px rgba(30, 22, 28, 0.10);\n      --radius: 18px;\n    }\n\n    body {\n      margin: 0;\n      background: #fff;\n      font-family: Arial, sans-serif;\n      color: var(--text);\n    }\n\n    .gallery-section {\n      max-width: 1560px;\n      margin: 0 auto;\n      padding: 40px 32px 56px;\n    }\n\n    .gallery-shell {\n      position: relative;\n      background: linear-gradient(180deg, #ffffff 0%, #faf8fa 100%);\n      border: 1px solid #eee5eb;\n      border-radius: 28px;\n      padding: 26px 28px 22px;\n      box-shadow: 0 18px 42px rgba(0,0,0,0.05);\n    }\n\n    .gallery-head {\n      display: flex;\n      align-items: end;\n      justify-content: space-between;\n      gap: 16px;\n      margin-bottom: 20px;\n    }\n\n    .gallery-head h2 {\n      margin: 0;\n      font-size: 24px;\n      line-height: 1.2;\n      color: var(--accent);\n    }\n\n    .gallery-head p {\n      margin: 6px 0 0;\n      color: #666;\n      font-size: 15px;\n      max-width: 720px;\n    }\n\n    .carousel {\n      position: relative;\n      padding: 0 46px;\n    }\n\n    .carousel-viewport {\n      overflow: hidden;\n      width: 100%;\n    }\n\n    .track {\n      display: flex;\n      gap: 18px;\n      will-change: transform;\n    }\n\n    .slide {\n      flex: 0 0 calc((100% - 36px) \/ 2);\n      min-width: 0;\n      background: var(--surface);\n      border-radius: var(--radius);\n      overflow: hidden;\n      cursor: pointer;\n      position: relative;\n      box-shadow: var(--shadow);\n    }\n\n    .slide img {\n      display: block;\n      width: 100%;\n      height: 320px;\n      object-fit: cover;\n      transition: transform 0.35s ease, filter 0.35s ease;\n    }\n\n    .slide:hover img {\n      transform: scale(1.03);\n      filter: saturate(1.02);\n    }\n\n    .slide::after {\n      content: \"\";\n      position: absolute;\n      inset: auto 0 0 0;\n      height: 72px;\n      background: linear-gradient(to top, rgba(0,0,0,0.22), transparent);\n      opacity: 0;\n      pointer-events: none;\n      transition: opacity 0.25s ease;\n    }\n\n    .slide:hover::after {\n      opacity: 1;\n    }\n\n    .nav {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      width: 38px;\n      height: 38px;\n      padding: 0;\n      border: none;\n      outline: none;\n      background: transparent;\n      box-shadow: none;\n      cursor: pointer;\n      z-index: 5;\n      appearance: none;\n      -webkit-appearance: none;\n      overflow: visible;\n    }\n\n    .nav::before {\n      content: \"\";\n      display: block;\n      width: 22px;\n      height: 22px;\n      border-top: 4px solid var(--accent);\n      border-right: 4px solid var(--accent);\n      margin: auto;\n      background: transparent;\n      box-shadow: none;\n    }\n\n    .prev {\n      left: 0;\n    }\n\n    .prev::before {\n      transform: rotate(-135deg);\n    }\n\n    .next {\n      right: 0;\n    }\n\n    .next::before {\n      transform: rotate(45deg);\n    }\n\n    .indicators {\n      display: flex;\n      gap: 12px;\n      margin-top: 18px;\n      padding-left: 2px;\n      flex-wrap: wrap;\n    }\n\n    .indicator {\n      width: 40px;\n      height: 4px;\n      background: #dce4ec;\n      border-radius: 999px;\n      cursor: pointer;\n      border: 0;\n      padding: 0;\n      transition: background 0.25s ease, transform 0.25s ease;\n    }\n\n    .indicator.active {\n      background: var(--accent);\n      transform: scaleX(1.08);\n    }\n\n    .lightbox {\n      position: fixed;\n      inset: 0;\n      background: rgba(10, 10, 12, 0.86);\n      display: none;\n      align-items: center;\n      justify-content: center;\n      z-index: 9999;\n      padding: 40px 90px;\n    }\n\n    .lightbox.open {\n      display: flex;\n    }\n\n    .lightbox-img {\n      max-width: min(1180px, 90vw);\n      max-height: 86vh;\n      width: auto;\n      height: auto;\n      object-fit: contain;\n      border-radius: 14px;\n      box-shadow: 0 18px 50px rgba(0,0,0,0.35);\n      background: #111;\n    }\n\n    .lightbox-close,\n    .lightbox-prev,\n    .lightbox-next {\n      position: absolute;\n      border: none;\n      background: transparent;\n      color: #fff;\n      cursor: pointer;\n      z-index: 10000;\n    }\n\n    .lightbox-close {\n      top: 16px;\n      right: 22px;\n      font-size: 38px;\n      line-height: 1;\n    }\n\n    .lightbox-prev,\n    .lightbox-next {\n      top: 50%;\n      transform: translateY(-50%);\n      width: 56px;\n      height: 56px;\n    }\n\n    .lightbox-prev {\n      left: 20px;\n    }\n\n    .lightbox-next {\n      right: 20px;\n    }\n\n    .lightbox-prev::before,\n    .lightbox-next::before {\n      content: \"\";\n      display: block;\n      width: 22px;\n      height: 22px;\n      border-top: 3px solid var(--accent);\n      border-right: 3px solid var(--accent);\n      margin: auto;\n    }\n\n    .lightbox-prev::before {\n      transform: rotate(-135deg);\n    }\n\n    .lightbox-next::before {\n      transform: rotate(45deg);\n    }\n\n    .lightbox-counter {\n      position: absolute;\n      top: 18px;\n      left: 22px;\n      color: #fff;\n      font-size: 15px;\n    }\n\n    @media (max-width: 980px) {\n      .gallery-section {\n        padding: 28px 20px 40px;\n      }\n\n      .gallery-shell {\n        padding: 20px 18px 18px;\n        border-radius: 22px;\n      }\n\n      .carousel {\n        padding: 0 38px;\n      }\n\n      .track {\n        gap: 16px;\n      }\n\n      .slide {\n        flex: 0 0 calc((100% - 16px) \/ 2);\n      }\n\n      .slide img {\n        height: 280px;\n      }\n    }\n\n    @media (max-width: 640px) {\n      .gallery-head {\n        display: block;\n      }\n\n      .carousel {\n        padding: 0 30px;\n      }\n\n      .track {\n        gap: 14px;\n      }\n\n      .slide {\n        flex: 0 0 100%;\n      }\n\n      .slide img {\n        height: auto;\n        aspect-ratio: 4 \/ 3;\n      }\n\n      .indicator {\n        width: 30px;\n      }\n\n      .lightbox {\n        padding: 20px 56px;\n      }\n\n      .lightbox-prev {\n        left: 8px;\n      }\n\n      .lightbox-next {\n        right: 8px;\n      }\n\n      .lightbox-close {\n        top: 10px;\n        right: 14px;\n      }\n    }\n  <\/style>\n\n\n\n  <section class=\"gallery-section\">\n    <div class=\"gallery-shell\">\n      <div class=\"gallery-head\">\n        <div>\n          <h2>Osaka measurement campaign<\/h2>\n        <\/div>\n      <\/div>\n\n      <div class=\"carousel\">\n        <button class=\"nav prev\" aria-label=\"El\u0151z\u0151 k\u00e9p\"><\/button>\n\n        <div class=\"carousel-viewport\">\n          <div class=\"track\" id=\"track\">\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_1-2-1024x1015.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_1-2-1024x1015.jpg\" alt=\"Osaka measurement campaign 1\">\n            <\/div>\n\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_2-2-1024x791.jpg\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_2-2-1024x791.jpg\" alt=\"\">\n            <\/div>\n\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_3-1-1024x577.png\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_3-1-1024x577.png\" alt=\"\">\n            <\/div>\n\n            <div class=\"slide\" data-full=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_4-1-1024x577.png\">\n              <img decoding=\"async\" src=\"https:\/\/greenqual.eu\/wp-content\/uploads\/2026\/05\/4th-Ybl-Conference_4-1-1024x577.png\" alt=\"\">\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <button class=\"nav next\" aria-label=\"K\u00f6vetkez\u0151 k\u00e9p\"><\/button>\n        <div class=\"indicators\" id=\"indicators\"><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <div class=\"lightbox\" id=\"lightbox\" aria-hidden=\"true\">\n    <button class=\"lightbox-close\" aria-label=\"Bez\u00e1r\u00e1s\">\u00d7<\/button>\n    <button class=\"lightbox-prev\" aria-label=\"El\u0151z\u0151 nagy k\u00e9p\"><\/button>\n    <img decoding=\"async\" class=\"lightbox-img\" id=\"lightboxImg\" src=\"\" alt=\"\">\n    <button class=\"lightbox-next\" aria-label=\"K\u00f6vetkez\u0151 nagy k\u00e9p\"><\/button>\n    <div class=\"lightbox-counter\" id=\"lightboxCounter\"><\/div>\n  <\/div>\n\n  <script>\n    const track = document.getElementById('track');\n    const originalSlides = [...track.querySelectorAll('.slide')];\n    const prevBtn = document.querySelector('.prev');\n    const nextBtn = document.querySelector('.next');\n    const indicators = document.getElementById('indicators');\n\n    const lightbox = document.getElementById('lightbox');\n    const lightboxImg = document.getElementById('lightboxImg');\n    const lightboxCounter = document.getElementById('lightboxCounter');\n    const lightboxClose = document.querySelector('.lightbox-close');\n    const lightboxPrev = document.querySelector('.lightbox-prev');\n    const lightboxNext = document.querySelector('.lightbox-next');\n\n    let visibleIndex = 0;\n    let lightboxIndex = 0;\n    let currentIndex = 1;\n    let isTransitioning = false;\n\n    const firstClone = originalSlides[0].cloneNode(true);\n    const lastClone = originalSlides[originalSlides.length - 1].cloneNode(true);\n\n    firstClone.classList.add('clone');\n    lastClone.classList.add('clone');\n\n    track.prepend(lastClone);\n    track.append(firstClone);\n\n    function allSlides() {\n      return [...track.querySelectorAll('.slide')];\n    }\n\n    function getGap() {\n      return parseFloat(getComputedStyle(track).gap) || 0;\n    }\n\n    function moveTo(index, animated = true) {\n      const slides = allSlides();\n      const slideWidth = slides[0].getBoundingClientRect().width;\n      const offset = index * (slideWidth + getGap());\n\n      track.style.transition = animated ? 'transform 0.45s ease' : 'none';\n      track.style.transform = `translateX(-${offset}px)`;\n      currentIndex = index;\n    }\n\n    function updateIndicators() {\n      indicators.innerHTML = '';\n      for (let i = 0; i < originalSlides.length; i++) {\n        const item = document.createElement('button');\n        item.type = 'button';\n        item.className = 'indicator' + (i === visibleIndex ? ' active' : '');\n        item.setAttribute('aria-label', `Ugr\u00e1s a(z) ${i + 1}. k\u00e9pre`);\n        item.addEventListener('click', () => {\n          if (isTransitioning) return;\n          isTransitioning = true;\n          visibleIndex = i;\n          moveTo(i + 1, true);\n          syncIndicators();\n        });\n        indicators.appendChild(item);\n      }\n    }\n\n    function syncIndicators() {\n      [...indicators.children].forEach((dot, i) => {\n        dot.classList.toggle('active', i === visibleIndex);\n      });\n    }\n\n    function nextSlide() {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      visibleIndex = (visibleIndex + 1) % originalSlides.length;\n      moveTo(currentIndex + 1, true);\n      syncIndicators();\n    }\n\n    function prevSlide() {\n      if (isTransitioning) return;\n      isTransitioning = true;\n      visibleIndex = (visibleIndex - 1 + originalSlides.length) % originalSlides.length;\n      moveTo(currentIndex - 1, true);\n      syncIndicators();\n    }\n\n    track.addEventListener('transitionend', () => {\n      const slides = allSlides();\n\n      if (slides[currentIndex] === firstClone) {\n        moveTo(1, false);\n      }\n\n      if (slides[currentIndex] === lastClone) {\n        moveTo(originalSlides.length, false);\n      }\n\n      isTransitioning = false;\n    });\n\n    prevBtn.addEventListener('click', prevSlide);\n    nextBtn.addEventListener('click', nextSlide);\n\n    function openLightbox(i) {\n      lightboxIndex = i;\n      const currentImg = originalSlides[lightboxIndex].querySelector('img');\n      lightboxImg.src = originalSlides[lightboxIndex].dataset.full;\n      lightboxImg.alt = currentImg.alt;\n      lightboxCounter.textContent = `${lightboxIndex + 1} \/ ${originalSlides.length}`;\n      lightbox.classList.add('open');\n      lightbox.setAttribute('aria-hidden', 'false');\n      document.body.style.overflow = 'hidden';\n    }\n\n    function closeLightbox() {\n      lightbox.classList.remove('open');\n      lightbox.setAttribute('aria-hidden', 'true');\n      document.body.style.overflow = '';\n    }\n\n    function showPrevLightboxImage() {\n      lightboxIndex = (lightboxIndex - 1 + originalSlides.length) % originalSlides.length;\n      openLightbox(lightboxIndex);\n    }\n\n    function showNextLightboxImage() {\n      lightboxIndex = (lightboxIndex + 1) % originalSlides.length;\n      openLightbox(lightboxIndex);\n    }\n\n    originalSlides.forEach((slide, i) => {\n      slide.addEventListener('click', () => openLightbox(i));\n    });\n\n    lightboxClose.addEventListener('click', closeLightbox);\n    lightboxPrev.addEventListener('click', showPrevLightboxImage);\n    lightboxNext.addEventListener('click', showNextLightboxImage);\n\n    lightbox.addEventListener('click', (e) => {\n      if (e.target === lightbox) closeLightbox();\n    });\n\n    document.addEventListener('keydown', (e) => {\n      if (lightbox.classList.contains('open')) {\n        if (e.key === 'Escape') closeLightbox();\n        if (e.key === 'ArrowLeft') showPrevLightboxImage();\n        if (e.key === 'ArrowRight') showNextLightboxImage();\n      } else {\n        if (e.key === 'ArrowLeft') prevSlide();\n        if (e.key === 'ArrowRight') nextSlide();\n      }\n    });\n\n    window.addEventListener('resize', () => {\n      moveTo(currentIndex, false);\n    });\n\n    updateIndicators();\n    moveTo(1, false);\n    syncIndicators();\n  <\/script>\n\n\n&#8221;\n","protected":false},"excerpt":{"rendered":"<p>Dr. habil Vikt\u00f3ria Sug\u00e1r and Martin Kolman represented \u00d3budai Egyetem at the 4th Ybl Conference on the Built Environment, presenting the latest research results and international collaborations related to the GREENQUAL project. Both researchers contributed as speakers to the conference program. Martin Kolman delivered a Hungarian-language presentation focusing on urban microclimate measurement campaigns and simulation [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-756","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=756"}],"version-history":[{"count":8,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/756\/revisions"}],"predecessor-version":[{"id":785,"href":"https:\/\/greenqual.eu\/index.php?rest_route=\/wp\/v2\/pages\/756\/revisions\/785"}],"wp:attachment":[{"href":"https:\/\/greenqual.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}