搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
2023面试高手
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
K8S 学习四(POD详解)_k8s get pod
2
android 系统 裁剪APK和SO库_裁剪过的so
3
ubuntu卸载已安装的包_ubuntu怎么卸载已经安装的包
4
C++ 跳跃游戏II_数组中每一个代表可以跳跃的台阶求最少c++
5
100道最新Java面试题,常见面试题及答案汇总
6
面试官:你确定多窗口之间sessionStorage不能共享状态吗?_window.open 打开新窗口sessionstorge互通吗
7
aforge 切换大分辨率时连接失败_2020双十二高性价比设计制图显示器推荐——分辨率、色彩为王——设计制图显示器导购...
8
Python数据结构与算法之树_python 树
9
oracle存储过程迁移到hive平台_oracle的递归转化成hive语法
10
python_re模块
当前位置:
article
> 正文
VR游戏开发干货教程:如何创建一个VR项目_vr游戏制作教程
作者:2023面试高手 | 2024-02-21 18:53:59
赞
踩
vr游戏制作教程
筑基
为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI 1.3接口。
操作系统比较坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。
当然,还要把自己的显卡驱动升级到最新版本。
Oculus官方的检测地址:
http://oculus.us5.list-manage.co ... d0da47&e=86f0296884
一旦完成了这种烧钱的工作,就该安装Unity了。注意在打开Unity前要把DK2连接好并开启。 在继续之前,打开Oculus Configuration Utility应用,并检查Demo Scene可以正常运行。注意在运行Demo Scene之前看可能需要在Oculus Configuration Utility中设置一个新用户。
创建第一个VR项目
接下来我们将使用Unity创建一个简单的VR项目demo,其效果是在VR头盔中观察一个立方体。如果你想研究更多VR示例,不妨下载我们在上一篇教程中提到的VR示例项目(Asset Store:https://www.assetstore.unity3d.com/en/#!/content/51519)。
Step 1
打开Unity,创建一个新的空项目。
说明一下,我当前用的Unity版本是5.3.1f1,可能你看到这篇教程的时候又已经升级换代了。
Step 2
在Unity的菜单中选择Fiel- Build Settings,并选中PC,Mac& Linux Standalone。
Step 3
在场景中创建一个新的立方体,从菜单中选择Game Object – 3D Object -Cube ,通过Translate工具把立方体放到默认的Main Camera 前面,类似下面。
Step 4
保存界面(File- Save Scene,或是使用快捷键)。
Step 5
在菜单中选择Edit- Project Settings – Player,在”Other Settings“部分勾选”Virtual Reality Supported”
Step 6
点击Unity界面上的Play按钮进入Play模式。
如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。
出错了怎么办?
如果你没有在DK2中看到期望的场景,那么检查以下的事项:
1、确保你在打开Unity项目前就已经把DK2接好并且开启了;
2、打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作;
3、更新你的显卡驱动到最新版本;
4、确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本;
当然,如果还是有问题,可以到论坛里面参与讨论。(Virtual Reality:
http://forum.unity3d.com/forums/virtual-reality.80/
)
关于VR开发的一些有用信息:
虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。
1、编辑器中显示的帧速(Frame rate)
当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。
2、摄像机的移动
注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。
关于这一点,可以查看VR Samples项目中的Flyer和Maze场景。
3、相机节点
左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。
如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。
C#脚本
using UnityEngine;
using UnityEngine.VR;
public class UpdateEyeAnchors : MonoBehaviour
{
GameObject[] eyes = new GameObject[2];
string[] eyeAnchorNames ={ “LeftEyeAnchor”, “RightEyeAnchor” };void Update()
{
for (int i = 0; i < 2; ++i)
{
// If the eye anchor is no longer a child of us, don’t use it
if (eyes[i] != null && eyes[i]。transform.parent != transform)
{
eyes[i] = null;
}
// If we don’t have an eye anchor, try to find one or create one
if (eyes[i] == null)
{
Transform t = transform.Find(eyeAnchorNames[i]);
if (t)
eyes[i] = t.gameObject;
if (eyes[i] == null)
{
eyes[i] = new GameObject(eyeAnchorNames[i]);
eyes[i]。transform.parent = gameObject.transform;
}
}
// Update the eye transform
eyes[i]。transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);
eyes[i]。transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);
}
}
}
复制代码
4、VR中的图像效果(Image Effect)
在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。
因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。
不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store:
http://blogs.unity3d.com/2015/05 ... nd-the-asset-store/
),对有些游戏来说Bloom会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。
Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。
5、Render Scale
根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。
这项设置应该通过代码进行,可以参考这里:
http://unity3d.com/cn/VRSettings.renderScale
通过使用以下代码可以改变render scale的设置:
using UnityEngine;
using System.Collections;
using UnityEngine.VR;
namespace VRStandardAssets.Examples
{
public class ExampleRenderScale : MonoBehaviour
{
[SerializeField] private float m_RenderScale = 1f;
//The render scale。 Higher numbers = better quality, but trades performance
void Start ()
{
VRSettings.renderScale = m_RenderScale;
}
}
}
复制代码
关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。
更改render scale的效果示例如下:
Unity的默认render scale是1.0,效果如下:
关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。
更改render scale的效果示例如下:
如果将render scale设置成1.5,可以看到显示效果更锐利:
根据游戏场景的不同,可以考虑降低render scale来提升游戏运行性能,或者通过增加render scale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。
好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/2023面试高手/article/detail/125819
推荐阅读
article
Unity
——
MintAnimation
组件...
Delay:开始延迟Duration:动画持续时间Is Auto Play:当对象被激活时自动播放Is Reversal...
赞
踩
article
中国
AI
应用
元年
来
了
!_
中国
什么时间
开始
运用ai
的
...
中国
AI
应用
元年
来
了
!经历 60 多年
的
发展,人工智能技术从实验室逐步走向产业落地
的
阶段,并在企业、行业、人力等掀起...
赞
踩
article
延迟
消费
的几种
实现
方案
_
实现
延迟
消费
有
什么办法...
订单自动取消?商品定时上下架?定时短信?
_
实现
延迟
消费
有
什么办法
实现
延迟
消费
有
什么办法 需求场景...
赞
踩
article
unity
手游<少侠历险记>(3)
NGUI
:
HUD
使用_
unity
2d
可以使用
hud
_
text
吗...
前言本文由作者@zx一路飞奔出品,转载请注明出处文章地址:http://blog.csdn.net/u014735301...
赞
踩
article
Kafka
重
平衡
流程_
kafka
重
平衡
流程...
消费者组的重
平衡
流程 : 让组内所有的消费者消费哪些主题分区达成一致。_
kafka
重
平衡
流程
kafka
重
平衡
流程 ...
赞
踩
article
Unity
+
HoloLens
开发
遇到
的
问题记录_
hololens
投屏
unity
...
Unity
+
HoloLens
开发
和发布过程中遇到
的
问题_
hololens
投屏
unity
hololens
投屏 u...
赞
踩
article
Unity
Asset
文件...
Asset
文件类型
Asset
文件使用方法
Unity
使用自定义资源(.asset)配置数据_asset文件asset文件...
赞
踩
article
QSPI
Flash xip取指同时
program
过程中概率性出现
usb
播歌时断音
_
qspi
_
fla...
USB Audio芯片,代码放到
qspi
flash
中,执行代码时,客户会偶尔保存一些参数,即FPGA验证过程中,每隔1...
赞
踩
article
蚂蚁金服
开源
服务
注册
中心
SOFARegistry
...
\nSOFAStack(Scalable Open Financial Architecture Stack )是蚂蚁金...
赞
踩
article
Unity
Resource
文件
基础操作(
一
)...
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第
一
章 Python 机器学习入门之...
赞
踩
article
Unity
GetComponent
方法
隐藏
/显示游戏物体_
getcomponent
想要
隐藏
/显示物体,最简单粗暴的
方法
是使用SetActive
方法
,但是这会导致其挂载的脚本也一起失效。如果单单只是想让游...
赞
踩
article
【
unity
】
AR
调研
_
unity
realsense
...
今天去一家公司面试U3D开发。是有一个VR和
AR
的项目。很有挑战性,也很有趣。下面我将进行一周的调研工作http://w...
赞
踩
article
<
Unity3D
>
NGUI
之
HUDText
的灵活使用
_
unity3d
使用
hud
_
text
吗...
NGUI
_
HUD
_
Text
_
v1.11.unitypackage 此插件的作用是怪物头像上飘出受伤的血量数值或者是人物头...
赞
踩
article
python
:
tkinter
.
messagebox
--- Tkinter 消息提示_
tkinter
...
python
:
tkinter
.
messagebox
--- Tkinter 消息提示_
tkinter
.messagebo...
赞
踩
article
YUV
常用图像格式
NV12
、
NV2
、
I420
、
YV12
、
YUYV
像素分布_yy开播 采集模式 ...
介绍常见
YUV
和 RGB 图像像素分布_yy开播 采集模式 nv12yy开播 采集模式 nv12 ...
赞
踩
article
[记录点滴]
Spring
Boot
Admin
源码
分析笔记
_
springbootadmin
源码
...
本文是过去使用
Spring
Boot
Admin
时候分析
源码
的笔记。虽然比较简单,但是也可以看出
Spring
Boot
...
赞
踩
article
Tweening
过度
缓动
效果_
tweening
缓动
...
赞
踩
article
Android
添加全屏
启动
画面...
有的
Android
软件需要在
启动
的时候显示一个
启动
画面,可以是一张图或者一些设置什么呢,还有一个好处就是,可以趁机在后台...
赞
踩
article
Unity3d
--
GetComponent
的使用方法...
Unity3d
--
GetComponent
的使用方法 1 using UnityEngine; 2 using Syst...
赞
踩
article
【微服务】
Elasticsearch
常用
查询
&
结果
处理(三)_
es
查询
结果
解读
...
承接前两篇,本篇主要介绍
es
中的几种常见
查询
方式以及对
结果
的几种处理手段,最后使用Java代码再次操作了一番上述操作。_...
赞
踩
相关标签
unity
animation
java
开发语言
unity3d
NGUI
HUD
redis
缓存
分布式
数据库
Unity
hololens
qspi
flash
usb audio
fpga验证
SOC/IC
suspend/resume
播歌断音
python
pycharm