如何实现unity3d场景漫游范例的自动漫游

第1页/共8页
Unity3d中场景漫游的制作,非常方便!!!
1. 首先在3d软件中准备好模型,我找了个maya制作的房子。
注意:我这里用的是真实世界的比例,旁边测量工具测量的是1000cm,10米高.
2. 导出fbx格式文件。
第1页/共8页
寻找更多 ""  开始前先说一些题外话,本来这个工程是已经完成了超过一半了,然而由于手残重装了系统不小心删除了,现在只好再做一遍了。顺便写一下博供今后写代码参考。
  这是一款使用unity3D开发的虚拟城市漫游游戏,实际上博主是非常喜欢这类游戏的,在城市里面自由地去浪是多么随意的一件事(雾)。
  最近VR和AR莫名火起来了,然而穷到吃土,入手了Google cardboard,店家顺便附赠了蓝牙游戏遥控器,这款游戏我会在完成之后移植到VR上面进行测试。
  博主家在新乡,是的没错,前几天发洪水能划船的新乡,耽误了一些时间,现在地下室还有漫过脚的水,不想那么多了,下面就开始完成这项工程了
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.提前准备:
unity3d程序(5.3.5f1)
Simple Town - Cartoon Assets v11.01 &
Simple People - Cartoon Characters v1.22
2.新建一个工程(我是哭着写的)
进入之后,导入以上两个资源包,如图
3.创建场景
为了节约时间,使用资源包中自带的场景。
找到Asset&SimpleTown&DemoScene文件夹,选中SimpleTown_DemoScene,Ctrl+D复制一份,放到Asset文件夹下面的Scenes文件夹下
打开该场景,我们会发现灯光出了点儿问题......
接下来,把Hierarchy中_scene下的平行光删除,然后新建一个平行光,命名为Sun
5.模拟日出日落
将Sun的属性设置为如图
添加脚本DayNightCycleControl.cs
1 using UnityE
2 using System.C
4 public class DayNightCycleControl : MonoBehaviour
// Use this for initialization
void Start()
// Update is called once per frame
void Update()
transform.RotateAround(Vector3.zero, Vector3.right, 10f * Time.deltaTime);
复制一个Sun,命名为Moon,将位置与旋转设置为与Sun相负,颜色改为蓝色
点击运行,就可以看到效果啦。
6.Bulid场景
这时候你会发现颜色很奇怪,或者没有光
如下图所示,打开Window&Lighting面板,设置为Skybox后,选择Bulid就好啦。
阅读(...) 评论()基于Unity3d的室内漫游的关键技术研究-免费论文
基于Unity3d的室内漫游的关键技术研究
【盐城工学院论文栏目提醒】:以下是网学会员为您推荐的盐城工学院论文-基于Unity3d的室内漫游的关键技术研究 - 期刊论文,希望本篇文章对您学习有所帮助。&&&&
第 24 卷 第 4 期 盐城工学院学报( 自然科学版) Vol. 24 No. 4 2011 年 12 月 Journal of Yancheng Institute of Technology( Natural Science Edition) Dec. 2011 基于 Unity3d 的室内漫游的关键技术研究 干建松 ( 江苏财经职业技术学院 计算机系,江苏 淮安 223003) 摘要: 随着 3d 虚拟现实技术的飞速发展, 引擎无疑在这一领域起到了关键的作用。&&&& 其中新 3d 兴的虚拟现实平台, Uinty3d 可以嵌套多种开发语言的功能和特点,使得其在 VR 项目上得到认 可。&&&&以三维软件 3dmax 实现建模和贴图、 Unity3d 为虚拟现实开发平台, 以 讨论并实现了虚拟 现实在室内漫游和室内设计系统中的关键应用技术 。&&&&实现了在 Unity3d 中,包括按指定路径巡 游、运用鼠标滚轮动态观察对象、 更新和删除视口中对象以及不***字库显示中文等关键技术 。&&&& 关键词: Unity3d; 仿真; 漫游; 虚拟现实 中图分类号: TP317. 48 文献标识码: A 文章编号: 1671 - 5322( 2011) 04 - 0056 - 04 虚拟现实技术近年来在计算机领域引起广泛 择的对象更新、销毁和贴图等功能。&&&&关注,采用现代化的计算机技术生成逼真的视、 最后,本文还讨论并实现了系统中不***字听、触觉等多重感应的虚拟环境,用户同虚拟环境 库实现***示中文的实用功能 。&&&& ,中的物体进行交互 能够产生二维动画所不具备 2 家居漫游系统的设计与实现的现场沉浸感。&&&& 随着社会发展,虚拟现实技术在军事 信息技术等各个领域应用越来越广泛 。&&&& 、 2. 1 按照指定路径自动漫游 目前家居设计行业的主要展示方式为效果 在室内漫游中,相机按照指定路径自动漫游图,客户只能通过静态的方式观看家居的格局与 简称自动巡路。&&&&除了可以以第一人视角通过操作风格,从而缺乏身临其境的感受。&&&& 键盘和鼠标进行实时漫游外,还可以设计按照指 Unity3d 作为一种三维虚拟现实游戏平台,可 定路径进行巡回往复的不间断浏览 。&&&&通过射线技以充分、实时的处理大量的三维模型。&&&& 本文旨在 术侦查当前视口内的物体,当有需要时可以暂停通过使用 Unity3D 创建一种全新的家居设计 模 巡游,以便接受视口内的其它如语音、视频自动讲式,讨论并实现了包括按指定路径巡游 、动态新建 解等交互信息,从而完成相关信息的传递。&&&& 源文 〔1〕和销毁对象等关键技术 。&&&& 件如图 1。&&&& Max 正常制作摄像机漫游动画导入到 Uni-1 系统概述 ty3d 中后, Unity 的 Camea 拖拽到 Max 导出的 将 本文 讨 论 的 室 内 漫 游 主 要 利 用 三 维 软 件 摄像机 Gameobject 物 体 之 上, 为 其 子 物 体 即 作3DMax 完成建模和贴图后, 发布成 FBX 格式文件 可。&&&&导 入 Unity3d 系 统。&&&& 在 发 布 文 件 前,需 要 将 实现思路: 建立一个名为 FlyPath 的飞行路径 〔2〕3Dmax 中的单位设置为 m,并且 Y 轴方向向上 。&&&& 对象在 FlyPath 对象下,加载一个名为 FlyCamera 要实现在室内设计系统中的漫游,就需要在 将 的相机建立一个空的 Game Object, FlyPath 脚实现自由行走的功能外,还可以按照多条指定的 本拖放至该对象上。&&&&路径巡游,类似室外缆车的功能。&&&& 具体实现过程: 建立飞行路径。&&&& 飞行路径可 当选定某一具体对象可以通过鼠标滚轮的上 以通过相关算法实现自动生成, 也可以通过相关下滚动实现拉近和远离。&&&& 另外,系统还具有对选 动画软件如 3Dmax 等进行预设置。&&&& 收稿日期: 2011 - 09 - 30 作者简介: 干建松( 1976 - ) , 江苏淮安人, 男, 讲师,硕士,主要研究方向为多媒体开发、虚拟现实技术。&&&& 第4 期 干建松: 基于 Unity3d 的室内漫游的关键技术研究 57 激活” Animation”中的动画帧的播放。&&&& path. active
bActive; flyPathCamera. active
bActive; var animation: Animation; animation
path. GetComponent ( quot Anima- tionquot ) ; if( animation!
null ) { animation. active
bActive; if( bActive && ! animation. IsPlaying( quot Take 图1 按指定路径巡游 001quot ) ) { Fig. 1 According to the specified path animation. Play( quot Take 001quot ) ; } else if( ! bActive ) { ( 1) 初始设置。&&&& animation. Stop( ) ; 以 设置 飞 行 路 径 变 量 path, 及 跟 踪 相 机 }flyPathCamera,并单独设置一主相机 mainCamera, }最后设置一可以存放二维图像信息的数组 Tex- 此段功能设置成函数 ActiveFlyPath( ) 触发。&&&& 〕ture2D〔 以及一开关变量 flag。&&&& ( 4) 设置飞行信息 GUI 界面 var path: GameObject; function OnGUI ( ) var flyPathCamera: GameObject; { var mainCamera: GameObject; if( flag
true) 〕 var text2d: Texture2D〔 ; { var flag : boolean; / / 设置数组的第一个元素为按钮弹起状态 ( 2) 程序启动预置状态。&&&& if ( GUI. Button ( Rect ( 0, 80, ) , 0, 20 text2d 在自动巡路前, 需要检测和生成相关巡游路 〔 )){ 0〕径并查找观察者 First Person Controller: / / 点击按钮时启动函数 ActivePath。&&&& function Start( ) { / / 以下同理 path
GameObject. Find( quot FlyPathquot ) ; ActiveFlyPath( ) ; mainCamera
GameObject. Find( quot First Per- }son Controllerquot ) ; flag
false; if( path!
null ) } else { { if ( GUI. Button ( Rect ( 0, 80, ) , 0, 20 text2d flyPathCamera
path. Find( quot FlyCameraquot ) ; 〔 )){ 1〕 } ActiveFlyPath( ) ; flag
true; } } } ( 3) 自动巡路功能的实现。&&&& } 建立 animation 类型对象并赋值为库中已经 2. 2 鼠标滚轮实现拉近和远离功能导入 的 动 画 ”Animation” 在 预 设 置 变 量 path、 。&&&& 在 Windows 系统下,人们习惯性使用鼠标中flyPathCamera 和 mainCamera 相 机 已 经 设 置 成 功 间滚轮实现上下翻页和前进和后退的功能 , U- 在的前提下, : 即 nity3d 里可以借助鼠标的这个部件实现拉近和远 〔3〕 if ( ! 离物体的功能 。&&&&( path&&flyPathCamera&&mainCamera) ) 在 Unity3d 软件中,鼠标的滚轮定义方式为 return; ( ) Input. GetAxis “Mouse ScrollWheel” 是否为真识 58 盐城工学院学报( 自然科学版) 第 24 卷别滚轮的启用,并通过比较其滚动的方向实现拉 point 方法拾取鼠标点击的位置, 并保存在变 量近和远离的功能。&&&&拉近的极限距离可以设定值为 newpoint 中。&&&&5 的变量 DistanceMin。&&&&并设置滚轮的最小变化变 var newpoint: Vector3. zero;量 MouseSense 初值为 5。&&&& if( Input. GetKeyDown( KeyCode. Mouse0) ) var MouseSense
5; { var DistanceMin
5; newpoint
hit. point; var delta
0; } / / 下面检测是否已经按住滑轮 在点击相应物体时弹出相应菜单项并同时销 if ( Input. GetAxis ( quot Mouse ScrollWheel quot ) ! 毁原物体即可在指定位置创建新类型物体 。&&&&
0) ( 2) 创建 model. js,并设模型和贴图的名称分 { 别为 model 和 pic。&&&& / / 如果在可观察范围之内 var mesh1: GameObject; if ( normalDistance? >
DistanceMin) function Start( ) { { / / 计算按下滚轮时产生差值。&&&& mesh1 delta
Mouse. Event. wheelDelta /120;
Instantiate( Resources. Load( quot modelquot ) ) ; / / 产生拉近和远离的功能 / / 加载模型 / / 向上滚动产生拉近功能 mesh1. transform. position if( delta > 0)
Vector3 normalDistance -
Input. GetAxis ( quot Mouse ( newpoint〔 , 0〕 transform. position. y,ScrollWheelquot )
MouseSense; newpoint〔 ) ; 2〕 } else{ / / 新模型出现的位置,并同时销毁旧物体 / / 实现远离目标的功能 Destory( transform) ; normalDistance
Input. GetAxis ( quot Mouse }ScrollWheelquot )
MouseSense; function Update ( ) } { / / 以下 检 测 在 可 观 察 范 围 之 外 进 行 有 限 renderer. material. mainTexture距 / / / 离的限定。&&&&
Resources. Load( quot picquot ) ; if ( normalDistance < DistanceMin) { / / 加载材质 normalDistance
DistanceMin; } } 2. 4 不带字库显示任意中文字体 } Unity 3d 不支持客户端字体,因此要想在 U-2. 3 对象的创建与贴图 nity 里不通过***字库即可显示任意中文字体, 在一些场合中,需要创建和更新指定的家具, 可以通过自动生成 Texture 然后在 Unity 中显示。&&&&如桌、椅等。&&&& 具体的实现方法即,导入任意中文字体, 然后 要实现动态创建新物体的功能, 需要使用 In- 定义 GUISkin 字体为该字体即可,即在使用的时stantiate( ) 函数,并通过 Resources. Load 方法调用 候通过鼠标将字体文件拖放到 GUISkin 里即可实库中的模型名称。&&&&设置新创建物体的位置可以通 现不需要***超大文件即可显示中文效果 。&&&&如图过设定其 transform. position 属性实现定位。&&&& 贴图 2 显示效果。&&&&功能的需要调用库中的图片即可实现, 具体使用 3 小结方法为调用 Resource. Load( ) 方法。&&&& 需要注意的是, 模型和贴图的存放存放位置为 Resources 文件 本文简述了新兴的游戏引擎 Unity3d 在室内 〔3〕夹 。&&&& 漫游平台中功能的实现与应用,讨论并实现了虚 ( 1) 新生成对象位置的确定。&&&& 可以通过 hit. 拟现实在室内漫游和室内设计系统中的关键应用 第4 期 干建松: 基于 Unity3d 的室内漫游的关键技术研究 59 技术。&&&& 实现了在 Unity3d 中,包括按指定路径巡 游 运用鼠标滚轮动态观察对象、 、 更新和删除视口 中对象以及不***字库显示中文等关键技术 。&&&& 通过使用以上关键技术的室内设计和漫游系 统,设计简单方便,可以进一步突出场景的真实感 和实时性,功能更加完善,人机界面更加友好。&&&&另 外本文讨论研究的关键技术可以应用于其它包括 电子、科技、安全、医学等相关的虚拟现实和仿真 〔4〕 等领域 。&&&& 图2 不***字库显示中文字体 Fig. 2 Display Chinese font without installing font参考文献:〔 卞峰, 1〕 江漫清, 等. 2007( 6) : 1 - 4. 桑永英, 虚拟现实及其应用进展〔 . 计算机仿真, J〕〔 倪乐波, 2〕 戚鹏, 等. 2010( 12) : 54 - 55. 遇丽娜, Unity3d 虚拟展示技术的研究与应用〔 . 数字技术与应用, J〕 2010( 11) : 258 - 260.〔 张朝. 基于 Web 的房屋虚拟展示关键技术的研究〔 . 科技传播, 3〕 J〕〔 丁妹, 4〕 2005( 1) : 46 - 57. 胡志秋. 虚拟建筑模型场景漫游系统〔 . 信息技术与信息化, J〕 Simulating Design of Indoor Wandering Based on the Unity3d GAN Jian-song ( Jiangsu Finance& Economics College of Vocational Technology,Huaian Jiangsu 223001,China)Abstract: Along with raoid development of the 3d virtual reality technology,the 3d engine played the key role without doubt inthis domain. Simultaneously uinty3d might also nest many k.
【】【】【】【】【】

参考资料

 

随机推荐