
[研究生项目记录]
研究生期间项目相关笔记。
桑来93
time will tell
展开
-
项目记录 | Unity-Android录屏实践
记录原因Android端实现录屏功能非常简单.详情可以参考Android实现录屏直播(一)ScreenRecorder的简单分析这篇文章主要介绍了如何用Unity调用Android实现录屏. 难点在于之前没作用,不理解. 当实现了之后发现还挺简单的.普通Android程序实现录屏ActivityT1正常情况下为我们的MainActivity。ActivityT2为录屏申请的系统会自...原创 2019-11-30 16:48:13 · 1561 阅读 · 0 评论 -
项目记录 | Unity-Android后台运行
项目需求:在Pico头显上做一个后台运行的录屏程序,因为前台我们要运行一个用户打游戏(无源码)的画面;同时获取PicoNeo设备实时的位姿信息.PicoNeo的位姿信息,一般是通过Pico提供的UnitySDK获取的. Pvr_UnitySDKManager.SDK.HeadPose.Orientation需求分析:经过一些测试和调研,得到了以下结果:当Unity程序在Andr...原创 2019-10-28 15:17:05 · 6168 阅读 · 1 评论 -
项目记录 : VS命令参考解析 + JSON文件生成
VS命令参考解析以及JSON文件生成由于项目中的程序是读取JSON文件的为了生成JSON文件需要很多自定义的参数需要自己生成一些内容所以设计到两方面.一方面的参数的读取.另一方面是JSON文件的生成命令行参数解析利用命令行参数传参是一个常出现的传参方法。笔者在之前的开发过程中,总是用自己写的简易版本来进行参数解析,非常粗鲁并且繁琐且容易出错。恰好最近要实现一个功能,其中第一步就需要...原创 2019-01-16 16:54:45 · 457 阅读 · 0 评论 -
项目记录: HEVC单帧码流硬解渲染
HEVC单帧码流硬解渲染项目里面需要使用读取每一帧单帧码流进行渲染.特此记录一下.硬解码硬解码使用的MediaCodec . 一般它与 MediaExtractor 配合使用.MediaExtractor 从MP4等格式中抽取出 码流数据 送给MediaCodec解码器.坑H.264码流主要分Annex-B和AVCC两种格式,H.265码流主要分为Annex-B和HVCC格式...原创 2019-01-10 09:06:00 · 1047 阅读 · 0 评论 -
项目记录 : Unity3D之Mesh(一)绘制三角形
注意:三角形的顶点顺序必须是顺时针,顺时针表示正面,逆时针表示背面,而unity3d在渲染时默认只渲染正面,背面是看不见的。待续原创 2019-01-17 20:36:09 · 1073 阅读 · 0 评论 -
项目记录: 3DOF+实时渲染 之 虚拟视点合成
打算总结一下实现3DOF+渲染的一些细节.1 基础概念篇2 实现方案项目记录: 3DOF+渲染 之 基础概念待续原创 2018-12-25 09:30:12 · 3754 阅读 · 1 评论 -
项目记录: Exoplayer V2 dynamic-playlist使用
项目记录: Exoplayer V2开发dynamic-playlist使用与修改创建 ConcatenatingMediaSource在 Exoplayer V2 中的 initializePlayer() :mediaSource = new ConcatenatingMediaSource(mediaSources);动态添加 MediaSourceconcatenati...原创 2018-12-18 15:13:53 · 1527 阅读 · 0 评论 -
Unity Android Context 问题
Unity Android Context 问题Android端ContextContext到底是什么Context 的中文翻译为 上下文,环境. 开发中称之为 上下文 .这个 上下文 可以理解成为当前对象在程序中所处的一个环境,一个与系统交互的过程.Context 在加载资源,启动Activity,获取系统服务,创建View等操作都要参与.如何获取Context通常我们想要获取Co...原创 2018-12-28 17:47:15 · 2546 阅读 · 0 评论 -
Unity 通过JNI传递数组到Android
Unity 通过JNI传递数组到Android项目中有一个需求就是获得Unity端的某个物体的位置,然后传递给Android端.需要借助 JNIUnity端代码:public class TestArrayThroughJNI{ private static AndroidJavaObject _plugin; static GPlayIABPlugin() ...原创 2018-12-27 18:56:13 · 2924 阅读 · 2 评论 -
项目记录 : Untiy3D 截屏功能
Untiy3D 截屏功能为了保存VR一体机中的Unity的渲染画面,需要实现一个截屏的功能.下面是我查询到的几个方法.记录一下.利用Unity的APIUnity提供了一个现成的APIApplication.CaptureScreenshot(imagename)优点:这个API使用起来非常方便.可以快速地截取某一帧的画面[全屏截图]缺点:但是在移动平台上就显得比较吃力,...转载 2019-01-23 10:52:56 · 290 阅读 · 0 评论 -
项目记录 : 360视频显示
360视频显示我们使用经纬图映射方式(ERP,Equirectangular Projection)的视频作为源.渲染基本步骤:初始化 OpenGL设置球体坐标和纹理坐标设置纹理数据绘制等等绘制球由于OpenGL无法绘制出标准的球体.往往需要将球形细分为三角形面片,当面片数足够多时,看起来就比较接近球形了.面片的数量太多会影响绘制时间,引起帧率下降,占用内存过大等.注:...原创 2019-01-29 10:46:39 · 427 阅读 · 0 评论 -
项目记录 : 射线与球的相交
射线与球的相交从图形来说射线与圆相交.origin 是射线的起点. dir 是射线的方向向量. P0 和 P1 是两个交点. center 是圆心, R 是半径. d 为圆心到射线的距离.我们先以2D切面图来说明,当射线和圆相交的时候,可以看到,球心 center 到射线 ray 的距离 d <= R,这个即为相交的条件。那么射线与球相切就转化为了球心到射线的距离d的判断。先求出d:...转载 2019-01-30 10:35:46 · 1530 阅读 · 0 评论 -
项目记录: 3DOF+实时渲染系统
整理了之前做的项目.还需要不断地优化.Review:一个重要的问题就是: 如何利用有限视点位置的全景视频来高效的渲染与显示用户新视点位置的视频内容?基于深度信息的图像绘制技术,即DIBR技术在 项目记录: 3DOF+实时渲染 之 虚拟视点合成 中介绍过了 3DOF+的概念以及相关的一些算法.3DOF+渲染系统在上述的调研的基础上,我们设计并搭建一套 3DOF+视频的渲染平台...原创 2019-03-06 16:58:34 · 1065 阅读 · 0 评论 -
3D数学 | 如何计算三维空间中点到平面的投影点坐标
原文:https://blog.youkuaiyun.com/soaryy/article/details/82884691三维空间平面的一般方程为假定不在平面上的三维空间点坐标为,其在平面上的投影点坐标为。因为投影点到当前点与平面垂直,根据垂直约束条件,易知与满足如下条件:将(2)和(3)代入(1),可以解得:将(4)代入(2),(3),可以解得由此解得空间三维点到平面的投影坐标...转载 2019-03-07 16:20:08 · 8329 阅读 · 0 评论 -
项目记录 : Cloud VR概述
华为CloudVRHuawei iLab:Cloud VR是VR发展的最佳选择待续转载 2019-04-25 23:04:06 · 3588 阅读 · 0 评论 -
项目记录 : Cloud VR | openVR 之十二大驱动接口
作者:HelenXR原文:https://blog.youkuaiyun.com/dabenxiong666/article/details/68954398openVR之十二大驱动接口目前市场上有大量的VR SDK,大多数的HMD厂商都推出自己的VR平台(如oculus, psvr,deepon,3glass等),与这些特定HMD平台有所不同的是,有一些开放的VR平台,例如OSVR,steamV...转载 2019-04-26 09:46:20 · 701 阅读 · 0 评论 -
项目记录 : OpenVR直连模式的理解
openVR驱动接口之IVRDriverDirectModeComponent简介IVRDriverDirectModeComponent这个组件是用来实现直接渲染功能的.该接口是非必须实现的.用于实现自己HMD的直接渲染模式. 多数人认为这个驱动是为oculus特殊提供的.都没能使用这个接口来.主要的接口void CreateSwapTextureSet( uint32_t ...原创 2019-04-27 10:10:34 · 2246 阅读 · 0 评论 -
项目记录 : C# 如何加载C++的DLL库
0 序在做项目的过程中. 需要使用 C# 来调用 C++ 编写生成的DLL库.于是做一下记录.如何编写生成一个C++的DLL库;C++如何调用DLL库;C#如何调用C++的DLL库1 如何编写生成一个C++的DLL库如何编写dll,一步一步,全部可行1.1 创建DLL工程用VS创建Win32 控制台应用程序应用类型勾选: DLL1.2 编写函数举例说明:新...原创 2019-05-12 21:10:09 · 2008 阅读 · 0 评论 -
项目记录 : Unity-Android全景视频FOV渲染方案
由于是实验室项目.具体代码不能提供. 只能提供一下做东西的思路. 以及可能涉及到的方案与问题.0 项目概述在渲染全景视频时. 基本的渲染方式是将整张全景视频(如ERP格式)贴到一个球上.但是这样的效率其实是非常低的.浪费了很多资源.因为用户只能观看到其视域范围内(FOV)的视频内容.我们采用的是 低清的全景纹理 + 用户视域范围的Tile拼接方案 进行渲染.这是一种 双Spher...原创 2019-07-05 11:41:23 · 1941 阅读 · 0 评论 -
Unity Android Plugin 路径问题
Unity Android Plugin 路径问题Android端编译成jar包, 作为Unity库,提供给Unity工程使用.在Android端要使用一个Assets路径下的.json 文件.调试的是发现错误: 无法找到这个 .json文件,出了异常.调用的代码如下所示:inputStreamReader = new InputStreamReader(getAssets().open...原创 2018-12-27 11:19:16 · 750 阅读 · 1 评论 -
Android项目之JSON解析
Android项目之JSON解析JSONJSON 是用于存储和传输数据的格式,通常用于服务端向网页传递数据JSON英文全称 JavaScript Object Notation(JavaScript 对象表示法),是一种轻量级的用于存储和交换文本信息的语法,被设计用于可读的数据交换,类似 XML,但比 XML 更小、更快,JSON具有自我描述性,更易理解JSON语法JSON 的语法基...原创 2018-12-26 15:24:00 · 2284 阅读 · 0 评论 -
项目记录: Dynamic playlists with ExoPlayer
项目记录: Dynamic playlists with ExoPlayer翻译一下 Dynamic playlists with ExoPlayer 2017.08.25介绍现在支持 Exoplayer media playlists . 使用者可以在播放器运行的过程中,任意添加和移除 playlist item .从 Exoplayer 2.8.0 版本,通过更新 Concate...翻译 2018-12-14 20:11:23 · 571 阅读 · 0 评论 -
图像拼接
图像拼接 转载自 https://blog.youkuaiyun.com/wahaha_nescafe/article/details/8501539 https://blog.youkuaiyun.com/wahaha_nescafe/article/details/8506864图像拼接本质上是对待拼接的图像的重叠部分进行配准和图像融合的过程图像配准可以确定图像之间的变化关系图...转载 2018-09-15 22:43:56 · 5768 阅读 · 0 评论 -
Matlab解析Json文件绘图应用
{ "Content_name": "TechnicolorMuseum", "BoundingBox_center": [0.0,0.0,1.65], "Fps": 30, "Frames_number": 300, "Informative":原创 2018-08-24 14:41:18 · 2510 阅读 · 0 评论 -
项目记录:GPU硬解码渲染
项目需求全景视频超大分辨率Zoom-in/out点播系统 单帧解码渲染版本:通过头盔位置判断是否要更换码流进行渲染,实现放大缩小效果。传统的渲染方式是: 将硬解码得到的NV12数据拷贝回CPU内存, 然后再将NV12格式转成YUV420格式, 进而再调用OpenGL渲染。 解码渲染耗时较大,卡顿,需要解决方案采用NVIDIA VIDEO CODEC SDK对输入8...原创 2018-07-25 22:45:06 · 2197 阅读 · 1 评论 -
旋转ERP
记录一下 项目的函数 实现球的旋转. 正映射.但还没有进行重采样. 逆映射可能可以避免重采样问题?void CViewInterpolationGeneral::RotateERP(ImageType ***src, DepthType **pDepthMap){ // 申请两个临时内存 纹理图and深度图 cv::Mat tmp_src(m_uiHe...原创 2018-05-30 22:20:50 · 335 阅读 · 0 评论 -
虚拟视点合成 | 3D-Warping
DIBR的核心 首先利用深度信息将参考图像投影到三维欧式空间 然后再将三维空间点投影到虚拟摄像机的成像平面上 在计算机图形学中被称为3D Image Warping技术。三维空间图像变换及DIBR视点合成 DIBR-3D图像变换(3D Image Warping)...转载 2018-05-23 20:24:23 · 4694 阅读 · 0 评论 -
旋转矩阵 旋转向量
记录 一些旋转向量 旋转矩阵相关的参考文档reference刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)转载 2018-05-25 14:42:13 · 1246 阅读 · 0 评论 -
3DOF+ 概念
3DoF+与3DoF以及6DoF之间的差异示意图3DOF+3DoF+ (3 Degrees of Freedom Plus) 除了为用户提供三个维度旋转带来的视听体验效果外,还提供向前/向后、向左/向右、向上/向下三个位置维度在有限范围内的头部运动体验(不允许脚步走动)。 3DoF+视点范围示意图以及视点范围内两个不同的视角视图, 相比3DoF,3DoF+更符合人感知事物的真实过程...原创 2018-05-20 10:58:46 · 3490 阅读 · 0 评论 -
NIVIDIA 硬解码学习2
NIVIDIA 硬解码学习2 做项目学习笔记引言在NIVIDIA 硬解码学习1中大概了解了硬解码的几个组成部分。下载了最新的【Video_Codec_SDK_8.2.16】进行了简答的学习。SDK Samples最简单的硬解码器实现 AppDec先看一下 main 函数的实现int main(int argc, char **argv) { ...原创 2018-09-13 22:01:01 · 9680 阅读 · 4 评论 -
项目记录:MPEG-DASH整理3
项目记录:MPEG-DASH整理3该项目的目标是 基于3DOF的视频内容 实现一个6DOF的播放器.观看者戴着VR头显,在位置发生运动之后,播放器能够根据其位置的不同,下载不同位置的码流,进行解码渲染.简单地实现6DOF.服务器端:服务器端必须能够有多个视点位置的全景视频,作为不同的 AdaptationSet 存储起来.那么客户端如何知道服务器端的各个AdaptationS...原创 2018-12-06 09:38:18 · 690 阅读 · 0 评论 -
opengl版本问题
如何查看OpenGL版本在自己的主机上运行程序发现程序报错.最后发现 OpenGL的版本太低了.自己的主机集显最高支持到OpenGL4.1而用了4.4+以上才可以正常使用的API....原创 2018-12-05 22:17:38 · 2040 阅读 · 0 评论 -
项目记录: Exoplayer备忘录
项目记录: Exoplayer备忘录1一体式头盔全景播放器开发是Unity-Android协作完成的.Android端采用的Google的Exoplayer作为框架.重点通过学习了以下几篇博客,对Exoplayer有了一个初步的认识.做一下记录1. Exoplayer简介ExoPlayer是建立在 Android low-level api之上的 app级开源播放器。开源项目包含 E...转载 2018-12-12 15:49:09 · 940 阅读 · 0 评论 -
如何将opencv-iamge上载到opengl的纹理中
opencv-image-loading-for-opengl-textureGLuint cvMat2glTexture(const cv::Mat& mat) { // https://stackoverflow.com/questions/16809833/opencv-image-loading-for-opengl-texture // REMARK: Th...原创 2018-12-05 15:31:36 · 321 阅读 · 0 评论 -
项目记录:MPEG-DASH整理1
MPEG-DASH整理11.DASH介绍基于HTTP的动态自适应流(英语:Dynamic Adaptive Streaming over HTTP,缩写DASH,也称MPEG-DASH)是一种自适应比特率流技术,使高质量流媒体可以通过传统的HTTP网络服务器以互联网传递。DASH是一种新的视频传输协议,不关心音频/视频的编解码器。类似苹果公司的HTTP Live Streami...原创 2018-11-30 22:58:19 · 1139 阅读 · 0 评论 -
项目记录:MPEG-DASH整理2
项目记录:MPEG-DASH整理2这一篇主要是介绍DASH封装 (如何生成DASH媒体内容)以及 关于DASh实现的一些软件与程序库,重点会看 libdash以及做项目时对 DASH协议增加一个位置信息,以及libdash解析MPD信息。DASH媒体内容的生成DASH(Dynamic Adaptive Streaming over HTTP)即自适应流媒体传输,典型的系统框图如下:...原创 2018-12-04 14:25:35 · 635 阅读 · 0 评论 -
如何将CV::Mat转成glm::ma4
How a cv::Mat translate from/to a glm::mat4void fromCV2GLM(const cv::Mat& cvmat, glm::mat4* glmmat) { if (cvmat.cols != 4 || cvmat.rows != 4 || cvmat.type() != CV_32FC1) { cout <...原创 2018-12-04 10:18:33 · 657 阅读 · 0 评论 -
项目记录:Unity-Android 实时流(RTMP/HLS/DASH)播放器
传统的VR显示设备主要为PC端的,目前出现了很多基于Android的VR一体机显示设备.但如果在Android端VR设备上直接安装普通的RTMP/HLS/DASH实时流播放器,渲染的视频仍旧显示在一个平面上,而非我们期望的全景视频.大多数的VR一体机使用unity进行渲染能够实现360°的全景效果.暂时先列举一些条目,后面补充.具体细节:1. exoplayer 下载解码 RTM...原创 2018-11-07 22:09:01 · 2612 阅读 · 1 评论 -
项目记录:SSE/NEON快速指令集优化像素拷贝
记录一下在实验室做了的一些项目与demo 记录其中的知识点与技术要点 SSE/NEON快速指令集优化像素拷贝项目需求:360全景图划分成42 TILE. 高纬度按 4:1 下采样. 中纬度按 2:1 下采样. 低纬度 1:1 渲染时,高纬度按 1:4 还原. 中纬度按 1:2 还原. 参考资料:SSENEON具体实现:...原创 2018-05-19 23:16:54 · 2152 阅读 · 0 评论