*市面上做全景的网站和公司有很多,这里不列举了,自己百度一下VR和
全景之类的就会跳出很多。*

一、全景相片制作

1.无人机制作全景相片

1.1大疆无人机全景相片制作,利用软件DJI GO4中一键720全景完成制作.
1.2手动制作720全景完成制作
(1)无人机升到一定高度。这个高度选在没有建筑物遮挡视线和能完整展现拍摄主体的平衡点,一般50—100m为宜。
(2)将无人机的云台视角设置为水平。控制水平旋转操纵杆进行顺时针或逆时针360度旋转,每旋转45度拍摄一张照片,保证每两张照片之间有20%的地方是重合的,方面后期拼接。
(3)将无人机云台视角调为下倾45度,用上面同样方式,每45°拍摄一张,至少拍摄8张。
(4)将云台调为90°垂直地面,俯拍一张底图。
(5)将这同一场景至少17张图片导入全景拼接软件PTgui或PanoramaStudio 2 pro,这两个软件百度都可以直接下载。
(6)图片导入之后,填写摄像头的焦距,具体的数据可以在产品说明的参数中找到。我的设备焦距是3.7 mm(等效 20 mm)。
(7)选择对齐图像。经过处理之后我们可以得到一张水平的图像。
  虽然图片拼接到了一起,但是由于无人机视角的限制(无法仰拍),导致天空的不完整。
  这就需要我们进行后期“补天”。
(8)这种照片我们可以自己拍摄或者直接利用素材进行拼接。
  因为地面的风景复杂多样,天空的样子全世界都是类似的。

2.手机制作全景相片

与无人机手动制作720全景基本相同。

二、Unity3D程序制作

在U3D中创建一个球体

添加全景相片(直接将图片拖拽到球上即可)

接下来搭建场景的最重要的部分就是让全景图片贴在球体的内部。要让图片贴在物体上就需要用到渲染器 Shader,我们需要创建一个渲染器脚本,然后把图片拖入脚本中,这样就能改变图片的渲染方式,把图片拖入球体中,设置材质的渲染方式,就能让图片贴在球体内部。

