开源的毕业设计—3D虚拟社区

楼主今年刚毕业本着开源的精神把我的毕业设计开放源码,提供源码和设计文档的免费下载,算是这么多年对开发社区的一个回馈。

3D虚拟社区是我很多年以前的一个想法,类似美国的第二人生。一开始有这个想法的时候是在小学看科教栏目(可能大家要笑了),那个项目就是一个人带着虚拟眼镜然后在一个球里面走,用技术模拟现实的世界。其实那个东西和现在一些硬件创业公司做的是一样的,但是那是在十年前美国的一个研发项目,现在想想就知道美国的思想有多前卫了。

但是到了大学学了编程,我才记起这件事情,我原来是可以去做的,那时候的心情也是非常非常的激动呢。想一想去做一件改变产业的事情还是挺兴奋的,但是那时候我是一个纯粹的小白。而且那时候游戏没有像现在这么火,工具和开发也没有现在这么规范,后来接触到了Unity。那时候我觉得我应该去做这件事情了,我是在两年前接触unity,那时候在百度搜unity基本搜不到什么内容,但是我感觉unity一定是可以成为未来3D游戏的主流开发工具。

因为unity:

1. 可以用C#和js作为编程语言(有大量的开发人员支持) 2.有免费版本(降低进入门槛)3. 几乎能跨所有的平台。

我一开始定位的3D虚拟社区是“在现实世界可以做的事情,在虚拟社区可以做。在现实世界不能做的事情,在虚拟社区也可以做”,通过这个就会发现虚拟社区的容量是非常大的,想象的空间也是非常大的。

有一天我在游戏开发的群里和大家聊天,聊游戏现在这个产业有什么颠覆性的优势,有什么瓶颈化的劣势。优势就是我们可以用游戏的思维做软件,就可以让软件更具有娱乐性提高软件的活跃性,腾讯就深知这一点。瓶颈化的劣势也是由于腾讯,腾讯靠着垄断性的用户资源和游戏开发商进行9:1的分成,看到这个数字你可能震精了,腾讯什么都没做就能拿到9的分成,这是非常不合理的。这个就是现在游戏发展的瓶颈,没有一个游戏厂商做到BAT的位置,因为没有一个好的商业环境和思维。我就和他们说我们可以绕过腾讯去做游戏,比如前段时间很火的捕鱼达人,捕鱼达人有5千万的下载量,这五千万的用户就可以看做一个群体,这个群体有一个属性那就是“喜欢休闲游戏”,这就是一个用户平台!利用现在的云计算和大数据优势平台很快就可以做出来。那我们为什么不去把这个平台发展起来去构建自己的用户平台?如果这样的话那游戏厂商的就可以突破这个瓶颈,就可以做一个市值百亿的公司。后来就有一个投资人想要投资我的项目,说是如果谈的好的话一百万没有问题。跨过总经理,直接CEO,迎娶白富美,走上人生巅峰,想一想还有点小激动呢。但是我把创业想的太简单了,以为自己一个人就可以胜任美工、开发、策划、CEO、COO、CFO、CTO、CIO,我还是图样图森破。因为产品理念相差太大,融资就撤销了...现在在一个大型团购公司负责Android产品研发工作,但是我还是曾经那个我,不忘初心方能始终。内心始终有创业的小人在呼唤着我...如果有同道中人,请联系我。

好了,说了这么多下面就说一说项目的技术细节。最终成型的项目还是和原来的虚拟社区相差很大,因为考研和工作的原因就耽误了下来,除了人物和人物之间的交互其他的还是都做了出来。

1.概述

虚拟社区刚进来如下图:

漫游模型用的是我们学校,虚拟摇杆用的是easytouch,还添加了喷泉效果水池加了一个透明的材质(unity付费版自带资源)。

2.人物模型

里面的人物模型用的是unity的第三人称视角,我修改了UV图。如下图:

3.虚拟摇杆

因为我做的是移动端的产品所以用到了虚拟摇杆,效果如图:

Import你的EasyTouch包。导入完成后,菜单栏会多出一项:Hedgehog Team。这就是安装的插件了。

下图修改摇杆大小的:Area radius外摇杆大小。Tou radius内摇杆大小。

摇杆的控制设置如图4-6,首先把要控制的游戏对象添加给:GameObject,然后进行调节。

关键接口函数介绍如下:

void OnEnable() 虚拟摇杆激活状态执行函数,主要对一些外部变量进行实时控制。

void OnJoystickMoveEnd(MovingJoystick move)虚拟摇杆结束,也就是手指脱离屏幕会进行的一些处理,包括动画以及数据的传递。

void OnJoystickMove(MovingJoystick move)虚拟摇杆进行中进行的操作,主要是控制人物的走动,以及走动的速度。

4.天空盒

整个游戏场景处在一个立方体的盒子之内,盒子有六个面,分别进行材质赋值就可以实现类似天空的效果。依次打开菜单栏Assets->Import Package->Skyboxes,如下图:

