Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / operating-systems / Windows / Win8

Space3D

4.50/5 (2 votes)
4 Sep 2013CPOL5 min read 16.3K  
an app that provides 3D models of Human SpaceFlights

This article is an entry in our AppInnovation Contest. Articles in this sub-section are not required to be full articles so care should be taken when voting.

Introduction

Platform Targeting :-Tablet

Category :-Education  

App Name:-Space Exploration 3D

My Game Demo video 

Check the video to see how the app behaves:-

 

Overview of the Application:-

This app idea came in my mind as i was very keen on Space Exploration from my childhood days. I was so fascinated by the books that were available those days that  when we use to open the pages it used to give us 3D view of the pages without  glasses where the pages used to interpret the 3D effects. Now i thought of building  an app that shows different spaceflight missions that have taken place in yester years. It's a tribute from my side to those glory days of Space Exploration that is now at its peak. It will use Gestures such as PAN,TOUCH,ROTATE etc to give a good GUI experience. This is an innovative and yet engaging way for education as it will throw light into the Space Flight missions that have happened in reality where an end user will be able to interact with application with gestures. It will be a very good to carry with Lenovo tab where you can demonstrate the models in a Big HD screen using the built in HDMI port. It will be very handy for explanations in Lecture Labs regarding Space Explorations as  well as kids to give exposure to education in an innovative way. 

The models that will be there in the app

Image 1 The project view of Unity screenshot

Image 2 

The different scenes in Unity

Image 3

The Screenshots of the app

Screenshot 1

Image 4

ScreenShot2

Image 5

ScreenShot3

Image 6

ScreenShot 4

Image 7

ScreenShot5

Image 8 

ScreenShot6

Image 9

ScreenShot7

Image 10 

ScreenShot8

Image 11 

Approach Taken for Development & Description of intended used of the app:-

I intend to develop 3D interactive  model where the different space flights are to be included.

I had certain exposure Unity 3D engine and I intent to use it here. It will be building  a GUI based app

where user will interact with the screens using Touch. I will be made using the Built in Functions in

Unity to enable Touch on a device. 

GESTURES SUPPORTED 

1)TOUCH 

2)PAN RECOGNIZER

3)ONE FINGER ROTATION RECOGNIZER 

4)Stylus Digital Pen Supported  

5)Use HDMI ports for better presentation at Big HD screens.

6)TAP 

When we switch from one object to another for demonstration you need to press the Remove all recognizer button and move to next object to get the gestures working.When you move to next object  press the add tap recognizer and then click on say add one rotation recognizer to get the gestures going remember before moving into next object  scenario release the gesture by pressing the Remove all recognizer button and then move to next slide.

I trimmed my demo down to 13.5 mb(upload limit is10mb) but still unable to upload it.My first demo consists of 5 space flight models,i will update all later on

The Whole process of taking the app to Intel AppUp store:-I will have to add Digital Signature on the app by using the MSI Tool. I will Package the app using Advanced Installer.

The flow shown in Diagram

Image 12 

 

  


Using the code

I am giving a sample view of the code that I have written,the programming approach uses C# script

Detailed Description step to step will be provided later

 

Code for creating GUI box as well as Loading scenes in Unity

  

C#
//
// using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

	void OnGUI () {
		// Make a background box
		GUI.Box(new Rect(10,10,100,90), "Loader Menu");

		// Make the first button. If it is pressed, Application.Loadlevel (1) will be executed
		if(GUI.Button(new Rect(20,40,80,20), "Level 1")) {
			Application.LoadLevel(1);
		}

		// Make the second button.
		if(GUI.Button(new Rect(20,70,80,20), "Level 2")) {
			Application.LoadLevel(2);
		}
	}
}

//

Providing spinning effect

C#
//using UnityEngine;
using System.Collections;

public class spin : MonoBehaviour {
	public float speed = 10f;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		transform.Rotate(Vector3.left, speed * Time.deltaTime);
	}
}
//

as the speed variable is public we can adjust the value at the game scenes

Using Input.Touch you can implement touch in unity C# script

C#
//using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    void Update() {
        int fingerCount = 0;
        foreach (Touch touch in Input.touches) {
            if (touch.phase != TouchPhase.Ended && touch.phase != TouchPhase.Canceled)
                fingerCount++;
            
        }
        if (fingerCount > 0)
            print("User has " + fingerCount + " finger(s) touching the screen");
        
    }
}
//

Some Standard Descriptions that i have used in Unity 3d

Update for the project

I am just updating the status of the project right now. I have added other models to the project.Following are the updates

