По суті, те, про що ви говорите, - це пошук речей, і існує ряд ігор, які роблять це різними способами.
Ймовірно, першим було Jet Set Radio (випущене на заході як "Jet Grind Radio"). Вийшов лише через місяць-два після цього була гра, для якої я розробив подібну техніку візуалізації: Looney Tunes: Space Race . (На космічній гонці ми зробили все можливе, щоб зберегти рівномірну товщину лінії, тоді як Jet Set Radio зробив нерівні ширини лінії великою частиною свого візуального стилю).
Обидві ці ігри працювали однаково; для кожного окресленого об'єкта намалюйте об'єкт двічі. По-перше, візуалізуйте її із зворотним зворотним зв'язком із застосованим натисканням вершини (тобто перемістіть кожну вершину на деяку відстань уздовж її звичайного вектора), і в будь-якому кольорі ви хочете, щоб вони виглядали 'рядками'. Потім малюйте ще раз, без вершинного поштовху та з нормальною зворотною обробкою. Ця пара операцій дає вам кольоровий обрис силуету навколо об'єкта, і це все, що використовували ці перші дві ігри. У космічній гонці я підтримував ілюзію постійної ширини лінії, натискаючи вершини на різну відстань, виходячи з того, наскільки далеко об’єкт знаходився від камери. У радіо Jet Set вони цього не зробили (це призвело до того, що лінії стали більшими чи меншими, оскільки об’єкти рухалися ближче чи далі від камери)
У NVidia та ATI є кілька демонстраційних варіантів інших способів досягнення цього ефекту, в основному вони обертаються навколо піксельних шейдерів, шукаючи нормалі, які перпендикулярні вектору камери-пікселя для кожного пікселя, але всі вони потребують сіток з дуже високою роздільною здатністю і створюють непослідовні ширини лінії на практиці. Я не знаю, чи використовує якісь ігри справді такий підхід; Я не думаю, що я бачив будь-які, схожі на зразки цих компаній.
Я також вкажу на Lair 3D Dragon - це єдина гра, про яку я знаю, яка, здається, справді робить це належним чином; взяття крапкового добутку від камери до багатокутника та норми полігону для кожного багатокутника в моделі, щоб побачити, чи кожний багатокутник звернена до камери або від неї, а потім перевірка всіх пар підключених багатокутників; якщо будь-яка пара багатокутників ділиться ребром, і один багатокутник стикається з камерою, а один багатокутник ні, то він намалює тонку лінію постійної ширини уздовж цього краю в просторі екрану. (Я не міг зробити цю роботу досить швидко на Dreamcast для космічної гонки, або я б її використав. Сьогодні на сучасних комп’ютерах це абсолютно так, як я б намагався досягти цього ефекту, навіть якщо це "
Lair 3D Dragon - це також єдина гра, про яку я знаю, яка насправді малює лінії між областями різного кольору або при нормальних вершинах розривів, навіть якщо там не знайдеться край силуету. Я підозрюю, що у них був користувальницький інструмент, який дозволяв їхнім художникам призначати ребра полігону завжди отримувати лінію.
Окамі , про який вже згадували деякі інші люди, схоже, використовує подвійний підхід на вершину та натискання, подібний до радіо Jet Set і космічної гонки, але також використовує текстури, побудовані за допомогою художнього стилю з матовим малюнком. (Пагорби на відстані, наприклад, малюються як мазки пензлем у текстуру, яка намальована як стандартний квадратик). Окамі прекрасний, але я не думаю, що це дійсно стосується технологій, про які ви питаєте; Звичайно, для його ефекту використовується старший підхід.
Тепер у вашому випадку ви просите зробити це без заливки кольором, просто намалюйте світ лише лініями. Це легко зробити; просто намалюйте всі багатокутники без освітлення, і в одному постійному кольорі, який відповідає кольорові фону. Будь-який із цих підходів повинен працювати, використовуючи цей підхід, не змінюючи свого ігрового двигуна. Важливо насправді намалювати ті полігони "того ж кольору, що і фон", оскільки вони не дозволять фоновим краям відображатись через об'єкти переднього плану, які дуже швидко можуть заплутатися.