依次打开菜单栏中的Edit->Render Settings选项,在Inspector视图中会显示出Render Settings的参数面板,单击Skybox Material项右侧的圆圈按钮,在弹出的Select Material对话框中为游戏场景指定天空盒材质,本系统选择的是第二种。

5.退出按钮

按钮绘制是在主摄像机中进行,button参数如下:

position : Rect ——按钮在屏幕上的矩形位置,(起点x坐标,起点y坐标,按钮宽度,按钮高度)。

text : String ——按钮上显示的文本内容。

image : Texture ——按钮上显示的图片纹理。

content : GUIContent ——按钮的文本,图片和提示。

style : GUIStyle ——按钮使用的样式,如果不使用,则按钮的样式使用的就是当前的GUISkin皮肤。

Returns(返回):布尔值——当该按钮被点击时返回true。

Description(描述):创建一个单次按下按钮,当用户点击按钮时立即触发事件。

主要接口函数介绍如下:

void OnGUI() 这个函数主要是在程序中进行图像的绘制操作

GUI.Button(new Rect(width,height,100,100),"退出") 绘制长100宽100的矩形。

Application.Quit();  unity框架的退出程序接口函数。

Input.GetKeyDown(KeyCode.Escape)

Input.GetKeyDown(KeyCode.Home) 这两个接口函数主要是针对移动平台进行的优化和方便处理,按下Android下的返回键或者按下ios、Android下的home键程序就会自动退出。

6.大地模型

点击Terrain - > Create Terrain 创建一个游戏地形。

点击Terrain - > set Resolution打开设置地形参数菜单

从上到下分别代表的含义是:

Terrain Width:地形的宽度

Terrain Height:地形的高度

Terrain Length:地形的长度

HeightMap Resolution:地形高度图的分辨率.

Detail Resolution:细节分辨率,控制草和细节网格地图的分辨率。数值越高标示效果越好,想对也越消耗机器性能,可能会卡。根据情况适当的调节。

Control Texture Resolution:控制不同纹理的分辨率。

Base Texture Resolution:控制相对纹理分辨率,这里指一定范围内的。

Project标签中,右键- > Import Package - > Terrain Assets。我们可以看见里面有很多资源包,暂时我们先导入地形的资源,之后再去考虑其他资源包。

点击Edit Textures出现一个下拉列表:

add Textures:添加一个贴图

Edit Textures:编辑贴图

Remove Textures:删除贴图,如下图:

7.楼房模型

关于楼房模型我是让我的一个同学帮的忙,unity和max是兼容协作的就是说你做了模型导出max文件,然后导入unity使用的话必须你的机器是安装有3Dmax的,但是还有一个版本兼容的问题,我用的是max2012和unity3.5兼容。效果如下:

8.关键代码

Movecontroller.cs 程序代码
using UnityEngine;
using System.Collections;

public class MoveController : MonoBehaviour {
void OnEnable()
{
EasyJoystick.On_JoystickMove += OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
}
//移动摇杆结束
void OnJoystickMoveEnd(MovingJoystick move)
{
//停止时,角色恢复idle
if (move.joystickName == "MoveJoystick")
{
animation.CrossFade("idle");
}
}
//移动摇杆中
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != "MoveJoystick")
{
return;
}
//获取摇杆中心偏移的坐标
float joyPositionX = move.joystickAxis.x;
float joyPositionY = move.joystickAxis.y;
if (joyPositionY != 0 || joyPositionX != 0)
{
//设置角色的朝向(朝向当前坐标+摇杆偏移量)
transform.LookAt(new Vector3(transform.position.x + joyPositionX, transform.position.y, transform.position.z + joyPositionY));
//移动玩家的位置(按朝向位置移动)
transform.Translate(Vector3.forward * Time.deltaTime * 5);
//播放奔跑动画

animation.CrossFade("walk");
}

}
}
Maincam.cs 程序代码
using UnityEngine;
using System.Collections;
public class MainCam : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
int width = Screen.width - 100;
int height = Screen.height - 20;
if(GUI.Button(new Rect(width,height,100,20),"退出")){
Application.Quit();
}
if(Application.platform == RuntimePlatform.Android &&(Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) )){
Application.Quit();
}
}
}

下载链接:http://pan.baidu.com/s/1kTMFKzl 里面有Android端源码、Mac的xcode工程、apk、ipa安装文件

毕设的文档我会传到我的资源里面让大家免费下载。论文下载链接:http://download.csdn.net/download/rain_butterfly/7626837

如有问题请留言,转载注明出处。

开源的毕业设计—3D虚拟社区

时间: 2024-10-11 18:36:39

开源的毕业设计—3D虚拟社区的相关文章

Unity3D制作3D虚拟漫游场景(二)

传送门: Unity3D制作3D虚拟漫游场景(一) -------------------------------------------------------------------------- 昨天已经完成了场景的基本搭建,今天先简单的实现城市漫游功能,具体细节之后再进行添加 1.导入人物 在Assets文件夹下,新建一个文件夹,用于存放预制体,命名为Prefabs 打开昨天导入进去的SimplePeople资源包,打开其中的示例场景,然后我们可以进去挑选人物啦~ 博主在这里选了一个画风

