Kamado Chef

Fedélnyitás és 3D forgatás: működő minta

Ez az oldal nem koncepció, hanem futó kód. Ami itt látszik, az bemásolható a kamadochef.com főoldalába. Alul ott a pontos ok, amiért a CSS-elforgatásos út nem hozható tökéletesre, és mi kell a valódi 3D-s fedélnyitáshoz.

1.Fedélnyitás valódi termékfotóból

Desktopon vidd rá a kurzort, mobilon egyszerűen görgess ide. Ugyanaz a két trigger, amit Beatrix is megírt, csak nem egy lapos képet döntünk meg, hanem két HIVATALOS stúdiófotó között úsztatunk át: csukott fedél és nyitott fedél. Minden pixel valódi termék.

Kamado Chef Classic 19 piros, csukott fedéllel Kamado Chef Classic 19 piros, nyitott fedéllel
Classic 19 - Redhover / görgetés
Kamado Chef Shadow, csukott fedéllel Kamado Chef Shadow, nyitott fedéllel
Shadowhover / görgetés

2.A teljes kód, amit át kell venni

Ennyi az egész. Nincs benne könyvtár, nincs benne build, és nem tölt be semmit külső helyről.

<!-- HTML: two stacked images inside one figure -->
<div class="kc">
  <figure>
    <img class="closed" src="19red_main.jpg" alt="...">
    <img class="open"   src="19red_open.jpg" alt="..." loading="lazy">
  </figure>
</div>

/* CSS: stack them, fade the top one out */
.kc figure{position:relative;aspect-ratio:1200/848}
.kc figure img{position:absolute;inset:0;width:100%;height:100%;
               object-fit:contain;transition:opacity .45s cubic-bezier(.22,.61,.36,1)}
.kc figure img.open{opacity:0}

/* desktop: hover. Guarded so touch devices never get a stuck hover state. */
@media (hover:hover){
  .kc:hover figure img.closed{opacity:0}
  .kc:hover figure img.open  {opacity:1}
}
/* mobile: the observer below adds .seen when the card scrolls into view */
.kc.seen figure img.closed{opacity:0}
.kc.seen figure img.open  {opacity:1}

// JS: mobile only, opens the lid when the card is ~55% visible.
// It keeps .seen (does not toggle back), so the lid stays open once reached.
if (!window.matchMedia('(hover:hover)').matches) {
  const io = new IntersectionObserver((entries) => {
    entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('seen'); io.unobserve(e.target); } });
  }, { threshold: 0.55 });
  document.querySelectorAll('[data-kc]').forEach(el => io.observe(el));
}
Két apróság, ami sokat számít

A @media (hover:hover) nélkül érintőképernyőn beragad a hover-állapot, és a fedél nyitva marad az első koppintás után. A loading="lazy" pedig csak a nyitott képen legyen rajta, a csukotton ne, mert az a hajtás fölött van.

3.3D forgatás: ez már él

Kilenc modell van kész, forgatható és zoomolható, desktopon és mobilon egyaránt. Nem kell hozzá új fejlesztés, csak be kell emelni. Az AR kódban be van kötve mind a kilencre (ios-src + ar-modes="webxr scene-viewer quick-look"), és az USDZ-fájlok is ott vannak.

Az AR-t viszont ne ígérjük ki addig, amíg valaki élő iPhone-on meg nem nézte

Két dolgot megmértem az USDZ-fájlokon, és mindkettő ellene szól annak, hogy a Quick Look ma elindul: (1) a fájlon belüli bejegyzések nincsenek 64 bájtra igazítva, amit az Apple USDZ-specifikációja megkövetel; (2) a textúrák WebP formátumúak, a Quick Look viszont PNG-t és JPEG-et vár. Ez mind a négy megvizsgált modellnél ugyanígy van. Egy kollégánk jelezte is korábban, hogy nála nem indult el. Amíg ez nincs lezárva, az AR „elő van készítve", nem pedig „működik". És ha tesztelitek: iPhone-on Safariban kell megnyitni, mert a Telegram és a Messenger beépített böngészőjében a Quick Look nem indul.

A teljes, több modellt és színváltozatot kezelő oldal: kamadochef-3d.pages.dev

<script type="module" src="https://unpkg.com/@google/model-viewer@3.5.0/dist/model-viewer.min.js"></script>

<model-viewer src="model.glb" ios-src="model.usdz" ar ar-modes="webxr scene-viewer quick-look"
              camera-controls touch-action="pan-y"
              shadow-intensity="1" exposure="1.05"></model-viewer>

4.Miért nem jött ki tökéletesre a mostani fedélnyitás

Megnéztem a kc_lidopen.html-t. A technika ez volt: egy beágyazott PNG-re transform: translateY(-8%) rotateX(26deg), hover és IntersectionObserver triggerrel. A triggerek jók, a probléma egy szinttel lejjebb van.

5.Ha valódi, zsanéros 3D-s nyitás kell

Ez is járható út, csak nem a mostani fájlokból. Megmértem a kilenc GLB-t: mindegyikben 0 animáció van, és összesen 2 node, vagyis a fedél nincs külön geometriaként leválasztva. Ahhoz, hogy nyíljon, három dolog kell.

És egy negyedik, amit megmértem, mert ez a tényleges akadály

A mostani modellek nyitott felületek, nem zárt testek: a 22 colos fájlban 58 831 pont és 100 263 lap mellett 16 669 perem-él van. Ez azt jelenti, hogy a grillnek nincs megmodellezve a belseje. Ha a fedelet felnyitnánk, nem a rács és a tűztér bukkanna elő, hanem egy üres héj. Vagyis a zsanéros nyitáshoz nem elég szétvágni a meglévő modellt, kell hozzá egy belsővel együtt modellezett példány. Ez ugyanaz a hiányzó-információ probléma, mint a lapos fotónál, csak három dimenzióban.

Ütemezés

A belsővel együtt modellezett, nagy felbontású példány a gyártói CAD megérkezésére vár. Addig a fenti fotós megoldás az, ami ma élesíthető, és ez egybevág azzal, amit Beatrix is írt: amíg a forgós kép nem élethű, addig maradjon a sima termékkép.