Javascript webgl相机俯视图剪裁我的3d圆柱体
这与我的另一篇关于丢失三角形的文章有关,因为它是同一个作业,但是一个不同的问题。我试图在webgl中绘制一个3d圆柱体形状,其中顶部比底部薄。气缸也没有盖。圆柱体是使用三角形作为边绘制的,以十二边形(12边)作为圆。这个问题是与鸟瞰相机 正如您在上一张图片中所看到的,圆柱体的外边缘被切断。我问过助教,他说这是因为我在setOrtho和setLookAt函数中没有使用足够大的值。圆柱体的顶点在x、y和z坐标中最多为1,至少为-1,这意味着圆柱体的长度为2,我假设。即使我的setOrtho函数参数增加到了10,我仍然看不到输出有什么不同Javascript webgl相机俯视图剪裁我的3d圆柱体,javascript,camera,webgl,Javascript,Camera,Webgl,这与我的另一篇关于丢失三角形的文章有关,因为它是同一个作业,但是一个不同的问题。我试图在webgl中绘制一个3d圆柱体形状,其中顶部比底部薄。气缸也没有盖。圆柱体是使用三角形作为边绘制的,以十二边形(12边)作为圆。这个问题是与鸟瞰相机 正如您在上一张图片中所看到的,圆柱体的外边缘被切断。我问过助教,他说这是因为我在setOrtho和setLookAt函数中没有使用足够大的值。圆柱体的顶点在x、y和z坐标中最多为1,至少为-1,这意味着圆柱体的长度为2,我假设。即使我的setOrtho函数参
var g_near=-10,g_far=10;
//指定查看卷
mvpMatrix.setOrtho(-10,10,-10,10,g_近,g_远);
//设置视点和观看音量
setLookAt(0,1,0,0,-1,0,0,0,0,1);
我的顶点:
var vertices = new Float32Array([ // Vertex coordinates indicies
0.0, 1.0, 0.5, -0.25, 1.0, 0.433, -0.433, 1.0, 0.25, -0.5, 1.0, 0.0, // u0- u1- u2- u3 up 0, 1, 2, 3,
-0.433, 1.0, -0.25, -0.25, 1.0,-0.433, 0.0, 1.0, -0.5, 0.25, 1.0,-0.433, // u4- u5- u6- u7 up 4, 5, 6, 7,
0.433, 1.0, -0.25, 0.5, 1.0, 0.0, 0.433, 1.0, 0.25, 0.25, 1.0, 0.433, // u8- u9- u10-u11 up 8, 9,10,11,
0.0, 1.0, 0.5, // u12 up middle 12,
0.0, 1.0, 0.5, -0.25, -1.0, 0.433, -0.5, -1.0, 0.866, 0.0, -1.0, 1.0, // u0- u1- d1- d0 13,14,15,16,
-0.25, 1.0, 0.433, -0.433, 1.0, 0.25, -0.866, -1.0, 0.5, -0.5, -1.0, 0.866, // u1- u2- d2- d1 17,18,19,20,
-0.433, 1.0, 0.25, -0.5, 1.0, 0.0, -1.0, -1.0, 0.0, -0.866, -1.0, 0.5, // u2- u3- d3- d2 21,22,23,24,
-0.5, 1.0, 0.0, -0.433, 1.0, -0.25, -0.866, -1.0, -0.5, -1.0, -1.0, 0.0, // u3- u4- d4- d3 25,26,27,28,
-0.433, 1.0, -0.25, -0.25, 1.0,-0.433, -0.5, -1.0,-0.866, -0.866, -1.0, -0.5, // u4- u5- d5- d4 29,30,31,32,
-0.25, 1.0,-0.433, 0.0, 1.0, -0.5, 0.0, -1.0, -1.0, -0.5, -1.0,-0.866, // u5- u6- d6- d5 33,34,35,36,
0.0, 1.0, -0.5, 0.25, 1.0,-0.433, 0.5, -1.0,-0.866, 0.0, -1.0, -1.0, // u6- u7- d7- d6 37,38,39,40,
0.25, 1.0,-0.433, 0.433, 1.0, -0.25, 0.866, -1.0, -0.5, 0.5, -1.0,-0.866, // u7- u8- d8- d7 41,42,43,44,
0.433, 1.0, -0.25, 0.5, 1.0, 0.0, 1.0, -1.0, 0.0, 0.866, -1.0, -0.5, // u8- u9- d9- d8 45,46,47,48,
0.5, 1.0, 0.0, 0.433, 1.0, 0.25, 0.866, -1.0, 0.5, 1.0, -1.0, 0.0, // u9- u10-d10-d9 49,50,51,52,
0.433, 1.0, 0.25, 0.25, 1.0, 0.433, 0.5, -1.0, 0.866, 0.866, -1.0, 0.5, // u10-u11-d11-d10 53,54,55,56,
0.25, 1.0, 0.433, 0.0, 1.0, 0.5, 0.0, -1.0, 1.0, 0.5, -1.0, 0.866, // u11-u0- d0- d11 57,58,59,60,
0.0, -1.0, 1.0, -0.5, -1.0, 0.866, -0.866, -1.0, 0.5, -1.0, -1.0, 0.0, // d0- d1- d2- d3 down 61,62,63,64,
-0.866, -1.0, -0.5, -0.5, -1.0,-0.866, 0.0, -1.0, -1.0, 0.5, -1.0,-0.866, // d4- d5- d6- d7 down 65,66,67,68,
0.866, -1.0, -0.5, 1.0, -1.0, 0.0, 0.866, -1.0, 0.5, 0.5, -1.0, 0.866, // d8- d9- d10-d11 down 69,70,71,72,
0.0, 1.0, 0.5, // d12 down middle 73,
]);
你缩放模型了吗?如果圆柱体未缩放,则其长度为2。如果你的比例是10.0,那么它的长度是20。我不认为模型是缩放的。那么为什么模型要用一个从(-10,-10)到(10,10)的正交投影填充整个显示呢?你确定设置了投影矩阵吗?我真的不知道投影矩阵是什么,但我在我的代码中发现了这一点,它来自我在当前显示圆柱体的程序中修改的一个示例。此代码段的注释是:“将模型视图投影矩阵传递给u_MvpMatrix”
gl.uniformMatrix4fv(u_MvpMatrix,false,MvpMatrix.elements)代码>我想出来了。问题是我只使用了一个矩阵,而我本应该使用2,并将setOrth和setLookAt分配给差分矩阵