非Linux的开源软件:一个虚拟的Cisco架构?

翻译至:http://www.linuxjournal.com/content/non-linux-foss-virtualized-cisco-infrastructure 我们都熟知虚拟机的理念,它们不仅仅是利用服务器空间资源的一种非常好的方式,它们也允许你瞬间创建和删除服务器.这对一个实验室和培训环境而言简直完美极了.但不幸的是,给Cisco硬件创建培训实验总是令人痛苦不堪.感谢GNS3(图形化网络模拟器3),这已经不再是问题了. 工具的快照 GNS3是一个开源的应用用于创建一个虚拟的Ci

大量的文档,大量的示例代码,大量的开源组件,大量的社区,大量的码农

移动用各个平台的原生工具和代码,当年被Delphi忽悠,入了贼船,这次搞移动,坚定了跟着厂家走的策略.每次更新不用傻等Delphi跟进,大量的文档可以参考,大量的示例代码可以直接copy,大量的开源组件可以拿来就用,大量的社区可以做到有问必答. 如果有一天真的做大了,还有大量的iOS/Java码农可以招聘,组队团PK. 总之是选路要选对啊.这两年如果不是EMB出现救市,Delphi差点成了绝唱.想想都后怕.移动开发不敢在冒险了. 参考:http://bbs.2ccc.com/topic.asp?

开源Asp.Net Core小型社区系统

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/core-identity.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-authorize-attribute.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-identity-configuration.html http://www.yuanjiaocheng.net/ASPNET-COR

基于云存储的3D虚拟信息平台

增强现实是把计算机产生的虚拟物体或其他信息合成到用户看到的真实世界中的一种技术.实现虚拟信息与真实景象的正确匹配或有机结合是每个增强现实实用系统都必须完成的一项重要任务,且它的具体实现需依赖于计算机硬件和软件系统的相互配合及协调.并能支持用户与其进行交互,它已经成为虚拟现实研究中的一个重要领域,也是人机界面技术发展的一个重要方向. 在当前科技飞速发展的今天,随着三维激光扫描仪的诞生以及大规模普及,我们项目在后续开发中将进一步提升三维交互的真实感,用户可以通过三维扫描仪或者利用3D建模工具制作的人

Unity3D制作3D虚拟漫游场景(一)

开始前先说一些题外话,本来这个工程是已经完成了超过一半了,然而由于手残重装了系统不小心删除了,现在只好再做一遍了.顺便写一下博供今后写代码参考. 这是一款使用unity3D开发的虚拟城市漫游游戏,实际上博主是非常喜欢这类游戏的,在城市里面自由地去浪是多么随意的一件事(雾). 最近VR和AR莫名火起来了,然而穷到吃土,入手了Google cardboard,店家顺便附赠了蓝牙游戏遥控器,这款游戏我会在完成之后移植到VR上面进行测试. 博主家在新乡,是的没错,前几天发洪水能划船的新乡,耽误了一些时间

python开源包提交到pypi社区

为啥要提交到pypi?因为提交成功后,你今后想用你自己写的模块,只要pip install一下就可以了. 那么如何提交?请参看本篇教程 首先要确定你的包叫啥名,比如我的包叫xlutils3,既然确定了,那么就创建该名称的文件夹,然后把源码放到文件夹中,然后检查文件夹内部的文件里的每个导入库是否写对路径,比如xlutils.copy就得改成xlutils3.copy 然后就是在文件夹下创建一个__init__.py文件,内容可以全部为空,整理成包的文件结构大概像下面这样: xlutils3/ |

免费开源3D模型设计软件汇总

免费开源3D模型设计软件汇总 3D 打印需要先通过计算机辅助设计(CAD)进行建模,再将建好的3D模型“分割”成逐层的截面,从而指导3D打印机进行逐层打印.因此用于3D打印的3D模 型大都储存或输出成为.stl文件格式.下面就为大家总结目前市场上主要的免费3D建模软件.希望对对3D打印建模感兴趣的朋友们有帮助. 基于网页的3D模型设计软件有: 3d Tin 3D 打印需要先通过计算机辅助设计(CAD)进行建模,再将建好的3D模型“分割”成逐层的截面,从而指导3D打印机进行逐层打印.因此用于3D打

集智全球开源 聚合中国力量Tungsten Fabric中文社区成立大会暨社区第一次全员大会成功举行

开源的种子正在世界范围内生根发芽,在中国的发展尤其快速.11月7日,美丽的黄海之滨见证了中国开源云网络的历史性一页--Tungsten Fabric中文社区正式启动,并召开第一次全员大会,43家创始会员代表与两百多位技术爱好者出席.Tungsten Fabric中文社区创始会员在启动仪式上 开源网络大势所趋 "混合云和多云架构,包括软件定义网络的应用,已经是非常明确的技术潮流.我们还要抓紧时间,在新的领域不断取得突破.在这样的时代背景下,专门成立一个中文的开源云网络社区,我觉得非常及时和有必要.