Articles of 投影

OpenGL ES,正射投影和视口

我想在iOS上做一些简单的2D游戏来熟悉OpenGL ES。 我从Ray Wenderlich的教程开始( 如何用OpenGL ES 2.0和GLKit创建简单的2D iPhone游戏 )。 这个教程相当不错,但我错过了一个难题的一些部分。 Ray使用一些像480和320这样的魔术数字来创建一个正交投影。我不清楚他为什么拿这些数字,并且据我所知,精灵并没有被映射到iPad模拟器屏幕的一对一像素。 我尝试使用正交matrix创建的参数,但我无法弄清楚这里的math。 我怎样才能计算数字(底部,顶部,左,右,接近,远)这将是正交投影matrix创建的参数,并在屏幕上显示的原始大小的精灵?

投影/视图matrix:对象比它应该大,深度不影响顶点

目前我正在尝试从头开始编写一个C 3D软件渲染引擎,只是为了好玩,并且深入了解OpenGL在幕后做了些什么,以及90年代的程序员必须在DOS上做什么。 我已经写了自己的matrix库,并没有注意到任何问题进行testing,但是当我试图在0,0,10投影一个简单的2×2立方体的顶点,如0,0,10基本相机看到,立方体似乎出现的方式大于应用程序的窗口。 如果我将顶点的坐标缩小8倍,我可以在屏幕上看到一个正确的立方体。 这个立方体似乎不是透视图,从前面看,后面的顶点与前面的顶点完全重叠,所以我很确定这是不正确的。 这是我如何创建视图和投影matrix(vec4_initd初始化w = 0的向量,vec4_initw初始化w = 1的向量): void mat4_lookatlh(mat4 *m, const vec4 *pos, const vec4 *target, const vec4 *updirection) { vec4 fwd, right, up; // fwd = norm(pos – target) fwd = *target; vec4_sub(&fwd, pos); vec4_norm(&fwd); // right = norm(cross(updirection, fwd)) vec4_cross(updirection, &fwd, &right); vec4_norm(&right); // up = cross(right, forward) vec4_cross(&fwd, &right, […]

模式7:平铺位置到屏幕位置

描述如何用投影渲染地图的algorithm(例如, 在pygame中做一个SNES模式7(仿射变换)效果 )始终是逐点渲染,并从那里获取原始图块的位置。 我的问题是相反的。 如果我想呈现几个精灵,我怎么能得到屏幕的位置和宽度/高度?

我如何修复我的android系统UI系统?

这个错误将会发生 如果将点击卸载butten然后我的平板电脑将不会工作有消失BACKbutton,主页button通知栏也…然后我想rest我的平板电脑…重置后的问题将相同…..什么我可不可以做? 建议我PLZ …

透视投影计算

我从arcsynthesis学习OpenGL,我不明白有关透视投影( http://www.arcsynthesis.org/gltut/Positioning/Tut04%20Perspective%20Projection.html )。 当作者给出“二维到一维透视投影图”的例子时,R是一个二维点还是一个标量? 当我看到这个数字的时候,我认为这是一个标题,因为这个标题,我认为P是在一条线上投影的(投影计划)。 但后来当我看到透视计算时,我意识到R有相同的坐标数P,因为从这个方程中,R是vectorP与标量的乘积,所以基本上我不明白许多坐标都是R. 我不知道这个方程(视角计算)来自哪里,如果有人可以给我一些关于它的信息,我将不胜感激。

用投影matrix旋转最终图像

我试图以更有效的方式在我的阴影(深度)地图中使用空间。 如果我可以自由地旋转最终的图像,我得到的投影matrix,我可以节省很多的像素,但我不知道是否有可能这样做。 是吗?

投影纹理和衰减

我很了解投影纹理如何工作。 我成功实现了以下nvidia文档的着色器。 我所面临的主要问题是,在这种实现方式下,投影机的平截头体仅用于确定投影空间中的纹理坐标,但是它并不夹在投影平截体体积之外的任何东西。 换句话说,如果我有一台投影机指向一个物体,即使物体在其平截头体之外,纹理也将被投射在它上面。 此外,当投影机几乎与投影物体平行时,纹理拉伸太明显,我想淡化它。 现在,我想了解Unity如何处理内置的投影机 。 我发现这个例子 。 这是顶点和片段的相关代码: v2f vert (float4 vertex : POSITION) { v2f o; o.pos = mul (UNITY_MATRIX_MVP, vertex); o.uvShadow = mul (_Projector, vertex); o.uvFalloff = mul (_ProjectorClip, vertex); return o; } fixed4 frag (v2f i) : SV_Target { fixed4 texS = tex2Dproj (_ShadowTex, UNITY_PROJ_COORD(i.uvShadow)); texS.rgb *= _Color.rgb; texS.a = […]

缩放世界 – 投影,查看还是分离matrix?

我目前正在编写一个简单的三维空间可视化程序。 事情从一个简单的XML文件加载到它,其中包含空间中的对象的位置和大小,所以你可以把基本上任何数字放入XML,它会告诉你在3D中的东西。 我的问题是,当我尝试查看例如一个太阳系,使用实际数字,因为他们真的是在太空中(例如地球月球距离= 3.844e8米),我的物体松散的forms和纹理从脸上分离由于有限的浮动位置精度。 我根本无法让用户自己来扩展场景,因为有10个星球左右,工作太多了,有时候计算起来有点复杂。 正因为如此,我决定添加一个选项,以便自动缩放整个场景。 我的问题很简单:如果我想要衡量世界/场景,我应该使用哪个matrix? 投影matrix,视图matrix,或一个全新的matrix(请不要这个,我用完了uniform s)? 谢谢。

游戏对象仅在具有负Z比例时呈现

我有一个正交相机,看起来像这样: 我创建了二维多边形网格,在其顶点具有统一的z值。 我使用Camera.ViewportToWorldPoint()将这些视点顶点映射到世界顶点。 每个多边形顶点的初始z值I是1.0f。 当我查看我生成的多边形时,它们每个都具有(1,1,1)的比例,并且不被渲染。 但是,当我将scale的z值设置为小于零的任何值时,将会呈现网格。 这可能是我的相机的属性问题吗?

透视投影 – 绘图线

所以我有点理解把3d点投射到2D平面上的math。 这只是一些简单的划分和乘法的距离。 然而,我似乎无法把我的头围绕从三维空间投影到二维平面上。 示范: 只是为了让这个更简单一些,我将会把2D投射到1d线上,因为对于3D到2D来说,这是相同的概念。 所以我的问题是,如果我想将AB线投影到具有设定焦距的观察窗口上,我可以将线(A和B)的两个点投影到透视线上,然后画线在观看窗口之间的那两个之间。 然而,当试图将线CD投影到线上时困难重重。 该线的第二点(D)在观察窗之后,因此不能投射到线上。 那么如何在透视窗口中绘制线条CD呢?