Морфинг сфера OpenGL - PullRequest
       24

Морфинг сфера OpenGL

0 голосов
/ 25 февраля 2012

Это о том, как создать нерегулярную сферу OpenGL.Я искал в Интернете, но все документы рассказывают, как создать регулярную сферу.

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

Я не могу придумать реальный способ сделать этот вид симуляции.Должен ли я изменить положение вершины сенсорной части?Или я могу использовать шейдер для реализации этого эффекта?

В то же время, я не знаю, как реально имитировать вогнутость, есть ли математическая процедура для описания такого процесса?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 февраля 2012

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

Оттуда есть несколько способов сделать это. Один из способов, который я мог бы придумать, - это создать граф, в котором каждый узел индексируется в вершине вашей сетки, и каждый узел содержит ссылки на своих соседей. Затем, когда вершина нажата, она может «втянуть» в нее своих соседей. Дешевым способом было бы просто переместить нажатую вершину и затем потянуть соседей к новой позиции, сохраняя исходное расстояние (очень простая векторная математика). Затем повторите для тех соседей, пока расстояние, на которое протягивается каждый сосед, не достигнет достаточно малого порога.

После завершения сетку, скорее всего, придется перезагружать в GPU.

1 голос
/ 25 февраля 2012

Когда я изменяю объект, я просто использую анимацию от начальной вершины до конечной вершины. Анимация может иметь около 200 кадров или около того. Я не уверен, как я могу рассчитать шаги от начальной вершины до конечной вершины. Может быть, есть какая-то тригономическая функция? В вашем примере я бы создал сферу с кнопкой и использовал ее в качестве целевого кадра. Я не уверен, как шейдер может помочь вам здесь.

...