Articles of 几何

配料和表演

我想了解配料,我不知道如何去做,我可以有更多的信息吗? 这是我现在发现的: 批量信息 有很多types的配料: 雪碧配料 几何配料 ??? 雪碧配料 只有一个绘制调用绘制所有精灵是非常有用的。 要做到这一点,一个SpriteBatcher类需要获取具有相同材质和相同几何体(sprite = square geometry)的所有网格。 获取相同材质的精灵 将所有Sprite的matrix发送到Sprite着色器( http://antonholmquist.com/blog/sprite-batching-opengl-es-2-0/ ) 几何配料(使用静态几何) 合并网格的几何,所以我们可以在一个绘图调用中绘制所有的网格。 获取所有静态网格 合并网格的几何graphics,并用matrix计算它们的位置(计算一个VBO和IBO) 隐藏原始网格以避免两次绘制。 我对吗? 谢谢!

几何着色器和三角形邻接

我目前正在尝试改变我的项目使用GL_TRIANGLE_ADJACENCY而不是GL_TRIANGLES。 在这个问题之后,我设法建立了我的索引缓冲区,但是在绘图阶段,我得到了意想不到的结果。 这是我的几何着色器代码。 记住,我存储我的索引是这样的: ( vertex1/adjacent1/vertex2/adjacent2/vertex3/adjacent3 ) 几何着色器 #version 330 precision highp float; layout (triangles_adjacency) in; layout (triangle_strip, max_vertices = 3) out; smooth in vec2 vVaryingTexCoords[]; smooth in vec3 vVaryingNormals[]; smooth out vec2 gsUV; smooth out vec3 gsNormals; void main(void) { int i; for(i = 0; i < gl_in.length(); i++) { switch(i) { case 0: […]

我如何find片段着色器中4个顶点之间的位置?

我使用SharpDX(C#中的DirectX11)创建了一个着色器,该着色器从顶点着色器的输出中获取一个片段(2个点),然后将它们传递给一个几何着色器,该着色器将该线条转换为一个矩形(4个点)四角有纹理坐标。 之后,我想要一个片段着色器(它接收插入的位置和插值的纹理坐标),检查“矩形的脊柱”的深度(即,在通过矩形中间的线)。 问题是我不知道如何提取在矩形的脊柱相应片段的位置。 发生这种情况是因为我有纹理坐标插值,但我不知道如何使用它们来获得我想要的片段,因为a)纹理的坐标系和b)我的片段在屏幕空间中的位置不是相同。

点多边形,光线方法:结束无限线

在使用射线方法进行多边形碰撞检测方面有点麻烦 即http://en.wikipedia.org/wiki/Point_in_polygon 我的问题是我需要结束创建的无限线。 就像这条无限的线一样,我总是得到偶数的交点,因此无效的结果。 即忽略或交叉点的权利被检查 我拥有的 我想要的是 我目前基于Mecki的代码真棒回应 for (int side = 0; side < vertices.Length; side++) { // Test if current side intersects with ray. // create infinite line // See: http://en.wikipedia.org/wiki/Linear_equation a = end_point.Y – start_point.Y; b = start_point.X – end_point.X; c = end_point.X * start_point.Y – start_point.X * end_point.Y; //insert points of […]

如何find两个OBB的交点

在我的游戏中,我需要能够find两个OBB之间的交点。 我正在使用分离轴定理来检查是否有一个交叉点,并获得渗透向量,如果有的话。 我能用SAT来解决这个问题吗? 如果没有,我该如何解决呢?

如何将matrix转换与Flash中的非统一屏幕缩放结合起来?

我正在使用Flash 转换matrix进行仿射变换。 我有一个矩形图像被旋转和缩放(2D)。 有两组缩放variables:ScreenScaleX和ScreenScaleY,ScaleX和ScaleY,以及一个逆时针旋转角度theta。 ScreenScaleX和ScreenScaleY是窗口的缩放因子; 旋转图像后,应将其应用于原始 X轴和Y轴的方向。 ScaleX和ScaleY应该在旋转图像之后应用于新的 X和Y方向。 例如:如果theta是90度,ScreenScaleX和ScreenScaleY仍然会沿着原始X / Y轴的方向拉伸,但是现在ScaleY将在屏幕的X方向上拉伸,并且ScaleX将在屏幕的Y方向上拉伸。 我想我可以通过缩放,旋转和倾斜的组合来实现这一点,但是我正在努力弄清楚matrix的外观。 我将如何从这些variables构造一个matrix来执行这个转换?

平面转换中的错误

我有一堆共面点,坐在飞机P 。 我想把飞机翻译成Q 。 这是我做的: 我从P ,说a , b , c 。 它们的质心由c(a,b,c) 。 我selectO = c(a,b,c)和本地XYZ的本地原点为: x = normalize(Oa); v = normalize(Ob); z = x.crossProduct(v); y = x.crossProduct(z); 我将相同的方法应用于Q上的全局坐标,即d , e , f 。 O_ = c(d,e,f); x_ = normalize(Od); v_ = normalize(Oe); z_ = x_.crossProduct(v_); y_ = x_.crossproduct(z_); 然后,我使用如下的变换matrix: Matrix input = [x,y,z]; […]

用另一个网格覆盖一个网格的algorithm

假设我有两个网格(让我先打电话给我MeshShirt和第二个 – MeshBody)网格alignment(如果我同时渲染MeshShirt“覆盖”MeshBody)。 但是身体的某些部位并不是“MeshShirt”之下(因为MeshShirt形状与MeshBody不同) 我怎样才能“拉起”在MeshBody下的MeshShirt的部分,并在其他地方保留其他部分? 当然,我想保存MeshShirt的形状,如果可能的话 我想下面的algorithm 通过追踪其法线与MeshBody的交点来标记MehsBody下的MeshShire的所有点。 但是如果MeshShirt“隐藏”的部件有复杂的形状,正常的跟踪将不起作用。 所以需要一些检测不良点的方法 将每个标记点移动到MeshBody最近三角形的平面上。 但是我恐怕这些algorithm可能会产生MeshShirt的显着变形。 所以一些形状保存变形也是需要的。 对不起,我英语不好,模糊的问题的定义

如何计算从点精灵球reflection向量?

到目前为止,我已经完成了本教程之后的建立立方体地图 然后,我使用glDrawArrays(GL_POINTS,0,3)绘制了三个点,并基于一个球体计algorithm线。 为了计算入射光的方向和reflectionvector,我需要表面位置。 我的问题是 我需要每个片段的视图空间或世界空间坐标吗? 如何计算每个片段的表面位置? 计算照明在视空间和世界空间之间有什么区别? 忘了提及这是我计算球体的法线的方式 vec3 N; N.xy = gl_PointCoord * 2.0f – 1.0f; float mag = dot(N.xy,N.xy); if(mag > 1.0f) discard; Nz = sqrt(1.0f – mag); N = normalize(N);

如何在Maya中制作Polyheadron?

假设我手动创建了一个四面体,并且为了这个问题,假设您不能只将金字塔创建为原语。 我的金字塔不是正多面体, 有比其他边缘更长的边缘,这使得脸部有不同的区域。 我可以手动缩放边缘和眼球,但这只是一定程度上的精确; 这不是一个真正的math上完美的四面体。 我正在寻找一种能够改变多面体的方法,使所有的面都具有相同的面积,而(当然)保持相同的顶点 – 边 – 面关系(即不把我的四面体变成别的东西)。 我怎样才能做到这一点? 如果我不能准确地达到这个要求,那么你实际上可以实现的最接近的东西是什么(例如,手动将边缘的长度编辑为一个精确的值)?