3dstreet / 3dstreet Goto Github PK
View Code? Open in Web Editor NEWπ²πΆπ Web-based 3D visualization of streets using A-Frame
Home Page: https://3dstreet.app
License: GNU Affero General Public License v3.0
π²πΆπ Web-based 3D visualization of streets using A-Frame
Home Page: https://3dstreet.app
License: GNU Affero General Public License v3.0
From Maximus on A-Frame Slack:
No snap turn made it quite hard to navigate. But i see the hands and can teleport π
I think this means:
<a-mixin id="tram" gltf-model="#trammodel" sound="src: #tram-pass-mp3;positional:true;distanceModel:inverse;refDistance:5;rolloffFactor:3;volume: 1"></a-mixin>
processSegments is the "meat" of the application and mixes Streetmix segment JSON parsing with creating DOM elements for A-Frame rendering. The logic should be separated so that it can be better tested and modular.
instead of a gltf object use:
current: ~3k tris and 24 draw calls per rail lane
after: 20 tris, 4 draw calls per rail lane
user testers want to go inside a building
the fence is taking way to many draw calls
fix it!
Streetmix.net inverts turn lane orientation when displaying in the lane, see streetmix/streetmix#683
Streetmix3D displays the "true" value according to the DB, but this results in confusion:
https://twitter.com/SounderBruce/status/883431538385276932
Perhaps turn lane orientations should be inverted for now as a "hacky" fix so that people see in 3D what they expect from the 2D visual.
possible solutions:
Load:
https://kfarr.github.io/streetmix3d/#https://streetmix.net/kfarr/36
Click VR in the lower-right hand corner
Audio should start, it doesn't appear to be. But when leaving VR audio can be heard
user testing - user wishes to have a pier to go out on the water without falling in
purchased domain name options: 4d.city or streetmix3d.com
what is the benefit of this? is it worth the effort?
pros to using custom domain:
pros to keeping existing github pages url:
Optimizing the building (scenesmall2.glb
) in the demo scene, you can drop it from 360 draw calls to 3 draw calls just by running it through gltfpack (although I had to un-draco-ify it first).
That will increase file size a bit (from 1.6mb to 2.6mb after gzip) but 1MB of that is just the billboard textures, which could probably be removed for streetmix's purposes. I thought adding Draco back to the asset afterward would get it back down to the same size, but for some reason it didn't help further.
I didn't test on any other assets in the folder, but gltfpack can be a pretty worthwhile tool a lot of the time. :)
When entering VR mode testers found it disconcerting to be placed in the middle of a roadway to collide with moving vehicles. Prefer to start on a sidewalk or other pedestrian refuge
Features:
the hash striping is too dense and does not match the other roadway striping from north america / california
Right now objects such as trees, safe hit bollards, light posts, etc. are cloned with a very cumbersome approach to create new entities, each with its own entity that loads and parses a new glTF model for each of the cloned entities. This results in many draw calls and time to load and parse each object.
I think we can reduce draw calls and speed up the loading process by cloning in a more intelligent manner.
I tried A-Frame geometry merger to no avail: #8 (comment)
Things to try:
What is proper way to use export and import both for the project and for testing -- ideally with ES6 modules (esm) so that code can be viewed and used directly without an intermediary build step?
Amazing piece of work. I would like to be able to glue a series of Streetmix together to create a 3D scape. Allowing me to show a bus stop bypass or a narrow section of a road.
testing A-Frame components -- what level of DOM setup / destroy is needed and can it be shared among other tests, need to look at A-Frame component code examples
I bought a license for this pack:
https://syntystore.com/products/polygon-town-pack
Need to combine meshes into 5 or 6 building (or lot level) variants
try gltf pack this time?
To reproduce:
Proposed solution:
For example, if there were a grant for $250k from mozilla or knight:
also have models for these from town or city pack
A few good writeups:
First MVP:
Issue:
Impact:
Instead:
Phase 1: (this ticket) Separate the buildings "as is" with identical height regardless of streetmix json configuration -- use the same height as the current GLTF file
Phase 2: (later ticket) Ability to programmatically change height of buildings using the building "levels" from the asset pack
-
then omit this querystring value in the resultant URL, so that an input of value of https://streetmix.net/-/1095767
returns https://streetmix.net/api/v1/streets?namespacedId=1095767
you can see 2 catenary wires on the trains sometimes when loading a scene -- is the scene being loaded twice?
how to reproduce reliably?
Partial solution, needs environment map applied to (some or all) gltf materials
See:
https://github.com/donmccurdy/aframe-extras/blob/master/src/misc/cube-env-map.js
https://stackoverflow.com/questions/59625510/aframe-gltf-model-demo-with-envmap
https://stack-59625510.glitch.me/
https://stackoverflow.com/questions/60013557/how-to-add-equirectangular-environment-map-to-gltf-model-in-a-frame
bryik/aframe-cubemap-component#13 fixed, so use that
consider addressing "low hanging fruit" for poor performance
User tester requested "fishies in water". Also crickets.
Maybe some birds too?
Test user reports:
Sound level is really low. Wasn't really able to hear something until I turned the volume to the max.
Issue:
Instead:
See here for example
https://github.com/planetvoodoo/aframe-html5-loader/blob/master/pvloader.js
~5k triangles from sky box
could be reduce to a handful if using this component:
https://github.com/bryik/aframe-cubemap-component
Can use this to convert equirectangular to skyboxes:
https://jaxry.github.io/panorama-to-cubemap/
safehits have a black rubber base, not colored white
it has three 116 and that has cool new things like better pbr
https://discourse.threejs.org/t/pbr-material-looks-too-shiny-in-three-js/16666/3?u=kfarr
115 to 116 makes ground component too bright, replace with textures
replace ground placement with json
Can base it off of my reply to this thread:
http://forums.streetmix.net/t/request-top-down-view/103/3
Next steps:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.