Giter Club home page Giter Club logo

3dstreet's Issues

Add movement controls including "snap turn"

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:

  • once positional stick crosses 50% thresh-hold in right or left direction, then add or subtract 45 degrees from current camera rig rotation with a rate limiter of every 1 second if held down

Make tram and other vehicle sounds positional

<a-mixin id="tram" gltf-model="#trammodel" sound="src: #tram-pass-mp3;positional:true;distanceModel:inverse;refDistance:5;rolloffFactor:3;volume: 1"></a-mixin>

  • audio artifacts on playback using positional audio, likely due to the overly complex scene that is skipping frames in Oculus Quest headset.
  • Further, those are not the perfect variable settings as the tram is in motion which results in quieter audio when it approaches and leaves (but correct while it is nearby) so more tweaking will be necessary for this specific use case.

use simple geometry for train track rails

instead of a gltf object use:

  • slightly elevated highly reflective silver rail (box)
  • ground level no reflection dark black for inner trench for wheel flanges (plane)

current: ~3k tris and 24 draw calls per rail lane
after: 20 tris, 4 draw calls per rail lane

building interiors

user testers want to go inside a building

  • bonus - be able to take stairs or elevator up to the roof to see the scene from the top

Re-enable 3DStreet sound effects

possible solutions:

  • better messaging of current behavior (reset icon to red x when loading new street?)
  • create a new component "playme" that autoplays the asset if global sound enable constant is true

host on custom domain name?

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:

  • shorter url
  • can control gzip settings to make gltfpack a reasonable solution #4
  • opens the door to more dynamic features and authentication (firebase)

pros to keeping existing github pages url:

  • less maintenance
  • indicates to user that the project is still a "developer" product and a work in progress
  • retains value for streetmix.net to offer simpler interface wrapping of streetmix3d as part of premium service

make a nicer looking sidewalk

  • nicer texture - pbr optional - try out a few from cgaxis as well as look at existing library
  • combine adjacent segments where "isSidewalk" is true to have one combined polygon
  • include properly sized curb
  • max anisotropic filtering since this is a noticeable texture in the horizon

Consider gltfpack'ing assets

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. :)

create tested JSON serializer and deserializer

  • Serializer - convert DOM to JSON, allow for appending more elements to the JSON
  • Deserializer - convert JSON to DOM elements, add them to the scene

Features:

  • support parent / child entity nesting
  • support any components
  • modular to be used in other applications

hash striping too dense

the hash striping is too dense and does not match the other roadway striping from north america / california

Use instancing to reduce draw calls for cloned objects

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:

  • Try using the gltf-part component. Start with one type of object - lamp posts for instance. Put all of them in one glTF file. Their relative position many need to be "reset" and I have modified the gltf-part component here to try to do that.
  • If that works, then create a new "master" blender file and export to glTF for all combined street props that are frequently repeated: trees, benches, light posts, etc.

Support Multiple Streetmix "Sections"

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.

What could be done with an external grant?

For example, if there were a grant for $250k from mozilla or knight:

  • Mozilla mixed reality initiatives - how support mozilla things? Hubs? Firefox Realities? ECS / A-Frame?
  • How does that mix into streetmix? How benefit streetmix: visual design, current conditions, advocacy goals, better seamless integration?
  • Streetmix3d - technical things (performance improvements); lower load time (both 3d/2d); mobile accessibility (3d/2d)
  • What is value to community / planners / engineers / agencies based on user interviews from March 2020?

Break out buildings to be programmatically generated

Issue:

  • Right now the building block is a fixed GLTF exported from the asset pack that I purchased from sketchfab.

Impact:

  • The buildings do not reflect settings from a streetmix street's json configuration
  • There are more buildings on the "back" of the block than necessary
  • The buildings do not fill up the entire block

Instead:

  • Buildings should be separated (either in one or multiple GLTFs) so that they can be placed programmatically along the entire block based on a streetmix scene's json configuration

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

sometimes duplicate vehicles appear

you can see 2 catenary wires on the trains sometimes when loading a scene -- is the scene being loaded twice?

how to reproduce reliably?

reduce building complexity and split into parts

  • reduce complexity of buildings (reduce the size and number of parts and buildings)
  • reduce draw calls by merging geometries in blender
  • create named parts for each building that can be referenced in A-Frame to construct larger blocks
  • use some sort of optimization or compression scheme such as draco or meshopt / gltfpack

Additional sound effects for environments

  • seagulls / ocean sound for seaside building type
  • no sound for parking lot (or occasional car alarm? idle vehicles? beeping reverse indicator?)
  • people sound for multiuse - current ambient noise
  • nature sound for empty grass lot

Sound level low

Test user reports:

Sound level is really low. Wasn't really able to hear something until I turned the volume to the max.

Issue:

  • Tram SFX is nonpositional but low (0.3)
  • BG ambient audio is positional

Instead:

  • Tram SFX should be higher but positional (testing needed)
  • BG should be nonpositional but low

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.