Shader "Unlit/DoubleSided"
{Properties{_Color("Main Color", Color) = (1,1,1,1)_MainTex("Texture", 2D) = "white" {}}SubShader{//Ambient pass Pass{Name "BASE"Tags {"LightMode" = "Always" /* Upgrade NOTE: changed from PixelOrNone to Always */}Color[_PPLAmbient]SetTexture[_BumpMap]{constantColor(.5,.5,.5)combine constant lerp(texture) previous}SetTexture[_MainTex]{constantColor[_Color]Combine texture * previous DOUBLE, texture *constant}}//Vertex lights Pass{Name "BASE"Tags {"LightMode" = "Vertex"}Material{Diffuse[_Color]Emission[_PPLAmbient]Shininess[_Shininess]Specular[_SpecColor]}SeparateSpecular OnLighting Oncull offSetTexture[_BumpMap]{constantColor(.5,.5,.5)combine constant lerp(texture) previous}SetTexture[_MainTex]{Combine texture *previous DOUBLE, texture *primary}}}FallBack "Diffuse", 1
}

将Shader拖到Sphere的图片中

添加C# Script,进行摄像机控制

代码如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;public class Test01 : MonoBehaviour
{public float moveSpeed = 1;//物体旋转速度  public GameObject target;private Vector2 oldPosition;private Vector2 oldPosition1;private Vector2 oldPosition2;private float distance = 0;private bool flag = false;//摄像头的位置private float x = 0f;private float y = 0f;//左右滑动移动速度public float xSpeed = 250f;public float ySpeed = 120f;//缩放限制系数public float yMinLimit = -360;public float yMaxLimit = 360;//是否旋转private bool isRotate = true;//计数器private float count = 0;public static Test01 _instance;//初始化游戏信息设置void Start(){_instance = this;Vector3 angles = transform.eulerAngles;x = angles.y;y = angles.x;if (GetComponent<Rigidbody>())GetComponent<Rigidbody>().freezeRotation = true;}// Update is called once per frame  void Update(){if (isRotate){target.transform.Rotate(Vector3.down, Time.deltaTime * moveSpeed, Space.World);}if (!isRotate){count += Time.deltaTime;if (count > 5){count = 0;isRotate = true;}}//触摸类型为移动触摸if (Input.GetMouseButton(0)){//根据触摸点计算X与Y位置x += Input.GetAxis("Mouse X") * xSpeed * Time.deltaTime;y -= Input.GetAxis("Mouse Y") * ySpeed * Time.deltaTime;isRotate = false;}//判断鼠标滑轮是否输入float temp = Input.GetAxis("Mouse ScrollWheel");if (temp != 0){if (temp > 0){// 这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改if (distance > -15){distance -= 0.5f;}}if (temp < 0){// 这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改if (distance < 20){distance += 0.5f;}}}}//计算距离,判断放大还是缩小。放大返回true,缩小返回false  bool IsEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2){//old distance  float oldDistance = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));//new distance  float newDistance = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));if (oldDistance < newDistance){//zoom+  return true;}else{//zoom-  return false;}}//每帧执行,在Update后  void LateUpdate(){if (target){//重置摄像机的位置y = ClampAngle(y, yMinLimit, yMaxLimit);var rotation = Quaternion.Euler(y, x, 0);var position = rotation * (new Vector3(0.0f, 0.0f, -distance)) + target.transform.position;transform.rotation = rotation;transform.position = position;}}float ClampAngle(float angle, float min, float max){if (angle < -360)angle += 360;if (angle > 360)angle -= 360;return Mathf.Clamp(angle, min, max);}
}

在Target中加入目标。

这时的全景相片已经可以像720云等软件一样应用了。

三、添加一个小应用

实现功能,在全景中鼠标所接触的物体,显示其物体的名字,点击此物体时,弹出该物体的属性信息。

创建一个空物体,在空物体中添加Collider

将Edit Collider移动到合适位置,如图:

添加代码

using UnityEngine;
using System.Collections;public class Cube : MonoBehaviour
{//    public Transform cube;bool isShowTip;public bool WindowShow = false;//    // Use this for initializationvoid Start(){isShowTip = false;}void OnMouseEnter(){isShowTip = true;//Debug.Log (cube.name);//可以得到物体的名字}void OnMouseExit(){isShowTip = false;}void OnGUI(){if (isShowTip){GUIStyle style1 = new GUIStyle();style1.fontSize = 30;style1.normal.textColor = Color.red;GUI.Label(new Rect(Input.mousePosition.x, Screen.height - Input.mousePosition.y, 400, 50), "饮水机", style1);}if (WindowShow)GUI.Window(0, new Rect(30, 30, 200, 100), MyWindow, "饮水机!");}//对话框函数void MyWindow(int WindowID){GUILayout.Label("日常饮水用的设备");}//鼠标点击事件void OnMouseDown(){Debug.Log("show");if (WindowShow)WindowShow = false;elseWindowShow = true;}
}

完成。

利用无人机(手机)和Unity3D软件制作自己的VR全景软件相关推荐

  1. 如何制作360度vr全景?制作360度全景效果图有哪些技巧?

    360度VR全景图相信对摄影感兴趣的小伙伴一定不陌生,360度全景效果图不仅可以清楚真实的表现出场景,而且还具有很高的商用价值,360VR全景也成为了目前最受欢迎的新型展示方式,那么如何制作360度v ...

  2. 如何制作全景图片,VR全景制作流程解析

    全景制作其实并不难,掌握要点你也能成为制作高手,下面为大家盘点一下制作流程.首先了解一下全景图片是什么.全景图片是指从多种角度拍摄的一组或多组图片经过后期加工制作而成的图像,制作全景图片分为前期拍摄和 ...

  3. 你懂VR全景制作吗?VR全景可以使用在哪些领域呢?

    VR全景制作是一种利用虚拟现实技术,通过全景相机拍摄真实场景或构建三维场景的全景图像,观众能够在虚拟世界中自由探索,但是你的真的懂VR全景制作吗? 通过全景相机实景拍摄,每60°拍摄一张照片,一直将四 ...

  4. 无人机航拍的技巧你知道吗?VR全景航拍应用在哪里?

    在今天的数字化时代,随着人们对美景追求的日益增加,VR全景航拍已经成为了一种新的形势.在航拍视角下,我们可以欣赏到以往不曾见过的美景,VR全景航拍通过使用无人机等设备,在空中拍摄照片并后期制作成VR全 ...

  5. 唐山vr全景拍摄制作,唐山vr全景制作行业怎么样?

    如今vr技术早已随着5G的热潮使人们所熟知,其中vr看车,vr看房更是做到了一定的普及,相信很多朋友都体验过.在唐山,这种vr全景拍摄制作的形式同样在如茶似火的高速发展中,很多有创业想法的唐山朋友看到 ...

  6. VR全景制作拍摄方法教程

    随着VR虚拟现实技术的快速发展,720vr全景的应用范围也得到了扩大和普及.VR全景作为新一代信息技术,相较于传统的图文视频等展现方式而言,VR全景不仅能够帮助用户随时随地身临其境的进行沉浸式体验,也 ...

  7. 如何在Unity中制作VR全景动画

    超简单的引言 本教程介绍的是如何一个人制作出像模像样的VR全景动画.笔者没有去详细的研究过动画的制作方式,或者说根本就不了解啊,所以本文章只是门外汉的一次自嗨,请勿认真,作为一种参考即可. 一 总览 ...

  8. VR直播软件应用测评 有哪些VR直播软件可以尝试?

    VR直播一直被直播界所看好,被认为将掀起新一波的直播热潮.业界大佬也都纷纷试水VR直播,很多普通用户在最开始接触VR的时候,除了通过商场的VR体验店,一大部分都是通过VR直播开始接触VR.因此也产生了 ...

  9. 利用C#2005为你的软件制作小精灵

    利用C#2005为你的软件制作小精灵 我们平时在使用软件时,有时会看到一些软件附带的小精灵,如:瑞星杀毒软件的狮子,OFFICE系列软件中的孙悟空,太白金星等.这些小精灵,动作夸张,滑稽可爱,又能附带 ...

最新文章

  1. HDU 5972 Regular Number(ShiftAnd+读入优化)
  2. 华为交换机配置基本命令
  3. 并查集的一般操作 ③
  4. Python基础(七)--模块和包
  5. HTML基础做出属于自己的完美网页
  6. java多线程内存模型_Java多线程内存模型
  7. varchar2(100 char)是什么意思
  8. RTSP协议播放网络视频
  9. 张云飞 201771010143 《面对对象程序设计(java)》第十七周学习总结
  10. 控制台——EventLog实现事件日志操作
  11. Linux C多线程编程
  12. [UE4]关闭自动曝光
  13. 正态分布下贝叶斯决策的特例(三)
  14. Premiere 常用视频概念
  15. 呼伦贝尔草原行(5日自由行)
  16. 免费PHPCMS采集规则文章采集器采集百万数据
  17. 思科2960-S交换机初始化配置
  18. 撼龙图怎么开鸿蒙炁灵,一人之下藏金图技巧-一人之下撼龙藏金图高概率出绝世炁灵技巧...
  19. 四种属性范围(重点)
  20. proe安装后 显示服务器未连接,proe许可证服务器主机名

热门文章

  1. 科技只是拐杖:技术影响人类创造力的悲观分析
  2. java json 枚举_java枚举类型JSON格式返回处理
  3. 2.4G WiFi标准发展
  4. 跳纤前,一定要看看这篇再下手
  5. (五)Fabric1.4 在自己项目中安装区块链浏览器blockchain-explorer
  6. 3月第2周全球域名总量TOP20:冠军美国降幅翻两番
  7. 解决FTP上传文件速度慢的问题
  8. Jenkins安装(win系统)
  9. STM32驱动eMMC读写数据
  10. 4G/5G频谱资源协同关键技术