singlepost

Воксельная графика << На главную или назад  

Товарищи, подкиньте какой-нибудь исходник по теме, на основе которого можно свой воксельный пейзаж организовать. Информации что-то мало по этому делу очень, а исходников вобще не нашел.

43 ответов в теме “Воксельная графика”

  1. 3
    Артём Шалхаков ответил:

    Исходник давать не буду, но идею постараюсь объяснить.

    Пусть есть карта высот (или даже 3D grid) и камера. Из камеры можно "бросать" лучи (raycasting) и искать пересечение каждого луча с картой высот (ведь именно точку пересечения и будем визуализировать).

    Камера задает "видимый объем" (view frustum, за перевод сорри, по-русски не находил), то есть видимую область сцены (scene, место действия, короче).

    Так как экран монитора у нас — прямоугольник, то и видимый объем будет "вытянутым" прямоугольником (усеченная пирамида, на самом деле: задней/дальней плоскостью (back/far plane) называется основание, а передней/ближней (front/near plane) — параллельное основанию сечение). На передней плоскости мы рисуем — ее как раз и "совмещаем" с прямоугольником экрана, а задняя находится где-то далеко-далеко.

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

    После нахождения точки пересечения можно рассчитывать затенение (shading), которое зависит от источников света в сцене. Результирующий цвет и будет цветом пикселя (можно к нему еще добавить постобработку/post-effects).

    Рейкастинг можно значительно упростить/ускорить, если ограничить свободу камеры (запретить повороты вверх-вниз и по оси, проходящей через центр экрана и перпендикулярной к ближней плоскости). Алгоритм называется "wave surfing", именно он использовался в старых играх.

    Есть другой способ: растеризация. Это когда карту высот превращают в 3D-модель с полигончиками, применяют LOD или еще что, и скармливают Direct3D/OpenGL.

    А теперь — в гугл! :)

  2. 2
    Дмитрий Соколов ответил:

    Зайди на steps3d.narod.ru

  3. 1
    Павел Тюфягин ответил:

    читай апрельскую "Игроманию" = )

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.