1"use strict";(self.webpackChunkryan_app=self.webpackChunkryan_app||[]).push([[826],{3315:(e,a,t)=>{t.r(a),t.d(a,{default:()=>c});var s=t(7722),o=t(8520),r=t(3497),l=(t(428),t(6175)),i=t(8407),d=t(34);const n={introduction:[{src:"/assets/projects/voxelearth/86185a_22deb243fabd458782281b4587953953~mv2.png",width:286,height:285,alt:"Introduction Image 1"},{src:"/assets/projects/voxelearth/86185a_60aa6f8519c44fca8d2bf0b357e61c95~mv2.png",width:286,height:285,alt:"Introduction Image 2"},{src:"/assets/projects/voxelearth/86185a_0869c0fa9f08439ab51d984f5d1c410b~mv2.png",width:285,height:285,alt:"Introduction Image 3"}],methodological:[{src:"/assets/projects/voxelearth/86185a_efc8065468d54e55923e80531f523b7b~mv2.png",width:3e3,height:1457,alt:"Methodological Image 1"},{src:"/assets/projects/voxelearth/86185a_48a954b6b4e34022a5909b97f4300b73~mv2.jpg",width:453,height:254,alt:"Methodological Image 2"},{src:"/assets/projects/voxelearth/86185a_5f49e904348144f4986f48569ce1c551~mv2.jpg",width:453,height:254,alt:"Methodological Image 3"}],additional:[{src:"/assets/projects/voxelearth/86185a_dc48a958de874d6d826c12d2e3381cb0~mv2.jpg",width:499,height:280,alt:"Additional Image 1"},{src:"/assets/projects/voxelearth/86185a_9bf230ca08bf4a70a368410787d787eb~mv2.jpg",width:400,height:224,alt:"Additional Image 2"}],minecraft:[{src:"/assets/projects/voxelearth/86185a_481497c35f244ef3875ccd2fab818e80~mv2.png",width:425,height:180,alt:"Minecraft Support Image 1"},{src:"/assets/projects/voxelearth/86185a_bc077d7a8a334ac79ed4d2539804b6fd~mv2.png",width:505,height:260,alt:"Minecraft Support Image 2"}],acknowledgements:[{src:"/assets/projects/voxelearth/86185a_95481eacdd51459eaec9f6487155fe8a~mv2.png",width:965,height:408,alt:"Acknowledgements Image 1"},{src:"/assets/projects/voxelearth/86185a_de903b513c9944c68859efcbfb02a6bf~mv2.png",width:458,height:258,alt:"Acknowledgements Image 2"},{src:"/assets/projects/voxelearth/86185a_0869c0fa9f08439ab51d984f5d1c410b~mv2.png",width:458,height:258,alt:"Acknowledgements Image 3"},{src:"/assets/projects/voxelearth/86185a_3d1fb4bb265e48ada401dcdf72310a94~mv2.png",width:921,height:518,alt:"Acknowledgements Image 4"},{src:"/assets/projects/voxelearth/86185a_1583d44e45f74a9a8144271fc5896a45~mv2.png",width:452,height:254,alt:"Acknowledgements Image 5"},{src:"/assets/projects/voxelearth/86185a_c1758cd146594803af397f87a07a31ab~mv2.png",width:452,height:254,alt:"Acknowledgements Image 6"},{src:"/assets/projects/voxelearth/86185a_d0f0fe6779044d84a7ed918d0f348d17~mv2.jpg",width:464,height:347,alt:"Acknowledgements Image 7"},{src:"/assets/projects/voxelearth/86185a_02e6a93bfe0f4bd9bbf8e53aab54c11f~mv2.png",width:244,height:161,alt:"Acknowledgements Image 8"},{src:"/assets/projects/voxelearth/86185a_71184a4966214fb0bc40372b70e44ddb~mv2.png",width:215,height:161,alt:"Acknowledgements Image 9"},{src:"/assets/projects/voxelearth/86185a_e5da95cc34c84fe7a8278e96a7b25e48~mv2.png",width:921,height:388,alt:"Acknowledgements Image 10"},{src:"/assets/projects/voxelearth/86185a_16f5f467d41f47c8903743ccd572df5a~mv2.png",width:407,height:305,alt:"Acknowledgements Image 11"},{src:"/assets/projects/voxelearth/86185a_4bfaf7d99b51464c930d77328cc96959~mv2.png",width:509,height:305,alt:"Acknowledgements Image 12"},{src:"/assets/projects/voxelearth/86185a_22deb243fabd458782281b4587953953~mv2.png",width:921,height:383,alt:"Acknowledgements Image 13"},{src:"/assets/projects/voxelearth/86185a_1d498a5fce894e7082f1ebafdbe3c97d~mv2.png",width:458,height:611,alt:"Acknowledgements Image 14"},{src:"/assets/projects/voxelearth/86185a_894002b626974eda93538ceafd839120~mv2.png",width:458,height:611,alt:"Acknowledgements Image 15"}]},c=()=>
1{const[e,a]=(0,s.useState)(null),[t,c]=(0,s.useState)(null),h=(e,t)=>{c(e),a(t)};return(0,d.jsxs)("section",{className:"section py-16 px-6 min-h-screen max-w-5xl mx-auto mt-8","data-oid":"5l0b:wr",children:[(0,d.jsx)("div",{className:"mb-8","data-oid":"u-rmijf",children:(0,d.jsx)(o.N_,{to:"/",className:"text-blue-600 dark:text-blue-400 hover:underline text-lg","data-oid":"tmsxx-_",children:"\u2190 Back to Portfolio"})}),(0,d.jsxs)("div",{"data-oid":"tl2vk0j",className:"mb-2",children:[(0,d.jsx)("h1",{className:"text-5xl font-extrabold text-gray-800 dark:text-gray-100 mb-2","data-oid":"0e0fd4u",children:"VOXEL EARTH"}),(0,d.jsx)("h2",{className:"text-2xl font-semibold text-gray-700 dark:text-gray-300","data-oid":"cwmc92g",children:"Voxelizing Google Earth for New Virtual Worlds"})]}),(0,d.jsxs)("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center","data-oid":".6vxdpt",children:[(0,d.jsx)("div",{className:"flex flex-col md:flex-row justify-between items-start mb-6","data-oid":"iu1i.v5",children:(0,d.jsxs)("div",{"data-oid":"prpq7eb",children:[(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300","data-oid":"14ugutc",children:(0,d.jsx)("strong",{"data-oid":"qhjcd1j",children:"Presented at SIGGRAPH 2024"})}),(0,d.jsxs)("p",{className:"text-sm text-gray-700 dark:text-gray-300","data-oid":"tvrpbe4",children:[(0,d.jsx)("strong",{"data-oid":"nuivrgh",children:"Team:"})," Ryan Hardesty Lewis"]})]})}),(0,d.jsxs)("div",{className:"mt-2 md:mt-0 flex flex-col space-y-2","data-oid":"ze4m1n5",children:[(0,d.jsxs)("a",{href:"https://voxelearth.org",target:"_blank",rel:"noopener noreferrer",className:"bg-gray-800 hover:bg-gray-700 text-white font-semibold py-2 px-4 rounded inline-flex items-center","data-oid":"7bydfi.",children:[(0,d.jsx)(l.A,{size:16,className:"mr-2"}),"Website"]}),(0,d.jsxs)("a",{href:"https://github.com/ryanhlewis/voxelearth",target:"_blank",rel:"noopener noreferrer",className:"bg-gray-800 hover:bg-gray-700 text-white font-semibold py-2 px-4 rounded inline-flex items-center","data-oid":"placeholder-github",children:[(0,d.jsxs)("svg",{className:"w-4 h-4 mr-2",role:"img",viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","data-oid":"znmj2c1",children:[(0,d.jsx)("title",{"data-oid":"t_nsijh",children:"GitHub icon"}),(0,d.jsx)("path",{d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.387.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.726-4.042-1.61-4.042-1.61 -.546-1.387-1.333-1.757-1.333-1.757-1.09-.745.084-.73.084-.73 1.205.084 1.84 1.236 1.84 1.236 1.07 1.834 2.807 1.303 3.492.997.108-.775.417-1.303.76-1.603-2.665-.305-5.466-1.332-5.466-5.93 0-1.31.47-2.38 1.236-3.22-.124-.304-.536-1.527.117-3.176 0 0 1.01-.322 3.301 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.29-1.552 3.3-1.23 3.3-1.23 .653 1.649.242 2.872.118 3.176.767.84 1.235 1.91 1.235 3.22 0 4.61-2.807 5.62 -5.479 5.92.43.37.81 1.102.81 2.222 0 1.604-.014 2.896-.014 3.286 0 .317.22.686.82.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12","data-oid":"127a0qn"})]}),"GitHub"]})]})]}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mb-4","data-oid":"3nl:vl4",children:"INTRODUCTION"}),(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"dcqq:v-",children:"Voxel Earth is an innovative pipeline that automatically converts Google Maps Photorealistic 3D Tiles into voxels\u2014making it possible to explore detailed, interactive worlds within platforms like Minecraft, web browsers, and virtual reality. By transforming high-resolution satellite imagery into fully navigable voxel-based landscapes, this approach bridges the gap between complex geographic data and immersive three-dimensional environments. The result is a scalable, accessible way to experience the planet, block by block."}),(0,d.jsx)(r.A,{layout:"rows",photos:n.introduction,onClick:e=>{let{index:a}=e;return h("introduction",a)},componentsProps:{image:{className:"object-cover w-full h-full"}},"data-oid":"5f9hj72"}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"xohyzs-",children:"INITIAL CONCEPT"}),(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"u5zue6a",children:"The drive behind Voxel Earth was a desire to bring lifelike, voxel-styled representations of real-world locations into popular game or VR environments. Traditionally, such creations involved cumbersome methods of manually collecting and convert
1ing geographic data. By using Google\u2019s Photorealistic 3D Tiles as our starting point, we could automate this process. The result? You can now explore detailed renditions of famous landmarks\u2014or your own hometown\u2014rendered in an interactive, voxelized style."}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"qqgkkps",children:"METHODOLOGICAL INNOVATIONS"}),(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"unkq65o",children:"At Voxel Earth\u2019s core is an automated pipeline that breaks down Google\u2019s 3D Tiles into voxel grids, each voxel capturing data such as color and material. This process begins by gathering high-resolution 3D Tiles that accurately reflect real-world topography. Our pipeline then slices each tile into a seamless grid of voxels, which can be varied to different resolutions, ensuring maximum fidelity to the source material."}),(0,d.jsxs)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"70_8gxa",children:["A specialized machine learning algorithm further refines these voxels into corresponding Minecraft blocks (or other voxel-based systems), preserving the original environment\u2019s visual and contextual integrity. This is known as ",(0,d.jsx)("i",{children:"semantic segmentation"}),", where we attempt to label different parts of the geospatial data, such as water or trees, into their corresponding class. For example, water areas become water blocks, vegetation turns into the appropriate flora, and buildings map to relevant structural blocks."]}),(0,d.jsxs)("div",{className:"flex flex-col space-y-4","data-oid":"dm52w1m",children:[(0,d.jsx)("img",{src:n.methodological[0].src,alt:n.methodological[0].alt,className:"w-full object-cover cursor-pointer",onClick:()=>h("methodological",0),"data-oid":"yy77f_r"}),(0,d.jsx)("div",{className:"flex space-x-4","data-oid":"4b9k.i8",children:n.methodological.slice(1,3).map((e,a)=>(0,d.jsx)("div",{className:"w-1/2","data-oid":"itgzy5.",children:(0,d.jsx)("img",{src:e.src,alt:e.alt,className:"w-full h-auto object-cover cursor-pointer",onClick:()=>h("methodological",a+1),"data-oid":"hvmza8l"})},a))})]}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"_3tkzsx",children:"TECHNICAL CHALLENGES & SOLUTIONS"}),(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"v-20w0m",children:"Converting Earth\u2019s vast geospatial data into voxel form presents monumental data-processing challenges. Our approach includes parallel GPU-accelerated processing to handle enormous workloads, along with careful data compression designed for voxel structures. We also correct for the ECEF (Earth-Centered, Earth-Fixed) coordinate system, ensuring each voxel aligns precisely with real-world geometry. By continuously drawing upon Google\u2019s on-demand 3D Tiles, we keep our voxelized world as current as possible."}),(0,d.jsxs)("div",{className:"flex space-x-4","data-oid":"wu-npcg",children:[(0,d.jsx)("img",{src:n.additional[0].src,alt:n.additional[0].alt,className:"w-1/2 object-cover cursor-pointer",onClick:()=>h("additional",0),"data-oid":"q_m0amp"}),(0,d.jsx)("img",{src:n.additional[1].src,alt:n.additional[1].alt,className:"w-1/2 object-cover cursor-pointer self-center",onClick:()=>h("additional",1),"data-oid":"m3lp05z"})]}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"jo-m8e7",children:"MINECRAFT SUPPORT"}),(0,d.jsxs)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"ofsllrx",children:["We also offer a Minecraft plugin so users can experience real-world locations within the familiar blocky realm of the game. Want to take a stroll through your city or visit an iconic monument? You can do just that. To try it yourself, join the Minecraft server at"," ",(0,d.jsx)("a",{href:"https://play.voxelearth.org",target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dar
1k:text-blue-400 hover:underline","data-oid":"cg3.015",children:"play.voxelearth.org"}),"."]}),(0,d.jsxs)("div",{className:"flex space-x-4","data-oid":"x1z8l-5",children:[(0,d.jsx)("img",{src:n.minecraft[0].src,alt:n.minecraft[0].alt,className:"w-1/2 object-cover cursor-pointer",onClick:()=>h("additional",0),"data-oid":"ai-apkg"}),(0,d.jsx)("img",{src:n.minecraft[1].src,alt:n.minecraft[1].alt,className:"w-1/2 object-cover cursor-pointer self-center",onClick:()=>h("additional",1),"data-oid":"n:zqmhw"})]}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"23:x__-",children:"VIDEO"}),(0,d.jsxs)("video",{controls:!0,preload:"metadata",children:[(0,d.jsx)("source",{src:"/assets/projects/voxelearth/preview.mp4",type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,d.jsx)("h3",{className:"text-2xl font-semibold text-gray-800 dark:text-gray-100 mt-12 mb-4","data-oid":"23:x__-",children:"ACKNOWLEDGEMENTS"}),(0,d.jsx)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed","data-oid":"o.h8pm1",children:"This project uses data from Google Maps. \xa9 2024 Google LLC, used under fair use."}),(0,d.jsxs)("p",{className:"text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-6","data-oid":"yyugdpg",children:["Special thanks to the ",(0,d.jsx)("i",{"data-oid":"anitiiv",children:"Backslash Art Initiative"})," ","for generously supporting our usage of the Google Maps API."]}),(0,d.jsx)("img",{src:"/assets/projects/voxelearth/86185a_95481eacdd51459eaec9f6487155fe8a~mv2.png",alt:"Acknowledgements Footer Image",className:"w-full object-cover my-8 cursor-pointer",onClick:()=>h("acknowledgements",0),"data-oid":"ekb5r60"}),(0,d.jsx)(r.A,{layout:"rows",photos:n.acknowledgements.slice(1),onClick:e=>{let{index:a}=e;return h("acknowledgements",a+1)},"data-oid":"yevct4t"}),null!==t&&null!==e&&(0,d.jsx)(i.A,{items:n[t],index:e,isOpen:!0,onClose:()=>{c(null),a(null)},onIndexChange:e=>{a(e)}})]})}},8407:(e,a,t)=>{t.d(a,{A:()=>r});t(7722);var s=t(1358),o=(t(5337),t(34));const r=e=>{let{items:a,index:t,isOpen:r,onClose:l,onIndexChange:i}=e;if(!r)return null;const d=a.map(e=>{var a;return{src:e.src,description:null!==(a=e.alt)&&void 0!==a?a:e.title}});return(0,o.jsx)(s.Ay,{open:r,slides:d,index:t,close:l,controller:{closeOnBackdropClick:!0,closeOnPullDown:!0},render:{buttonPrev:a.length>1?void 0:()=>null,buttonNext:a.length>1?void 0:()=>null},on:{view:e=>{let{index:a}=e;return i(a)}}})}}}]); 2//# sourceMappingURL=826.a4dc2f5e.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.