瀏覽代碼

save: save

gemercheung 1 年之前
父節點
當前提交
a6fa62d629
共有 100 個文件被更改,包括 141 次插入25 次删除
  1. 2 2
      getWebp.sh
  2. 二進制
      public/michaux-steadi-10fps-873-rev1/0001.webp
  3. 二進制
      public/michaux-steadi-10fps-873-rev1/0002.webp
  4. 二進制
      public/michaux-steadi-10fps-873-rev1/0003.webp
  5. 二進制
      public/michaux-steadi-10fps-873-rev1/0004.webp
  6. 二進制
      public/michaux-steadi-10fps-873-rev1/0005.webp
  7. 二進制
      public/michaux-steadi-10fps-873-rev1/0006.webp
  8. 二進制
      public/michaux-steadi-10fps-873-rev1/0007.webp
  9. 二進制
      public/michaux-steadi-10fps-873-rev1/0008.webp
  10. 二進制
      public/michaux-steadi-10fps-873-rev1/0009.webp
  11. 二進制
      public/michaux-steadi-10fps-873-rev1/0010.webp
  12. 二進制
      public/michaux-steadi-10fps-873-rev1/0011.webp
  13. 二進制
      public/michaux-steadi-10fps-873-rev1/0012.webp
  14. 二進制
      public/michaux-steadi-10fps-873-rev1/0013.webp
  15. 二進制
      public/michaux-steadi-10fps-873-rev1/0014.webp
  16. 二進制
      public/michaux-steadi-10fps-873-rev1/0015.webp
  17. 二進制
      public/michaux-steadi-10fps-873-rev1/0016.webp
  18. 二進制
      public/michaux-steadi-10fps-873-rev1/0017.webp
  19. 二進制
      public/michaux-steadi-10fps-873-rev1/0018.webp
  20. 二進制
      public/michaux-steadi-10fps-873-rev1/0019.webp
  21. 二進制
      public/michaux-steadi-10fps-873-rev1/0020.webp
  22. 二進制
      public/michaux-steadi-10fps-873-rev1/0021.webp
  23. 二進制
      public/michaux-steadi-10fps-873-rev1/0022.webp
  24. 二進制
      public/michaux-steadi-10fps-873-rev1/0023.webp
  25. 二進制
      public/michaux-steadi-10fps-873-rev1/0024.webp
  26. 二進制
      public/michaux-steadi-10fps-873-rev1/0025.webp
  27. 二進制
      public/michaux-steadi-10fps-873-rev1/0026.webp
  28. 二進制
      public/michaux-steadi-10fps-873-rev1/0027.webp
  29. 二進制
      public/michaux-steadi-10fps-873-rev1/0028.webp
  30. 二進制
      public/michaux-steadi-10fps-873-rev1/0029.webp
  31. 二進制
      public/michaux-steadi-10fps-873-rev1/0030.webp
  32. 二進制
      public/michaux-steadi-10fps-873-rev1/0031.webp
  33. 二進制
      public/michaux-steadi-10fps-873-rev1/0032.webp
  34. 二進制
      public/michaux-steadi-10fps-873-rev1/0033.webp
  35. 二進制
      public/michaux-steadi-10fps-873-rev1/0034.webp
  36. 二進制
      public/michaux-steadi-10fps-873-rev1/0035.webp
  37. 二進制
      public/michaux-steadi-10fps-873-rev1/0036.webp
  38. 二進制
      public/michaux-steadi-10fps-873-rev1/0037.webp
  39. 二進制
      public/michaux-steadi-10fps-873-rev1/0038.webp
  40. 二進制
      public/michaux-steadi-10fps-873-rev1/0039.webp
  41. 二進制
      public/michaux-steadi-10fps-873-rev1/0040.webp
  42. 二進制
      public/michaux-steadi-10fps-873-rev1/0041.webp
  43. 二進制
      public/michaux-steadi-10fps-873-rev1/0042.webp
  44. 二進制
      public/michaux-steadi-10fps-873-rev1/0043.webp
  45. 二進制
      public/michaux-steadi-10fps-873-rev1/0044.webp
  46. 二進制
      public/michaux-steadi-10fps-873-rev1/0045.webp
  47. 二進制
      public/michaux-steadi-10fps-873-rev1/0046.webp
  48. 二進制
      public/michaux-steadi-10fps-873-rev1/0047.webp
  49. 二進制
      public/michaux-steadi-10fps-873-rev1/0048.webp
  50. 二進制
      public/michaux-steadi-10fps-873-rev1/0049.webp
  51. 二進制
      public/michaux-steadi-10fps-873-rev1/0050.webp
  52. 二進制
      public/michaux-steadi-10fps-873-rev1/0051.webp
  53. 二進制
      public/michaux-steadi-10fps-873-rev1/0052.webp
  54. 二進制
      public/michaux-steadi-10fps-873-rev1/0053.webp
  55. 二進制
      public/michaux-steadi-10fps-873-rev1/0054.webp
  56. 二進制
      public/michaux-steadi-10fps-873-rev1/0055.webp
  57. 二進制
      public/michaux-steadi-10fps-873-rev1/0056.webp
  58. 二進制
      public/michaux-steadi-10fps-873-rev1/0057.webp
  59. 二進制
      public/michaux-steadi-10fps-873-rev1/0058.webp
  60. 二進制
      public/michaux-steadi-10fps-873-rev1/0059.webp
  61. 二進制
      public/michaux-steadi-10fps-873-rev1/0060.webp
  62. 二進制
      public/michaux-steadi-10fps-873-rev1/0061.webp
  63. 二進制
      public/michaux-steadi-10fps-873-rev1/0062.webp
  64. 二進制
      public/michaux-steadi-10fps-873-rev1/0063.webp
  65. 二進制
      public/michaux-steadi-10fps-873-rev1/0064.webp
  66. 二進制
      public/michaux-steadi-10fps-873-rev1/0065.webp
  67. 二進制
      public/michaux-steadi-10fps-873-rev1/0066.webp
  68. 二進制
      public/michaux-steadi-10fps-873-rev1/0067.webp
  69. 二進制
      public/michaux-steadi-10fps-873-rev1/0068.webp
  70. 二進制
      public/michaux-steadi-10fps-873-rev1/0069.webp
  71. 二進制
      public/michaux-steadi-10fps-873-rev1/0070.webp
  72. 二進制
      public/michaux-steadi-10fps-873-rev1/0071.webp
  73. 二進制
      public/michaux-steadi-10fps-873-rev1/0072.webp
  74. 二進制
      public/michaux-steadi-10fps-873-rev1/0073.webp
  75. 二進制
      public/michaux-steadi-10fps-873-rev1/0074.webp
  76. 二進制
      public/michaux-steadi-10fps-873-rev1/0075.webp
  77. 二進制
      public/michaux-steadi-10fps-873-rev1/0076.webp
  78. 二進制
      public/michaux-steadi-10fps-873-rev1/0077.webp
  79. 二進制
      public/michaux-steadi-10fps-873-rev1/0078.webp
  80. 二進制
      public/michaux-steadi-10fps-873-rev1/0079.webp
  81. 二進制
      public/michaux-steadi-10fps-873-rev1/0080.webp
  82. 二進制
      public/michaux-steadi-10fps-873-rev1/0081.webp
  83. 二進制
      public/michaux-steadi-10fps-873-rev1/0082.webp
  84. 二進制
      public/michaux-steadi-10fps-873-rev1/0083.webp
  85. 二進制
      public/michaux-steadi-10fps-873-rev1/0084.webp
  86. 二進制
      public/michaux-steadi-10fps-873-rev1/0085.webp
  87. 二進制
      public/michaux-steadi-10fps-873-rev1/0086.webp
  88. 二進制
      public/michaux-steadi-10fps-873-rev1/0087.webp
  89. 二進制
      public/michaux-steadi-10fps-873-rev1/0088.webp
  90. 二進制
      public/michaux-steadi-10fps-873-rev1/0089.webp
  91. 二進制
      public/michaux-steadi-10fps-873-rev1/0090.webp
  92. 二進制
      public/michaux-steadi-10fps-873-rev1/0091.webp
  93. 二進制
      public/michaux-steadi-10fps-873-rev1/0092.webp
  94. 二進制
      public/michaux-steadi-10fps-873-rev1/0093.webp
  95. 二進制
      public/michaux-steadi-10fps-873-rev1/0094.webp
  96. 二進制
      public/michaux-steadi-10fps-873-rev1/0095.webp
  97. 99 3
      src/App.jsx
  98. 22 15
      src/components/Opening.jsx
  99. 18 5
      src/components/Viewer.jsx
  100. 0 0
      src/index.css

+ 2 - 2
getWebp.sh

@@ -1,10 +1,10 @@
 
 #!/bin/sh
 
-for i in {1..184}
+for i in {1..95}
 do
     item=$(printf %04d $i)
-    projectID="gudea-render-10fps-873-rev1"
+    projectID="michaux-steadi-10fps-873-rev1"
     url="https://static.getty.edu/mesopotamia/$projectID/$item.webp"
     mkdir -p ./public/$projectID
     curl $url --output ./public/$projectID/$item.webp

二進制
public/michaux-steadi-10fps-873-rev1/0001.webp


二進制
public/michaux-steadi-10fps-873-rev1/0002.webp


二進制
public/michaux-steadi-10fps-873-rev1/0003.webp


二進制
public/michaux-steadi-10fps-873-rev1/0004.webp


二進制
public/michaux-steadi-10fps-873-rev1/0005.webp


二進制
public/michaux-steadi-10fps-873-rev1/0006.webp


二進制
public/michaux-steadi-10fps-873-rev1/0007.webp


二進制
public/michaux-steadi-10fps-873-rev1/0008.webp


二進制
public/michaux-steadi-10fps-873-rev1/0009.webp


二進制
public/michaux-steadi-10fps-873-rev1/0010.webp


二進制
public/michaux-steadi-10fps-873-rev1/0011.webp


二進制
public/michaux-steadi-10fps-873-rev1/0012.webp


二進制
public/michaux-steadi-10fps-873-rev1/0013.webp


二進制
public/michaux-steadi-10fps-873-rev1/0014.webp


二進制
public/michaux-steadi-10fps-873-rev1/0015.webp


二進制
public/michaux-steadi-10fps-873-rev1/0016.webp


二進制
public/michaux-steadi-10fps-873-rev1/0017.webp


二進制
public/michaux-steadi-10fps-873-rev1/0018.webp


二進制
public/michaux-steadi-10fps-873-rev1/0019.webp


二進制
public/michaux-steadi-10fps-873-rev1/0020.webp


二進制
public/michaux-steadi-10fps-873-rev1/0021.webp


二進制
public/michaux-steadi-10fps-873-rev1/0022.webp


二進制
public/michaux-steadi-10fps-873-rev1/0023.webp


二進制
public/michaux-steadi-10fps-873-rev1/0024.webp


二進制
public/michaux-steadi-10fps-873-rev1/0025.webp


二進制
public/michaux-steadi-10fps-873-rev1/0026.webp


二進制
public/michaux-steadi-10fps-873-rev1/0027.webp


二進制
public/michaux-steadi-10fps-873-rev1/0028.webp


二進制
public/michaux-steadi-10fps-873-rev1/0029.webp


二進制
public/michaux-steadi-10fps-873-rev1/0030.webp


二進制
public/michaux-steadi-10fps-873-rev1/0031.webp


二進制
public/michaux-steadi-10fps-873-rev1/0032.webp


二進制
public/michaux-steadi-10fps-873-rev1/0033.webp


二進制
public/michaux-steadi-10fps-873-rev1/0034.webp


