Как я могу нарисовать контуры 3D-модели на iPhone? (OpenGL ES) - PullRequest
0 голосов
/ 28 августа 2009

У меня довольно простая ситуация, которая требует чего-то, что я не знаю, как обойтись без буфера трафарета (который не поддерживается на iPhone).

По сути, у меня есть 3D-модель, которая рисуется за изображением. Я хочу, чтобы контур этой модели всегда рисовался поверх нее. Поэтому, когда оно находится позади изображения, вы можете видеть его контур, а когда оно не за изображением, вы можете видеть модель с контуром.

Один из вариантов получения рабочего контура - нарисовать каркас модели с толстыми линиями и смещением по z, а затем нарисовать обычную модель поверх него. Проблема с этим, очевидно, в том, что мне нужно нарисовать контур после модели.

Этот метод должен быть быстрым, так как я уже перемещаю много полигонов - полное рисование модели тем или иным способом на самом деле нежелательно.

Кроме того, есть ли способ узнать, видна ли моя модель в данный момент? То есть, имеет ли изображение сверху непрозрачный участок в позиции модели или имеет прозрачный участок. Если я смогу это выяснить (опять же, очень быстро), то я могу просто нарисовать каркас вместо текстурированной модели, в зависимости от того, видна ли она.

Есть идеи здесь? Спасибо.

Ответы [ 3 ]

0 голосов
/ 29 августа 2009

Вот общая опция, которая может дать желаемый эффект (у меня есть опыт работы с OGL, но не с iPhone):

Метод 1

  1. Отображение объекта в текстуру как чистый белый, отдельно от сцены. Это создаст белую маску, в которой будет отображаться объект.

  2. Либо нарисуйте это прямо на экране с альфа-затуханием для «полного объекта», либо, если вы намерены наметить свои контуры, вы можете попробовать перевести ЭТУ текстуру в другую текстуру, слегка увеличенную, а затем визуализировать оригинал. «полный объект», затенение этой увеличенной текстуры как чистый черный. Это создаст своего рода структуру контура, которую вы можете визуализировать поверх сцены.

Метод 2

Редактировать. Просто прочитайте условие «без буфера для трафарета».

Это помогает?

0 голосов
/ 29 августа 2009

В большинстве случаев вы можете воссоздавать трафаретные эффекты, используя альфа-канал и рендер-текстуру, если вы об этом думаете ...

0 голосов
/ 28 августа 2009

http://research.microsoft.com/en-us/um/people/hoppe/proj/silmap/ Это технический документ по этому вопросу. Надеюсь, есть более простой способ сделать это;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...