Затекстурированный многоугольник
С-но столкнулся с задачей текстурирования многоугольника. Многоугольник замкнутый, любой формы. Есть рисунок, который требуется наложить на многоугольник. Задается точка на рисунке, откуда начинается текстурирование. Далее фактически с этой точки из рисунка вырезается область и накладывается на многоугольник. Пока не вижу, как это реализовать. Есть мысли копировать каждый пиксель из рисунка и отрисовывать его в многоугольнике. Но тогда нужно получить список всех пикселей, находящихся внутри фигуры... может кто уже сталкивался с подобной задачей?
|
Ответ: Затекстурированный многоугольник
Нарисуй схему, так не очень понятно, что ты хочешь.
|
Ответ: Затекстурированный многоугольник
Цитата:
|
Ответ: Затекстурированный многоугольник
делаешь сетку многоугольника.
задаешь текстурные координаты вершинам. рисуешь ее с нужной текстурой. |
Ответ: Затекстурированный многоугольник
Цитата:
|
Ответ: Затекстурированный многоугольник
ты можешь создать ортографическую камеру и рисовать в 3д как в 2д.
|
Ответ: Затекстурированный многоугольник
Вообще в FastImage есть то, что тебе нужно, называется DrawPoly функция, ей можно сделать сразу же как тебе надо.
Правда, либа платная, так что безоговорочно её юзать не получится. Другой вариант - через ортографическую камеру, но там придётся извращаться с координатами, чтобы попасть в нужное место на экране. Понадобятся функции: CreateMesh - создаёшь entity AddSurface - создаёшь сурфейс AddVertex - создаёшь вершины многоугольника, где тебе надо, задавая им не только пространственные, но и текстурные координаты AddTriangle - на вершины сажаешь треугольники. Чтобы они были видны, вершины нужно задавать по часовой стрелке, если глядеть из камеры. LoadTexture - грузишь текстуру EntityTexture - сажаешь текстуру на твой многоугольник CreateCamera - создаёшь камеру CameraProjMode - делаешь её ортографической CameraClsMode - делаешь чтобы она при рендере рендерила прямо поверх нарисованного (по умолчагнию она перед рендером затирает буфер) PositionEntity - размещаешь камеру и многоугольник как тебе надо RotateEntity - вращаешь, если надо Текстурные координаты по такому принципу выставляются: Верхний левый край текстуры - это UV 0,0, нижний правый - 1,1, в принципе, всё логично. Правда, не знаю, захочешь ли ты извращаться камерой, имея только 1 вещь, которую надо ей рисовать, да ещё и совмещать с 2D. FastImage позволит сделать всё 1 функцией, указывая 2D-координаты экрана, но либа платная. Ну ещё можно упороться и отрисовать всё в 2D самому, по пикселям. Но во-первых, сложно и долго, во-вторых, работа с пикселами - дело тормозное, имей в виду. Но в принципе если у тебя многоугольник не будет меняться в процессе игры, то можно его отрисовать в Image заранее и тогда это будет не так медленно. Как делать - решать тебе. |
Часовой пояс GMT +4, время: 08:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot