Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 06.08.2012, 20:29   #1
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Затекстурированный многоугольник

С-но столкнулся с задачей текстурирования многоугольника. Многоугольник замкнутый, любой формы. Есть рисунок, который требуется наложить на многоугольник. Задается точка на рисунке, откуда начинается текстурирование. Далее фактически с этой точки из рисунка вырезается область и накладывается на многоугольник. Пока не вижу, как это реализовать. Есть мысли копировать каждый пиксель из рисунка и отрисовывать его в многоугольнике. Но тогда нужно получить список всех пикселей, находящихся внутри фигуры... может кто уже сталкивался с подобной задачей?
(Offline)
 
Ответить с цитированием
Старый 06.08.2012, 20:42   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,407
Написано 5,238 полезных сообщений
(для 15,163 пользователей)
Ответ: Затекстурированный многоугольник

Нарисуй схему, так не очень понятно, что ты хочешь.
(Offline)
 
Ответить с цитированием
Старый 06.08.2012, 21:03   #3
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Затекстурированный многоугольник

Сообщение от ABTOMAT Посмотреть сообщение
Нарисуй схему, так не очень понятно, что ты хочешь.
https://docs.google.com/file/d/0B7bP...nMtVmFURjZheUE
(Offline)
 
Ответить с цитированием
Старый 06.08.2012, 21:12   #4
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: Затекстурированный многоугольник

делаешь сетку многоугольника.
задаешь текстурные координаты вершинам.
рисуешь ее с нужной текстурой.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (06.08.2012)
Старый 06.08.2012, 21:22   #5
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Затекстурированный многоугольник

Сообщение от HolyDel Посмотреть сообщение
делаешь сетку многоугольника.
задаешь текстурные координаты вершинам.
рисуешь ее с нужной текстурой.
а можно поподробнее про текстурные координаты? И у меня программа 2D, т.е. использовать TextureCoords не получится
(Offline)
 
Ответить с цитированием
Старый 06.08.2012, 21:32   #6
HolyDel
 
Регистрация: 25.09.2006
Сообщений: 6,030
Написано 1,469 полезных сообщений
(для 2,690 пользователей)
Ответ: Затекстурированный многоугольник

ты можешь создать ортографическую камеру и рисовать в 3д как в 2д.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (06.08.2012)
Старый 06.08.2012, 22:19   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,407
Написано 5,238 полезных сообщений
(для 15,163 пользователей)
Ответ: Затекстурированный многоугольник

Вообще в 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 заранее и тогда это будет не так медленно.

Как делать - решать тебе.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Eugenes (07.08.2012), St_AnGer (07.08.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 02:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com