diff --git a/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md b/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md
new file mode 100644
index 00000000..53375616
--- /dev/null
+++ b/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md
@@ -0,0 +1,44 @@
+---
+title: "Community-led planning trends presented at the Caltrans Equity Advisory Committee"
+description: At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet’s own Kieran Farr shared expertise on the global trend of community-led planning.
+authors: kfarr
+tags: [policy, urban planning, community-led planning, community]
+image: ./images/2024-04-22/slide-community-led-planning.jpg
+---
+
+3DStreet’s creator Kieran Farr was invited to present at the California State Transportation Interagency Equity Advisory Committee (EAC) meeting April 5.
+
+At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet’s own Kieran Farr shared expertise on the global trend of community-led planning and the current blockers preventing local stakeholders from engaging with local transportation agencies. Below is a summarization of the presentation to share our learnings from practitioners around the world experimenting with community-led design
+
+
+## Community-Led Planning as Global Trend
+Over the past 6 months I've met hundreds of folks across the transportation and planning industry – from city planners and city and state transportation officials to local community activists, NGOs, private engineering consultants and many more.
+
+Hundreds of meetings later, a clear trend has emerged from these conversations: The rising force of "Community-led Planning" – empowering local community members to envision and advocate for changes to their streets and public spaces. However, there are significant challenges preventing this from becoming mainstream practice.
+
+## The Challenge - Negative Trust Spiral
+The core issue, as articulated by practitioners worldwide, is that it's very difficult for most people to imagine changes to their streets. This leads to a negative feedback loop:
+* Projects face pushback from the community because they don't understand the proposed changes
+* This results in delays, watered-down designs, or even outright cancellations
+* Trust erodes between the agency and community
+
+![](./images/2024-04-22/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects.jpg)
+**Community engagement is often treated as a point-in-time exercise rather than a continuous process.**
+
+Forward-thinking communities are trying to change this by making community feedback an integral, ongoing part of the planning process. Crucially, project ideas originate from the community itself, which then collaborates with the appropriate agency to refine the design to serve local needs.
+
+## Addressing Agency/Community Asymmetry
+Underlying this dynamic is a major knowledge asymmetry between transportation professionals and the general public when it comes to street design.
+
+To enable meaningful community participation we need to level the playing field – to lift up community members from out of the informational asymmetry crevasse. One way to do this is through a simple, shared visual language to understand the geospatial relationships and design constraints of their streets. This is the key problem we're working to solve at 3DStreet, along with other industry partners [Streetmix.net](https://about.streetmix.net/), [inCitu](https://www.incitu.us/), [StreetPlan.net](https://streetplan.net/), and the [OSM Pedestrian Working Group](https://hackmd.io/legG6QzVREKTsiTSxUS2zA?view).
+
+This emerging ecosystem of no/low cost tools allow anyone to quickly prototype street designs, transforming 2D diagrams into interactive 3D models. Early case studies show the power of this approach:
+
+* [In Manchester, CA, the city engineer used 3DStreet to clearly communicate parking tradeoffs for a Main Street redesign, a top concern for local businesses](https://www.youtube.com/watch?v=ycNIaqczyv0)
+* [NGOs like Transport Oakland are training their members to create compelling visuals for advocacy using these tools on group workshop calls](https://studio.youtube.com/video/m393-ZNeU68/edit)
+* [At a street fair in San Francisco, we enabled attendees to interactively place street furniture, plantings and amenities using just their smartphones to imagine a green "streets to parks" conversion](//blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research#reaction-and-productization-1)
+
+Historically, 3D modeling, urban planning and civil engineering required expensive proprietary software. But with the consumerization of augmented reality and open-source tools like 3DStreet combined with widely-deployed WebXR and geospatial standards, these capabilities are now accessible to all. While much work remains to make them truly user-friendly, the potential to revolutionize community engagement is tremendous.
+
+By equipping residents with the tools to express their vision, while educating them about real-world constraints, we can build trust, understanding and consensus between communities and transportation agencies. This is the promise of community-led planning – and it's a future we're excited to build together.
+
diff --git a/404.html b/404.html
index df58752f..1f3a18b1 100644
--- a/404.html
+++ b/404.html
@@ -11,8 +11,8 @@
-
-
+
+
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
diff --git a/assets/images/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects-1dc5cebcd64eca88e345c10e93a7a890.jpg b/assets/images/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects-1dc5cebcd64eca88e345c10e93a7a890.jpg
new file mode 100644
index 00000000..b7e8ac8e
Binary files /dev/null and b/assets/images/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects-1dc5cebcd64eca88e345c10e93a7a890.jpg differ
diff --git a/assets/images/slide-community-led-planning-1185e2a6ed990e1eb3f7c208a20be168.jpg b/assets/images/slide-community-led-planning-1185e2a6ed990e1eb3f7c208a20be168.jpg
new file mode 100644
index 00000000..e2cc8316
Binary files /dev/null and b/assets/images/slide-community-led-planning-1185e2a6ed990e1eb3f7c208a20be168.jpg differ
diff --git a/assets/js/0afd36a3.9adf8c46.js b/assets/js/0afd36a3.9adf8c46.js
new file mode 100644
index 00000000..8a3bfc8e
--- /dev/null
+++ b/assets/js/0afd36a3.9adf8c46.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[4134],{5734:e=>{e.exports=JSON.parse('{"title":"Community-led planning trends presented at the Caltrans Equity Advisory Committee","description":"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.","authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"./images/2024-04-22/slide-community-led-planning.jpg","blogURL":"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee"}')}}]);
\ No newline at end of file
diff --git a/assets/js/0afd36a3.deaa1bf1.js b/assets/js/132139d8.966d2a31.js
similarity index 89%
rename from assets/js/0afd36a3.deaa1bf1.js
rename to assets/js/132139d8.966d2a31.js
index 3ce03cbb..f696c70c 100644
--- a/assets/js/0afd36a3.deaa1bf1.js
+++ b/assets/js/132139d8.966d2a31.js
@@ -1 +1 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[4134],{5734:e=>{e.exports=JSON.parse('{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"./images/2024-03-25/3d-tiles-3dstreet.jpeg","blogURL":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[1617],{8074:e=>{e.exports=JSON.parse('{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"./images/2024-03-25/3d-tiles-3dstreet.jpeg","blogURL":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"}')}}]);
\ No newline at end of file
diff --git a/assets/js/3886a17a.8329fbcb.js b/assets/js/3886a17a.8329fbcb.js
new file mode 100644
index 00000000..87737934
--- /dev/null
+++ b/assets/js/3886a17a.8329fbcb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[5416],{8798:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/policy","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/3e0df243.1f7b2113.js b/assets/js/3e0df243.1f7b2113.js
deleted file mode 100644
index 8dfe3493..00000000
--- a/assets/js/3e0df243.1f7b2113.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[4683],{9093:e=>{e.exports=JSON.parse('{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","description":"What changes should WebXR developers consider to their application given new devices coming to market?","authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"./images/visionOS-platform-compressed.jpg","blogURL":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr"}')}}]);
\ No newline at end of file
diff --git a/assets/js/7d48d4d7.af4398b1.js b/assets/js/3e0df243.2f82fc65.js
similarity index 92%
rename from assets/js/7d48d4d7.af4398b1.js
rename to assets/js/3e0df243.2f82fc65.js
index 9d2bdbf3..acb13f86 100644
--- a/assets/js/7d48d4d7.af4398b1.js
+++ b/assets/js/3e0df243.2f82fc65.js
@@ -1 +1 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[5616],{9106:t=>{t.exports=JSON.parse('{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","authors":[{"name":"Ivan Denysyuk","title":"CEO at Zade","url":"https://www.linkedin.com/in/ivan-denysyuk-171585148/","imageURL":"https://media.licdn.com/dms/image/C4E03AQFalzhqOpaXYw/profile-displayphoto-shrink_800_800/0/1650363550337?e=1712188800&v=beta&t=z1C-cetFrHoP5ao_i9cLsJmCi3quhrcZ0kmhd9OGz3s","key":"idenysyuk"},{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"https://i.imgur.com/YyKGZA7.jpeg","blogURL":"/blog/2024/01/29/partner-spotlight-zade"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[4683],{9093:t=>{t.exports=JSON.parse('{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","authors":[{"name":"Ivan Denysyuk","title":"CEO at Zade","url":"https://www.linkedin.com/in/ivan-denysyuk-171585148/","imageURL":"https://media.licdn.com/dms/image/C4E03AQFalzhqOpaXYw/profile-displayphoto-shrink_800_800/0/1650363550337?e=1712188800&v=beta&t=z1C-cetFrHoP5ao_i9cLsJmCi3quhrcZ0kmhd9OGz3s","key":"idenysyuk"},{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"imageURL":"https://i.imgur.com/YyKGZA7.jpeg","blogURL":"/blog/2024/01/29/partner-spotlight-zade"}')}}]);
\ No newline at end of file
diff --git a/assets/js/4200b1a9.0a06a2a7.js b/assets/js/4200b1a9.0a06a2a7.js
deleted file mode 100644
index 17e6d1a1..00000000
--- a/assets/js/4200b1a9.0a06a2a7.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[866],{4612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","metadata":{"permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","source":"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md","title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","date":"2024-03-25T00:00:00.000Z","formattedDate":"March 25, 2024","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"3dtiles","permalink":"/blog/tags/3-dtiles"},{"label":"google maps","permalink":"/blog/tags/google-maps"},{"label":"geospatial","permalink":"/blog/tags/geospatial"},{"label":"ar","permalink":"/blog/tags/ar"}],"readingTime":6.1,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","authors":"kfarr","tags":["webxr","3dtiles","google maps","geospatial","ar"],"image":"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},"unlisted":false,"nextItem":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},"content":"\\"Geospatial\\" is the uniting theme for the many feature requests we get from 3DStreet\'s growing user base. Users\xa0can already place custom street scenes, so it\'s natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we [explore common repeatable workflows for visualizing safer infrastructure](/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero).\\n\\nTo kick off 2024 we\'ve been doing some experiments to see how these technologies could be applied to public streets and spatial design.\\n\\n![](./images/2024-03-25/3d-tiles-3dstreet.jpeg)\\n**Proof of concept 3D Tiles and 3DStreet scene combined.**\\n\\n\x3c!-- truncate --\x3e\\n## Google Maps 3D Tiles\\n\\nWe updated the New York Times R&D team\'s [GitHub repository for the OGC 3D Tiles A-Frame VR Component](https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api) to support loading 3D maps from Google Maps 3D Tiles. (Thanks Avner for doing the hard three.js work to make this happen.)\\n\\n### Why is this important?\\n\\nWhen presenting street improvements projects, leveraging the existing environment provides instantaneous context and understanding for stakeholders of all ages and abilities. Even low fidelity representations of the surrounding environment helps viewers recognize a project\'s location and orientation.\\n\\nThis experiment is a first step to adding 3D maps as a new feature to 3DStreet Editor.\\n\\n### Video Demo\\nThis video is a demo of what it could look like to localize your 3DStreet scene with 3D map tiles near Market and Van Ness Streets in San Francisco.\\n\\n\\n\\n### Reaction and productization\\n\\nThis demo resonated well with users -- [our first tweet sharing the concept](https://twitter.com/3dstreetapp/status/1768310079307272423) was retweeted 11 times and liked more than 50 times on Twitter and [attracted engaging comments on LinkedIn](https://www.linkedin.com/posts/3dstreet_threejs-activity-7174079008819560449-kzqw).\\n\\nUsers would like 3D Map Tiles productized as a built-in feature of 3DStreet, but unfortunately the Google 3D Tiles API is significantly more expensive than traditional 2D map tiles starting at [$6 per 1000 unique user sessions](https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api). In order to offer this feature we will need to come up with a paid subscription plan option to cover the costs of Google Maps 3D Tiles access.\\n\\n## Bollard Buddy AR - mobile app for manual geolocation and object placement\\nThe recent [DreamXR hackathon](https://dreamxr.co/) in San Francisco was the perfect environment to work alongside other XR developers for inspiration to finish a new app in 48 hours. We created BOLLARD BUDDY AR -- an app that lets you place traffic control devices anywhere using augmented reality!\\n\\n### Video Demo\\nIt\'s easiest to show with a video:\\n\\n\\n\\nThe app is simple:\\n* Press PLAY to start the AR view after scanning a QR code*\\n* Then tap to place cones or other objects at the yellow cursor.\\n* Choose between a few different traffic safety device models from the 3DStreet model library\\n\\nWhile cool, it is technically \\"table stakes\\" within the scope of AR app demos. But what\'s next makes it more useful.\\n\\n### Geospatial QR hack for fake VPS\\nWhat makes BOLLARD BUDDY AR app unique compared to other AR \\"tap to place\\" demos is the connection to a specific location -- a longitude and latitude is embedded in the app QR code so that any objects placed in the scene can be localized relative to that longitude and latitude origin point.\\n\\nThis is extremely effective as a cheap and easy way to have a perfect \\"virtual positioning system\\" (or VPS) as long as the person posting the sign is capable of posting the sign at the very specific longitude and latitude (and orientation) associated with the QR code. This is easier than it sounds -- by simply dropping a pin on Apple or Google Maps at a clearly identifiable landmark such as a parking meter or telephone pole at a sufficient zoom level you can get a very precise longitude and latitude.\\n\\n### Create and share from mobile -- serverless with no auth\\nThe other unique BOLLARD BUDDY AR feature is sharing your newly created augmented reality street scene with other users (and even yourself) to refer to in the future.\\n\\nOutside in the bright sun on the hot tarmac we don\'t want to challenge users with authentication or collecting data that requires keyboard input. How can we allow people to share a complicated geospatial scene without a server or authentication?\\n\\nOur trick was to stuff the newly created scene data in the URL as url-encoded data. More specifically, a JSON representation of the array of 3D A-Frame entities and for each their mixin, position, rotation properties are all [crushed](https://github.com/KilledByAPixel/JSONCrush) and placed as a querystring value in a new \\"Share URL\\".\\n\\nThen we use the native OS share dialog to allow the user to choose how they want to share this, from copy/paste to sending message, email, AirDrop (my favorite) or more.\\n\\n### Challenges with web-based Augmented Reality\\n\\nI\'ve always been excited about the fun factor of AR and VR headsets, but recent technology advances in everyday smart phones means that the same tech is possible without a headset leveraging built-in AR libraries such as ARKit and ARCore on Apple and Android devices respectively.\\n\\nThe magic of these AR libraries is precision -- they have extremely accurate [simultaneous localization and mapping (SLAM)](https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping) available out-of-the-box for native apps usable on almost any device you may have in your pocket.\\n\\nUntil now these libraries have only been available for native applications, but recently web JavaScript-based access was made available on Android through WebXR AR Mode bindings. iOS devices using Safari have not yet supported WebXR AR Mode, however recently there have been a few \\"polyfill\\" workarounds. We are using [Variant Launch](https://launch.variant3d.com/) which provides a (nearly) seamless experience for iOS users to instantly launch web-based AR apps. Behind the scenes, Variant Launch uses Apple\'s iOS \\"App Clips\\" feature to the underlying ARKit library through the WebXR JavaScript standard without needing to download an app first.\\n\\n### Reaction and productization\\n\\nPeople often show surprise when using the app for the first time -- perhaps from the fun of reconfiguring public space for the first time, or the magic of discovering a super power they didn\'t realize their smart phone supported.\\n\\nSome users see past the initial \\"Wow Moment\\" to practical use cases, especially for professional field measurement and planning for traffic control device placement or other civil engineering-related purpose. In fact, once users start placing basic cones provided in the default application it\'s not long before they start thinking of other objects they\'d like to place and additional use cases.\\n\\nWe\'ve continued development of this app concept, most recently adding new objects and improving usability and trying it out with real users at a street fair in San Francisco Saturday March 23.\\n\\n![](./images/2024-03-25/treat-fair-bollard-buddy-signage-960x0.webp)\\n**Picture of a street fair with QR code on signage to collect feedback from community members using a modified version of BOLLARD BUDDY AR with plants, flowers and other street greening objects. [Credit Benjamin Fanjoy/The Chronicle](https://www.sfchronicle.com/bayarea/article/treat-avenue-green-space-19362364.php)**\\n\\nSimilar to other geospatial features, there are fees incurred to make AR placement apps available across all devices (especially including iOS).\\n\\n## Feedback and next steps\\nI\'d love to hear your feedback on this work at [kieran@3dstreet.org](mailto:kieran@3dstreet.org). Would you like these features? What is a price that you would pay for a subscription plan that includes these features?"},{"id":"/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","metadata":{"permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","source":"@site/blog/2024-01-30-creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero.md","title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","date":"2024-01-30T00:00:00.000Z","formattedDate":"January 30, 2024","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"gltf","permalink":"/blog/tags/gltf"},{"label":"adobe aero","permalink":"/blog/tags/adobe-aero"},{"label":"streetmix","permalink":"/blog/tags/streetmix"},{"label":"ar","permalink":"/blog/tags/ar"},{"label":"vps","permalink":"/blog/tags/vps"},{"label":"localization","permalink":"/blog/tags/localization"}],"readingTime":4.455,"hasTruncateMarker":true,"authors":[{"name":"Marc Schlossberg","title":"Professor, City & Regional Planning, University of Oregon","url":"https://pppm.uoregon.edu/directory/profiles/all/schlossb","imageURL":"https://pppm.uoregon.edu/sites/pppm1.uoregon.edu/files/uo_profiles/schlossb4d2e43.jpg","key":"mschlossberg"}],"frontMatter":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","authors":"mschlossberg","tags":["webxr","gltf","adobe aero","streetmix","ar","vps","localization"],"image":"./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"},"nextItem":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade"}},"content":"![](./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png)\\n\\nGreetings! I\'m Marc Schlossberg, and I\'ve been working alongside [Danny Pimentel](https://journalism.uoregon.edu/directory/faculty-and-staff/all/pimend) and graduate student [Luke Walker](https://www.linkedin.com/in/luke-walker-439b78119/) at the University of Oregon on an exciting project: crafting augmented reality (AR) landscapes for our streets. What I have here is a practical, step-by-step guide designed to walk you through how to bring this innovative vision to your own neighborhood. So, let\'s roll up our sleeves and get our hands digitally dirty!\\n\\n\x3c!-- truncate --\x3e\\n\\n## Getting Started: Measuring and Designing\\n\\n![](./images/2024-01-30/lVthCNUM7YLUyBGXixqk-10.87.png)**First things first\u2014measure up!**\\n\\nTo kick things off, you need to know how wide your street is. This is more straightforward than it sounds: just pop over to Google Street View or use an aerial photo, and get an approximate measurement. It\'s okay if it\'s not pinpoint accurate \u2014 we just need a ballpark figure.\\n\\n**Crafting Your Street: Easy as Pie with Streetmix**\\n\\nOnce you\'ve got your measurements, it\'s time to jump onto Streetmix\u2014a free, user-friendly online tool that lets you reimagine that street space to your heart\'s content. Want to add bike lanes, benches, or green spaces? Simply drag and drop the elements you want to include, adjusting the widths to fit your street\u2019s dimensions. Here\u2019s where your creativity shines!\\n\\n![](./images/2024-01-30/J7eHGPI8MA57Pyzgsd8i-41.61.png)For my project, I took a standard residential street and turned it into a car-free park, a delightful haven for community gatherings. Imagine that \u2014 but on your block! Feel free to start with the street I made - Demo St.: https://streetmix.net/schlossb/20/demo-st\\n\\n## Viewing Your Creation: 3DStreet\'s Magic\\n\\n![](./images/2024-01-30/29P0QTWEp8JbvCQ8PeH3-63.32.png)\\n\\nWith your design all set in Streetmix, it\'s time to give it a touch of 3D flair. 3DStreet is a fantastic plugin that lets you visualize your newly designed street in all its three-dimensional glory. Explore your virtual environment, tweak and tune each element until you\u2019re satisfied. It\'s a mini-adventure in urban planning from the comfort of your screen! You can go straight to my Demo St. in 3DStreet as well: https://3dstreet.app/#https://streetmix.net/schlossb/20/demo-st\\n\\n**Trimming the Excess for AR**\\n\\n![](./images/2024-01-30/IkXMBseXhrpqImEJSANN-73.23.png)\\n\\nTo prep for AR, you\'ll want to peel away the layers that aren\u2019t needed\u2014like buildings, to keep things neat. After simplifying, you can then export your model directly into a format that\'s ready for the world of augmented reality.\\n\\nTo delete a layer, select the layer in the left-hand panel -- such as \\"Buildings & Blocks Container\\" in the screenshot above -- then press the `delete` key and click `ok`. This will remove buildings and grounds from lots that are not needed for our AR project.\\n\\n## Optional Tweaks: A Blender Bonus\\n\\n![](./images/2024-01-30/kmXnEg7FMoHUxW0GgLiu-95.91.png)For the enthusiasts out there who relish fine-tuning, the free software Blender is your playground. Here, you can manipulate your 3D model to perfection. However, remember this is purely optional\u2014the process is meant to be quick and streamlined.\\n\\n## Bringing It to Life: Augmented Reality Integration\\n\\nAlright, now to the magical part\u2014transferring your 3D model to an augmented reality software. I personally use [Adobe Aero](https://www.adobe.com/products/aero.html), thanks to the site license at the university, but there are other AR apps you can explore. This step allows you to add animations and make your scene come alive, although again, this step is not necessary for the \\"quick and dirty\\" path.\\n\\n![](./images/2024-01-30/tSVcvVL1kH92J4F4ALF8-112.94.png)\\n\\nAR software opens with an empty workspace and, at least in Aero, you can simply drag and drop your 3D file onto the workspace and the whole thing magically appears. In many ways it will look exactly like it did in 3DStreet.\\n\\n**Geolocation: Pinning It to the Real World**\\n\\n![](./images/2024-01-30/M5vycvy2ClFbSLnLm6FY-133.23.png)What\u2019s truly remarkable with software like Adobe Aero is the ability to anchor your AR scene to a precise location on Earth. While this grounds your creation to a specific spot, it\'s not mandatory; you can always opt to apply your scene freely to any street you wish.\\n\\n![](./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png)\\n\\n## Sharing Your Vision: Universal Access\\n\\n![](./images/2024-01-30/KffxVJZ1prku9AeBBemu-158.27.png)\\n\\nOnce your AR scene is polished and ready, you create a shareable link through Adobe Aero. Anyone with this link can open it on their mobile device, head to the designated street, and behold\u2014your digital transformation materializes before their eyes.\\n\\n> \\"Your street is transformed into your scene that you can actually walk through and see what it would look like on your street, and you can go forward, backward, see all the different things that you\'ve done, and really start to reimagine, well, what would this street look like if it wasn\'t a street as has been, but is actually a park, a place for people in this particular example?\\"\\n\\n![](./images/2024-01-30/XP1Nfq1sugGz8zrILMJb-179.54.png)\\n\\n![](./images/2024-01-30/0ek0kL6ZzdbicjxigM67-181.43.png)\\n\\nTo illustrate, envision wandering through the park that was once just a plain street\u2014all through the magic of AR. Moving forward or backward, the entire scene is interactive and truly a game-changer for community engagement and urban design.\\n\\n## Wrapping It Up\\n\\n![](./images/2024-01-30/SjGd11l5Keu216ORRZav-189.75.png)\\n\\nAnd there you have it\u2014a dynamic overview of transforming streets with AR using some clever tools and a pinch of imagination. Not so intimidating now, right? With mostly free resources and a little bit of time, you can be on your way to designing, exploring, and sharing augmented realities that could pave the way for how we perceive and utilize our shared spaces.\\n\\nUntil next time, happy designing and thanks for joining me on this digital adventure. Bye for now!\\n\\n# Video version of this post\\n\\n"},{"id":"/2024/01/29/partner-spotlight-zade","metadata":{"permalink":"/blog/2024/01/29/partner-spotlight-zade","source":"@site/blog/2024-01-29-partner-spotlight-zade.md","title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","date":"2024-01-29T00:00:00.000Z","formattedDate":"January 29, 2024","tags":[{"label":"react","permalink":"/blog/tags/react"},{"label":"development","permalink":"/blog/tags/development"},{"label":"partner","permalink":"/blog/tags/partner"},{"label":"devshop","permalink":"/blog/tags/devshop"},{"label":"web","permalink":"/blog/tags/web"},{"label":"developer","permalink":"/blog/tags/developer"}],"readingTime":2.74,"hasTruncateMarker":true,"authors":[{"name":"Ivan Denysyuk","title":"CEO at Zade","url":"https://www.linkedin.com/in/ivan-denysyuk-171585148/","imageURL":"https://media.licdn.com/dms/image/C4E03AQFalzhqOpaXYw/profile-displayphoto-shrink_800_800/0/1650363550337?e=1712188800&v=beta&t=z1C-cetFrHoP5ao_i9cLsJmCi3quhrcZ0kmhd9OGz3s","key":"idenysyuk"},{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","authors":["kfarr","idenysyuk"],"tags":["react","development","partner","devshop","web","developer"],"image":"https://i.imgur.com/YyKGZA7.jpeg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"},"nextItem":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr"}},"content":"2023 marks a significant year for 3DStreet, made possible through our [talented community of contributors](https://github.com/3DStreet/3dstreet/graphs/contributors) both volunteer and paid. [Zade Agency](https://zade.agency/) fits in the latter category as a software development team for-hire based in Ukraine. Over the past year Zade emerged as a major boost to our development productivity and I wanted to share how their contributions have helped 3DStreet in a critical time for the organization.\\n\\n\x3c!-- truncate --\x3e\\n\\n### The Challenge for 3DStreet\\n\\nTo meet our timeline for a [public beta launch of 3DStreet Editor in 2023](https://www.youtube.com/watch?v=WnjtUW4J8uc), we faced several challenges. A primary concern was the gap in React expertise among our existing development team. While we are skilled in various aspects, existing React knowledge was crucial for implementing deep and rapid modifications to [3DStreet Editor](https://github.com/3DStreet/3dstreet-editor) which is a heavily modified version of the [A-Frame inspector](https://github.com/aframevr/aframe-inspector).\\n\\nAdditionally, as a [self-funded project](https://www.3dstreet.org/docs/about-3dstreet/3dstreet-llc-entity) we have very real budgetary constraints making it imperative to optimize every resource.\\n\\n### Zade\'s Solution to Boost React Development\\n\\nWe found Zade through a direct personal referral via our designer [Daria Dombrovska](https://www.linkedin.com/in/daria-dombrovska-933902207/). Zade immediately brought a wealth of React knowledge through their team of both senior and junior engineers, filling the crucial skill gap in our team.\\n\\nAs a self-trained software developer myself, I worked directly with a senior engineer at the beginning to confirm our architectural approaches and details of our tech stack. I also worked with our account manager to agree on the use of [GitHub Projects, issues, and PRs](https://github.com/orgs/3DStreet/projects/5) to manage our working relationship.\\n\\nFor day-to-day tasks I create [GitHub issues](https://github.com/3DStreet/3dstreet-editor/issues/) that are prioritized in [Projects](https://github.com/orgs/3DStreet/projects/5) and tackled via a junior engineer who is mentored by the experienced staff. Even as a junior engineer, they have way more experience in React fundamentals than I do given my [rather myopic focus on A-Frame and three.js development]() over the past decade.\\n\\n### 2023 Highlight: Launching 3DStreet Cloud\\n\\nOne of the most notable achievements in 2023 was the [launch of 3DStreet Cloud](https://www.youtube.com/watch?v=WnjtUW4J8uc), a React application using [Firebase Firestore](https://firebase.google.com/docs/firestore) on [Google Cloud Platform](https://cloud.google.com/).\\n\\n3DStreet Cloud is the foundation of the growth engine of the [3DStreet Editor product](https://3dstreet.app/) -- it is the system that allows our users to collaborate on safe street designs and fulfill our core mission.\\n\\n### Zade: Empowering Startups with React Expertise\\n\\nNow it\'s time for the pitch, because the Zade team deserves it!\\n\\nAre you an early-stage startup founder needing flexible React development solutions? Zade specializes in helping launch new startups and accelerating growth for existing ones. Their unique ecosystem is tailor-made for product development in the startup world.\\n\\n**Zade\'s Offerings:**\\n\\n- [**LaunchKit:**](https://zade.agency/launchkit/) A program designed to bring your vision to life within a month.\\n- **Integrated Team:** Seamlessly scale your startup with Zade\'s integrated design and development team.\\n\\n**Special Offer for 3DStreet Community:**\\nWhile there\'s no such thing as a free lunch in contract development, Zade extends a special offer to the 3DStreet community. Mention 3DStreet to receive a 15% discount on your first month with Zade \u2013 a deal that might just be more valuable than a few gourmet lunches, depending on your project\'s scale.\\n\\n### Connect with Zade\\n\\nInterested in learning more? Reach out to Zade at ivan@zade.agency, or contact me directly for an introduction. Let\'s embark on a journey of innovation and growth together with Zade\'s expert team!"},{"id":"/2023/12/29/new-mixed-reality-devices-impact-on-webxr","metadata":{"permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr","source":"@site/blog/2023-12-29-new-mixed-reality-devices-impact-on-webxr.md","title":"Impact on WebXR Application Design from New Mixed Reality Headsets","description":"What changes should WebXR developers consider to their application given new devices coming to market?","date":"2023-12-29T00:00:00.000Z","formattedDate":"December 29, 2023","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"headset","permalink":"/blog/tags/headset"},{"label":"mixed-reality","permalink":"/blog/tags/mixed-reality"},{"label":"ar","permalink":"/blog/tags/ar"},{"label":"vr","permalink":"/blog/tags/vr"}],"readingTime":4.385,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","description":"What changes should WebXR developers consider to their application given new devices coming to market?","authors":"kfarr","tags":["webxr","headset","mixed-reality","ar","vr"],"image":"./images/visionOS-platform-compressed.jpg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade"},"nextItem":{"title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","permalink":"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes"}},"content":"A few weeks ago I attended a \\"developer day\\" at a local electronics company down the road featuring their new mixed reality VR headset. I spent the entire day testing many different WebXR applications with a heavy focus on evaluating which user interaction elements will be relevant for developers.\\n\\nBelow are some notes intended for other 3DStreet code contributors to reference as we work on supporting new WebXR compatible devices.\\n\\n\x3c!-- truncate --\x3e\\n\\n## Gaze works very well as a primary user input mechanism\\nGaze interaction *\\"just works\\"* for native applications in this headset, however it\'s a privacy nightmare as gaze movement can be use to fingerprint (identify) individuals for tracking purposes, so that information isn\'t even given to native application. \\n\\nTo enable gaze user interface while not exposing gaze to the application, apps need to provide \\"hot spots\\" or hints as to areas that can be hovered. [There is a great video guide on how to adapt 2D DOM CSS website for gaze highlight interaction](https://developer.apple.com/videos/play/wwdc2023/10279/), but there\'s no clear equivalent to this CSS hinting that can be done in the WebXR \\"3D DOM\\" or 3D space. The need has been recognized however, [there is a new ticket opened in the WebXR `immersive-web` GitHub repository that I recently added to.](https://github.com/immersive-web/proposals/issues/86)\\n\\n## Hand tracking is the most accessible input, not controllers\\nImagine a world where WebXR experiences are 100% hands-free, where a simple ray from the wrist and a pitch of the hand can activate functions. This is not just a possibility but now a necessity -- going forward, all WebXR experiences must be accessible via hands first.\\n\\nWe should now regard hand tracking as the \\"lowest common denominator\\" of user input for headset experiences. Controllers will still offer higher precision, off-camera movement tracking, more button trigger inputs, etc. but they are no longer the most accessible \\"default\\" option.\\n\\n## Launching WebXR applications\\nGetting WebXR working on this device is cumbersome. WebXR must be activated by searching through multiple Safari flags (System Settings > Apps > Safari > Blah blah blah). Then, on the web page itself a user must accept 2 separate approval popups when entering WebXR mode -- one for enabling immersive mode, the other for enabling hand tracking.\\n\\nIt may be possible to \\"pull\\" some advanced users into using WebXR on these devices with instruction on feature flag setting, but it will be impossible to use WebXR on this platform to \\"push\\" more people to your WebXR experience in its present form.\\n\\n## Space, Immersion and Passthrough with WebXR\\nIn WebXR mode on the device, a scene is rendered in _Full Space_ meaning no other application windows are present, unlike native apps that can choose to run in _Shared Space_ amongst other applications. An additional limitation is that the device does not currently support WebXR with _Passthrough_ mode, therefore you cannot run WebAR apps that make use of external cameras.\\n\\n*Therefore only your WebXR scene will appear in _Full Space_ immersion mode with no _Passthrough_.* This may be desirable for traditional VR applications but not as useful for next generation mixed reality applications.\\n\\nAn additional limitation is that WebXR Immersive mode is limited to a 1.5m radius from the user-specified origin, usually where the user was located when entering XR mode. Beyond this radius the immersive scene _Full Space_ begins fading into _Passthrough_ without the scene persisting. If a user continues moving away from the origin the will see a round Safari icon at the origin point, presumably indicating that the user has an open WebXR Safari session with an origin at that point.\\n\\n## Diorama vs. Full Room Scale\\nThe [visionOS developer documentation](https://developer.apple.com/documentation/visionos/) is excellent and signals clear directions for the market.\\n\\nThe Diorama appears to be major application interface concept, [featured as a sample application](https://developer.apple.com/documentation/visionos/diorama) and a prime example of output from the new Reality Composer Pro authoring tool.\\n\\nThis is a useful concept to adopt with 3DStreet. With 3DStreet there are cases for both Diorama and Full Scale modes: some users may wish to view a scene in Full Scale life-size to get an accurate viewpoint of dimension, while other users may wish to shrink a scene down to a Diorama view to easily manipulate a large scene from a smaller workspace.\\n\\n## Combining WebXR with native applications\\n* Native applications can ask for rights such as _Passthrough_ or _Shared Space_ that are not currently accessible via Safari WebXR. It is definitely worth exploring the use of an embedded webkit-based webview in a visionOS application which may expand the ability for WebXR application to offer augmented reality experiences with a native-like experience.\\n* Reality Composer Pro looks like a powerful tool for non-developers. It is worth exploring a pipeline of 3DStreet > Reality Composer Pro > App Publishing. Therefore it is likely worth exploring tools to convert glTF exporting to USDZ format, or directly exporting the three.js / A-Frame scene into USDZ format.\\n\\n## Summary\\n* WebXR appears to be purposefully limited on this device with a degraded user experience. Consider webview or another mechanism to adapt WebXR application into a native app.\\n* Hand tracking is now a minimum requirement for WebXR apps, controllers are optional.\\n* Gaze interface is very effective but needs standardization work to enable in WebXR mode."},{"id":"/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","metadata":{"permalink":"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","source":"@site/blog/2023-12-21-gaussian-splat-compositing-for-constructed-street-scenes.md","title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","description":"We share research and progress on improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding.","date":"2023-12-21T00:00:00.000Z","formattedDate":"December 21, 2023","tags":[{"label":"gaussian splats","permalink":"/blog/tags/gaussian-splats"},{"label":"splats","permalink":"/blog/tags/splats"},{"label":"photogrammetry","permalink":"/blog/tags/photogrammetry"}],"readingTime":6.345,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"},{"name":"Arthur Mougin","title":"3DStreet Contributor, WebXR Developer","url":"https://github.com/arthurmougin","imageURL":"https://github.com/arthurmougin.png","key":"amougin"}],"frontMatter":{"title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","description":"We share research and progress on improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding.","authors":["kfarr","amougin"],"tags":["gaussian splats","splats","photogrammetry"],"image":"./splat-blog/3dstreet-splat-compositing-demo.jpg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr"}},"content":"3DStreet\'s mission is to empower anyone to visualize safer streets. A common request to support this mission is to bring in local real-life elements from your actual streets by scanning them into 3D objects. Until now, the best technology for doing this (photogrammetry to textured 3D polygons) resulted in huge file sizes, difficult to edit output files, and gooey visuals like melting trees or cars that you may see on Google Maps in 3D mode.\\n\\nEnter Gaussian Splatting -- earlier this year a groundbreaking photogrammetry and visualization technique called gaussian splatting was released as part of a [research paper published at SIGGRAPH 2023](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/). I believe splatting to be *[the best modern method](https://www.youtube.com/watch?v=HVv_IQKlafQ)* to allow everyday users like you and me to scan 3D objects with our phones and retain the fine detail of organic material especially [plants](https://www.youtube.com/watch?v=lowscL9YIjM), [trees](https://www.youtube.com/watch?v=hr7P8_z0PSk), flowers and other natural elements -- all things we\'d like to see more of in our streets! \\n\\n![Side by side picture of the same apple tree showing 3d mesh vs. gaussian splat photogrammetry techniques](./splat-blog/3d-mesh-vs-splat.jpg)\\n\\nThis is still an R&D project, not yet a supported built-in feature of 3DStreet. In this post we share research and progress on how we are improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding in three.js and A-Frame, underlying 3D frameworks supporting 3DStreet.\\n\\n\x3c!-- truncate --\x3e\\n\\n# A splatting explosion!\\nA slew of gaussian splat tools have come to market -- creation apps for 3D scanning with your phone ([Polycam](https://poly.cam/) and [Luma](https://lumalabs.ai/)) and viewers for every platform and device imaginable ([too many to list](https://github.com/tomiwaAdey/awesome-gaussian-splatting?tab=readme-ov-file#rendering-and-visualisation-tools)) and even [browser-based cropping and editing tools](https://playcanvas.com/super-splat).\\n\\nHowever, much of the existing gaussian splat research and development focuses on scenes with just one single large splat.\\n\\nWith 3DStreet we\'re exploring something new -- constructing brand new street scenes from bits and pieces of existing 3D splats.\\n\\n# The problem: multiple splats in three.js are Hard\\nIf we can draw one gaussian splat in our scene, why not more? Well it turns out it\'s Hard. Compositing wasn\u2019t supported yet by the existing three.js / A-Frame splat viewing libraries so it resulted in things just not good enough for people to use as a product, like this fire hydrant and tree being occluded by a flower box further away.\\n\\n![Picture of error in splat ordering resulting in distant objects incorrectly occluding closer objects](./splat-blog/splat-render-order-error.jpg)\\n\\nTo solve this problem, we collaborated with [Arthur Mougin, a WebXR and full stack developer](https://arthurmoug.in/) who was excited to tackle a new challenge. Here is his writeup on how we enabled proper splat sorting, concluded by some discussion on what is coming next.\\n\\n# Use depth buffer with `depthWrite:true`\\nAfter analyzing the shader and rendering pipeline of threejs, we identified first that we needed to have proper scene-level occlusion.\\n\\nAt the scene level, Splats are just classic opaque objects with a unique drawing method. That\u2019s great because we can take advantage of the depth buffer. It\u2019s a grayscale image that shaders use to know if their pixel below or above something that was already painted. By default, splats did not write into it, causing strange artifacts when the draw order does not match the depth order. Same thing for recursive occlusion. \\n\\nSo, we [added the ability to write the rendered splats to the depth buffer](https://github.com/3DStreet/aframe-gaussian-splatting/pull/1/commits/dfa56ea471749e4864bfdedfcdd9c7c4aac9a656) with `depthWrite:true`. Turning it on improved our occlusion issues drastically. \\n\\n![partial-splat-compositing-progress-occlusion-with-artifacts](./splat-blog/partial-splat-compositing-progress-occlusion-with-artifacts.jpg)\\n\\n# Fixing border and edge blending issues\\nSometimes the border is not completely clean, we also wanted a way to improve it. \\n\\nIt was done this time in the fragment shader, where discarding cause the pixel not to be drawn. [We compare there for each blob\u2019s pixel their opacity, and if it\u2019s lower than our limit, it\u2019s not rendered.](https://github.com/3DStreet/aframe-gaussian-splatting/pull/1/commits/00d11e42f41a2adea824008ad81283001192176a)\\n\\nThis limit, the discard filter, has no effect when set to 0, but help cleanup unnecessary blobs that could ruin a proper transition between two splats. As it applies to all splat\u2019s blobs, turning it on will impact the splats quality.\\n\\n![gaussian-splat-depth-write-true-false-comparison](./splat-blog/gaussian-splat-depth-write-true-false-comparison.jpg)\\n\\nUnfortunately there is a trade off between different methods. As you can see in this next example below. On the right is the test scene with the original A-Frame splatting component that does not respect occlusion. On the left uses depthWrite which properly sorts the occlusion of the tree, fire hydrant, and flower box, but also results in artifacts especially visible on the bottom of the flower box where it meets the sidewalk.\\n\\n![splat-compare-discard-filter-0-and-0.2](./splat-blog/splat-compare-discard-filter-0-and-0.2.jpg)\\n\\nAdjusting `discardFilter` gives you control to find the right value, however as you continue to increase the `discardFilter` value approaching 1 the splats start to develop holes in the substrate and appear to be further apart. \\n\\n![splat-compare-discard-filter-0.1-and-0.3](./splat-blog/splat-compare-discard-filter-0.1-and-0.3.jpg)\\n\\nA partially effective mitigation for the artifacts is to tightly crop your splats using a tool like [SuperSplat from PlayCanvas](https://playcanvas.com/super-splat).\\n\\n# Updating the `aframe-gaussian-splatting` repository\\nIn the past we have been contributing changes directly to the [original A-Frame Gaussian Splat library by quadjr](https://github.com/quadjr/aframe-gaussian-splatting), and [Arthur has suggested a PR with these changes](https://github.com/quadjr/aframe-gaussian-splatting/pull/25), but we wanted to publish this piece before those are able to merged so we have forked this repo in the 3DStreet GitHub organization for now.\\n\\n#### GitHub: https://github.com/3dstreet/aframe-gaussian-splatting\\n\\n#### Demo scene (move around with `WASD` keys): https://3dstreet.github.io/splat-playground/basic/compositing-demo.html\\n\\n#### Demo scene source (also uses cutout entity): https://github.com/3DStreet/splat-playground/blob/main/basic/compositing-demo.html \\n\\n# Combining rasterization methods to add splats to 3DStreet scenes\\nNow that we have support in the library for splat compositing, it\'s time to test what these look like in 3DStreet scenes.\\n\\nWe created a sample scene that loads a 3DStreet street scene with manually placed splat entities placed around the scene in appropriate locations. This was a first attempt to see how well the splats might fit in to a scene and what changes we need to make to 3DStreet Editor to support managing these with a user interface.\\n\\nThis picture shows a side-by-side view of the splat and low-poly mesh counterparts for the hybrid sedan and bus stop.\\n![3dstreet-splat-compositing-demo](./splat-blog/3dstreet-splat-compositing-demo.jpg)\\n\\nSince each of these splats are A-Frame entities, the 3DStreet Editor can provide a quick way to move them around and arrange a custom scene.\\n![3dstreet-editor-changing-scene-compositing-gaussian-splat](./splat-blog/3dstreet-editor-changing-scene-compositing-gaussian-splat.jpg)\\n\\n# Try it for yourself\\n\\nWe\'ve created a proof of concept demo showing splats that I have scanned around San Francisco, combined with polygon mesh models automatically created from 3DStreet.\\n\\n__Example scene (move around with `WASD` keys): https://github.com/3DStreet/splat-playground/__\\n\\n:::warning\\n\\nGaussian Splats in 3DStreet is a research project. Sometimes you need to reload once or twice for the splats to look better. If you\'re really adventurous press ctl + alt + i to access Editor but saving these scenes won\'t work and it will probably break. Be careful using this for real projects.\\n\\n:::\\n\\nDoes it work in WebXR? Yes, barely -- it requires a powerful device to maintain frame rate. Quest headsets and older phones have a hard time rendering this at full framerate.\\n\\n# What\'s next\\nThis is still a research technology. Even just in the past week there was a [whole new WegGL splat viewing library released by Luma AI](https://lumalabs.ai/luma-web-library) and more research on this topic seems to drop every week. Likely the method that we\'ve come up with will be replaced with a fancy new algorithm soon.\\n\\nWe\'ll keep iterating on the applications of this technology for street safety and more general urban design use cases. If this resonates with users we can explore how to make this accessible so that all users can create custom splat scenes with models they scan from their own streets.\\n\\n[Join our community to continue the conversation!](https://discord.gg/VN242sx9qu)\\n\\n# Video version of this post\\n"}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/4200b1a9.5b41e5be.js b/assets/js/4200b1a9.5b41e5be.js
new file mode 100644
index 00000000..c4f10a96
--- /dev/null
+++ b/assets/js/4200b1a9.5b41e5be.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[866],{4612:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee","metadata":{"permalink":"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee","source":"@site/blog/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md","title":"Community-led planning trends presented at the Caltrans Equity Advisory Committee","description":"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.","date":"2024-04-22T00:00:00.000Z","formattedDate":"April 22, 2024","tags":[{"label":"policy","permalink":"/blog/tags/policy"},{"label":"urban planning","permalink":"/blog/tags/urban-planning"},{"label":"community-led planning","permalink":"/blog/tags/community-led-planning"},{"label":"community","permalink":"/blog/tags/community"}],"readingTime":3.04,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Community-led planning trends presented at the Caltrans Equity Advisory Committee","description":"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.","authors":"kfarr","tags":["policy","urban planning","community-led planning","community"],"image":"./images/2024-04-22/slide-community-led-planning.jpg"},"unlisted":false,"nextItem":{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"}},"content":"3DStreet\u2019s creator Kieran Farr was invited to present at the California State Transportation Interagency Equity Advisory Committee (EAC) meeting April 5.\\n\\nAt the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning and the current blockers preventing local stakeholders from engaging with local transportation agencies. Below is a summarization of the presentation to share our learnings from practitioners around the world experimenting with community-led design\\n\\n\x3c!-- truncate --\x3e\\n## Community-Led Planning as Global Trend \\nOver the past 6 months I\'ve met hundreds of folks across the transportation and planning industry \u2013 from city planners and city and state transportation officials to local community activists, NGOs, private engineering consultants and many more.\\n\\nHundreds of meetings later, a clear trend has emerged from these conversations: The rising force of \\"Community-led Planning\\" \u2013 empowering local community members to envision and advocate for changes to their streets and public spaces. However, there are significant challenges preventing this from becoming mainstream practice.\\n\\n## The Challenge - Negative Trust Spiral\\nThe core issue, as articulated by practitioners worldwide, is that it\'s very difficult for most people to imagine changes to their streets. This leads to a negative feedback loop:\\n* Projects face pushback from the community because they don\'t understand the proposed changes\\n* This results in delays, watered-down designs, or even outright cancellations\\n* Trust erodes between the agency and community\\n\\n![](./images/2024-04-22/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects.jpg)\\n**Community engagement is often treated as a point-in-time exercise rather than a continuous process.**\\n\\nForward-thinking communities are trying to change this by making community feedback an integral, ongoing part of the planning process. Crucially, project ideas originate from the community itself, which then collaborates with the appropriate agency to refine the design to serve local needs.\\n\\n## Addressing Agency/Community Asymmetry \\nUnderlying this dynamic is a major knowledge asymmetry between transportation professionals and the general public when it comes to street design.\\n\\nTo enable meaningful community participation we need to level the playing field \u2013 to lift up community members from out of the informational asymmetry crevasse. One way to do this is through a simple, shared visual language to understand the geospatial relationships and design constraints of their streets. This is the key problem we\'re working to solve at 3DStreet, along with other industry partners [Streetmix.net](https://about.streetmix.net/), [inCitu](https://www.incitu.us/), [StreetPlan.net](https://streetplan.net/), and the [OSM Pedestrian Working Group](https://hackmd.io/legG6QzVREKTsiTSxUS2zA?view).\\n\\nThis emerging ecosystem of no/low cost tools allow anyone to quickly prototype street designs, transforming 2D diagrams into interactive 3D models. Early case studies show the power of this approach:\\n\\n* [In Manchester, CA, the city engineer used 3DStreet to clearly communicate parking tradeoffs for a Main Street redesign, a top concern for local businesses](https://www.youtube.com/watch?v=ycNIaqczyv0)\\n* [NGOs like Transport Oakland are training their members to create compelling visuals for advocacy using these tools on group workshop calls](https://studio.youtube.com/video/m393-ZNeU68/edit)\\n* [At a street fair in San Francisco, we enabled attendees to interactively place street furniture, plantings and amenities using just their smartphones to imagine a green \\"streets to parks\\" conversion](//blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research#reaction-and-productization-1)\\n\\nHistorically, 3D modeling, urban planning and civil engineering required expensive proprietary software. But with the consumerization of augmented reality and open-source tools like 3DStreet combined with widely-deployed WebXR and geospatial standards, these capabilities are now accessible to all. While much work remains to make them truly user-friendly, the potential to revolutionize community engagement is tremendous.\\n\\nBy equipping residents with the tools to express their vision, while educating them about real-world constraints, we can build trust, understanding and consensus between communities and transportation agencies. This is the promise of community-led planning \u2013 and it\'s a future we\'re excited to build together."},{"id":"/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","metadata":{"permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","source":"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md","title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","date":"2024-03-25T00:00:00.000Z","formattedDate":"March 25, 2024","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"3dtiles","permalink":"/blog/tags/3-dtiles"},{"label":"google maps","permalink":"/blog/tags/google-maps"},{"label":"geospatial","permalink":"/blog/tags/geospatial"},{"label":"ar","permalink":"/blog/tags/ar"}],"readingTime":6.1,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","description":"A developer update blog post on R&D during the first few months of 2024.","authors":"kfarr","tags":["webxr","3dtiles","google maps","geospatial","ar"],"image":"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},"unlisted":false,"prevItem":{"title":"Community-led planning trends presented at the Caltrans Equity Advisory Committee","permalink":"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee"},"nextItem":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},"content":"\\"Geospatial\\" is the uniting theme for the many feature requests we get from 3DStreet\'s growing user base. Users\xa0can already place custom street scenes, so it\'s natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we [explore common repeatable workflows for visualizing safer infrastructure](/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero).\\n\\nTo kick off 2024 we\'ve been doing some experiments to see how these technologies could be applied to public streets and spatial design.\\n\\n![](./images/2024-03-25/3d-tiles-3dstreet.jpeg)\\n**Proof of concept 3D Tiles and 3DStreet scene combined.**\\n\\n\x3c!-- truncate --\x3e\\n## Google Maps 3D Tiles\\n\\nWe updated the New York Times R&D team\'s [GitHub repository for the OGC 3D Tiles A-Frame VR Component](https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api) to support loading 3D maps from Google Maps 3D Tiles. (Thanks Avner for doing the hard three.js work to make this happen.)\\n\\n### Why is this important?\\n\\nWhen presenting street improvements projects, leveraging the existing environment provides instantaneous context and understanding for stakeholders of all ages and abilities. Even low fidelity representations of the surrounding environment helps viewers recognize a project\'s location and orientation.\\n\\nThis experiment is a first step to adding 3D maps as a new feature to 3DStreet Editor.\\n\\n### Video Demo\\nThis video is a demo of what it could look like to localize your 3DStreet scene with 3D map tiles near Market and Van Ness Streets in San Francisco.\\n\\n\\n\\n### Reaction and productization\\n\\nThis demo resonated well with users -- [our first tweet sharing the concept](https://twitter.com/3dstreetapp/status/1768310079307272423) was retweeted 11 times and liked more than 50 times on Twitter and [attracted engaging comments on LinkedIn](https://www.linkedin.com/posts/3dstreet_threejs-activity-7174079008819560449-kzqw).\\n\\nUsers would like 3D Map Tiles productized as a built-in feature of 3DStreet, but unfortunately the Google 3D Tiles API is significantly more expensive than traditional 2D map tiles starting at [$6 per 1000 unique user sessions](https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api). In order to offer this feature we will need to come up with a paid subscription plan option to cover the costs of Google Maps 3D Tiles access.\\n\\n## Bollard Buddy AR - mobile app for manual geolocation and object placement\\nThe recent [DreamXR hackathon](https://dreamxr.co/) in San Francisco was the perfect environment to work alongside other XR developers for inspiration to finish a new app in 48 hours. We created BOLLARD BUDDY AR -- an app that lets you place traffic control devices anywhere using augmented reality!\\n\\n### Video Demo\\nIt\'s easiest to show with a video:\\n\\n\\n\\nThe app is simple:\\n* Press PLAY to start the AR view after scanning a QR code*\\n* Then tap to place cones or other objects at the yellow cursor.\\n* Choose between a few different traffic safety device models from the 3DStreet model library\\n\\nWhile cool, it is technically \\"table stakes\\" within the scope of AR app demos. But what\'s next makes it more useful.\\n\\n### Geospatial QR hack for fake VPS\\nWhat makes BOLLARD BUDDY AR app unique compared to other AR \\"tap to place\\" demos is the connection to a specific location -- a longitude and latitude is embedded in the app QR code so that any objects placed in the scene can be localized relative to that longitude and latitude origin point.\\n\\nThis is extremely effective as a cheap and easy way to have a perfect \\"virtual positioning system\\" (or VPS) as long as the person posting the sign is capable of posting the sign at the very specific longitude and latitude (and orientation) associated with the QR code. This is easier than it sounds -- by simply dropping a pin on Apple or Google Maps at a clearly identifiable landmark such as a parking meter or telephone pole at a sufficient zoom level you can get a very precise longitude and latitude.\\n\\n### Create and share from mobile -- serverless with no auth\\nThe other unique BOLLARD BUDDY AR feature is sharing your newly created augmented reality street scene with other users (and even yourself) to refer to in the future.\\n\\nOutside in the bright sun on the hot tarmac we don\'t want to challenge users with authentication or collecting data that requires keyboard input. How can we allow people to share a complicated geospatial scene without a server or authentication?\\n\\nOur trick was to stuff the newly created scene data in the URL as url-encoded data. More specifically, a JSON representation of the array of 3D A-Frame entities and for each their mixin, position, rotation properties are all [crushed](https://github.com/KilledByAPixel/JSONCrush) and placed as a querystring value in a new \\"Share URL\\".\\n\\nThen we use the native OS share dialog to allow the user to choose how they want to share this, from copy/paste to sending message, email, AirDrop (my favorite) or more.\\n\\n### Challenges with web-based Augmented Reality\\n\\nI\'ve always been excited about the fun factor of AR and VR headsets, but recent technology advances in everyday smart phones means that the same tech is possible without a headset leveraging built-in AR libraries such as ARKit and ARCore on Apple and Android devices respectively.\\n\\nThe magic of these AR libraries is precision -- they have extremely accurate [simultaneous localization and mapping (SLAM)](https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping) available out-of-the-box for native apps usable on almost any device you may have in your pocket.\\n\\nUntil now these libraries have only been available for native applications, but recently web JavaScript-based access was made available on Android through WebXR AR Mode bindings. iOS devices using Safari have not yet supported WebXR AR Mode, however recently there have been a few \\"polyfill\\" workarounds. We are using [Variant Launch](https://launch.variant3d.com/) which provides a (nearly) seamless experience for iOS users to instantly launch web-based AR apps. Behind the scenes, Variant Launch uses Apple\'s iOS \\"App Clips\\" feature to the underlying ARKit library through the WebXR JavaScript standard without needing to download an app first.\\n\\n### Reaction and productization\\n\\nPeople often show surprise when using the app for the first time -- perhaps from the fun of reconfiguring public space for the first time, or the magic of discovering a super power they didn\'t realize their smart phone supported.\\n\\nSome users see past the initial \\"Wow Moment\\" to practical use cases, especially for professional field measurement and planning for traffic control device placement or other civil engineering-related purpose. In fact, once users start placing basic cones provided in the default application it\'s not long before they start thinking of other objects they\'d like to place and additional use cases.\\n\\nWe\'ve continued development of this app concept, most recently adding new objects and improving usability and trying it out with real users at a street fair in San Francisco Saturday March 23.\\n\\n![](./images/2024-03-25/treat-fair-bollard-buddy-signage-960x0.webp)\\n**Picture of a street fair with QR code on signage to collect feedback from community members using a modified version of BOLLARD BUDDY AR with plants, flowers and other street greening objects. [Credit Benjamin Fanjoy/The Chronicle](https://www.sfchronicle.com/bayarea/article/treat-avenue-green-space-19362364.php)**\\n\\nSimilar to other geospatial features, there are fees incurred to make AR placement apps available across all devices (especially including iOS).\\n\\n## Feedback and next steps\\nI\'d love to hear your feedback on this work at [kieran@3dstreet.org](mailto:kieran@3dstreet.org). Would you like these features? What is a price that you would pay for a subscription plan that includes these features?"},{"id":"/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","metadata":{"permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","source":"@site/blog/2024-01-30-creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero.md","title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","date":"2024-01-30T00:00:00.000Z","formattedDate":"January 30, 2024","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"gltf","permalink":"/blog/tags/gltf"},{"label":"adobe aero","permalink":"/blog/tags/adobe-aero"},{"label":"streetmix","permalink":"/blog/tags/streetmix"},{"label":"ar","permalink":"/blog/tags/ar"},{"label":"vps","permalink":"/blog/tags/vps"},{"label":"localization","permalink":"/blog/tags/localization"}],"readingTime":4.455,"hasTruncateMarker":true,"authors":[{"name":"Marc Schlossberg","title":"Professor, City & Regional Planning, University of Oregon","url":"https://pppm.uoregon.edu/directory/profiles/all/schlossb","imageURL":"https://pppm.uoregon.edu/sites/pppm1.uoregon.edu/files/uo_profiles/schlossb4d2e43.jpg","key":"mschlossberg"}],"frontMatter":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","authors":"mschlossberg","tags":["webxr","gltf","adobe aero","streetmix","ar","vps","localization"],"image":"./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"},"nextItem":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade"}},"content":"![](./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png)\\n\\nGreetings! I\'m Marc Schlossberg, and I\'ve been working alongside [Danny Pimentel](https://journalism.uoregon.edu/directory/faculty-and-staff/all/pimend) and graduate student [Luke Walker](https://www.linkedin.com/in/luke-walker-439b78119/) at the University of Oregon on an exciting project: crafting augmented reality (AR) landscapes for our streets. What I have here is a practical, step-by-step guide designed to walk you through how to bring this innovative vision to your own neighborhood. So, let\'s roll up our sleeves and get our hands digitally dirty!\\n\\n\x3c!-- truncate --\x3e\\n\\n## Getting Started: Measuring and Designing\\n\\n![](./images/2024-01-30/lVthCNUM7YLUyBGXixqk-10.87.png)**First things first\u2014measure up!**\\n\\nTo kick things off, you need to know how wide your street is. This is more straightforward than it sounds: just pop over to Google Street View or use an aerial photo, and get an approximate measurement. It\'s okay if it\'s not pinpoint accurate \u2014 we just need a ballpark figure.\\n\\n**Crafting Your Street: Easy as Pie with Streetmix**\\n\\nOnce you\'ve got your measurements, it\'s time to jump onto Streetmix\u2014a free, user-friendly online tool that lets you reimagine that street space to your heart\'s content. Want to add bike lanes, benches, or green spaces? Simply drag and drop the elements you want to include, adjusting the widths to fit your street\u2019s dimensions. Here\u2019s where your creativity shines!\\n\\n![](./images/2024-01-30/J7eHGPI8MA57Pyzgsd8i-41.61.png)For my project, I took a standard residential street and turned it into a car-free park, a delightful haven for community gatherings. Imagine that \u2014 but on your block! Feel free to start with the street I made - Demo St.: https://streetmix.net/schlossb/20/demo-st\\n\\n## Viewing Your Creation: 3DStreet\'s Magic\\n\\n![](./images/2024-01-30/29P0QTWEp8JbvCQ8PeH3-63.32.png)\\n\\nWith your design all set in Streetmix, it\'s time to give it a touch of 3D flair. 3DStreet is a fantastic plugin that lets you visualize your newly designed street in all its three-dimensional glory. Explore your virtual environment, tweak and tune each element until you\u2019re satisfied. It\'s a mini-adventure in urban planning from the comfort of your screen! You can go straight to my Demo St. in 3DStreet as well: https://3dstreet.app/#https://streetmix.net/schlossb/20/demo-st\\n\\n**Trimming the Excess for AR**\\n\\n![](./images/2024-01-30/IkXMBseXhrpqImEJSANN-73.23.png)\\n\\nTo prep for AR, you\'ll want to peel away the layers that aren\u2019t needed\u2014like buildings, to keep things neat. After simplifying, you can then export your model directly into a format that\'s ready for the world of augmented reality.\\n\\nTo delete a layer, select the layer in the left-hand panel -- such as \\"Buildings & Blocks Container\\" in the screenshot above -- then press the `delete` key and click `ok`. This will remove buildings and grounds from lots that are not needed for our AR project.\\n\\n## Optional Tweaks: A Blender Bonus\\n\\n![](./images/2024-01-30/kmXnEg7FMoHUxW0GgLiu-95.91.png)For the enthusiasts out there who relish fine-tuning, the free software Blender is your playground. Here, you can manipulate your 3D model to perfection. However, remember this is purely optional\u2014the process is meant to be quick and streamlined.\\n\\n## Bringing It to Life: Augmented Reality Integration\\n\\nAlright, now to the magical part\u2014transferring your 3D model to an augmented reality software. I personally use [Adobe Aero](https://www.adobe.com/products/aero.html), thanks to the site license at the university, but there are other AR apps you can explore. This step allows you to add animations and make your scene come alive, although again, this step is not necessary for the \\"quick and dirty\\" path.\\n\\n![](./images/2024-01-30/tSVcvVL1kH92J4F4ALF8-112.94.png)\\n\\nAR software opens with an empty workspace and, at least in Aero, you can simply drag and drop your 3D file onto the workspace and the whole thing magically appears. In many ways it will look exactly like it did in 3DStreet.\\n\\n**Geolocation: Pinning It to the Real World**\\n\\n![](./images/2024-01-30/M5vycvy2ClFbSLnLm6FY-133.23.png)What\u2019s truly remarkable with software like Adobe Aero is the ability to anchor your AR scene to a precise location on Earth. While this grounds your creation to a specific spot, it\'s not mandatory; you can always opt to apply your scene freely to any street you wish.\\n\\n![](./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png)\\n\\n## Sharing Your Vision: Universal Access\\n\\n![](./images/2024-01-30/KffxVJZ1prku9AeBBemu-158.27.png)\\n\\nOnce your AR scene is polished and ready, you create a shareable link through Adobe Aero. Anyone with this link can open it on their mobile device, head to the designated street, and behold\u2014your digital transformation materializes before their eyes.\\n\\n> \\"Your street is transformed into your scene that you can actually walk through and see what it would look like on your street, and you can go forward, backward, see all the different things that you\'ve done, and really start to reimagine, well, what would this street look like if it wasn\'t a street as has been, but is actually a park, a place for people in this particular example?\\"\\n\\n![](./images/2024-01-30/XP1Nfq1sugGz8zrILMJb-179.54.png)\\n\\n![](./images/2024-01-30/0ek0kL6ZzdbicjxigM67-181.43.png)\\n\\nTo illustrate, envision wandering through the park that was once just a plain street\u2014all through the magic of AR. Moving forward or backward, the entire scene is interactive and truly a game-changer for community engagement and urban design.\\n\\n## Wrapping It Up\\n\\n![](./images/2024-01-30/SjGd11l5Keu216ORRZav-189.75.png)\\n\\nAnd there you have it\u2014a dynamic overview of transforming streets with AR using some clever tools and a pinch of imagination. Not so intimidating now, right? With mostly free resources and a little bit of time, you can be on your way to designing, exploring, and sharing augmented realities that could pave the way for how we perceive and utilize our shared spaces.\\n\\nUntil next time, happy designing and thanks for joining me on this digital adventure. Bye for now!\\n\\n# Video version of this post\\n\\n"},{"id":"/2024/01/29/partner-spotlight-zade","metadata":{"permalink":"/blog/2024/01/29/partner-spotlight-zade","source":"@site/blog/2024-01-29-partner-spotlight-zade.md","title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","date":"2024-01-29T00:00:00.000Z","formattedDate":"January 29, 2024","tags":[{"label":"react","permalink":"/blog/tags/react"},{"label":"development","permalink":"/blog/tags/development"},{"label":"partner","permalink":"/blog/tags/partner"},{"label":"devshop","permalink":"/blog/tags/devshop"},{"label":"web","permalink":"/blog/tags/web"},{"label":"developer","permalink":"/blog/tags/developer"}],"readingTime":2.74,"hasTruncateMarker":true,"authors":[{"name":"Ivan Denysyuk","title":"CEO at Zade","url":"https://www.linkedin.com/in/ivan-denysyuk-171585148/","imageURL":"https://media.licdn.com/dms/image/C4E03AQFalzhqOpaXYw/profile-displayphoto-shrink_800_800/0/1650363550337?e=1712188800&v=beta&t=z1C-cetFrHoP5ao_i9cLsJmCi3quhrcZ0kmhd9OGz3s","key":"idenysyuk"},{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","description":"A spotlight on the contributions to 3DStreet from the software development team at Zade.","authors":["kfarr","idenysyuk"],"tags":["react","development","partner","devshop","web","developer"],"image":"https://i.imgur.com/YyKGZA7.jpeg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"},"nextItem":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr"}},"content":"2023 marks a significant year for 3DStreet, made possible through our [talented community of contributors](https://github.com/3DStreet/3dstreet/graphs/contributors) both volunteer and paid. [Zade Agency](https://zade.agency/) fits in the latter category as a software development team for-hire based in Ukraine. Over the past year Zade emerged as a major boost to our development productivity and I wanted to share how their contributions have helped 3DStreet in a critical time for the organization.\\n\\n\x3c!-- truncate --\x3e\\n\\n### The Challenge for 3DStreet\\n\\nTo meet our timeline for a [public beta launch of 3DStreet Editor in 2023](https://www.youtube.com/watch?v=WnjtUW4J8uc), we faced several challenges. A primary concern was the gap in React expertise among our existing development team. While we are skilled in various aspects, existing React knowledge was crucial for implementing deep and rapid modifications to [3DStreet Editor](https://github.com/3DStreet/3dstreet-editor) which is a heavily modified version of the [A-Frame inspector](https://github.com/aframevr/aframe-inspector).\\n\\nAdditionally, as a [self-funded project](https://www.3dstreet.org/docs/about-3dstreet/3dstreet-llc-entity) we have very real budgetary constraints making it imperative to optimize every resource.\\n\\n### Zade\'s Solution to Boost React Development\\n\\nWe found Zade through a direct personal referral via our designer [Daria Dombrovska](https://www.linkedin.com/in/daria-dombrovska-933902207/). Zade immediately brought a wealth of React knowledge through their team of both senior and junior engineers, filling the crucial skill gap in our team.\\n\\nAs a self-trained software developer myself, I worked directly with a senior engineer at the beginning to confirm our architectural approaches and details of our tech stack. I also worked with our account manager to agree on the use of [GitHub Projects, issues, and PRs](https://github.com/orgs/3DStreet/projects/5) to manage our working relationship.\\n\\nFor day-to-day tasks I create [GitHub issues](https://github.com/3DStreet/3dstreet-editor/issues/) that are prioritized in [Projects](https://github.com/orgs/3DStreet/projects/5) and tackled via a junior engineer who is mentored by the experienced staff. Even as a junior engineer, they have way more experience in React fundamentals than I do given my [rather myopic focus on A-Frame and three.js development]() over the past decade.\\n\\n### 2023 Highlight: Launching 3DStreet Cloud\\n\\nOne of the most notable achievements in 2023 was the [launch of 3DStreet Cloud](https://www.youtube.com/watch?v=WnjtUW4J8uc), a React application using [Firebase Firestore](https://firebase.google.com/docs/firestore) on [Google Cloud Platform](https://cloud.google.com/).\\n\\n3DStreet Cloud is the foundation of the growth engine of the [3DStreet Editor product](https://3dstreet.app/) -- it is the system that allows our users to collaborate on safe street designs and fulfill our core mission.\\n\\n### Zade: Empowering Startups with React Expertise\\n\\nNow it\'s time for the pitch, because the Zade team deserves it!\\n\\nAre you an early-stage startup founder needing flexible React development solutions? Zade specializes in helping launch new startups and accelerating growth for existing ones. Their unique ecosystem is tailor-made for product development in the startup world.\\n\\n**Zade\'s Offerings:**\\n\\n- [**LaunchKit:**](https://zade.agency/launchkit/) A program designed to bring your vision to life within a month.\\n- **Integrated Team:** Seamlessly scale your startup with Zade\'s integrated design and development team.\\n\\n**Special Offer for 3DStreet Community:**\\nWhile there\'s no such thing as a free lunch in contract development, Zade extends a special offer to the 3DStreet community. Mention 3DStreet to receive a 15% discount on your first month with Zade \u2013 a deal that might just be more valuable than a few gourmet lunches, depending on your project\'s scale.\\n\\n### Connect with Zade\\n\\nInterested in learning more? Reach out to Zade at ivan@zade.agency, or contact me directly for an introduction. Let\'s embark on a journey of innovation and growth together with Zade\'s expert team!"},{"id":"/2023/12/29/new-mixed-reality-devices-impact-on-webxr","metadata":{"permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr","source":"@site/blog/2023-12-29-new-mixed-reality-devices-impact-on-webxr.md","title":"Impact on WebXR Application Design from New Mixed Reality Headsets","description":"What changes should WebXR developers consider to their application given new devices coming to market?","date":"2023-12-29T00:00:00.000Z","formattedDate":"December 29, 2023","tags":[{"label":"webxr","permalink":"/blog/tags/webxr"},{"label":"headset","permalink":"/blog/tags/headset"},{"label":"mixed-reality","permalink":"/blog/tags/mixed-reality"},{"label":"ar","permalink":"/blog/tags/ar"},{"label":"vr","permalink":"/blog/tags/vr"}],"readingTime":4.385,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"}],"frontMatter":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","description":"What changes should WebXR developers consider to their application given new devices coming to market?","authors":"kfarr","tags":["webxr","headset","mixed-reality","ar","vr"],"image":"./images/visionOS-platform-compressed.jpg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade"},"nextItem":{"title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","permalink":"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes"}},"content":"A few weeks ago I attended a \\"developer day\\" at a local electronics company down the road featuring their new mixed reality VR headset. I spent the entire day testing many different WebXR applications with a heavy focus on evaluating which user interaction elements will be relevant for developers.\\n\\nBelow are some notes intended for other 3DStreet code contributors to reference as we work on supporting new WebXR compatible devices.\\n\\n\x3c!-- truncate --\x3e\\n\\n## Gaze works very well as a primary user input mechanism\\nGaze interaction *\\"just works\\"* for native applications in this headset, however it\'s a privacy nightmare as gaze movement can be use to fingerprint (identify) individuals for tracking purposes, so that information isn\'t even given to native application. \\n\\nTo enable gaze user interface while not exposing gaze to the application, apps need to provide \\"hot spots\\" or hints as to areas that can be hovered. [There is a great video guide on how to adapt 2D DOM CSS website for gaze highlight interaction](https://developer.apple.com/videos/play/wwdc2023/10279/), but there\'s no clear equivalent to this CSS hinting that can be done in the WebXR \\"3D DOM\\" or 3D space. The need has been recognized however, [there is a new ticket opened in the WebXR `immersive-web` GitHub repository that I recently added to.](https://github.com/immersive-web/proposals/issues/86)\\n\\n## Hand tracking is the most accessible input, not controllers\\nImagine a world where WebXR experiences are 100% hands-free, where a simple ray from the wrist and a pitch of the hand can activate functions. This is not just a possibility but now a necessity -- going forward, all WebXR experiences must be accessible via hands first.\\n\\nWe should now regard hand tracking as the \\"lowest common denominator\\" of user input for headset experiences. Controllers will still offer higher precision, off-camera movement tracking, more button trigger inputs, etc. but they are no longer the most accessible \\"default\\" option.\\n\\n## Launching WebXR applications\\nGetting WebXR working on this device is cumbersome. WebXR must be activated by searching through multiple Safari flags (System Settings > Apps > Safari > Blah blah blah). Then, on the web page itself a user must accept 2 separate approval popups when entering WebXR mode -- one for enabling immersive mode, the other for enabling hand tracking.\\n\\nIt may be possible to \\"pull\\" some advanced users into using WebXR on these devices with instruction on feature flag setting, but it will be impossible to use WebXR on this platform to \\"push\\" more people to your WebXR experience in its present form.\\n\\n## Space, Immersion and Passthrough with WebXR\\nIn WebXR mode on the device, a scene is rendered in _Full Space_ meaning no other application windows are present, unlike native apps that can choose to run in _Shared Space_ amongst other applications. An additional limitation is that the device does not currently support WebXR with _Passthrough_ mode, therefore you cannot run WebAR apps that make use of external cameras.\\n\\n*Therefore only your WebXR scene will appear in _Full Space_ immersion mode with no _Passthrough_.* This may be desirable for traditional VR applications but not as useful for next generation mixed reality applications.\\n\\nAn additional limitation is that WebXR Immersive mode is limited to a 1.5m radius from the user-specified origin, usually where the user was located when entering XR mode. Beyond this radius the immersive scene _Full Space_ begins fading into _Passthrough_ without the scene persisting. If a user continues moving away from the origin the will see a round Safari icon at the origin point, presumably indicating that the user has an open WebXR Safari session with an origin at that point.\\n\\n## Diorama vs. Full Room Scale\\nThe [visionOS developer documentation](https://developer.apple.com/documentation/visionos/) is excellent and signals clear directions for the market.\\n\\nThe Diorama appears to be major application interface concept, [featured as a sample application](https://developer.apple.com/documentation/visionos/diorama) and a prime example of output from the new Reality Composer Pro authoring tool.\\n\\nThis is a useful concept to adopt with 3DStreet. With 3DStreet there are cases for both Diorama and Full Scale modes: some users may wish to view a scene in Full Scale life-size to get an accurate viewpoint of dimension, while other users may wish to shrink a scene down to a Diorama view to easily manipulate a large scene from a smaller workspace.\\n\\n## Combining WebXR with native applications\\n* Native applications can ask for rights such as _Passthrough_ or _Shared Space_ that are not currently accessible via Safari WebXR. It is definitely worth exploring the use of an embedded webkit-based webview in a visionOS application which may expand the ability for WebXR application to offer augmented reality experiences with a native-like experience.\\n* Reality Composer Pro looks like a powerful tool for non-developers. It is worth exploring a pipeline of 3DStreet > Reality Composer Pro > App Publishing. Therefore it is likely worth exploring tools to convert glTF exporting to USDZ format, or directly exporting the three.js / A-Frame scene into USDZ format.\\n\\n## Summary\\n* WebXR appears to be purposefully limited on this device with a degraded user experience. Consider webview or another mechanism to adapt WebXR application into a native app.\\n* Hand tracking is now a minimum requirement for WebXR apps, controllers are optional.\\n* Gaze interface is very effective but needs standardization work to enable in WebXR mode."},{"id":"/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","metadata":{"permalink":"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","source":"@site/blog/2023-12-21-gaussian-splat-compositing-for-constructed-street-scenes.md","title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","description":"We share research and progress on improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding.","date":"2023-12-21T00:00:00.000Z","formattedDate":"December 21, 2023","tags":[{"label":"gaussian splats","permalink":"/blog/tags/gaussian-splats"},{"label":"splats","permalink":"/blog/tags/splats"},{"label":"photogrammetry","permalink":"/blog/tags/photogrammetry"}],"readingTime":6.345,"hasTruncateMarker":true,"authors":[{"name":"Kieran Farr","title":"Creator of 3DStreet","url":"https://github.com/kfarr","imageURL":"https://github.com/kfarr.png","key":"kfarr"},{"name":"Arthur Mougin","title":"3DStreet Contributor, WebXR Developer","url":"https://github.com/arthurmougin","imageURL":"https://github.com/arthurmougin.png","key":"amougin"}],"frontMatter":{"title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","description":"We share research and progress on improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding.","authors":["kfarr","amougin"],"tags":["gaussian splats","splats","photogrammetry"],"image":"./splat-blog/3dstreet-splat-compositing-demo.jpg","hide_table_of_contents":false},"unlisted":false,"prevItem":{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr"}},"content":"3DStreet\'s mission is to empower anyone to visualize safer streets. A common request to support this mission is to bring in local real-life elements from your actual streets by scanning them into 3D objects. Until now, the best technology for doing this (photogrammetry to textured 3D polygons) resulted in huge file sizes, difficult to edit output files, and gooey visuals like melting trees or cars that you may see on Google Maps in 3D mode.\\n\\nEnter Gaussian Splatting -- earlier this year a groundbreaking photogrammetry and visualization technique called gaussian splatting was released as part of a [research paper published at SIGGRAPH 2023](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/). I believe splatting to be *[the best modern method](https://www.youtube.com/watch?v=HVv_IQKlafQ)* to allow everyday users like you and me to scan 3D objects with our phones and retain the fine detail of organic material especially [plants](https://www.youtube.com/watch?v=lowscL9YIjM), [trees](https://www.youtube.com/watch?v=hr7P8_z0PSk), flowers and other natural elements -- all things we\'d like to see more of in our streets! \\n\\n![Side by side picture of the same apple tree showing 3d mesh vs. gaussian splat photogrammetry techniques](./splat-blog/3d-mesh-vs-splat.jpg)\\n\\nThis is still an R&D project, not yet a supported built-in feature of 3DStreet. In this post we share research and progress on how we are improving the visual appearance of compositing new scenes from multiple splats using depth buffer and selective splat discarding in three.js and A-Frame, underlying 3D frameworks supporting 3DStreet.\\n\\n\x3c!-- truncate --\x3e\\n\\n# A splatting explosion!\\nA slew of gaussian splat tools have come to market -- creation apps for 3D scanning with your phone ([Polycam](https://poly.cam/) and [Luma](https://lumalabs.ai/)) and viewers for every platform and device imaginable ([too many to list](https://github.com/tomiwaAdey/awesome-gaussian-splatting?tab=readme-ov-file#rendering-and-visualisation-tools)) and even [browser-based cropping and editing tools](https://playcanvas.com/super-splat).\\n\\nHowever, much of the existing gaussian splat research and development focuses on scenes with just one single large splat.\\n\\nWith 3DStreet we\'re exploring something new -- constructing brand new street scenes from bits and pieces of existing 3D splats.\\n\\n# The problem: multiple splats in three.js are Hard\\nIf we can draw one gaussian splat in our scene, why not more? Well it turns out it\'s Hard. Compositing wasn\u2019t supported yet by the existing three.js / A-Frame splat viewing libraries so it resulted in things just not good enough for people to use as a product, like this fire hydrant and tree being occluded by a flower box further away.\\n\\n![Picture of error in splat ordering resulting in distant objects incorrectly occluding closer objects](./splat-blog/splat-render-order-error.jpg)\\n\\nTo solve this problem, we collaborated with [Arthur Mougin, a WebXR and full stack developer](https://arthurmoug.in/) who was excited to tackle a new challenge. Here is his writeup on how we enabled proper splat sorting, concluded by some discussion on what is coming next.\\n\\n# Use depth buffer with `depthWrite:true`\\nAfter analyzing the shader and rendering pipeline of threejs, we identified first that we needed to have proper scene-level occlusion.\\n\\nAt the scene level, Splats are just classic opaque objects with a unique drawing method. That\u2019s great because we can take advantage of the depth buffer. It\u2019s a grayscale image that shaders use to know if their pixel below or above something that was already painted. By default, splats did not write into it, causing strange artifacts when the draw order does not match the depth order. Same thing for recursive occlusion. \\n\\nSo, we [added the ability to write the rendered splats to the depth buffer](https://github.com/3DStreet/aframe-gaussian-splatting/pull/1/commits/dfa56ea471749e4864bfdedfcdd9c7c4aac9a656) with `depthWrite:true`. Turning it on improved our occlusion issues drastically. \\n\\n![partial-splat-compositing-progress-occlusion-with-artifacts](./splat-blog/partial-splat-compositing-progress-occlusion-with-artifacts.jpg)\\n\\n# Fixing border and edge blending issues\\nSometimes the border is not completely clean, we also wanted a way to improve it. \\n\\nIt was done this time in the fragment shader, where discarding cause the pixel not to be drawn. [We compare there for each blob\u2019s pixel their opacity, and if it\u2019s lower than our limit, it\u2019s not rendered.](https://github.com/3DStreet/aframe-gaussian-splatting/pull/1/commits/00d11e42f41a2adea824008ad81283001192176a)\\n\\nThis limit, the discard filter, has no effect when set to 0, but help cleanup unnecessary blobs that could ruin a proper transition between two splats. As it applies to all splat\u2019s blobs, turning it on will impact the splats quality.\\n\\n![gaussian-splat-depth-write-true-false-comparison](./splat-blog/gaussian-splat-depth-write-true-false-comparison.jpg)\\n\\nUnfortunately there is a trade off between different methods. As you can see in this next example below. On the right is the test scene with the original A-Frame splatting component that does not respect occlusion. On the left uses depthWrite which properly sorts the occlusion of the tree, fire hydrant, and flower box, but also results in artifacts especially visible on the bottom of the flower box where it meets the sidewalk.\\n\\n![splat-compare-discard-filter-0-and-0.2](./splat-blog/splat-compare-discard-filter-0-and-0.2.jpg)\\n\\nAdjusting `discardFilter` gives you control to find the right value, however as you continue to increase the `discardFilter` value approaching 1 the splats start to develop holes in the substrate and appear to be further apart. \\n\\n![splat-compare-discard-filter-0.1-and-0.3](./splat-blog/splat-compare-discard-filter-0.1-and-0.3.jpg)\\n\\nA partially effective mitigation for the artifacts is to tightly crop your splats using a tool like [SuperSplat from PlayCanvas](https://playcanvas.com/super-splat).\\n\\n# Updating the `aframe-gaussian-splatting` repository\\nIn the past we have been contributing changes directly to the [original A-Frame Gaussian Splat library by quadjr](https://github.com/quadjr/aframe-gaussian-splatting), and [Arthur has suggested a PR with these changes](https://github.com/quadjr/aframe-gaussian-splatting/pull/25), but we wanted to publish this piece before those are able to merged so we have forked this repo in the 3DStreet GitHub organization for now.\\n\\n#### GitHub: https://github.com/3dstreet/aframe-gaussian-splatting\\n\\n#### Demo scene (move around with `WASD` keys): https://3dstreet.github.io/splat-playground/basic/compositing-demo.html\\n\\n#### Demo scene source (also uses cutout entity): https://github.com/3DStreet/splat-playground/blob/main/basic/compositing-demo.html \\n\\n# Combining rasterization methods to add splats to 3DStreet scenes\\nNow that we have support in the library for splat compositing, it\'s time to test what these look like in 3DStreet scenes.\\n\\nWe created a sample scene that loads a 3DStreet street scene with manually placed splat entities placed around the scene in appropriate locations. This was a first attempt to see how well the splats might fit in to a scene and what changes we need to make to 3DStreet Editor to support managing these with a user interface.\\n\\nThis picture shows a side-by-side view of the splat and low-poly mesh counterparts for the hybrid sedan and bus stop.\\n![3dstreet-splat-compositing-demo](./splat-blog/3dstreet-splat-compositing-demo.jpg)\\n\\nSince each of these splats are A-Frame entities, the 3DStreet Editor can provide a quick way to move them around and arrange a custom scene.\\n![3dstreet-editor-changing-scene-compositing-gaussian-splat](./splat-blog/3dstreet-editor-changing-scene-compositing-gaussian-splat.jpg)\\n\\n# Try it for yourself\\n\\nWe\'ve created a proof of concept demo showing splats that I have scanned around San Francisco, combined with polygon mesh models automatically created from 3DStreet.\\n\\n__Example scene (move around with `WASD` keys): https://github.com/3DStreet/splat-playground/__\\n\\n:::warning\\n\\nGaussian Splats in 3DStreet is a research project. Sometimes you need to reload once or twice for the splats to look better. If you\'re really adventurous press ctl + alt + i to access Editor but saving these scenes won\'t work and it will probably break. Be careful using this for real projects.\\n\\n:::\\n\\nDoes it work in WebXR? Yes, barely -- it requires a powerful device to maintain frame rate. Quest headsets and older phones have a hard time rendering this at full framerate.\\n\\n# What\'s next\\nThis is still a research technology. Even just in the past week there was a [whole new WegGL splat viewing library released by Luma AI](https://lumalabs.ai/luma-web-library) and more research on this topic seems to drop every week. Likely the method that we\'ve come up with will be replaced with a fancy new algorithm soon.\\n\\nWe\'ll keep iterating on the applications of this technology for street safety and more general urban design use cases. If this resonates with users we can explore how to make this accessible so that all users can create custom splat scenes with models they scan from their own streets.\\n\\n[Join our community to continue the conversation!](https://discord.gg/VN242sx9qu)\\n\\n# Video version of this post\\n"}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/50f80a47.e84ae8fa.js b/assets/js/50f80a47.e84ae8fa.js
new file mode 100644
index 00000000..e172431b
--- /dev/null
+++ b/assets/js/50f80a47.e84ae8fa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[5628],{222:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var i=n(5893),a=n(1151);const r={title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",authors:"kfarr",tags:["policy","urban planning","community-led planning","community"],image:"./images/2024-04-22/slide-community-led-planning.jpg"},s=void 0,o={permalink:"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee",source:"@site/blog/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md",title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",date:"2024-04-22T00:00:00.000Z",formattedDate:"April 22, 2024",tags:[{label:"policy",permalink:"/blog/tags/policy"},{label:"urban planning",permalink:"/blog/tags/urban-planning"},{label:"community-led planning",permalink:"/blog/tags/community-led-planning"},{label:"community",permalink:"/blog/tags/community"}],readingTime:3.04,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",authors:"kfarr",tags:["policy","urban planning","community-led planning","community"],image:"./images/2024-04-22/slide-community-led-planning.jpg"},unlisted:!1,nextItem:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"}},l={image:n(206).Z,authorsImageUrls:[void 0]},c=[{value:"Community-Led Planning as Global Trend",id:"community-led-planning-as-global-trend",level:2},{value:"The Challenge - Negative Trust Spiral",id:"the-challenge---negative-trust-spiral",level:2},{value:"Addressing Agency/Community Asymmetry",id:"addressing-agencycommunity-asymmetry",level:2}];function d(e){const t={a:"a",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"3DStreet\u2019s creator Kieran Farr was invited to present at the California State Transportation Interagency Equity Advisory Committee (EAC) meeting April 5."}),"\n",(0,i.jsx)(t.p,{children:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning and the current blockers preventing local stakeholders from engaging with local transportation agencies. Below is a summarization of the presentation to share our learnings from practitioners around the world experimenting with community-led design"}),"\n",(0,i.jsx)(t.h2,{id:"community-led-planning-as-global-trend",children:"Community-Led Planning as Global Trend"}),"\n",(0,i.jsx)(t.p,{children:"Over the past 6 months I've met hundreds of folks across the transportation and planning industry \u2013 from city planners and city and state transportation officials to local community activists, NGOs, private engineering consultants and many more."}),"\n",(0,i.jsx)(t.p,{children:'Hundreds of meetings later, a clear trend has emerged from these conversations: The rising force of "Community-led Planning" \u2013 empowering local community members to envision and advocate for changes to their streets and public spaces. However, there are significant challenges preventing this from becoming mainstream practice.'}),"\n",(0,i.jsx)(t.h2,{id:"the-challenge---negative-trust-spiral",children:"The Challenge - Negative Trust Spiral"}),"\n",(0,i.jsx)(t.p,{children:"The core issue, as articulated by practitioners worldwide, is that it's very difficult for most people to imagine changes to their streets. This leads to a negative feedback loop:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Projects face pushback from the community because they don't understand the proposed changes"}),"\n",(0,i.jsx)(t.li,{children:"This results in delays, watered-down designs, or even outright cancellations"}),"\n",(0,i.jsx)(t.li,{children:"Trust erodes between the agency and community"}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.img,{src:n(1140).Z+"",width:"960",height:"540"}),"\n",(0,i.jsx)(t.strong,{children:"Community engagement is often treated as a point-in-time exercise rather than a continuous process."})]}),"\n",(0,i.jsx)(t.p,{children:"Forward-thinking communities are trying to change this by making community feedback an integral, ongoing part of the planning process. Crucially, project ideas originate from the community itself, which then collaborates with the appropriate agency to refine the design to serve local needs."}),"\n",(0,i.jsx)(t.h2,{id:"addressing-agencycommunity-asymmetry",children:"Addressing Agency/Community Asymmetry"}),"\n",(0,i.jsx)(t.p,{children:"Underlying this dynamic is a major knowledge asymmetry between transportation professionals and the general public when it comes to street design."}),"\n",(0,i.jsxs)(t.p,{children:["To enable meaningful community participation we need to level the playing field \u2013 to lift up community members from out of the informational asymmetry crevasse. One way to do this is through a simple, shared visual language to understand the geospatial relationships and design constraints of their streets. This is the key problem we're working to solve at 3DStreet, along with other industry partners ",(0,i.jsx)(t.a,{href:"https://about.streetmix.net/",children:"Streetmix.net"}),", ",(0,i.jsx)(t.a,{href:"https://www.incitu.us/",children:"inCitu"}),", ",(0,i.jsx)(t.a,{href:"https://streetplan.net/",children:"StreetPlan.net"}),", and the ",(0,i.jsx)(t.a,{href:"https://hackmd.io/legG6QzVREKTsiTSxUS2zA?view",children:"OSM Pedestrian Working Group"}),"."]}),"\n",(0,i.jsx)(t.p,{children:"This emerging ecosystem of no/low cost tools allow anyone to quickly prototype street designs, transforming 2D diagrams into interactive 3D models. Early case studies show the power of this approach:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.youtube.com/watch?v=ycNIaqczyv0",children:"In Manchester, CA, the city engineer used 3DStreet to clearly communicate parking tradeoffs for a Main Street redesign, a top concern for local businesses"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://studio.youtube.com/video/m393-ZNeU68/edit",children:"NGOs like Transport Oakland are training their members to create compelling visuals for advocacy using these tools on group workshop calls"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"//blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research#reaction-and-productization-1",children:'At a street fair in San Francisco, we enabled attendees to interactively place street furniture, plantings and amenities using just their smartphones to imagine a green "streets to parks" conversion'})}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Historically, 3D modeling, urban planning and civil engineering required expensive proprietary software. But with the consumerization of augmented reality and open-source tools like 3DStreet combined with widely-deployed WebXR and geospatial standards, these capabilities are now accessible to all. While much work remains to make them truly user-friendly, the potential to revolutionize community engagement is tremendous."}),"\n",(0,i.jsx)(t.p,{children:"By equipping residents with the tools to express their vision, while educating them about real-world constraints, we can build trust, understanding and consensus between communities and transportation agencies. This is the promise of community-led planning \u2013 and it's a future we're excited to build together."})]})}function m(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},206:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/slide-community-led-planning-1185e2a6ed990e1eb3f7c208a20be168.jpg"},1140:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/slide-challenge-negative-trust-spiral-current-conditions-street-planning-projects-1dc5cebcd64eca88e345c10e93a7a890.jpg"},1151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>s});var i=n(7294);const a={},r=i.createContext(a);function s(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/51cd3341.1080c672.js b/assets/js/51cd3341.1080c672.js
new file mode 100644
index 00000000..f77a80d9
--- /dev/null
+++ b/assets/js/51cd3341.1080c672.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[7899],{6701:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/community","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/5505e62b.0c5cd527.js b/assets/js/5505e62b.0c5cd527.js
new file mode 100644
index 00000000..c1827b73
--- /dev/null
+++ b/assets/js/5505e62b.0c5cd527.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[8648],{6721:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/urban-planning","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/5c016877.c5a44c62.js b/assets/js/5c016877.c5a44c62.js
new file mode 100644
index 00000000..990407f0
--- /dev/null
+++ b/assets/js/5c016877.c5a44c62.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[5346],{4163:s=>{s.exports=JSON.parse('{"label":"community","permalink":"/blog/tags/community","allTagsPath":"/blog/tags","count":1,"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/66d5ef6c.1a430739.js b/assets/js/66d5ef6c.1a430739.js
deleted file mode 100644
index 897968c9..00000000
--- a/assets/js/66d5ef6c.1a430739.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[9228],{4087:l=>{l.exports=JSON.parse('[{"label":"webxr","permalink":"/blog/tags/webxr","count":3},{"label":"3dtiles","permalink":"/blog/tags/3-dtiles","count":1},{"label":"google maps","permalink":"/blog/tags/google-maps","count":1},{"label":"geospatial","permalink":"/blog/tags/geospatial","count":1},{"label":"ar","permalink":"/blog/tags/ar","count":3},{"label":"gltf","permalink":"/blog/tags/gltf","count":1},{"label":"adobe aero","permalink":"/blog/tags/adobe-aero","count":1},{"label":"streetmix","permalink":"/blog/tags/streetmix","count":1},{"label":"vps","permalink":"/blog/tags/vps","count":1},{"label":"localization","permalink":"/blog/tags/localization","count":1},{"label":"react","permalink":"/blog/tags/react","count":1},{"label":"development","permalink":"/blog/tags/development","count":1},{"label":"partner","permalink":"/blog/tags/partner","count":1},{"label":"devshop","permalink":"/blog/tags/devshop","count":1},{"label":"web","permalink":"/blog/tags/web","count":1},{"label":"developer","permalink":"/blog/tags/developer","count":1},{"label":"headset","permalink":"/blog/tags/headset","count":1},{"label":"mixed-reality","permalink":"/blog/tags/mixed-reality","count":1},{"label":"vr","permalink":"/blog/tags/vr","count":1},{"label":"gaussian splats","permalink":"/blog/tags/gaussian-splats","count":1},{"label":"splats","permalink":"/blog/tags/splats","count":1},{"label":"photogrammetry","permalink":"/blog/tags/photogrammetry","count":1}]')}}]);
\ No newline at end of file
diff --git a/assets/js/66d5ef6c.415b39a3.js b/assets/js/66d5ef6c.415b39a3.js
new file mode 100644
index 00000000..21390f47
--- /dev/null
+++ b/assets/js/66d5ef6c.415b39a3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[9228],{4087:l=>{l.exports=JSON.parse('[{"label":"policy","permalink":"/blog/tags/policy","count":1},{"label":"urban planning","permalink":"/blog/tags/urban-planning","count":1},{"label":"community-led planning","permalink":"/blog/tags/community-led-planning","count":1},{"label":"community","permalink":"/blog/tags/community","count":1},{"label":"webxr","permalink":"/blog/tags/webxr","count":3},{"label":"3dtiles","permalink":"/blog/tags/3-dtiles","count":1},{"label":"google maps","permalink":"/blog/tags/google-maps","count":1},{"label":"geospatial","permalink":"/blog/tags/geospatial","count":1},{"label":"ar","permalink":"/blog/tags/ar","count":3},{"label":"gltf","permalink":"/blog/tags/gltf","count":1},{"label":"adobe aero","permalink":"/blog/tags/adobe-aero","count":1},{"label":"streetmix","permalink":"/blog/tags/streetmix","count":1},{"label":"vps","permalink":"/blog/tags/vps","count":1},{"label":"localization","permalink":"/blog/tags/localization","count":1},{"label":"react","permalink":"/blog/tags/react","count":1},{"label":"development","permalink":"/blog/tags/development","count":1},{"label":"partner","permalink":"/blog/tags/partner","count":1},{"label":"devshop","permalink":"/blog/tags/devshop","count":1},{"label":"web","permalink":"/blog/tags/web","count":1},{"label":"developer","permalink":"/blog/tags/developer","count":1},{"label":"headset","permalink":"/blog/tags/headset","count":1},{"label":"mixed-reality","permalink":"/blog/tags/mixed-reality","count":1},{"label":"vr","permalink":"/blog/tags/vr","count":1},{"label":"gaussian splats","permalink":"/blog/tags/gaussian-splats","count":1},{"label":"splats","permalink":"/blog/tags/splats","count":1},{"label":"photogrammetry","permalink":"/blog/tags/photogrammetry","count":1}]')}}]);
\ No newline at end of file
diff --git a/assets/js/734f9989.1127af07.js b/assets/js/734f9989.1127af07.js
new file mode 100644
index 00000000..ed2615cd
--- /dev/null
+++ b/assets/js/734f9989.1127af07.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[6721],{7206:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>m});var a=n(5893),r=n(1151);const i={title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",authors:"kfarr",tags:["policy","urban planning","community-led planning","community"],image:"./images/2024-04-22/slide-community-led-planning.jpg"},o=void 0,s={permalink:"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee",source:"@site/blog/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md",title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",date:"2024-04-22T00:00:00.000Z",formattedDate:"April 22, 2024",tags:[{label:"policy",permalink:"/blog/tags/policy"},{label:"urban planning",permalink:"/blog/tags/urban-planning"},{label:"community-led planning",permalink:"/blog/tags/community-led-planning"},{label:"community",permalink:"/blog/tags/community"}],readingTime:3.04,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",description:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning.",authors:"kfarr",tags:["policy","urban planning","community-led planning","community"],image:"./images/2024-04-22/slide-community-led-planning.jpg"},unlisted:!1,nextItem:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research"}},l={image:n(206).Z,authorsImageUrls:[void 0]},m=[];function c(e){const t={p:"p",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"3DStreet\u2019s creator Kieran Farr was invited to present at the California State Transportation Interagency Equity Advisory Committee (EAC) meeting April 5."}),"\n",(0,a.jsx)(t.p,{children:"At the recent Caltrans EAC meeting a host of agency professionals, community leaders and technology experts like 3DStreet\u2019s own Kieran Farr shared expertise on the global trend of community-led planning and the current blockers preventing local stakeholders from engaging with local transportation agencies. Below is a summarization of the presentation to share our learnings from practitioners around the world experimenting with community-led design"})]})}function d(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},206:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/slide-community-led-planning-1185e2a6ed990e1eb3f7c208a20be168.jpg"},1151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>o});var a=n(7294);const r={},i=a.createContext(r);function o(e){const t=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),a.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/132139d8.d9fa967b.js b/assets/js/7d48d4d7.28a818e3.js
similarity index 91%
rename from assets/js/132139d8.d9fa967b.js
rename to assets/js/7d48d4d7.28a818e3.js
index 1b315b8b..39b18db1 100644
--- a/assets/js/132139d8.d9fa967b.js
+++ b/assets/js/7d48d4d7.28a818e3.js
@@ -1 +1 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[1617],{8074:e=>{e.exports=JSON.parse('{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","authors":[{"name":"Marc Schlossberg","title":"Professor, City & Regional Planning, University of Oregon","url":"https://pppm.uoregon.edu/directory/profiles/all/schlossb","imageURL":"https://pppm.uoregon.edu/sites/pppm1.uoregon.edu/files/uo_profiles/schlossb4d2e43.jpg","key":"mschlossberg"}],"imageURL":"./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png","blogURL":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[5616],{9106:e=>{e.exports=JSON.parse('{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","description":"End-to-end street design to augmented reality (AR) visualization workflow.","authors":[{"name":"Marc Schlossberg","title":"Professor, City & Regional Planning, University of Oregon","url":"https://pppm.uoregon.edu/directory/profiles/all/schlossb","imageURL":"https://pppm.uoregon.edu/sites/pppm1.uoregon.edu/files/uo_profiles/schlossb4d2e43.jpg","key":"mschlossberg"}],"imageURL":"./images/2024-01-30/sZPPzIEDdoKCLolneDd8-145.05.png","blogURL":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}')}}]);
\ No newline at end of file
diff --git a/assets/js/95b96bb9.e74a0d69.js b/assets/js/95b96bb9.e74a0d69.js
deleted file mode 100644
index 7ccc4be5..00000000
--- a/assets/js/95b96bb9.e74a0d69.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[3561],{4577:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","unlisted":false},{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","unlisted":false},{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade","unlisted":false},{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr","unlisted":false},{"title":"Creating novel 3D scenes by compositing Gaussian splats with A-Frame and three.js","permalink":"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","unlisted":false}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/95b96bb9.f35bf5a5.js b/assets/js/95b96bb9.f35bf5a5.js
new file mode 100644
index 00000000..4335c84a
--- /dev/null
+++ b/assets/js/95b96bb9.f35bf5a5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[3561],{4577:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Community-led planning trends presented at the Caltrans Equity Advisory Committee","permalink":"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee","unlisted":false},{"title":"Exploring New Geospatial and Augmented Reality Features for 3DStreet","permalink":"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","unlisted":false},{"title":"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero","permalink":"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","unlisted":false},{"title":"Partner Spotlight: Zade\'s Contributions to 3DStreet in 2023","permalink":"/blog/2024/01/29/partner-spotlight-zade","unlisted":false},{"title":"Impact on WebXR Application Design from New Mixed Reality Headsets","permalink":"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr","unlisted":false}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/9b780a1a.85511a99.js b/assets/js/9b780a1a.85511a99.js
new file mode 100644
index 00000000..1bd1ddf6
--- /dev/null
+++ b/assets/js/9b780a1a.85511a99.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[4183],{5513:s=>{s.exports=JSON.parse('{"label":"urban planning","permalink":"/blog/tags/urban-planning","allTagsPath":"/blog/tags","count":1,"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7098721.65979789.js b/assets/js/a7098721.ec53d2e3.js
similarity index 75%
rename from assets/js/a7098721.65979789.js
rename to assets/js/a7098721.ec53d2e3.js
index 7496b64a..7d33853a 100644
--- a/assets/js/a7098721.65979789.js
+++ b/assets/js/a7098721.ec53d2e3.js
@@ -1 +1 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[1050],{6615:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[1050],{6615:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/aa8fa4fa.b3a01900.js b/assets/js/aa8fa4fa.b3a01900.js
new file mode 100644
index 00000000..dd8af1b2
--- /dev/null
+++ b/assets/js/aa8fa4fa.b3a01900.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[3614],{5912:s=>{s.exports=JSON.parse('{"label":"policy","permalink":"/blog/tags/policy","allTagsPath":"/blog/tags","count":1,"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/c1dfd4d2.26b8ef5b.js b/assets/js/c1dfd4d2.26b8ef5b.js
deleted file mode 100644
index 64252464..00000000
--- a/assets/js/c1dfd4d2.26b8ef5b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[8986],{7250:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>g});var r=a(5893),s=a(1151);const o={title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},n=void 0,i={permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research",source:"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md",title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",date:"2024-03-25T00:00:00.000Z",formattedDate:"March 25, 2024",tags:[{label:"webxr",permalink:"/blog/tags/webxr"},{label:"3dtiles",permalink:"/blog/tags/3-dtiles"},{label:"google maps",permalink:"/blog/tags/google-maps"},{label:"geospatial",permalink:"/blog/tags/geospatial"},{label:"ar",permalink:"/blog/tags/ar"}],readingTime:6.1,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},unlisted:!1,nextItem:{title:"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero",permalink:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},l={image:a(4227).Z,authorsImageUrls:[void 0]},g=[];function d(e){const t={a:"a",img:"img",p:"p",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["\"Geospatial\" is the uniting theme for the many feature requests we get from 3DStreet's growing user base. Users\xa0can already place custom street scenes, so it's natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we ",(0,r.jsx)(t.a,{href:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero",children:"explore common repeatable workflows for visualizing safer infrastructure"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"To kick off 2024 we've been doing some experiments to see how these technologies could be applied to public streets and spatial design."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.img,{src:a(7942).Z+"",width:"1024",height:"886"}),"\n",(0,r.jsx)(t.strong,{children:"Proof of concept 3D Tiles and 3DStreet scene combined."})]})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},4227:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},7942:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},1151:(e,t,a)=>{a.d(t,{Z:()=>i,a:()=>n});var r=a(7294);const s={},o=r.createContext(s);function n(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:n(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/c1dfd4d2.bcbb9812.js b/assets/js/c1dfd4d2.bcbb9812.js
new file mode 100644
index 00000000..a1baa6c0
--- /dev/null
+++ b/assets/js/c1dfd4d2.bcbb9812.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[8986],{7250:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>p,frontMatter:()=>o,metadata:()=>i,toc:()=>d});var r=a(5893),s=a(1151);const o={title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},n=void 0,i={permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research",source:"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md",title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",date:"2024-03-25T00:00:00.000Z",formattedDate:"March 25, 2024",tags:[{label:"webxr",permalink:"/blog/tags/webxr"},{label:"3dtiles",permalink:"/blog/tags/3-dtiles"},{label:"google maps",permalink:"/blog/tags/google-maps"},{label:"geospatial",permalink:"/blog/tags/geospatial"},{label:"ar",permalink:"/blog/tags/ar"}],readingTime:6.1,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},unlisted:!1,prevItem:{title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",permalink:"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee"},nextItem:{title:"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero",permalink:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},l={image:a(4227).Z,authorsImageUrls:[void 0]},d=[];function g(e){const t={a:"a",img:"img",p:"p",strong:"strong",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["\"Geospatial\" is the uniting theme for the many feature requests we get from 3DStreet's growing user base. Users\xa0can already place custom street scenes, so it's natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we ",(0,r.jsx)(t.a,{href:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero",children:"explore common repeatable workflows for visualizing safer infrastructure"}),"."]}),"\n",(0,r.jsx)(t.p,{children:"To kick off 2024 we've been doing some experiments to see how these technologies could be applied to public streets and spatial design."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.img,{src:a(7942).Z+"",width:"1024",height:"886"}),"\n",(0,r.jsx)(t.strong,{children:"Proof of concept 3D Tiles and 3DStreet scene combined."})]})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}},4227:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},7942:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},1151:(e,t,a)=>{a.d(t,{Z:()=>i,a:()=>n});var r=a(7294);const s={},o=r.createContext(s);function n(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:n(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f40afd58.62d5df86.js b/assets/js/f40afd58.62d5df86.js
new file mode 100644
index 00000000..3d9b689b
--- /dev/null
+++ b/assets/js/f40afd58.62d5df86.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[7398],{7569:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var i=a(5893),n=a(1151);const o={title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},s=void 0,r={permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research",source:"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md",title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",date:"2024-03-25T00:00:00.000Z",formattedDate:"March 25, 2024",tags:[{label:"webxr",permalink:"/blog/tags/webxr"},{label:"3dtiles",permalink:"/blog/tags/3-dtiles"},{label:"google maps",permalink:"/blog/tags/google-maps"},{label:"geospatial",permalink:"/blog/tags/geospatial"},{label:"ar",permalink:"/blog/tags/ar"}],readingTime:6.1,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},unlisted:!1,prevItem:{title:"Community-led planning trends presented at the Caltrans Equity Advisory Committee",permalink:"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee"},nextItem:{title:"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero",permalink:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},l={image:a(4227).Z,authorsImageUrls:[void 0]},d=[{value:"Google Maps 3D Tiles",id:"google-maps-3d-tiles",level:2},{value:"Why is this important?",id:"why-is-this-important",level:3},{value:"Video Demo",id:"video-demo",level:3},{value:"Reaction and productization",id:"reaction-and-productization",level:3},{value:"Bollard Buddy AR - mobile app for manual geolocation and object placement",id:"bollard-buddy-ar---mobile-app-for-manual-geolocation-and-object-placement",level:2},{value:"Video Demo",id:"video-demo-1",level:3},{value:"Geospatial QR hack for fake VPS",id:"geospatial-qr-hack-for-fake-vps",level:3},{value:"Create and share from mobile -- serverless with no auth",id:"create-and-share-from-mobile----serverless-with-no-auth",level:3},{value:"Challenges with web-based Augmented Reality",id:"challenges-with-web-based-augmented-reality",level:3},{value:"Reaction and productization",id:"reaction-and-productization-1",level:3},{value:"Feedback and next steps",id:"feedback-and-next-steps",level:2}];function c(e){const t={a:"a",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["\"Geospatial\" is the uniting theme for the many feature requests we get from 3DStreet's growing user base. Users\xa0can already place custom street scenes, so it's natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we ",(0,i.jsx)(t.a,{href:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero",children:"explore common repeatable workflows for visualizing safer infrastructure"}),"."]}),"\n",(0,i.jsx)(t.p,{children:"To kick off 2024 we've been doing some experiments to see how these technologies could be applied to public streets and spatial design."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.img,{src:a(7942).Z+"",width:"1024",height:"886"}),"\n",(0,i.jsx)(t.strong,{children:"Proof of concept 3D Tiles and 3DStreet scene combined."})]}),"\n",(0,i.jsx)(t.h2,{id:"google-maps-3d-tiles",children:"Google Maps 3D Tiles"}),"\n",(0,i.jsxs)(t.p,{children:["We updated the New York Times R&D team's ",(0,i.jsx)(t.a,{href:"https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api",children:"GitHub repository for the OGC 3D Tiles A-Frame VR Component"})," to support loading 3D maps from Google Maps 3D Tiles. (Thanks Avner for doing the hard three.js work to make this happen.)"]}),"\n",(0,i.jsx)(t.h3,{id:"why-is-this-important",children:"Why is this important?"}),"\n",(0,i.jsx)(t.p,{children:"When presenting street improvements projects, leveraging the existing environment provides instantaneous context and understanding for stakeholders of all ages and abilities. Even low fidelity representations of the surrounding environment helps viewers recognize a project's location and orientation."}),"\n",(0,i.jsx)(t.p,{children:"This experiment is a first step to adding 3D maps as a new feature to 3DStreet Editor."}),"\n",(0,i.jsx)(t.h3,{id:"video-demo",children:"Video Demo"}),"\n",(0,i.jsx)(t.p,{children:"This video is a demo of what it could look like to localize your 3DStreet scene with 3D map tiles near Market and Van Ness Streets in San Francisco."}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/JRWd8P4QwTs?si=lAx7vGRB_rrVIqf6",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:!0}),"\n",(0,i.jsx)(t.h3,{id:"reaction-and-productization",children:"Reaction and productization"}),"\n",(0,i.jsxs)(t.p,{children:["This demo resonated well with users -- ",(0,i.jsx)(t.a,{href:"https://twitter.com/3dstreetapp/status/1768310079307272423",children:"our first tweet sharing the concept"})," was retweeted 11 times and liked more than 50 times on Twitter and ",(0,i.jsx)(t.a,{href:"https://www.linkedin.com/posts/3dstreet_threejs-activity-7174079008819560449-kzqw",children:"attracted engaging comments on LinkedIn"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["Users would like 3D Map Tiles productized as a built-in feature of 3DStreet, but unfortunately the Google 3D Tiles API is significantly more expensive than traditional 2D map tiles starting at ",(0,i.jsx)(t.a,{href:"https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api",children:"$6 per 1000 unique user sessions"}),". In order to offer this feature we will need to come up with a paid subscription plan option to cover the costs of Google Maps 3D Tiles access."]}),"\n",(0,i.jsx)(t.h2,{id:"bollard-buddy-ar---mobile-app-for-manual-geolocation-and-object-placement",children:"Bollard Buddy AR - mobile app for manual geolocation and object placement"}),"\n",(0,i.jsxs)(t.p,{children:["The recent ",(0,i.jsx)(t.a,{href:"https://dreamxr.co/",children:"DreamXR hackathon"})," in San Francisco was the perfect environment to work alongside other XR developers for inspiration to finish a new app in 48 hours. We created BOLLARD BUDDY AR -- an app that lets you place traffic control devices anywhere using augmented reality!"]}),"\n",(0,i.jsx)(t.h3,{id:"video-demo-1",children:"Video Demo"}),"\n",(0,i.jsx)(t.p,{children:"It's easiest to show with a video:"}),"\n",(0,i.jsx)("iframe",{width:"315",height:"560",src:"https://www.youtube.com/embed/mP32oAlz8iI",title:"Bollard Buddy AR - 2024 DreamXR Hackathon Demo",frameborder:"0",allow:"autoplay; encrypted-media;picture-in-picture; web-share",allowfullscreen:!0}),"\n",(0,i.jsx)(t.p,{children:"The app is simple:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Press PLAY to start the AR view after scanning a QR code*"}),"\n",(0,i.jsx)(t.li,{children:"Then tap to place cones or other objects at the yellow cursor."}),"\n",(0,i.jsx)(t.li,{children:"Choose between a few different traffic safety device models from the 3DStreet model library"}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:'While cool, it is technically "table stakes" within the scope of AR app demos. But what\'s next makes it more useful.'}),"\n",(0,i.jsx)(t.h3,{id:"geospatial-qr-hack-for-fake-vps",children:"Geospatial QR hack for fake VPS"}),"\n",(0,i.jsx)(t.p,{children:'What makes BOLLARD BUDDY AR app unique compared to other AR "tap to place" demos is the connection to a specific location -- a longitude and latitude is embedded in the app QR code so that any objects placed in the scene can be localized relative to that longitude and latitude origin point.'}),"\n",(0,i.jsx)(t.p,{children:'This is extremely effective as a cheap and easy way to have a perfect "virtual positioning system" (or VPS) as long as the person posting the sign is capable of posting the sign at the very specific longitude and latitude (and orientation) associated with the QR code. This is easier than it sounds -- by simply dropping a pin on Apple or Google Maps at a clearly identifiable landmark such as a parking meter or telephone pole at a sufficient zoom level you can get a very precise longitude and latitude.'}),"\n",(0,i.jsx)(t.h3,{id:"create-and-share-from-mobile----serverless-with-no-auth",children:"Create and share from mobile -- serverless with no auth"}),"\n",(0,i.jsx)(t.p,{children:"The other unique BOLLARD BUDDY AR feature is sharing your newly created augmented reality street scene with other users (and even yourself) to refer to in the future."}),"\n",(0,i.jsx)(t.p,{children:"Outside in the bright sun on the hot tarmac we don't want to challenge users with authentication or collecting data that requires keyboard input. How can we allow people to share a complicated geospatial scene without a server or authentication?"}),"\n",(0,i.jsxs)(t.p,{children:["Our trick was to stuff the newly created scene data in the URL as url-encoded data. More specifically, a JSON representation of the array of 3D A-Frame entities and for each their mixin, position, rotation properties are all ",(0,i.jsx)(t.a,{href:"https://github.com/KilledByAPixel/JSONCrush",children:"crushed"}),' and placed as a querystring value in a new "Share URL".']}),"\n",(0,i.jsx)(t.p,{children:"Then we use the native OS share dialog to allow the user to choose how they want to share this, from copy/paste to sending message, email, AirDrop (my favorite) or more."}),"\n",(0,i.jsx)(t.h3,{id:"challenges-with-web-based-augmented-reality",children:"Challenges with web-based Augmented Reality"}),"\n",(0,i.jsx)(t.p,{children:"I've always been excited about the fun factor of AR and VR headsets, but recent technology advances in everyday smart phones means that the same tech is possible without a headset leveraging built-in AR libraries such as ARKit and ARCore on Apple and Android devices respectively."}),"\n",(0,i.jsxs)(t.p,{children:["The magic of these AR libraries is precision -- they have extremely accurate ",(0,i.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping",children:"simultaneous localization and mapping (SLAM)"})," available out-of-the-box for native apps usable on almost any device you may have in your pocket."]}),"\n",(0,i.jsxs)(t.p,{children:['Until now these libraries have only been available for native applications, but recently web JavaScript-based access was made available on Android through WebXR AR Mode bindings. iOS devices using Safari have not yet supported WebXR AR Mode, however recently there have been a few "polyfill" workarounds. We are using ',(0,i.jsx)(t.a,{href:"https://launch.variant3d.com/",children:"Variant Launch"}),' which provides a (nearly) seamless experience for iOS users to instantly launch web-based AR apps. Behind the scenes, Variant Launch uses Apple\'s iOS "App Clips" feature to the underlying ARKit library through the WebXR JavaScript standard without needing to download an app first.']}),"\n",(0,i.jsx)(t.h3,{id:"reaction-and-productization-1",children:"Reaction and productization"}),"\n",(0,i.jsx)(t.p,{children:"People often show surprise when using the app for the first time -- perhaps from the fun of reconfiguring public space for the first time, or the magic of discovering a super power they didn't realize their smart phone supported."}),"\n",(0,i.jsx)(t.p,{children:"Some users see past the initial \"Wow Moment\" to practical use cases, especially for professional field measurement and planning for traffic control device placement or other civil engineering-related purpose. In fact, once users start placing basic cones provided in the default application it's not long before they start thinking of other objects they'd like to place and additional use cases."}),"\n",(0,i.jsx)(t.p,{children:"We've continued development of this app concept, most recently adding new objects and improving usability and trying it out with real users at a street fair in San Francisco Saturday March 23."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.img,{src:a(415).Z+"",width:"960",height:"640"}),"\n",(0,i.jsxs)(t.strong,{children:["Picture of a street fair with QR code on signage to collect feedback from community members using a modified version of BOLLARD BUDDY AR with plants, flowers and other street greening objects. ",(0,i.jsx)(t.a,{href:"https://www.sfchronicle.com/bayarea/article/treat-avenue-green-space-19362364.php",children:"Credit Benjamin Fanjoy/The Chronicle"})]})]}),"\n",(0,i.jsx)(t.p,{children:"Similar to other geospatial features, there are fees incurred to make AR placement apps available across all devices (especially including iOS)."}),"\n",(0,i.jsx)(t.h2,{id:"feedback-and-next-steps",children:"Feedback and next steps"}),"\n",(0,i.jsxs)(t.p,{children:["I'd love to hear your feedback on this work at ",(0,i.jsx)(t.a,{href:"mailto:kieran@3dstreet.org",children:"kieran@3dstreet.org"}),". Would you like these features? What is a price that you would pay for a subscription plan that includes these features?"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},4227:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},7942:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},415:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/treat-fair-bollard-buddy-signage-960x0-877276f37f74e65e5f7a2a898de69fee.webp"},1151:(e,t,a)=>{a.d(t,{Z:()=>r,a:()=>s});var i=a(7294);const n={},o=i.createContext(n);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f40afd58.9ac27ec9.js b/assets/js/f40afd58.9ac27ec9.js
deleted file mode 100644
index 0d1473f0..00000000
--- a/assets/js/f40afd58.9ac27ec9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[7398],{7569:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var i=a(5893),n=a(1151);const o={title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},s=void 0,r={permalink:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research",source:"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md",title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",date:"2024-03-25T00:00:00.000Z",formattedDate:"March 25, 2024",tags:[{label:"webxr",permalink:"/blog/tags/webxr"},{label:"3dtiles",permalink:"/blog/tags/3-dtiles"},{label:"google maps",permalink:"/blog/tags/google-maps"},{label:"geospatial",permalink:"/blog/tags/geospatial"},{label:"ar",permalink:"/blog/tags/ar"}],readingTime:6.1,hasTruncateMarker:!0,authors:[{name:"Kieran Farr",title:"Creator of 3DStreet",url:"https://github.com/kfarr",imageURL:"https://github.com/kfarr.png",key:"kfarr"}],frontMatter:{title:"Exploring New Geospatial and Augmented Reality Features for 3DStreet",description:"A developer update blog post on R&D during the first few months of 2024.",authors:"kfarr",tags:["webxr","3dtiles","google maps","geospatial","ar"],image:"./images/2024-03-25/3d-tiles-3dstreet.jpeg"},unlisted:!1,nextItem:{title:"Creating Augmented Reality Street Scenes with Streetmix, 3DStreet and Adobe Aero",permalink:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero"}},l={image:a(4227).Z,authorsImageUrls:[void 0]},d=[{value:"Google Maps 3D Tiles",id:"google-maps-3d-tiles",level:2},{value:"Why is this important?",id:"why-is-this-important",level:3},{value:"Video Demo",id:"video-demo",level:3},{value:"Reaction and productization",id:"reaction-and-productization",level:3},{value:"Bollard Buddy AR - mobile app for manual geolocation and object placement",id:"bollard-buddy-ar---mobile-app-for-manual-geolocation-and-object-placement",level:2},{value:"Video Demo",id:"video-demo-1",level:3},{value:"Geospatial QR hack for fake VPS",id:"geospatial-qr-hack-for-fake-vps",level:3},{value:"Create and share from mobile -- serverless with no auth",id:"create-and-share-from-mobile----serverless-with-no-auth",level:3},{value:"Challenges with web-based Augmented Reality",id:"challenges-with-web-based-augmented-reality",level:3},{value:"Reaction and productization",id:"reaction-and-productization-1",level:3},{value:"Feedback and next steps",id:"feedback-and-next-steps",level:2}];function c(e){const t={a:"a",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["\"Geospatial\" is the uniting theme for the many feature requests we get from 3DStreet's growing user base. Users\xa0can already place custom street scenes, so it's natural to understand why geospatial features like 3D Google Map Tiles or Augmented Reality visualization keep coming up in conversations with users when we ",(0,i.jsx)(t.a,{href:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero",children:"explore common repeatable workflows for visualizing safer infrastructure"}),"."]}),"\n",(0,i.jsx)(t.p,{children:"To kick off 2024 we've been doing some experiments to see how these technologies could be applied to public streets and spatial design."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.img,{src:a(7942).Z+"",width:"1024",height:"886"}),"\n",(0,i.jsx)(t.strong,{children:"Proof of concept 3D Tiles and 3DStreet scene combined."})]}),"\n",(0,i.jsx)(t.h2,{id:"google-maps-3d-tiles",children:"Google Maps 3D Tiles"}),"\n",(0,i.jsxs)(t.p,{children:["We updated the New York Times R&D team's ",(0,i.jsx)(t.a,{href:"https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api",children:"GitHub repository for the OGC 3D Tiles A-Frame VR Component"})," to support loading 3D maps from Google Maps 3D Tiles. (Thanks Avner for doing the hard three.js work to make this happen.)"]}),"\n",(0,i.jsx)(t.h3,{id:"why-is-this-important",children:"Why is this important?"}),"\n",(0,i.jsx)(t.p,{children:"When presenting street improvements projects, leveraging the existing environment provides instantaneous context and understanding for stakeholders of all ages and abilities. Even low fidelity representations of the surrounding environment helps viewers recognize a project's location and orientation."}),"\n",(0,i.jsx)(t.p,{children:"This experiment is a first step to adding 3D maps as a new feature to 3DStreet Editor."}),"\n",(0,i.jsx)(t.h3,{id:"video-demo",children:"Video Demo"}),"\n",(0,i.jsx)(t.p,{children:"This video is a demo of what it could look like to localize your 3DStreet scene with 3D map tiles near Market and Van Ness Streets in San Francisco."}),"\n",(0,i.jsx)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/JRWd8P4QwTs?si=lAx7vGRB_rrVIqf6",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",referrerpolicy:"strict-origin-when-cross-origin",allowfullscreen:!0}),"\n",(0,i.jsx)(t.h3,{id:"reaction-and-productization",children:"Reaction and productization"}),"\n",(0,i.jsxs)(t.p,{children:["This demo resonated well with users -- ",(0,i.jsx)(t.a,{href:"https://twitter.com/3dstreetapp/status/1768310079307272423",children:"our first tweet sharing the concept"})," was retweeted 11 times and liked more than 50 times on Twitter and ",(0,i.jsx)(t.a,{href:"https://www.linkedin.com/posts/3dstreet_threejs-activity-7174079008819560449-kzqw",children:"attracted engaging comments on LinkedIn"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["Users would like 3D Map Tiles productized as a built-in feature of 3DStreet, but unfortunately the Google 3D Tiles API is significantly more expensive than traditional 2D map tiles starting at ",(0,i.jsx)(t.a,{href:"https://github.com/nytimes/aframe-loader-3dtiles-component?tab=readme-ov-file#using-google-3d-tiles-api",children:"$6 per 1000 unique user sessions"}),". In order to offer this feature we will need to come up with a paid subscription plan option to cover the costs of Google Maps 3D Tiles access."]}),"\n",(0,i.jsx)(t.h2,{id:"bollard-buddy-ar---mobile-app-for-manual-geolocation-and-object-placement",children:"Bollard Buddy AR - mobile app for manual geolocation and object placement"}),"\n",(0,i.jsxs)(t.p,{children:["The recent ",(0,i.jsx)(t.a,{href:"https://dreamxr.co/",children:"DreamXR hackathon"})," in San Francisco was the perfect environment to work alongside other XR developers for inspiration to finish a new app in 48 hours. We created BOLLARD BUDDY AR -- an app that lets you place traffic control devices anywhere using augmented reality!"]}),"\n",(0,i.jsx)(t.h3,{id:"video-demo-1",children:"Video Demo"}),"\n",(0,i.jsx)(t.p,{children:"It's easiest to show with a video:"}),"\n",(0,i.jsx)("iframe",{width:"315",height:"560",src:"https://www.youtube.com/embed/mP32oAlz8iI",title:"Bollard Buddy AR - 2024 DreamXR Hackathon Demo",frameborder:"0",allow:"autoplay; encrypted-media;picture-in-picture; web-share",allowfullscreen:!0}),"\n",(0,i.jsx)(t.p,{children:"The app is simple:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Press PLAY to start the AR view after scanning a QR code*"}),"\n",(0,i.jsx)(t.li,{children:"Then tap to place cones or other objects at the yellow cursor."}),"\n",(0,i.jsx)(t.li,{children:"Choose between a few different traffic safety device models from the 3DStreet model library"}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:'While cool, it is technically "table stakes" within the scope of AR app demos. But what\'s next makes it more useful.'}),"\n",(0,i.jsx)(t.h3,{id:"geospatial-qr-hack-for-fake-vps",children:"Geospatial QR hack for fake VPS"}),"\n",(0,i.jsx)(t.p,{children:'What makes BOLLARD BUDDY AR app unique compared to other AR "tap to place" demos is the connection to a specific location -- a longitude and latitude is embedded in the app QR code so that any objects placed in the scene can be localized relative to that longitude and latitude origin point.'}),"\n",(0,i.jsx)(t.p,{children:'This is extremely effective as a cheap and easy way to have a perfect "virtual positioning system" (or VPS) as long as the person posting the sign is capable of posting the sign at the very specific longitude and latitude (and orientation) associated with the QR code. This is easier than it sounds -- by simply dropping a pin on Apple or Google Maps at a clearly identifiable landmark such as a parking meter or telephone pole at a sufficient zoom level you can get a very precise longitude and latitude.'}),"\n",(0,i.jsx)(t.h3,{id:"create-and-share-from-mobile----serverless-with-no-auth",children:"Create and share from mobile -- serverless with no auth"}),"\n",(0,i.jsx)(t.p,{children:"The other unique BOLLARD BUDDY AR feature is sharing your newly created augmented reality street scene with other users (and even yourself) to refer to in the future."}),"\n",(0,i.jsx)(t.p,{children:"Outside in the bright sun on the hot tarmac we don't want to challenge users with authentication or collecting data that requires keyboard input. How can we allow people to share a complicated geospatial scene without a server or authentication?"}),"\n",(0,i.jsxs)(t.p,{children:["Our trick was to stuff the newly created scene data in the URL as url-encoded data. More specifically, a JSON representation of the array of 3D A-Frame entities and for each their mixin, position, rotation properties are all ",(0,i.jsx)(t.a,{href:"https://github.com/KilledByAPixel/JSONCrush",children:"crushed"}),' and placed as a querystring value in a new "Share URL".']}),"\n",(0,i.jsx)(t.p,{children:"Then we use the native OS share dialog to allow the user to choose how they want to share this, from copy/paste to sending message, email, AirDrop (my favorite) or more."}),"\n",(0,i.jsx)(t.h3,{id:"challenges-with-web-based-augmented-reality",children:"Challenges with web-based Augmented Reality"}),"\n",(0,i.jsx)(t.p,{children:"I've always been excited about the fun factor of AR and VR headsets, but recent technology advances in everyday smart phones means that the same tech is possible without a headset leveraging built-in AR libraries such as ARKit and ARCore on Apple and Android devices respectively."}),"\n",(0,i.jsxs)(t.p,{children:["The magic of these AR libraries is precision -- they have extremely accurate ",(0,i.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping",children:"simultaneous localization and mapping (SLAM)"})," available out-of-the-box for native apps usable on almost any device you may have in your pocket."]}),"\n",(0,i.jsxs)(t.p,{children:['Until now these libraries have only been available for native applications, but recently web JavaScript-based access was made available on Android through WebXR AR Mode bindings. iOS devices using Safari have not yet supported WebXR AR Mode, however recently there have been a few "polyfill" workarounds. We are using ',(0,i.jsx)(t.a,{href:"https://launch.variant3d.com/",children:"Variant Launch"}),' which provides a (nearly) seamless experience for iOS users to instantly launch web-based AR apps. Behind the scenes, Variant Launch uses Apple\'s iOS "App Clips" feature to the underlying ARKit library through the WebXR JavaScript standard without needing to download an app first.']}),"\n",(0,i.jsx)(t.h3,{id:"reaction-and-productization-1",children:"Reaction and productization"}),"\n",(0,i.jsx)(t.p,{children:"People often show surprise when using the app for the first time -- perhaps from the fun of reconfiguring public space for the first time, or the magic of discovering a super power they didn't realize their smart phone supported."}),"\n",(0,i.jsx)(t.p,{children:"Some users see past the initial \"Wow Moment\" to practical use cases, especially for professional field measurement and planning for traffic control device placement or other civil engineering-related purpose. In fact, once users start placing basic cones provided in the default application it's not long before they start thinking of other objects they'd like to place and additional use cases."}),"\n",(0,i.jsx)(t.p,{children:"We've continued development of this app concept, most recently adding new objects and improving usability and trying it out with real users at a street fair in San Francisco Saturday March 23."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.img,{src:a(415).Z+"",width:"960",height:"640"}),"\n",(0,i.jsxs)(t.strong,{children:["Picture of a street fair with QR code on signage to collect feedback from community members using a modified version of BOLLARD BUDDY AR with plants, flowers and other street greening objects. ",(0,i.jsx)(t.a,{href:"https://www.sfchronicle.com/bayarea/article/treat-avenue-green-space-19362364.php",children:"Credit Benjamin Fanjoy/The Chronicle"})]})]}),"\n",(0,i.jsx)(t.p,{children:"Similar to other geospatial features, there are fees incurred to make AR placement apps available across all devices (especially including iOS)."}),"\n",(0,i.jsx)(t.h2,{id:"feedback-and-next-steps",children:"Feedback and next steps"}),"\n",(0,i.jsxs)(t.p,{children:["I'd love to hear your feedback on this work at ",(0,i.jsx)(t.a,{href:"mailto:kieran@3dstreet.org",children:"kieran@3dstreet.org"}),". Would you like these features? What is a price that you would pay for a subscription plan that includes these features?"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},4227:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},7942:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/3d-tiles-3dstreet-aa3921b202e721e8fb32544a6f6f4f6d.jpeg"},415:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/treat-fair-bollard-buddy-signage-960x0-877276f37f74e65e5f7a2a898de69fee.webp"},1151:(e,t,a)=>{a.d(t,{Z:()=>r,a:()=>s});var i=a(7294);const n={},o=i.createContext(n);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f4c7824f.4b1f33eb.js b/assets/js/f4c7824f.4b1f33eb.js
new file mode 100644
index 00000000..d887e667
--- /dev/null
+++ b/assets/js/f4c7824f.4b1f33eb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[6972],{245:e=>{e.exports=JSON.parse('{"label":"community-led planning","permalink":"/blog/tags/community-led-planning","allTagsPath":"/blog/tags","count":1,"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/ff0f00dd.b1ef2c2c.js b/assets/js/ff0f00dd.b1ef2c2c.js
new file mode 100644
index 00000000..97e8cc26
--- /dev/null
+++ b/assets/js/ff0f00dd.b1ef2c2c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[2118],{2457:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/community-led-planning","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/main.1596cc0b.js b/assets/js/main.1596cc0b.js
new file mode 100644
index 00000000..7e22ee3e
--- /dev/null
+++ b/assets/js/main.1596cc0b.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.1596cc0b.js.LICENSE.txt */
+(self.webpackChunk_3dstreet_docs=self.webpackChunk_3dstreet_docs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"028a5baf":[()=>n.e(3606).then(n.bind(n,2718)),"@site/docs/3dstreet-editor/select-move-objects.md",2718],"033f20e7":[()=>n.e(7581).then(n.bind(n,4037)),"@site/docs/about-3dstreet/primary-metrics.md",4037],"0608d96f":[()=>n.e(7568).then(n.t.bind(n,7158,19)),"~blog/blog/blog-tags-vps-843-list.json",7158],"09464ff2":[()=>n.e(58).then(n.bind(n,5954)),"@site/docs/about-3dstreet/3dstreet-llc-entity.md",5954],"0afd36a3":[()=>n.e(4134).then(n.t.bind(n,5734,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-blog/blog/home-page-recent-post-metadata-0.json",5734],"0e893359":[()=>n.e(8504).then(n.bind(n,5484)),"@site/docs/about-3dstreet/3dstreet-brand-voice.md",5484],"0f14ed3b":[()=>n.e(8805).then(n.t.bind(n,3893,19)),"~blog/blog/blog-tags-geospatial-6bc.json",3893],"132139d8":[()=>n.e(1617).then(n.t.bind(n,8074,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-blog/blog/home-page-recent-post-metadata-1.json",8074],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],17896441:[()=>Promise.all([n.e(532),n.e(5814),n.e(7918)]).then(n.bind(n,5154)),"@theme/DocItem",5154],"1801e2b8":[()=>n.e(3632).then(n.bind(n,5600)),"@site/docs/development/alpha-labs.md",5600],"1a0cefe5":[()=>n.e(5344).then(n.bind(n,7317)),"@site/docs/3dstreet-editor/saving-and-loading-scenes.md",7317],"1acdfdc0":[()=>n.e(7363).then(n.t.bind(n,2427,19)),"~blog/blog/blog-tags-react-575-list.json",2427],"1bc6901f":[()=>n.e(5678).then(n.t.bind(n,5366,19)),"~blog/blog/blog-tags-headset-f55-list.json",5366],"208c563b":[()=>n.e(9699).then(n.t.bind(n,7836,19)),"~blog/blog/blog-tags-devshop-d51.json",7836],"22c4de1a":[()=>n.e(9477).then(n.bind(n,3112)),"@site/blog/2024-01-29-partner-spotlight-zade.md",3112],"29a92f7f":[()=>n.e(8227).then(n.bind(n,3884)),"@site/docs/viewer-and-editor.md",3884],"2f6a2918":[()=>n.e(6479).then(n.t.bind(n,4925,19)),"~blog/blog/blog-tags-web-0e7.json",4925],"3117c1dd":[()=>n.e(645).then(n.t.bind(n,7344,19)),"~blog/blog/blog-tags-partner-59d-list.json",7344],"3886a17a":[()=>n.e(5416).then(n.t.bind(n,8798,19)),"~blog/blog/blog-tags-policy-781-list.json",8798],"397d6e43":[()=>n.e(7116).then(n.t.bind(n,3835,19)),"~docs/default/category-docs-tutorialsidebar-category-3-dstreet-editor-3f3.json",3835],"39b3d978":[()=>n.e(1217).then(n.bind(n,718)),"@site/docs/about-3dstreet/overview-vision-mission.md",718],"3a4e56ec":[()=>n.e(6839).then(n.t.bind(n,6706,19)),"~blog/blog/blog-tags-mixed-reality-3b5-list.json",6706],"3accc24b":[()=>n.e(4506).then(n.t.bind(n,5789,19)),"~blog/blog/blog-tags-vr-617-list.json",5789],"3b085c01":[()=>n.e(7700).then(n.bind(n,8903)),"@site/blog/2024-01-30-creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero.md",8903],"3be0e09c":[()=>n.e(7781).then(n.t.bind(n,1294,19)),"~blog/blog/blog-tags-partner-59d.json",1294],"3d85b4f0":[()=>n.e(6297).then(n.bind(n,5707)),"@site/blog/2023-12-21-gaussian-splat-compositing-for-constructed-street-scenes.md?truncated=true",5707],"3e0df243":[()=>n.e(4683).then(n.t.bind(n,9093,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-blog/blog/home-page-recent-post-metadata-3.json",9093],"3fd68248":[()=>n.e(9411).then(n.bind(n,7732)),"@site/docs/pricing.md",7732],"4200b1a9":[()=>n.e(866).then(n.t.bind(n,4612,19)),"~blog/blog/blog-archive-80c.json",4612],"4271b14e":[()=>n.e(2256).then(n.t.bind(n,8112,19)),"~blog/blog/blog-tags-adobe-aero-a10-list.json",8112],"4313cb3d":[()=>n.e(3247).then(n.t.bind(n,4157,19)),"~blog/blog/blog-tags-development-9e5-list.json",4157],"45067d2a":[()=>n.e(7727).then(n.bind(n,2786)),"@site/docs/tutorial-streetmix-to-3dstreet/create-or-remix-a-street-in-streetmix.md",2786],"486dd983":[()=>n.e(5195).then(n.t.bind(n,9424,19)),"~blog/blog/blog-tags-webxr-587-list.json",9424],"4d54d076":[()=>n.e(7080).then(n.bind(n,4651)),"@site/docs/contributing.md",4651],"50f80a47":[()=>n.e(5628).then(n.bind(n,222)),"@site/blog/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md",222],"519b3ca2":[()=>n.e(4117).then(n.t.bind(n,493,19)),"~blog/blog/blog-tags-splats-4d6-list.json",493],"51cd3341":[()=>n.e(7899).then(n.t.bind(n,6701,19)),"~blog/blog/blog-tags-community-d90-list.json",6701],"5505e62b":[()=>n.e(8648).then(n.t.bind(n,6721,19)),"~blog/blog/blog-tags-urban-planning-143-list.json",6721],"556ed81e":[()=>n.e(5433).then(n.t.bind(n,5847,19)),"~blog/blog/blog-tags-photogrammetry-028-list.json",5847],"5a908ff0":[()=>n.e(3005).then(n.t.bind(n,5804,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-blog/blog/plugin-route-context-module-100.json",5804],"5c016877":[()=>n.e(5346).then(n.t.bind(n,4163,19)),"~blog/blog/blog-tags-community-d90.json",4163],"5c6a4964":[()=>n.e(9352).then(n.bind(n,5836)),"@site/blog/2023-12-21-gaussian-splat-compositing-for-constructed-street-scenes.md",5836],"5d7706ec":[()=>n.e(6674).then(n.t.bind(n,2458,19)),"~blog/blog/blog-tags-google-maps-f2f-list.json",2458],"5e95c892":[()=>n.e(9661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5f654dc4":[()=>n.e(9389).then(n.bind(n,2233)),"@site/docs/tutorial-streetmix-to-3dstreet/convert-streetmix-street-to-3dstreet-scene.md",2233],"5fbda0ee":[()=>n.e(6065).then(n.t.bind(n,666,19)),"~blog/blog/blog-tags-react-575.json",666],"625c228a":[()=>n.e(6618).then(n.t.bind(n,9241,19)),"~blog/blog/blog-tags-gltf-828-list.json",9241],"66d5ef6c":[()=>n.e(9228).then(n.t.bind(n,4087,19)),"~blog/blog/blog-tags-tags-4c2.json",4087],"6875c492":[()=>Promise.all([n.e(532),n.e(5814),n.e(130),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"71f35c7b":[()=>n.e(7664).then(n.t.bind(n,7876,19)),"~docs/default/category-docs-tutorialsidebar-category-development-8c5.json",7876],"734f9989":[()=>n.e(6721).then(n.bind(n,7206)),"@site/blog/2024-04-22-community-led-planning-trends-at-caltrans-equity-advisory-committee.md?truncated=true",7206],"7bf629c2":[()=>n.e(5705).then(n.t.bind(n,972,19)),"~blog/blog/blog-tags-adobe-aero-a10.json",972],"7d48d4d7":[()=>n.e(5616).then(n.t.bind(n,9106,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-blog/blog/home-page-recent-post-metadata-2.json",9106],"821a9d98":[()=>n.e(1291).then(n.t.bind(n,6995,19)),"~blog/blog/blog-tags-mixed-reality-3b5.json",6995],"8222faa6":[()=>n.e(3689).then(n.t.bind(n,9215,19)),"~blog/blog/blog-tags-gaussian-splats-029.json",9215],"83ee47c4":[()=>n.e(4261).then(n.t.bind(n,9706,19)),"~blog/blog/blog-tags-ar-c05.json",9706],"8c0e532b":[()=>n.e(822).then(n.t.bind(n,3968,19)),"~blog/blog/blog-tags-vps-843.json",3968],"8cebf530":[()=>n.e(2026).then(n.t.bind(n,538,19)),"~blog/blog/blog-tags-developer-c5c.json",538],"93171db4":[()=>n.e(1293).then(n.t.bind(n,3769,19)),"/home/runner/work/3dstreet-docs/3dstreet-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"934d83b9":[()=>n.e(668).then(n.bind(n,2591)),"@site/docs/3dstreet-editor/overview-3dstreet-editor.md",2591],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"95b96bb9":[()=>n.e(3561).then(n.t.bind(n,4577,19)),"~blog/blog/blog-post-list-prop-blog.json",4577],"96213d3b":[()=>n.e(2612).then(n.bind(n,6585)),"@site/blog/2024-01-29-partner-spotlight-zade.md?truncated=true",6585],"989ae605":[()=>n.e(8895).then(n.bind(n,3891)),"@site/docs/services.md",3891],"98da1f4a":[()=>n.e(3895).then(n.t.bind(n,3371,19)),"~blog/blog/blog-tags-localization-d34-list.json",3371],"9b780a1a":[()=>n.e(4183).then(n.t.bind(n,5513,19)),"~blog/blog/blog-tags-urban-planning-143.json",5513],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a01e980f:[()=>n.e(3563).then(n.t.bind(n,3133,19)),"~docs/default/category-docs-tutorialsidebar-category-tutorial-use-streetmix-to-create-a-3-dstreet-scene-a20.json",3133],a493fec0:[()=>n.e(84).then(n.t.bind(n,7088,19)),"~blog/blog/blog-tags-3-dtiles-92d-list.json",7088],a53f5f54:[()=>n.e(7034).then(n.t.bind(n,1965,19)),"~blog/blog/blog-tags-webxr-587.json",1965],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(5814),n.e(130),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7098721:[()=>n.e(1050).then(n.t.bind(n,6615,19)),"~blog/blog/blog-c06.json",6615],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a90c6a58:[()=>n.e(94).then(n.bind(n,4304)),"@site/docs/tutorial-streetmix-to-3dstreet/create-a-streetmix-account.md",4304],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],aa8fa4fa:[()=>n.e(3614).then(n.t.bind(n,5912,19)),"~blog/blog/blog-tags-policy-781.json",5912],aad6ee88:[()=>n.e(598).then(n.t.bind(n,9303,19)),"~blog/blog/blog-tags-web-0e7-list.json",9303],b3418349:[()=>n.e(5971).then(n.bind(n,7129)),"@site/blog/2023-12-29-new-mixed-reality-devices-impact-on-webxr.md?truncated=true",7129],b6414427:[()=>n.e(8294).then(n.t.bind(n,9527,19)),"~blog/blog/blog-tags-development-9e5.json",9527],b7c60316:[()=>n.e(2730).then(n.t.bind(n,4195,19)),"~blog/blog/blog-tags-photogrammetry-028.json",4195],b9a4dd4f:[()=>n.e(1260).then(n.bind(n,9559)),"@site/docs/3dstreet-editor/layers-properties-panels.md",9559],baf4a824:[()=>n.e(487).then(n.t.bind(n,2020,19)),"~blog/blog/blog-tags-vr-617.json",2020],bb0bb3d0:[()=>n.e(1173).then(n.t.bind(n,4050,19)),"~blog/blog/blog-tags-gltf-828.json",4050],bbbbbb57:[()=>n.e(4489).then(n.t.bind(n,5898,19)),"~blog/blog/blog-tags-gaussian-splats-029-list.json",5898],bc475eff:[()=>n.e(4493).then(n.t.bind(n,6501,19)),"~blog/blog/blog-tags-headset-f55.json",6501],bc76ba0b:[()=>n.e(6952).then(n.bind(n,4544)),"@site/docs/development/releases.md",4544],c0a6d427:[()=>n.e(5565).then(n.bind(n,8087)),"@site/docs/development/overview-developer-documentation.md",8087],c1dfd4d2:[()=>n.e(8986).then(n.bind(n,7250)),"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md?truncated=true",7250],c24d0ff5:[()=>n.e(1147).then(n.t.bind(n,2224,19)),"~blog/blog/blog-tags-devshop-d51-list.json",2224],c377a04b:[()=>n.e(6971).then(n.bind(n,9925)),"@site/docs/index.md",9925],c56ca243:[()=>n.e(3826).then(n.bind(n,5408)),"@site/docs/about-3dstreet/user-personas.md",5408],c6137d68:[()=>n.e(261).then(n.t.bind(n,7990,19)),"~blog/blog/blog-tags-geospatial-6bc-list.json",7990],ccc49370:[()=>Promise.all([n.e(532),n.e(5814),n.e(130),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],cd9e707e:[()=>n.e(5958).then(n.bind(n,3734)),"@site/blog/2023-12-29-new-mixed-reality-devices-impact-on-webxr.md",3734],ce36f58e:[()=>n.e(892).then(n.t.bind(n,2549,19)),"~blog/blog/blog-tags-streetmix-c85.json",2549],d0cf7135:[()=>n.e(2072).then(n.t.bind(n,4081,19)),"~docs/default/category-docs-tutorialsidebar-category-about-3-dstreet-38b.json",4081],d718986e:[()=>n.e(121).then(n.t.bind(n,3043,19)),"~blog/blog/blog-tags-google-maps-f2f.json",3043],d7a9b2b0:[()=>n.e(416).then(n.t.bind(n,4023,19)),"~blog/blog/blog-tags-3-dtiles-92d.json",4023],d7c9acd4:[()=>n.e(3336).then(n.bind(n,1750)),"@site/docs/tutorial-streetmix-to-3dstreet/congratulations.md",1750],d8867e84:[()=>n.e(32).then(n.t.bind(n,4620,19)),"~blog/blog/blog-tags-ar-c05-list.json",4620],da28a654:[()=>n.e(8366).then(n.t.bind(n,437,19)),"~blog/blog/blog-tags-developer-c5c-list.json",437],dba05362:[()=>n.e(3146).then(n.t.bind(n,1974,19)),"~blog/blog/blog-tags-streetmix-c85-list.json",1974],dd986bc4:[()=>n.e(1321).then(n.bind(n,8090)),"@site/docs/tutorial-streetmix-to-3dstreet/overview-streetmix-3dstreet.md",8090],e0f141dc:[()=>n.e(1677).then(n.bind(n,4004)),"@site/blog/2024-01-30-creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero.md?truncated=true",4004],e720b24b:[()=>Promise.all([n.e(532),n.e(4711),n.e(5134)]).then(n.bind(n,3421)),"@site/src/components/Home/index.js",3421],f1d6b137:[()=>n.e(7909).then(n.bind(n,1978)),"@site/docs/3dstreet-editor/save-export-scene.md",1978],f2352c02:[()=>n.e(6346).then(n.t.bind(n,4913,19)),"~blog/blog/blog-tags-localization-d34.json",4913],f31fa0a9:[()=>n.e(6426).then(n.t.bind(n,9944,19)),"~blog/blog/blog-tags-splats-4d6.json",9944],f40afd58:[()=>n.e(7398).then(n.bind(n,7569)),"@site/blog/2024-03-25-dev-blog-geospatial-and-augmented-reality-feature-research.md",7569],f4c7824f:[()=>n.e(6972).then(n.t.bind(n,245,19)),"~blog/blog/blog-tags-community-led-planning-1ef.json",245],ff0f00dd:[()=>n.e(2118).then(n.t.bind(n,2457,19)),"~blog/blog/blog-tags-community-led-planning-1ef-list.json",2457]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(9670),u=n(226);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(1772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,l.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],g=(0,c.Z)(r);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,l.jsx)(u.z,{value:i,children:(0,l.jsx)(a,{...o,...n})})}})}const p=[{path:"/blog",component:d("/blog","0d5"),exact:!0},{path:"/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes",component:d("/blog/2023/12/21/gaussian-splat-compositing-for-constructed-street-scenes","43f"),exact:!0},{path:"/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr",component:d("/blog/2023/12/29/new-mixed-reality-devices-impact-on-webxr","5fa"),exact:!0},{path:"/blog/2024/01/29/partner-spotlight-zade",component:d("/blog/2024/01/29/partner-spotlight-zade","71e"),exact:!0},{path:"/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero",component:d("/blog/2024/01/30/creating-augmented-reality-ar-scenes-with-streetmix-3dstreet-adobe-aero","8ec"),exact:!0},{path:"/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research",component:d("/blog/2024/03/25/dev-blog-geospatial-and-augmented-reality-feature-research","604"),exact:!0},{path:"/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee",component:d("/blog/2024/04/22/community-led-planning-trends-at-caltrans-equity-advisory-committee","a87"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","641"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","442"),exact:!0},{path:"/blog/tags/3-dtiles",component:d("/blog/tags/3-dtiles","77a"),exact:!0},{path:"/blog/tags/adobe-aero",component:d("/blog/tags/adobe-aero","317"),exact:!0},{path:"/blog/tags/ar",component:d("/blog/tags/ar","27c"),exact:!0},{path:"/blog/tags/community",component:d("/blog/tags/community","bbf"),exact:!0},{path:"/blog/tags/community-led-planning",component:d("/blog/tags/community-led-planning","5e5"),exact:!0},{path:"/blog/tags/developer",component:d("/blog/tags/developer","866"),exact:!0},{path:"/blog/tags/development",component:d("/blog/tags/development","7d5"),exact:!0},{path:"/blog/tags/devshop",component:d("/blog/tags/devshop","592"),exact:!0},{path:"/blog/tags/gaussian-splats",component:d("/blog/tags/gaussian-splats","906"),exact:!0},{path:"/blog/tags/geospatial",component:d("/blog/tags/geospatial","662"),exact:!0},{path:"/blog/tags/gltf",component:d("/blog/tags/gltf","e81"),exact:!0},{path:"/blog/tags/google-maps",component:d("/blog/tags/google-maps","c93"),exact:!0},{path:"/blog/tags/headset",component:d("/blog/tags/headset","7ca"),exact:!0},{path:"/blog/tags/localization",component:d("/blog/tags/localization","06b"),exact:!0},{path:"/blog/tags/mixed-reality",component:d("/blog/tags/mixed-reality","962"),exact:!0},{path:"/blog/tags/partner",component:d("/blog/tags/partner","f12"),exact:!0},{path:"/blog/tags/photogrammetry",component:d("/blog/tags/photogrammetry","888"),exact:!0},{path:"/blog/tags/policy",component:d("/blog/tags/policy","a0a"),exact:!0},{path:"/blog/tags/react",component:d("/blog/tags/react","3fe"),exact:!0},{path:"/blog/tags/splats",component:d("/blog/tags/splats","46a"),exact:!0},{path:"/blog/tags/streetmix",component:d("/blog/tags/streetmix","07e"),exact:!0},{path:"/blog/tags/urban-planning",component:d("/blog/tags/urban-planning","46f"),exact:!0},{path:"/blog/tags/vps",component:d("/blog/tags/vps","9ef"),exact:!0},{path:"/blog/tags/vr",component:d("/blog/tags/vr","342"),exact:!0},{path:"/blog/tags/web",component:d("/blog/tags/web","f01"),exact:!0},{path:"/blog/tags/webxr",component:d("/blog/tags/webxr","9bc"),exact:!0},{path:"/docs",component:d("/docs","05a"),routes:[{path:"/docs",component:d("/docs","b75"),routes:[{path:"/docs",component:d("/docs","d63"),routes:[{path:"/docs/",component:d("/docs/","a8c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/3dstreet-editor/layers-properties-panels",component:d("/docs/3dstreet-editor/layers-properties-panels","510"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/3dstreet-editor/overview-3dstreet-editor",component:d("/docs/3dstreet-editor/overview-3dstreet-editor","d0d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/3dstreet-editor/save-export-scene",component:d("/docs/3dstreet-editor/save-export-scene","e5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/3dstreet-editor/saving-and-loading-scenes",component:d("/docs/3dstreet-editor/saving-and-loading-scenes","074"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/3dstreet-editor/select-move-objects",component:d("/docs/3dstreet-editor/select-move-objects","c37"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/about-3dstreet/3dstreet-brand-voice",component:d("/docs/about-3dstreet/3dstreet-brand-voice","b5f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/about-3dstreet/3dstreet-llc-entity",component:d("/docs/about-3dstreet/3dstreet-llc-entity","ac8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/about-3dstreet/overview-vision-mission",component:d("/docs/about-3dstreet/overview-vision-mission","1ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/about-3dstreet/primary-metrics",component:d("/docs/about-3dstreet/primary-metrics","c66"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/about-3dstreet/user-personas",component:d("/docs/about-3dstreet/user-personas","9bb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/3dstreet-editor",component:d("/docs/category/3dstreet-editor","d62"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/about-3dstreet",component:d("/docs/category/about-3dstreet","ed1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/development",component:d("/docs/category/development","089"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/tutorial-use-streetmix-to-create-a-3dstreet-scene",component:d("/docs/category/tutorial-use-streetmix-to-create-a-3dstreet-scene","da8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/contributing",component:d("/docs/contributing","ff2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/alpha-labs",component:d("/docs/development/alpha-labs","67e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/overview-developer-documentation",component:d("/docs/development/overview-developer-documentation","508"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/development/releases",component:d("/docs/development/releases","192"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/pricing",component:d("/docs/pricing","a8a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/services",component:d("/docs/services","064"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-streetmix-to-3dstreet/congratulations",component:d("/docs/tutorial-streetmix-to-3dstreet/congratulations","fd3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-streetmix-to-3dstreet/convert-streetmix-street-to-3dstreet-scene",component:d("/docs/tutorial-streetmix-to-3dstreet/convert-streetmix-street-to-3dstreet-scene","9fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-streetmix-to-3dstreet/create-a-streetmix-account",component:d("/docs/tutorial-streetmix-to-3dstreet/create-a-streetmix-account","642"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-streetmix-to-3dstreet/create-or-remix-a-street-in-streetmix",component:d("/docs/tutorial-streetmix-to-3dstreet/create-or-remix-a-street-in-streetmix","3a6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/tutorial-streetmix-to-3dstreet/overview-streetmix-3dstreet",component:d("/docs/tutorial-streetmix-to-3dstreet/overview-streetmix-3dstreet","53e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/viewer-and-editor",component:d("/docs/viewer-and-editor","c43"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/",component:d("/","6de"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),l=n(412);const s=[n(6657),n(2497),n(3310),n(8320),n(9337),n(9517)];var c=n(723),u=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(5742),m=n(2263),h=n(4996),b=n(6668),y=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(g.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,h.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(g.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(_,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(g.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function j(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),A=n(8940),N=n(469);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,N.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n