Git Product home page Git Product logo

handwaver's People

Contributors

cam3715 avatar camden-bock avatar joey-haney avatar nsgnn avatar timothyatmaine avatar timothybruce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

neolyss plpang

handwaver's Issues

Recreation of empty scenes

Scenes to recreate

  • Dimensions study layer
  • Higher dimension layer
  • Shearing Lab

Additional context
These were destroyed upon git file management. They can be recreated with the prefabs and scripts from our repo.

Rebuild menu in RSDES

The prefab doesn't work

Maybe this is a good time to consider a different design?

Scenes for a study of scale and dimension

Is your feature request related to a problem? Please describe.
This is discussed in Dimmel's proposal, appendix B. MODIFIED AUG 19, 2019

Describe the solution you'd like
A set of figures that extend the sandbox dimension with analogs in 2,3 and 4 dimensions.

The scene will have a set of figures that can be viewed using a set of lenses. Additionally, some actions (events) can be applied to each figure).

Figures:

  • 1-,2-,3-sphere
  • square, cube, 8-cell
  • triangle, tetrahedron, 5-cell
  • 1-,2-,3-,4-dimensional Cartesian axes (as lines or basis vectors)

Lenses

  • Standard Rendering (not available for 3-sphere, 8-cell, 5-cell, 4-d axes)
  • Parallel Projection
  • Projective Projection
  • Stereographic Projection (inflate to n-sphere)
  • Cross-Section

Events

  • Translation
  • Rotation
  • Net folding/unfolding

Completion Checklist

Projection Algorithms

  • Parallel Projection
    • 4D --> 3D
    • 3D --> 2D
    • 2D --> 1D
  • Projective Projection
    • 4D --> 3D
    • 3D --> 2D
    • 2D --> 1D
  • Stereographic Projection (inflate to n-sphere)
    • 4D --> 3D
    • 3D --> 2D
    • 2D --> 1D

Cross-Sections --> Are these a separate object?

  • Sphere
    • 1-Sphere
    • 2-Sphere
    • 3-Sphere
  • Cubes ???
    • Square
    • Cube
    • 8-cell
  • Tetrahedrons ???
    • Triangle
    • Tetrahedron
    • 5-cell
  • Axes ???
    • 1D
    • 2D
    • 3D
    • 4D

Net Folding --> These can exist if we consider an unfolding of the mesh

  • Sphere ???
    • 1-Sphere
    • 2-Sphere
    • 3-Sphere
  • Cubes
    • Square
    • Cube
    • 8-cell
  • Tetrahedrons
    • Triangle
    • Tetrahedron
    • 5-cell
  • Axes ???
    • 1D
    • 2D
    • 3D
    • 4D

Translation

  • Sphere
    • 1-Sphere
    • 2-Sphere
    • 3-Sphere
  • Cubes
    • Square
    • Cube
    • 8-cell
  • Tetrahedrons
    • Triangle
    • Tetrahedron
    • 5-cell
  • Axes
    • 1D
    • 2D
    • 3D
    • 4D

Rotation

  • Sphere
    • 1-Sphere
    • 2-Sphere
    • 3-Sphere
  • Cubes
    • Square
    • Cube
    • 8-cell
  • Tetrahedrons
    • Triangle
    • Tetrahedron
    • 5-cell
  • Axes
    • 1D
    • 2D
    • 3D
    • 4D

Important Design Considerations
If we allow translation and rotation, do we need more general cross-sections?
Can we solve all of the projection problems with 4D --> 3D?

Move pinch-to-drag to new gesture system

Points and tools will continue to use the interaction engine.

Otherwise, we will use our own interactions to move things around.

This stems from the Physx colldiers being limited.

This will also help us in an ECS system.

Web Socket Communication with HW Server

Subtask of #9
Socket does not establish proper communication. When that is complete, we need to emit a message of "Subscribe: "+ sessionID This should allow for us to then receive updates through the socket.

Geometery Solver

Is your feature request related to a problem? Please describe.
We need a much more robust geometry solver. Our current geometry solver is quite limited - it either doesn't iterate enough to get an accurate image, or it's iterations don't converge because of rounding errors and figures drift out towards the infinite.

Optimally, we would either port geogebra's geometry solver to C#, find some wrapper for GeoGebra that allows us to access it through Unity, or build on the GeoGebra VR platform, implementing a new user interface.

Describe the solution you'd like
We need a robust geometry solver (kernel). This should have multiple layers of abstraction - the kernel level that handles the mathematical abstractions of the figures, a graphical level that renders each figure in the scene, and an interaction level that interprets users inputs using LeapMotion Orion and OSVR controllers to send commands to the kernel.

