Giter Site home page Giter Site logo

uz9 / westcore-path-generator Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 14.54 MB

A proof of concept 3D autonomous routing tool powered by React and 3JS.

HTML 1.92% TypeScript 3.51% CSS 1.13% JavaScript 93.44%
vex-robotics-competition vex-robotics 3js react robotics

westcore-path-generator's Introduction

WestCore Path Generator

CI

image

A proof of concept 3D autonomous routing tool powered by React and 3JS.

๐Ÿšง๐Ÿšง This project is not finished ๐Ÿšง๐Ÿšง

Trying it out

While there isn't any documentation for this project yet, you can see a live demo here.

Current Features

  • 3D zoomable/pannable model of the field
  • UI functionality
  • Waypoint placement using the Enter Waypoint Creation button
  • Realtime editing of waypoint data
  • Waypoint drag movement, along with snapping to grid functionality (holding ALT)
  • Waypoint serialization, with buttons for importing (takes from the importString parameter) and exporting (prints JSON string in console) a project \
  • Cubic hermite curve generation between waypoints, along with an optional robot visualizer

westcore-path-generator's People

Contributors

uz9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

adcb4321

westcore-path-generator's Issues

Cleanup Project

As soon as drag selection is finished all of the extraneous code needs to be removed from the project.

Combine all node data between UIManager and UIManagerRenderer

At the moment UIManager and UIManagerRenderer both have their own array of nodes. All data should instead flow through UIManagerRenderer, where UIManager is solely responsible for calling UIManagerRenderer functions when UI buttons are pressed.

Reduce amount of re-renders for a Node

Because of dependency requirements changing in real-time, a Node ends up re-rendering itself 6 times when initially clicked. This is obviously not ideal, and some of these dependencies should be bulk initialized in one pass if possible.

Stop using react-three-fiber?

While react-three-fiber has been spectacular for real-time updates of different components, sharing data between nested functional components has been absolutely painful and has caused the dependency flow to be incredibly convoluted. Switching to pure 3JS would allow more documentation to be available and a far better project structure. The biggest issue with migrating is losing the UI library as well as react-three-fiber/drei. Some of the things to be changed:

  • Switch OrbitControls to be the 3JS variant
  • Switch to 3JS render loop, removing all of the states and props
  • Largest hassle: importing meshes without useGLTF
  • Modifying mesh components in realtime
  • Possibly losing realtime editing features without reloading everything

Allow markers to be unselected

There are primarily two scenarios where this can happen:

  • You select the same marker again
  • You click outside of a marker, whether it be the field or the sphere geometry

Better field floor

To fix the issue of having multiple individual tiles to add click registers to, a temporary solution was to take one tile and scale it up to the size of the field. This is obviously not as ideal, as we primarily lose two features:

  • The connectors of the tile are massive, and still count as placable locations for markers
  • The field doesn't have any way of differentiating between grid spaces
  • The tile for whatever reason is slightly raised and clipping into a few objects

Marker JSON Serialization

In order for the user to import and export different autonomous models, the markers need to have all of their data serialized.

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.