Сфера без заливки в 3D графике - PullRequest
1 голос
/ 30 августа 2011

Я хочу нарисовать куб и такие кружки (сфера без заливки). Я использую OpenTK

http://farm7.static.flickr.com/6074/6097051938_cb0b798ce0_z.jpg

У меня была проблема, как показано ниже: Я пытаюсь нарисовать круг в верхней части куба. Но когда мы вращаем Oy куб и круг, круг становится эллипсом.

Я пытаюсь нарисовать сферу вместо круга. Но не могу сделать так, как на картинке выше. У кого-нибудь есть решение? Заранее спасибо!

А это моё http://farm7.static.flickr.com/6061/6096573967_22d56b2c2a_z.jpg

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Нарисуйте круг, который всегда обращен к камере, нарисовать круг легко.Просто создайте кольцо вершин и используйте GL_LINE_STRIP, чтобы нарисовать его.Создание матрицы преобразования, которая всегда смотрит на камеру, немного сложнее.Вот код, который делает это.Просто установите его в качестве матрицы мира.

Matrix4 createBillbordMatrix(Vector3 position, Vector3 cameraPosition, vector3 up)
{
   Vector3 Z = Vector3.Normalize(direction - cameraPosition);
   Vector3 X = Vector3.Normalize(Vector3.Cross(up, Zaxis));
   Vector3 Y = Vector3.Cross(ZAxis, XAxis);
   Vector3 T = cameraPosition;

   return new Matrix4(X.X, X.Y, X.Z, 0,
                      Y.X, Y.Y, Y.Z, 0,
                      Z.X, Z.Y, Z.Z, 0, 
                      T.X, T.Y, T.Z, 1);  
}

Если вы знаете, как работают матрицы, вы сможете понять, как они работают;В противном случае не беспокойтесь об этом, у вас не должно возникнуть проблем с его реализацией.

0 голосов
/ 01 сентября 2011

Нарисуйте круг на 2D плоскости.

Используйте специальное 2D-преобразование, и, поскольку это всего лишь рендеринг в виде проволочной сетки и все одного цвета, вы можете нарисовать 2D-часть последней.

Итак:

1. Draw the 3D part

2. Transform the corners to the 2D coords

3. Draw the circles.

Я предполагаю, что вы хотите, чтобы круги имели постоянную форму и размер, независимо от вращения куба.

Это может помочь вам начать: http://www.opentk.com/node/2478

Это будет намного быстрее, чем попытка позволить ему нарисовать сферу, даже не заштрихованную.

...