二進制
public/michaux-steadi-10fps-873-rev1/0035.webp


二進制
public/michaux-steadi-10fps-873-rev1/0036.webp


二進制
public/michaux-steadi-10fps-873-rev1/0037.webp


二進制
public/michaux-steadi-10fps-873-rev1/0038.webp


二進制
public/michaux-steadi-10fps-873-rev1/0039.webp


二進制
public/michaux-steadi-10fps-873-rev1/0040.webp


二進制
public/michaux-steadi-10fps-873-rev1/0041.webp


二進制
public/michaux-steadi-10fps-873-rev1/0042.webp


二進制
public/michaux-steadi-10fps-873-rev1/0043.webp


二進制
public/michaux-steadi-10fps-873-rev1/0044.webp


二進制
public/michaux-steadi-10fps-873-rev1/0045.webp


二進制
public/michaux-steadi-10fps-873-rev1/0046.webp


二進制
public/michaux-steadi-10fps-873-rev1/0047.webp


二進制
public/michaux-steadi-10fps-873-rev1/0048.webp


二進制
public/michaux-steadi-10fps-873-rev1/0049.webp


二進制
public/michaux-steadi-10fps-873-rev1/0050.webp


二進制
public/michaux-steadi-10fps-873-rev1/0051.webp


二進制
public/michaux-steadi-10fps-873-rev1/0052.webp


二進制
public/michaux-steadi-10fps-873-rev1/0053.webp


二進制
public/michaux-steadi-10fps-873-rev1/0054.webp


二進制
public/michaux-steadi-10fps-873-rev1/0055.webp


二進制
public/michaux-steadi-10fps-873-rev1/0056.webp


二進制
public/michaux-steadi-10fps-873-rev1/0057.webp


二進制
public/michaux-steadi-10fps-873-rev1/0058.webp


二進制
public/michaux-steadi-10fps-873-rev1/0059.webp


二進制
public/michaux-steadi-10fps-873-rev1/0060.webp


二進制
public/michaux-steadi-10fps-873-rev1/0061.webp


二進制
public/michaux-steadi-10fps-873-rev1/0062.webp


二進制
public/michaux-steadi-10fps-873-rev1/0063.webp


二進制
public/michaux-steadi-10fps-873-rev1/0064.webp


二進制
public/michaux-steadi-10fps-873-rev1/0065.webp


二進制
public/michaux-steadi-10fps-873-rev1/0066.webp


二進制
public/michaux-steadi-10fps-873-rev1/0067.webp


二進制
public/michaux-steadi-10fps-873-rev1/0068.webp


二進制
public/michaux-steadi-10fps-873-rev1/0069.webp


二進制
public/michaux-steadi-10fps-873-rev1/0070.webp


二進制
public/michaux-steadi-10fps-873-rev1/0071.webp


二進制
public/michaux-steadi-10fps-873-rev1/0072.webp


二進制
public/michaux-steadi-10fps-873-rev1/0073.webp


二進制
public/michaux-steadi-10fps-873-rev1/0074.webp


二進制
public/michaux-steadi-10fps-873-rev1/0075.webp


二進制
public/michaux-steadi-10fps-873-rev1/0076.webp


二進制
public/michaux-steadi-10fps-873-rev1/0077.webp


二進制
public/michaux-steadi-10fps-873-rev1/0078.webp


二進制
public/michaux-steadi-10fps-873-rev1/0079.webp


二進制
public/michaux-steadi-10fps-873-rev1/0080.webp


二進制
public/michaux-steadi-10fps-873-rev1/0081.webp


二進制
public/michaux-steadi-10fps-873-rev1/0082.webp


二進制
public/michaux-steadi-10fps-873-rev1/0083.webp


二進制
public/michaux-steadi-10fps-873-rev1/0084.webp


二進制
public/michaux-steadi-10fps-873-rev1/0085.webp


二進制
public/michaux-steadi-10fps-873-rev1/0086.webp


二進制
public/michaux-steadi-10fps-873-rev1/0087.webp