Any solution should support cross-sections, and restrictions of orthogonal, parallel and congruence.

Describe alternatives you've considered
We have considered rewriting our existing solver with an event-based system, though it seems that this delays the problem. A connection to an existing open-source solution seems much more viable.

Additional context

  • Stretch a Revolved Object - This has a pre-requisite โ€“ finding the closest point on a revolved object.
  • Constructions with conics - We could also develop tools that let a user spawn or create parabolas and the other conic sections. For a parabola, a tool that somehow captures the geometric relationship between the focus and the directrix would be compelling
  • Eraser tool at the kernel level
  • Paint Brush Tool at the graphical level
  • Dynamic Sphere Constructions
  • Networked structure - do we send RPCs to local kernels? do we send RPCs to the kernel on the server and have the server kernel send RPCs to the graphical layer on clients?
  • Representation of Arcs - all layers
  • Scaling on the graphical and interaction layers
  • Hoist to right angles
  • Cut operator

Embodied User Input Overhaul

Is your feature request related to a problem? Please describe.
When we are developing for LeapMotion Orion, we have three problems. One, we often use similar gestures for multiple applications but re-implement the gesture each time. Two, we leave OSVR Control overrides behind to clean up later. Three, we need a universal system for visual and audio feedback for control use. InteractionBehaviours for general movement already support OSVR controllers.

Describe the solution you'd like
We want our abstraction to have three layers. A base layer that lays infrastructure for connecting left hand to left OSVR controller, etc. Also, button access for OSVR and basic PUN RPC support. A middle layer would define gestures in terms of both the LeapHands and OSVR controllers. This layer would also handle audio and visual feedback, so this is consistent (e.g. an open palm has the same color feedback and same audio feedback in any context). A top layer would extend this class to the specific implementation. This would send the specific RPCs as needed and interact with the kernel or other tools as needed.

For example:

IMRE_OneHandedGesture --> IRME_Point --> PointToSelect

Additional context

  • Interface Layer

    • OSVR Controller support Issue #89
    • Aristo Support
    • Valve Skeleton Support Issue #90
    • Leap Motion Support
    • Audio/Visual Feedback Abstract #91
  • Classification Layer

    • Pointing Gesture
    • Open Palm Gesture
    • Swipe Gesture
    • Double Pinch but NOT grasp.
    • template for additional gestures.
  • Action Layer

    • prototype with Pointing at slider

Convert Geogebra API JS into C# Code

Is your feature request related to a problem? Please describe.

  • This is related to issue #9.

Describe the solution you'd like

  • It is a subtask that would create callable code within C# from Geogebra JavaScript.

Describe alternatives you've considered

  • JavaScript.Net
  • IKVM

Additional Info

The desired Code to be callable within C#:
https://wiki.geogebra.org/en/Reference:GeoGebra_Apps_API
A suggested tool to call JS within C#:
https://archive.codeplex.com/?p=javascriptdotnet
A suggested tool to create a DLL that contains a jar file:
https://www.ikvm.net/

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Resources\Databases\StellarData\getJ2000EarthData.py:11-32
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/StellarData/getJ2000EarthData.py#L11)[Assets\Resources\Databases\PlanetaryData\HORIZONSDataTester.py:14-35
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataTester.py#L14)[Assets\Resources\Databases\PlanetaryData\HORIZONSDataCreator.py:13-35
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataCreator.py#L13)

Impliment Session ID override

This is a string within HandWaverServerSocket.cs that would require a GUID format. Current idea is to allow for a command line argument, and later can be integrated with a platform such as steam or discord for user identification.

Geometer's Planetarium Feature Extensions

Describe the solution you'd like
A set of extensions to the Geometer's planetarium scene.