ISS

International Space Station

Image 13

 The Space station Model you are able to Interact with the 3D Structure Pan and rotate it.

The Current View of the project with buttons showing the models.

Image 14

 JUPITER MODEL

This was one of the most important mission Shuttle it shows 3D view of the structure and you are able to interact with gestures

Image 15

Saturn V  Shuttle

This model shows the interaction with the 3D structure as the object keeps on rotating.Also shows Saturn V data as text for information purpose.

Image 16

 Astronaut Model

This is the model where in this structure you can interact freely.

Image 17 

EMU MODEL

Image 18

International Space Station 

Another View from the main app

Image 19

 ISS 2

General View of the advanced Space Station ,you are able to interact with the mode pan and rotate and check

Image 20

 Discovery Shuttle

Good View of interactive Space Flight as well as Astronaut you can interact with it.

Image 21

More Updates to Come  

I am working on a Quiz model where people will get interactive Questions and Answers related to Space Exploration.More facts and fiqures associated to help educate others.Accelerometer Sensor usage.

A quick code snippet on how the scenes are organized in Unity using C# script

C#
//
if( GUILayout.Button( "APPOLO LUNAR" ) )
		{
			Application.LoadLevel("6");
		}
		if( GUILayout.Button( "FREEDOM 7" ) )
		{
			Application.LoadLevel("5");
		}
		if( GUILayout.Button( "JUPITER-C" ) )
		{
			Application.LoadLevel("4");
		}
		if( GUILayout.Button( "GEMINI" ) )
		{
			Application.LoadLevel("3");
		}
		if( GUILayout.Button( "APPOLO SOYUZ" ) )
		{
			Application.LoadLevel("2");
		}
		if( GUILayout.Button( "SATURN -V" ) )
		{
			Application.LoadLevel("7");
		}
		if( GUILayout.Button( "GEMINI CAPSULE" ) )
		{
			Application.LoadLevel("8");
		}
		if( GUILayout.Button( "JUPITER-C" ) )
		{
			Application.LoadLevel("9");
		}
		if( GUILayout.Button( "CRAWLER" ) )
		{
			Application.LoadLevel("10");
		}
		if( GUILayout.Button( "EMU" ) )
		{
			Application.LoadLevel("11");
		}
		if( GUILayout.Button( "EMU1" ) )
		{
			Application.LoadLevel("12");
		}
		if( GUILayout.Button( "ISS" ) )
		{
			Application.LoadLevel("13");
		}
		if( GUILayout.Button( "DISCOVERY" ) )
		{
			Application.LoadLevel("14");
		}
		
		if( GUILayout.Button( "EXIT" ) )
		{
			Application.Quit();
		}
		
		

			GUILayout.EndScrollView();
		GUILayout.EndArea();
	}
//

 Here is how the project scenes look in Unity.

Image 22

 Now the New Video of the app with added Models shown below  

LINK

A Must app for Tablet

 

1)High interactivity with Touch

2)Pan,Tap gesture included

3)A great way for presentation of 3D Spaceflight models

4)Quizzes and Information about Human Spaceflight

5)Unity Facebook SDK integration for sharing information across or adding new facts

6)Accelerometer Support(in progress)

7)Good GUI with 3D models

What is Vector3? 

Representation of 3D vectors and points.

This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doing common vector operations.

Besides the functions listed below, other classes can be used to manipulate vectors and points as well.

 

GUI Layout

The GUILayout class is the interface for Unity gui with automatic layout.

 

Touch

Structure describing status of a finger touching the screen.

  

deltaPosition

The position delta since last change.

deltaTime

Amount of time passed since last change.

fingerId

The unique index for touch.

phase

Describes the phase of the touch.

position

The position of the touch.

tapCount

Number of taps.      

 Closing an application in Unity

C#
 //
//if (GUI.Button (Rect (130,40,80,20), "EXIT")) {
    Application.Quit();
    }
//

 Why Unity?

Unity is a great game engine that has got lot of specifics to develop a game or app and deploy it to different platforms.Code once and get it to Windows,Mac,Linux,Android etc.I am into software development close to a year and i have been using Unity for the last 7 months its kind of cool tool to start with

Good Resource for Unity

http://unity3d.com/learn/documentation

 

Points of Interest

Spaceflight missions that interest me always and this app is a tribute to those glorious space flight missions

History

Demo Created v1.0 Tried uploading but failed ,as file size more than 10mb(15.9mb approx) waiting for alternate ways as mentioned by Chris

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)