二進制
public/michaux-steadi-10fps-873-rev1/0088.webp


二進制
public/michaux-steadi-10fps-873-rev1/0089.webp


二進制
public/michaux-steadi-10fps-873-rev1/0090.webp


二進制
public/michaux-steadi-10fps-873-rev1/0091.webp


二進制
public/michaux-steadi-10fps-873-rev1/0092.webp


二進制
public/michaux-steadi-10fps-873-rev1/0093.webp


二進制
public/michaux-steadi-10fps-873-rev1/0094.webp


二進制
public/michaux-steadi-10fps-873-rev1/0095.webp


+ 99 - 3
src/App.jsx

@@ -10,7 +10,7 @@ gsap.registerPlugin(ScrollTrigger);
 
 ScrollTrigger.config({
   autoRefreshEvents: "visibilitychange,DOMContentLoaded,load",
-  limitCallbacks: true,
+  // limitCallbacks: true,
 });
 
 let resizeTimer = null;
@@ -42,17 +42,18 @@ function App() {
   useEffect(() => {
     window.addEventListener("resize", handlerResize, false);
     handlerResize();
+    document.documentElement.style.overflow = "auto";
   });
 
   const pinForExit = {
     onLeave: function (e) {
-      console.error("pinForExit-onLeave", e.trigger);
+      // console.error("pinForExit-onLeave", e.trigger);
       gsap.set(e.trigger, {
         autoAlpha: 0,
       });
     },
     onEnterBack: function (e) {
-      console.error("pinForExit-onEnterBack", e.trigger);
+      // console.error("pinForExit-onEnterBack", e.trigger);
       gsap.set(e.trigger, {
         autoAlpha: 1,
       });
@@ -99,6 +100,101 @@ function App() {
           exitTween={pinForExit}
         />
       </LazyLoad>
+
+      <LazyLoad height={"400vh"}>
+        <Viewer
+          height={"400vh"}
+          name="Michaux Steadicam"
+          path="michaux-steadi-10fps-873-rev1"
+          frameCount={98}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"800vh"}>
+        <Viewer
+          height={"800vh"}
+          name="Michaux Render"
+          path="michaux-render-10fps-873-rev1"
+          frameCount={158}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"400vh"}>
+        <Viewer
+          height={"400vh"}
+          name="Gudea Architect Steadi"
+          path="gudea-architect-steadi-10fps-873-rev1"
+          frameCount={84}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+      <LazyLoad height={"800vh"}>
+        <Viewer
+          height={"800vh"}
+          name="Gudea Architect Render"
+          path="gudea-architect-render-10fps-873-rev1"
+          frameCount={201}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"800vh"}>
+        <Viewer
+          height={"800vh"}
+          name="Dictionary Steadi"
+          path="dictionary-steadi-10fps-873-rev1"
+          frameCount={258}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"300vh"}>
+        <Viewer
+          height={"300vh"}
+          name="Dictionary Render"
+          path="dictionary-steadi-10fps-873-rev1"
+          frameCount={45}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"200h"}>
+        <Viewer
+          height={"200h"}
+          name="Enheduanna Steadi "
+          path="enheduanna-steadi-10fps-873-rev1"
+          frameCount={40}
+          pause={{
+            1: 80,
+          }}
+          enterTween={{
+            from: {
+              autoAlpha: 0,
+              y: 500,
+            },
+          }}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
+
+      <LazyLoad height={"200h"}>
+        <Viewer
+          height={"200h"}
+          name="Cone Steadi"
+          path="cone-steadi-10fps-873-rev1"
+          frameCount={256}
+          enterTween={crossFadeIn}
+          exitTween={pinForExit}
+        />
+      </LazyLoad>
     </div>
   );
 }

+ 22 - 15
src/components/Opening.jsx

