大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
http://www.unitymanual.com/thread-31034-1-1.html
本文介绍虚拟现实项目开发流程,共大家参考与学习,也希望各位提出意见…通过将现实中真实存在的构建在虚拟平台上,使得用户可以不在受时间、地点、位置和区域的限制来完成一些操作。
=================================开发流程======================
开发流程:
1.虚拟现实开发流程: 通过调研、分析各个模块的功能。在具体开发过程中虚拟场景中的模型和纹理贴图都是来源于真实场景,事先通过摄像采集材质纹理贴图,和真实场景的平面模型,通过ps和maya(或者3dmax)来处理纹理和构建真实场景的三维模型,然后导入到unity3D构建虚拟平台,在u3d平台通过音效,图形界面,插件,灯光设置渲染,编写交互代码,最后发布设置。整体开发流程如下图1所示。
2.建模技术:
构建三维模型,在虚拟场景中看到的任何物品或者模型都是真实场景中实物的再现,这就是虚拟现实给人一种真实场景的感觉,建模是构建场景的基本要素,在建模过程中还有一点最重要就是模型的优化,一个好的虚拟现实项目不仅要运行流畅、给人以逼真的感觉同时还要保证模型的大小,保证程序发布之后不会占用太大的内存,(PS:基本的优化原则就是:制作简模,建模过程中基本上所有模型都是简模,对于相交的面要删除相交之后重复的面,尽量减少模型的点以达到优化的目的)
3.交互技术:
除了场景模型的优化之外,交互技术也是虚拟现实项目的关键。unity3d负责整个场景中的交互功能开发,是将虚拟场景与用户连接在一起的开发纽带,协调整体虚系统的工作和运转。模型在导入Unity之前必须先导入材质后导入模型,这样防止了模型纹理材质的丢失图2是虚拟展示系统的界面设计。
4.渲染技术:
在做虚拟现实项目中,交互式基本,渲染是关键,一个好的项目,除了运行流畅之外,场景渲染的好坏也是成败的关键,好的、逼真的场景能给用户带来完成真实的沉浸感,对于用户来说真实感越好,月容易得用认可,才能做到真正的虚拟现实。基本渲染都是通过插件来实现,在需要高亮的地方设置shader,效果就是看到台灯真正可以感受到发亮的效果,地面倒影的效果和太阳光折射的效果。渲染效果如下图所示。
=================================实现过程======================
具体实现过程:
一、本文的UI界面并没有用插件来做,用Unity自带的GUILayout来实现。
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using UnityEngine;
using System.Collections;
public class ContrlRotation : MonoBehaviour {
public float m_fDeltaX;
public float m_fDeltaY;
public float m_fSpeed;
public GameObject m_goRotateObject;
public static bool m_bIsRotateObject;
// Use this for initialization
void Start () {
m_fSpeed = 80;
m_bIsRotateObject = false ;
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButton(0))
{ if (ClickAndDeal.m_bIsFreeze && !UIManager.m_bIsInTextureWindowRect)
{
m_fDeltaX = Input.GetAxis( "Mouse X" ) * Time.deltaTime * m_fSpeed;
m_fDeltaY = Input.GetAxis( "Mouse Y" ) * Time.deltaTime * m_fSpeed;
m_goRotateObject.transform.Rotate( new Vector3(0, -m_fDeltaX, m_fDeltaY), Space.World);
}
}
}
}
|
纯文本查看
复制代码
1
2
|
m_fColorG -= Time.deltaTime * m_fSpeed;
m_cTriggers[triggerIndex].transform.parent.gameObject.renderer.material.color = new Color(m_cTriggers[triggerIndex].transform.parent.gameObject.renderer.material.color.r, m_fColorG / 255, m_cTriggers[triggerIndex].transform.parent.gameObject.renderer.material.color.b);
|
纯文本查看
复制代码
1
2
3
4
|
GUI.Label( new Rect(10, 15, 90, 20), "环境光1" );
m_bIntensityIsOfMin = GUI.Toggle( new Rect(10, 35, 30, 30), m_bIntensityIsOfMin, "弱" );
m_bIntensityIsOfMax = GUI.Toggle( new Rect(240, 35, 30, 30), m_bIntensityIsOfMax, "强" );
m_lLight_1.intensity = GUI.HorizontalSlider( new Rect(40, 40, 200, 30), m_lLight_1.intensity, m_fIntensityMin, m_fIntensityMax);
|
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194267.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...