Space3D






4.50/5 (2投票s)
一个提供人类太空飞行 3D 模型的应用程序
引言
平台定位 :-平板电脑
类别 :-教育
应用名称:-太空探索 3D
请观看视频,了解该应用程序的行为方式:-
应用程序概述:-
这个应用程序的想法在我脑海中产生,因为我从小就非常热衷于太空探索。我被当时的书籍深深吸引,以至于当我们翻开书页时,它会在没有眼镜的情况下给我们提供书页的 3D 视图,书页会展现出 3D 效果。现在我想构建一个应用程序,展示过去几年中发生的各种太空飞行任务。这是我向那些辉煌的太空探索时代致敬,而太空探索现在正处于顶峰。它将使用平移、触摸、旋转等手势来提供良好的 GUI 体验。这是一种创新且引人入胜的教育方式,因为它将揭示现实中发生的太空飞行任务,用户将能够通过手势与应用程序进行交互。对于联想平板电脑来说,这将是一个非常好的工具,您可以使用内置的 HDMI 端口在大型高清屏幕上演示模型。它对于在讲座实验室中解释太空探索以及向孩子们展示教育将非常方便,并且是一种创新的方式。
应用程序中的模型
Unity 截图的项目视图
Unity 中的不同场景
应用程序的截图
截图 1
截图 2
截图 3
截图 4
截图 5
截图 6

截图 7
截图 8
开发方法及应用预期用途说明:-
我打算开发 3D 交互式模型,其中包含不同的太空飞行器。
我曾接触过 Unity 3D 引擎,并打算在这里使用它。它将构建一个基于 GUI 的应用程序
用户将通过触摸与屏幕进行交互。我将使用内置函数在
Unity 中启用设备触摸。
支持的手势
1)触摸
2)平移识别器
3)单指旋转识别器
4)支持触控笔数字笔
5)使用 HDMI 端口在大高清屏幕上进行更好的演示。
6)点击
当我们在演示时从一个对象切换到另一个对象,您需要按“移除所有识别器”按钮,然后移动到下一个对象才能使手势生效。当您移动到下一个对象时,请按“添加点击识别器”,然后单击,例如“添加单指旋转识别器”,以使手势生效。请记住,在进入下一个对象场景之前,请按“移除所有识别器”按钮释放手势,然后移动到下一张幻灯片。
我将演示文件缩小到 13.5 MB(上传限制为 10 MB),但仍然无法上传。我的第一个演示包含 5 个太空飞行模型,我稍后会全部更新。
将应用程序发布到 Intel AppUp 商店的整个过程:我将使用 MSI 工具为应用程序添加数字签名。我将使用 Advanced Installer 来打包应用程序。
流程图所示
使用代码
我提供一段我编写的代码示例,编程方法使用 C# 脚本
详细的分步说明将在稍后提供
用于在 Unity 中创建 GUI 框和加载场景的代码
//
// 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);
}
}
}
//
提供旋转效果
//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);
}
}
//
由于 speed 变量是公共的,我们可以在游戏场景中调整其值
使用 Input.Touch 可以在 Unity 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");
}
}
//
我在 Unity 3d 中使用的一些标准描述
项目更新
我现在只是更新项目的状态。我已将其他模型添加到项目中。以下是更新内容:
ISS
国际空间站

您可以与空间站模型进行交互,平移和旋转 3D 结构。
项目当前视图,带有显示模型的按钮。

木星模型
这是最重要的任务之一——航天飞机。它展示了结构的 3D 视图,您可以通过手势与之交互。

土星 V 航天飞机
此模型展示了与 3D 结构的交互,因为对象会持续旋转。还显示了土星 V 的数据文本,用于信息目的。

宇航员模型
在这个模型中,您可以自由地与结构进行交互。
EMU 模型

国际空间站
主应用程序的另一个视图

ISS 2
先进空间站的总体视图,您可以与模型进行交互,平移、旋转和查看。

发现号航天飞机
交互式太空飞行和宇航员的良好视图,您可以与之交互。

更多更新即将推出
我正在开发一个测验模型,人们将获得与太空探索相关的互动问答。更多的事实和数据将有助于教育他人。加速计传感器使用。
关于如何使用 C# 脚本在 Unity 中组织场景的简短代码片段
//
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();
}
//
这是项目场景在 Unity 中的样子。

现在,下面是带有新增模型的新应用程序视频
平板电脑必备应用
1)高触摸交互性
2)包含平移、点击手势
3)展示 3D 太空飞行模型的绝佳方式
4)关于载人航天飞行的测验和信息
5)Unity Facebook SDK 集成,用于共享信息或添加新事实
6)加速计支持(进行中)
7)带有 3D 模型的美观 GUI
什么是 Vector3?
3D 向量和点的表示。
此结构在 Unity 中广泛用于传递 3D 位置和方向。它还包含用于执行常见向量运算的函数。
除了下面列出的函数外,其他类也可用于操作向量和点。
GUI 布局
GUILayout 类是 Unity GUI 的接口,具有自动布局功能。
触摸
描述手指触摸屏幕状态的结构。
自上次更改以来的位置变化。 |
|
自上次更改以来经过的时间。 |
|
触摸的唯一索引。 |
|
描述触摸的阶段。 |
|
触摸的位置。 |
|
点击次数。 |
在 Unity 中关闭应用程序
//
//if (GUI.Button (Rect (130,40,80,20), "EXIT")) {
Application.Quit();
}
//
为什么选择 Unity?
Unity 是一个很棒的游戏引擎,它具有许多用于开发游戏或应用程序并将其部署到不同平台的特定功能。一次编写,即可在 Windows、Mac、Linux、Android 等平台上运行。我从事软件开发近一年了,过去 7 个月一直在使用 Unity,这是一个很棒的入门工具。
Unity 的优质资源
http://unity3d.com/learn/documentation
关注点
我一直对太空飞行任务很感兴趣,这个应用程序是对那些辉煌的太空飞行任务的致敬。
历史
已创建演示 v1.0,尝试上传但失败,因为文件大小超过 10 MB(约 15.9 MB),正在等待 Chris 提到的替代方法。