У меня есть 3d-коробка, нарисованная в opengl, может кто-нибудь объяснить, как выдавить объекты в opengl? я просто переводил еще дальше по оси z для каждого окна?Экструзия объекта Opengl
ответ
Этот подход может работать, но вам нужно сделать несколько расчетов о том, сколько нужно перевести для каждого шага. Тем не менее, я бы рекомендовал создать экструдированную геометрию.
Например, вы не должны нарисовать крышки ящиков (пол и потолок) для промежуточных коробок. Вы также должны убедиться, что стороны касаются идеально или вы получите артефакты.
Я рекомендую использовать путь для определения плоскостей, где идет каждый набор вершин. Путь должен состоять из серии точек и вектора ориентации для каждой точки, который определяет, сколько вращать вокруг вектора направления. При этом вы можете легко вычислить 4 кольцевые вершины, просто используя базовую векторную математику.
Так, например, вы начинаете с колпачка [(0,5,0,5,0), (- 0,5,0,5,0), (- 0,5, -0,5,0), (0,5, -0,5,0) ] и перемещать его по пути (сначала - центральная точка, второй - правый вектор) [(0,0,0), (1,0,0)], [(0,5,10), (1,1, 0)], [(10,5,12), (0,1,0)]
Теперь вы сначала вычислите все три вектора ориентации. Нормаль - это разность между текущей и следующей точкой, поэтому (0,5,10) - (0,0,0) = (0,5,10). Правый вектор должен проецироваться на плоскость, определяемую нормалью, поэтому сначала вычисляем вектор вверх с использованием поперечного произведения: (0,5,10) x (1,0,0) = (0,10, -5) , И в качестве последнего шага мы вычисляем проецируемый правый вектор, являющийся поперечным продуктом между нормальным и вверх: (0,5,10) x (-2,4, -2) = (-125,0,0). Все три вектора должны быть нормализованы тогда, и если вы поставите их бок о бок, вы получите хорошую матрицу преобразования, примененные к кепке векторов, получая 4 вершин для текущего шага:
|-1 0 0 | |0.5| |-0.5 | | 0 0.894427 0.447214| * |0.5| = | 0.447213| etc. | 0 -0.447214 0.894427| |0 | | 0.223607|
(I «Вероятно, вы немного поменялись знаками, вам, возможно, придется поменять коэффициенты перекрестного продукта, чтобы получить правильные результаты)
Затем вы повторяете ту же процедуру для каждого шага по пути и каждый раз нарисуйте 4 кольцевые квадроциклы ,
как выдавливать объекты в OpenGL
Вы не делаете. OpenGL - это API-интерфейс чертежа, а не библиотека обработки геометрии. Посмотрите на такие библиотеки, как GTS http://gts.sourceforge.net/
- 1. OpenGL Geometry Экструзия с геометрией Shader
- 2. OpenGL - Локальное вращение объекта
- 3. Вращение объекта OpenGL
- 4. Удаление объекта в OpenGL
- 5. искажение объекта OpenGL
- 6. Происхождение объекта в openGL
- 7. Изменение объекта в OpenGL
- 8. Объект объекта OpenGL gluUnProject
- 9. OpenGL свет с поворотом объекта
- 10. OpenGL Вращение объекта вокруг строки
- 11. OpenGL: копирование объекта буфера кадра
- 12. Android OpenGL перемещения объекта Ontouch
- 13. opengl camera вращение вокруг объекта
- 14. Java openGL - рисование 3D-объекта
- 15. Поворот объекта 2D нарисованный OpenGL
- 16. Выбор объекта в opengl es
- 17. OpenGL - текстурирующее отображение 3D-объекта
- 18. Вращение оси объекта в OpenGL
- 19. iPhone OpenGL: обнаружение вращения объекта
- 20. Изменить размер объекта в OpenGL
- 21. OpenGL Vertex Array Использование объекта
- 22. Внутренние работы объекта буфера OpenGL?
- 23. Изменение вида объекта в OpenGL
- 24. Android openGL es 2.0 ошибка касания объекта и объекта ... clueless
- 25. Автоматическое связывание в обертке объекта OpenGL
- 26. Как увеличить площадь объекта в OpenGL
- 27. Приложение OpenGL исчезает при текстурировании объекта
- 28. OpenGL альфа-смешивание внутри прозрачного объекта
- 29. Изменение переменных объекта в Java OpenGL
- 30. iOS: OpenGL 2.0 ES перемещается вокруг объекта
Это не проблема OpenGL. Вы используете OpenGL только для рисования. Вам придется писать любые операции над своей геометрией самостоятельно. – Bart