I tried to clip mesh in openGl and i think that i have a problem with math.
I have a cube ![enter image description here](https://i.stack.imgur.com/dY4B7.png)
例如,我需要剪辑该立方体的一半。所以我不明白如何计算这个裁剪平面。白线说明了这个剪裁平面应该是什么样子,它只是平行于立方体的一侧
我的剪报
#version 120
varying vec3 ourColor;
varying float clip_distance;
void main()
{
if ( clip_distance < 0.0 )
discard;
gl_FragColor = vec4(ourColor, 1.0);
}
#version 120
attribute vec3 aPos;
attribute vec3 aColor;
varying vec3 ourColor;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
varying float clip_distance;
const vec4 clipPlane = vec4(1.0, 1.0, 1.0, -1.0);
void main()
{
gl_Position = projection * view * model * vec4(aPos, 1.0);
clip_distance = dot(gl_Position, clipPlane);
ourColor = aColor;
}
那么,如何计算这个裁剪平面。我想了解如何计算立方体每个边的裁剪平面
假设您的输入顶点描述 (0,0,0) -> (1,1,1) 立方体,您可以使用顶点着色器顶部的一行来解决此问题:
aPos = clamp(aPos, vec3(clipMinX, clipMinY, clipMinZ),
vec3(clipMaxX, clipMaxY, clipMaxZ));
哪里的clip{Min,Max}*
变量是裁剪立方体的轴对齐距离。
例如,aPos = clamp(aPos, vec3(0,0,0), vec3(1,0.5,1))
将切割立方体的上半部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)