Additional context

  • Refine the scale operator to allow the user to continuously transform their position and scale until they are on the surface of the earth
  • Tilt mode
  • push earth mode
  • remaining horizons features
  • Mapping the Night Sky
  • Representation of Arcs - Design representations of Central Angle between rays
  • Shadows and Lighting
  • Spin earth - using swipe gesture (see gesture issue #14
  • Planets
    • Textures from NASA
    • Database integration
    • Orbit Planes and Path represnetation
    • Pin Integration

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Resources\Databases\PlanetaryData\HORIZONSDataCreator.py:12-37
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataCreator.py#L12)[Assets\Resources\Databases\PlanetaryData\HORIZONSDataTester.py:13-37
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataTester.py#L13)

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Scripts\SceneSpecific\GeometersPlanetarium\Verlet\VerletV2\VerletV2StressTestControl.cs:10-28
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Scripts/SceneSpecific/GeometersPlanetarium/Verlet/VerletV2/VerletV2StressTestControl.cs#L10)[Assets\Scripts\SceneSpecific\GeometersPlanetarium\Verlet\VerletStressTestControl.cs:10-28
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Scripts/SceneSpecific/GeometersPlanetarium/Verlet/VerletStressTestControl.cs#L10)Commit 6ee9e81

Reset and Quit Buttons

Is your feature request related to a problem? Please describe.
Allow for resetting the scene and quitting the application without alt + F4

Describe the solution you'd like
On screen menu that would allow for scene reload and application quit.

Describe alternatives you've considered
In the past, we have used a system that would be consisting of random key buttons. This solution would allow for the user to handle these features in a single place with a single button.

Point Stretch Improper Lines

Describe the bug
Upon point strech completion, the resulting line is not properly setup. This breaks all solver functionality.

To Reproduce
Steps to reproduce the behavior:

  1. Grab point
  2. Stretch point with standard gesture
  3. Resulting line has no updated positions on visual representation
  4. See Errors spawned in console

Expected behavior
A line should spawn between the two points. The line should update as the points connected to it move.

Desktop (please complete the following information):

  • OS: Windows 10
  • Version 1803

Additional context
The errors seem to be related to the figtype of the line. This might be an order of operations issue upon creation. I would suggest starting there.

Networking Infrastructure

Is your feature request related to a problem? Please describe.
We currently allow for multiple players in the same space, but we want to be able to align networked space that exists in the same physical space. We also need to support voice and hands better for users that do not share a physical space.

Describe the solution you'd like
We need a solution using PUN that represents avatars in a way that is usable in shared and unshared physical spaces. We also need a simple mechanism to create public and private rooms and to enter those rooms.

As we implement these, we should consider what parts of this support could help develop a way to replay a user's experience in the environment.

Describe alternatives you've considered
We've tried a Unity UNet implication before, but PUN 2 seems to be much easier to work with. Unity is coming out with new network support that we will consider in the future.

Additional context
There are two scenes for initial networking support.

  • HyperBall
    • Optimization
  • Dimension Study
    • Initalize Stage RPC
    • Advance Stage RPC
    • Adjust Slider RPC

Basic Infrastructure

  • Network Hands
  • Network Voice - should have a clear toggle.
  • Simple, string-based room selection. Basically, we pre-build the scene that you are entering, and that becomes the prefix on the room name (or it could be the version number?). Then when the program starts, you have two options on the desktop (a) create new room and (b) join room (c) join random room. In the case of (a) we randomize a string of unambiguous characters and assign that as the room name. In the case of (b) you type in the string and the system searches for that room. Finally, we need to have a lab-specific prefix. That is, for research, we have a prefix (IMRE) that is not allowed in joining a random room. We could also do this by setting IMRE as a prefix on the version number so there would be a version mismatch for anyone trying to join a research study from outside.
  • Better way for naming users. Randomly generate names pulling a color, adjective, and noun from a list?

Improve Avatars - basically, we want to have something that is representative enough to be workable but doesn't attract attention.

This part of the work would be a good first task for someone when @nsgnn figures out the stuff above.

  • Blocks for Hands
  • Blocks for head and body
  • blocks for controllers
  • some sort of block-based hand model

In-App Height Adjustment

Is your feature request related to a problem? Please describe.
Some users are not as tall as our developer team.

Describe the solution you'd like
Two keyboard buttons. One would slightly bump the camera rig up 0.1m. One would slightly bum the camera rig down 0.1m.

Describe alternatives you've considered
This can be handled by SteamVR standing setup. You can fudge the numbers when you input the users height.

Additional context
This is a good step towards accessibility. This shouldn't be a hard task, and it is important to document the keys used on the keyboard. A good place to place this script would be on the camera rig. The goal being to be a universal feature of our environments.

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Scripts\SceneSpecific\ScaleDimensionStudy\Nets\triangleNet.cs:10-34
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/feature scale-dimension-study/Assets/Scripts/SceneSpecific/ScaleDimensionStudy/Nets/triangleNet.cs#L10)[Assets\Scripts\SceneSpecific\ScaleDimensionStudy\Nets\squareNet.cs:10-34
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/feature scale-dimension-study/Assets/Scripts/SceneSpecific/ScaleDimensionStudy/Nets/squareNet.cs#L10)Commit 3ada574

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Scripts\SceneSpecific\GeometersPlanetarium\Horizons\HORIZONSDataCreator.py:66-83
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Scripts/SceneSpecific/GeometersPlanetarium/Horizons/HORIZONSDataCreator.py#L66)[Assets\Resources\Databases\PlanetaryData\HORIZONSDataCreator.py:65-82
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataCreator.py#L65)[Assets\Resources\Databases\PlanetaryData\HORIZONSDataTester.py:65-82
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/PlanetaryData/HORIZONSDataTester.py#L65)[Assets\Resources\Databases\StellarData\getJ2000EarthData.py:62-79
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Resources/Databases/StellarData/getJ2000EarthData.py#L62)

Ax Throwing on a 4D surface

Extend the higher dimensional dodgeball scene for ax throwing. (e.g. on the surface of a klien bottle.)

RULES: The path of the ax must not be linear in a Euclidean space. That is, the ax will have a boolean on it, such that it won't be 'alive' until it's position has been modified by

Target get coordinates of collision from collider. Map these onto a scoring chart (use league rules). Color the target appropriately.

Ax - belongs to a player (will work well with PUN2), an ax spawns for the next player when the previous ax is retrieved. The Ax object modifies the player's score.

Axes are treated as balls from the dodgeball scene.

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Scripts\SceneSpecific\GeometersPlanetarium\Verlet\VerletV3\AbstractThreadV2.cs:3-51
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Scripts/SceneSpecific/GeometersPlanetarium/Verlet/VerletV3/AbstractThreadV2.cs#L3)[Assets\Scripts\SceneSpecific\GeometersPlanetarium\Verlet\VerletV2\AbstractThread.cs:3-47
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/unstable remove-legacy/Assets/Scripts/SceneSpecific/GeometersPlanetarium/Verlet/VerletV2/AbstractThread.cs#L3)Commit 4dcebde

Remove Closed Source Dependencies, except for PUN.

Is your feature request related to a problem? Please describe.
We want to limit the closed source dependencies in our project (and eventually eliminate).

Describe the solution you'd like

  • Remove dependency on Pool manager.
  • Make build target flags to allow to compile without other optional closed source.
  • Add linux support (editor)

Rendering Pipeline Overhaul

Prepare for a new ECS/GGB rendering pipeline. Describe each object as a procedural mesh.

GeoGebra's object structure will be the basis for object types.

These will be grouped into paths, surfaces and regions and non-geometericObjects.

  • Angle
  • Axis
  • Conic
  • ConicPart
  • CurveCartesian
  • Function
  • FunctionND
  • Interval
  • Line
  • Locus
  • LocusND
  • Number
  • Point
  • Poly
  • PolyLine
  • Ray
  • Segment
  • SurfaceFinite
  • Symbolic
  • Vector2D
  • Vector3D
  • Text
  • Turtle
  • Video
  • Image
  • Slider

The class structure should be diagrammed with UML. Everything above will fall into the tree below.

GeoElement
-- Point
-- Path
-- Surface
-- Region
-- NonGeometeric

Geometer's Plantarium Embodied User Input

  • Pointing to Select Location on Earth
    • Gestures at pin
      • Swipe in plane to toggle
        • tangent plane,
        • terminator,
        • latitude,
        • longitude
      • Double Pinch and Stretch to cycle starlight at pin
      • Pin selection / connections
        • Great Arc
        • Great Circle
    • Double Pinch to Scale (refactor)
    • Pinch to move (new base class, similar to grasp, refactor physics system)
    • Swipe to Rotate Earth
    • Push Earth
    • Global Latitude
    • Global Longitude

Fix 'Duplicate Code' issue in multiple files

CodeFactor found an issue: Duplicate Code

It's currently on:
[Assets\Scripts\SceneSpecific\ScaleDimensionStudy\CrossSection\TorusCrossSection.cs:252-284
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/feature scale-dimension-study/Assets/Scripts/SceneSpecific/ScaleDimensionStudy/CrossSection/TorusCrossSection.cs#L252)[Assets\Scripts\SceneSpecific\ScaleDimensionStudy\CrossSection\HyperTorusCrossSection.cs:157-189
](https://www.codefactor.io/repository/github/maine-imre/handwaver/source/feature scale-dimension-study/Assets/Scripts/SceneSpecific/ScaleDimensionStudy/CrossSection/HyperTorusCrossSection.cs#L157)Commit 3ada574

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.