Unity摄像机画面制作全景图片|截图制作全景图
Posted Glunn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity摄像机画面制作全景图片|截图制作全景图相关的知识,希望对你有一定的参考价值。
Unity摄像机画面制作全景图片
目录
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
效果展示
unity的场景
生成的图片
Unity编辑器中使用脚本部分
[MenuItem("生成图片/CreatPic")]
public static void A()
Camera cam = Camera.main;
//可修改数值 new RenderTexture(4096, 4096, 32);
RenderTexture cubemap = new RenderTexture(2048, 2048, 16);
cubemap.dimension = TextureDimension.Cube;
cam.RenderToCubemap(cubemap, 63, Camera.MonoOrStereoscopicEye.Mono);
//可修改数值 new RenderTexture(4096, 4096, 32);
RenderTexture equirect = new RenderTexture(1920, 1080, 8);
cubemap.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Mono);
RenderTexture.active = equirect;
Texture2D tex = new Texture2D(equirect.width, equirect.height, TextureFormat.ARGB32, false, true);
tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
RenderTexture.active = null;
GL.Clear(true, true, Color.black);
tex.Apply();
byte[] bytes = tex.EncodeToTGA();
CreateDirectroryOfFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\\\全景图\\\\)");
System.IO.File.WriteAllBytes(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop)
+ "\\\\全景图\\\\" + System.DateTime.Now.Ticks + ".tga", bytes);
public static void CreateDirectroryOfFile(string filePath)
Debug.Log($"CreateDirectrory filePath[folder_path],");
if (!string.IsNullOrEmpty(filePath))
string dir_name = Path.GetDirectoryName(filePath);
if (!Directory.Exists(dir_name))
Debug.Log($"No Exists dir_name[dir_name],");
Directory.CreateDirectory(dir_name);
else
Debug.Log($"Exists dir_name[dir_name],");
Unity编辑器中使用方法
我们的脚本部分写完左上角的菜单栏中会出现生成图片四个字
打开这个选项我们可以看到CreatPic
然后我们点击后就可以执行完毕
会自动在我们的桌面创建文件夹然后把图片存储进去
Unity动态存储图片脚本部分
Camera cam;
RenderTexture cubemap;
RenderTexture equirect;
[Header("生成次数 true为连续生成")][SerializeField] private bool ison;
void Start()
cam = Camera.main;
cubemap = new RenderTexture(4096, 4096, 32);
cubemap.dimension = TextureDimension.Cube;
equirect = new RenderTexture(4096, 2048, 32);
StartCoroutine(B());
// Update is called once per frame
void Update()
if (ison)
StartCoroutine(B());
IEnumerator B()
if (ison)
while (true)
Creat();
yield return new WaitForSecondsRealtime(0.04F);
else
Creat();
yield return null;
public void Creat()
cam.RenderToCubemap(cubemap, 63, Camera.MonoOrStereoscopicEye.Mono);
cubemap.ConvertToEquirect(equirect, Camera.MonoOrStereoscopicEye.Mono);
RenderTexture.active = equirect;
Texture2D tex = new Texture2D(equirect.width, equirect.height, TextureFormat.ARGB32, false, true);
tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
RenderTexture.active = null;
GL.Clear(true, true, Color.black);
tex.Apply();
byte[] bytes = tex.EncodeToTGA();
CreateDirectroryOfFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) + "\\\\全景图\\\\)");
System.IO.File.WriteAllBytes(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop)
+ "\\\\全景图\\\\" + System.DateTime.Now.Ticks + ".tga", bytes);
public static void CreateDirectroryOfFile(string filePath)
Debug.Log($"CreateDirectrory filePath[folder_path],");
if (!string.IsNullOrEmpty(filePath))
string dir_name = Path.GetDirectoryName(filePath);
if (!Directory.Exists(dir_name))
Debug.Log($"No Exists dir_name[dir_name],");
Directory.CreateDirectory(dir_name);
else
Debug.Log($"Exists dir_name[dir_name],");
Unity动态存储图片使用方法
动态存储的方法 很简单 随便放置一个空物体然后把我们的脚本放置上去就可以了
其中注意我们的脚本上会有一个bool值 此值的作用为True的时候会连续存储图片
Unity 制作360全景视频 全景图片流程
Recorder的使用
在Unity制作360图片或者视频需要用到UnityPackage:Recorder
如果没有就在Package Manager寻找
1、在菜单栏找到Window/General/Recorder/RecorderWindow
参数说明:
-
Animation Clip:录制动画剪辑
-
Movie:录制视频
-
Image Sequence:序列帧图片
-
GIF Animation:GIF格式的动图
-
Audio:仅录制音频
录制360视频
设置参考:
1.点击AddRecorder选择Movie
2.在Source选择360 View
3.Recording Mode选择模式
- Manual 手动开始与关闭录制
- Single Frame 录制单帧(输入第几帧)
- Frame Interval 帧间隔(开始帧到结束帧)
- Time Interval 时间间隔(开始时间到需要录制的时间)
START RECORDING开始录制
制作一个可以播放360视频的工具
1.创建空物体增加组件VideoPlayer,Render Mode模式选择 Material Override
2.在这个物体下再次创建一个球体,材质设置成Skybox/Panoramic
3.在组件VideoPlayer中Video Clip选择360视频
4.Renderer选择球体
5.摄像机放在球体中间就可以看到360视频
制作一个360图片
这个就比较简单,创建一个球体,材质设置成Skybox/Panoramic,直接拖入图片就可以
录制图片一般只需要录制1帧就可以了,不要忘记设置,到时候录制一大推高质量图片
设置参考:
(图片设置)记得把Geberate Mip Maps取消勾选,不然图片会有一条缝隙
相机设置:
如果无法正常显示制作好的360图片或者360视频,可能是相机设置有问题
Demo下载链接
以上是关于Unity摄像机画面制作全景图片|截图制作全景图的主要内容,如果未能解决你的问题,请参考以下文章