webgl камера вид сверху отсечение мой 3d цилиндр - PullRequest
0 голосов
/ 20 октября 2019

Это связано с моим другим постом о пропущенном треугольнике, потому что это то же самое задание, но другая проблема. Я пытаюсь нарисовать 3D-форму цилиндра в webgl, где верх тоньше, чем низ. Цилиндр также не имеет крышки. Цилиндр нарисован с использованием треугольников для сторон, с додекагоном (12 сторон) в качестве круга. Эта проблема связана с камерой с высоты птичьего полета.

https://imgur.com/a/ntgjrIa

Как видно на последнем рисунке, внешний край цилиндра обрезан. Я спросил об этом мою TA, и он сказал, что это из-за того, что я не использовал достаточно большие значения в моих функциях setOrtho и setLookAt. Вершины моего цилиндра не более 1 и не менее -1 в координатах x, y и z, что означает, что мой цилиндр имеет длину 2, я полагаю. Даже при том, что мои параметры функции setOrtho увеличились до 10, я все еще не вижу разницы в выводе.

var g_near = -10, g_far = 10;

  // Specify the viewing volume
  mvpMatrix.setOrtho(-10, 10, -10, 10, g_near, g_far);

  // Set the eye point and the viewing volume
  mvpMatrix.setLookAt(0, 1, 0, 0, -1, 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,
  ]);
...