@@ -15,7 +15,7 @@ export default function Opening() {
   const height = window.innerHeight;
 
   useEffect(() => {
-    console.warn("containerRef.current", containerRef.current);
+    // console.warn("containerRef.current", containerRef.current);
     gsap.set(containerRef.current.children, {
       autoAlpha: 0,
     });
@@ -24,20 +24,27 @@ export default function Opening() {
       autoAlpha: 1,
       delay: 0.77,
     });
-    // gsap.to(containerRef.current.children, {
-    //   autoAlpha: 0,
-    //   y: -125,
-    //   stagger: 0.08,
-    //   scrollTrigger: {
-    //     scrub: true,
-    //     pin: true,
-    //     pinSpacing: false,
-    //     ease: "none",
-    //     trigger: containerRef.current,
-    //     start: "top top",
-    //     end: "center top",
-    //   },
-    // });
+    gsap.to(containerRef.current, {
+      opacity: 0.5,
+      repeat: -1,
+      yoyo: !0,
+      duration: 1.5,
+      delay: 1.66,
+    });
+    gsap.to(containerRef.current.children, {
+      autoAlpha: 0,
+      y: -125,
+      stagger: 0.08,
+      scrollTrigger: {
+        scrub: true,
+        pin: true,
+        pinSpacing: false,
+        ease: "none",
+        trigger: containerRef.current,
+        start: "top top",
+        end: "center top",
+      },
+    });
   });
 
   return (

+ 18 - 5
src/components/Viewer.jsx

@@ -1,8 +1,11 @@
 import { Component, createRef } from "react";
 import PropTypes from "prop-types";
 import { gsap, ScrollTrigger } from "gsap/all";
+import LazyLoad from "react-lazyload";
 import { css } from "@emotion/react";
+
 const isDebug = Number(import.meta.env.VITE_APP_DEBUG) === 1;
+
 console.log("isDebug", isDebug);
 export default class Viewer extends Component {
   constructor() {
@@ -81,8 +84,8 @@ export default class Viewer extends Component {
     if (!this.exitTimeline && this.props.exitTween) {
       this.initializeExitTween();
     }
-    ScrollTrigger.getAll().forEach((ST) => ST.refresh(true));
-    console.error("ScrollTrigger.getAll()", ScrollTrigger.getAll());
+
+    ScrollTrigger.refresh();
   }
 
   loadImage(index) {
@@ -105,6 +108,7 @@ export default class Viewer extends Component {
         this.poolNewFrames(index - 1);
       }
       // var t = 100 - (this.frame / this.fullFrameCount) * 100 + "%";
+      // this.loadingProgress.current.style.width
       this.loadedCount += 1;
       if (this.loadedCount === parseFloat(this.props.frameCount) - 1) {
         this.loadingComplete();
@@ -180,7 +184,6 @@ export default class Viewer extends Component {
         onEnter: () => {
           // closeLoading();
           this.isAbove = false;
-          console.log("onEnter");
           console.log(this.props.path, "onEnter");
         },
         onEnterBack: () => {
@@ -220,14 +223,13 @@ export default class Viewer extends Component {
   initializeEnterTween() {
     const duration = this.props.enterTween.duration || 1;
     let openPin = false;
-    console.warn("this.props.enterTween", this.props.enterTween);
+    console.warn("this.props.enterTween", duration, this.props.enterTween);
     gsap.set(this.viewerRef.current, {
       yPercent: -100 * duration,
     });
     if (void 0 !== this.props.enterTween.pin) {
       openPin = this.props.enterTween.pin;
     }
-
     this.enterTimeline = gsap.timeline({
       scrollTrigger: {
         trigger: this.viewerRef.current,
@@ -294,6 +296,17 @@ export default class Viewer extends Component {
         )
       );
     }
+    if (this.props.exitTween.to) {
+      this.exitTimeline.to(
+        this.viewerRef.current,
+        Object.assign(
+          {
+            ease: "none",
+          },
+          this.props.exitTween.to
+        )
+      );
+    }
   }
 
   poolNewFrames(index) {

+ 0 - 0
src/index.css


部分文件因文件數量過多而無法顯示