opengl,dx可以理解为unity3d是对opengl的封装。
opencv是做视觉分析用的,就是分析你的视频里的内容;artoolkit 是增强现实,在你的视频里增加格外的东西,基本是两个方向。
最近在做一款打星球2D游戏,大概玩法就是屏幕中间有个星球(可能是一张,也可能是几张组合),导d从星球四面八方朝星球攻击,星球收到攻击后会爆炸掉一块区域。
如果单单一张图很好处理,这里讲的是如何处理多张的问题。
我当时考虑到三种方案:
思路:通过中心点和每个像素的颜色信息(color)计算出当前像素在一张大图上的位置信息(x,y);
为了方便计算,我定义一张最大图为512512(最下面一张的大小),然后把所有的像素信息一次绘制到这张大图上(从最下面一张依次向上面遍历),假设所有中心位置相等。
这里就有个问题,缩放一定比例,按比例绘制到大图上,边缘就会出现大量锯齿;我猜想我的算法过于简单,也没有按像素权重算法去计算,官方对弈缩放应该有他们一套算法(类似于抗锯齿算法解决大量锯齿原因)。
这里会出现另外一个问题:截取的制定区域如果有其他元素(比如UI),会把不相关元素一起截图进来,最终放弃。
先把需要加载的渲染出来,然后再用Camera RenderTexture 解决指定区域替换之前渲染出来的
注意由于设备渲染纹理的坐标差异,需要判断下原点是否是在左上角还是左下角,这样有利于世界坐标转换
Unity为了兼容D3D,OpenGLES,Metal等不同3D API的特性,内部做了适配,让开发者不同去考虑这些差异。Unity默认是以OpenGL的标准体系进行描述的:左手坐标系、屏幕坐标系左下角为(0,0)等。为了确保统一性,所有 non-OpenGL的平台的特性,Unity会做出转换,使得该特性能够以OpenGL的标准来描述。(现在有点明白Unity是怎么做到跨平台开发的了)
首先引发问题的根本原因在于RenderTexture坐标系的差异:
OpenGL是从左下角为(0,0)开始,往上递增。
D3D从左上角为(0,0)开始,往下递增。
个人认为如果能用 缩放一定比例绘制到一张上 最终实现游戏效果是比较好的,欢迎大家留言。
以上就是关于如何在unity里使用opencv全部的内容,包括:如何在unity里使用opencv、unity 截图、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)