GithubHelp home page GithubHelp logo

imclab / stereoscopic_scatterplot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from noahfreedman/stereoscopic_scatterplot

0.0 3.0 0.0 129.96 MB

Unity Project for Side-By-Side Stereoscopic 3d Scatter Plot

JavaScript 3.30% C 86.76% C# 3.90% XML 0.90% C++ 0.26% ActionScript 1.34% HTML 0.12% ASP 3.42% Python 0.01%

stereoscopic_scatterplot's Introduction

Stereoscopic Statistics v1.0
==========================

The goal of this project is to enable 3D stereoscopic visualizations of data to assist in the teaching of statistics and to enable clearer visual analysis of data. No existing tools were found that are designed to display data in stereoscopic 3D visualizations.

Requirements:
	- Unity 3
	- Graphics card with decent 3D rendering capability
	- 3D TV or monitor that accepts side-by-side format stereoscopic input


Code overview:
	- This project uses the Unity 3D game engine. It uses the open-source Stereoskopix FOV2GO for Unity to project the output from the Main Camera as two side-by-side images from slightly different camera angles that can be combined into one image on 3D TVs.

	- The main scene is Stereoscopic_Scatterplot/Assets/Scatter0.unity. The Cube object has data points added to it by the GeneratePoints.cs script. The GeneratePoints.cs script contains several parameters which can be set within the Unity editor. 

	- The points in the scatterplot can be imported from an external file or randomly generated. There are two paramters which identify the absolute file path and file name to load data points from. The format for the data is comma-deliminated x, y, and z coordinates. A first line of header data is ignored if any non-digits or commas are detected.

	- The collection of data points is normalized to fit inside the cube. There is an paramted on GeneratePoints.cs to normalize the data points by either indiviudally scaling each axis (and distoring the projection), or maintaining the aspect ratio of the collection of data points as they are normalized to the scale of the the display cube. Alternatively, if the 'Auto Detect Data Range' option is disabled, then parameters for minimum and maximum X, Y, and Z values 

	- The cube can be rotated to by dragging it with the mouse. The cube on the right-side projection accepts mouse input. There is also a parameter to change the materials that the cube is rendered from.

Areas for further work:
	- Accepting input for lines or triangles in addition to points that can be rendered inside the display cube.
	- Scaling the display cube to different rectangular dimensions based on input, and properly repositioning the camera.
	- Camera controls, possibly by arrow key.
	- Adding scale markers to the cube, or labels indicating axis name.
	- A GUI to set parameters in, so the project does not need to be run from the Unity editor.



This project was developed using the FOV2GO  toolkit created by the MxR Lab at USC: http://diy.mxrlab.com

stereoscopic_scatterplot's People

Contributors

noahfreedman avatar

Watchers

 avatar  avatar  avatar

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.