2010-02-25 1 views
0

У меня есть 3D-модель, состоящая из треугольников. Я хочу сделать это, учитывая точку рядом с моделью, я хотел бы покрасить модель (треугольники) на другой цвет, например синий.Как мне динамически покрасить/текстурировать 3D-объект?

Прямо сейчас, у меня есть ограниченная сфера относительно модели, и когда происходит столкновение, я просто хочу приблизительно окрасить части модели, откуда произошло столкновение.

Может кто-нибудь, пожалуйста, предложите мне то, что я могу использовать и сделать это?

Благодаря

ответ

1

Если имеется только один или небольшое количество точек для тестирования на самом быстрых к визуализации метода, вероятно, будет писать шейдер в GLSL, которые условно модифицирует фрагмент цвета, основанный на мировом пространстве расстояние до вашей точки (ов).

Альтернативой, которая может быть проще, если вы никогда не выполняли программирование GLSL, было бы использовать массивы вершин и поддерживать карту из ваших треугольных вершин для координации индексирования вершинных массивов; то вы можете взять любые вершины, запускающие тест столкновения, и вручную изменить связанные с ними цветовые данные на каждом кадре.

+0

@Ben: Я не уверен, какие или какие пункты вы имеете в виду в «Если у вас есть только одно или несколько очков для тестирования против»? Я знаком с GLSL (хотя мой опыт программирования очень ограничен), но если его что-то нужно сделать ... сделайте это! О второй альтернативе, я подумал то же самое. Я использую VBO на данный момент. Итак, если я хочу покрасить вершину, я должен получить данные, изменить цвет и отправить его обратно. Теперь, когда я представляю, что это случается снова и снова для каждого выстрела, я думал, что это будет ужасно медленно и может не сработать. Как вы думаете? – brainydexter

+0

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

Смежные вопросы