|
3D-программирование Вопросы, касающиеся программирования 3D мира |
14.03.2010, 14:12
|
#1
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Позиция спрайта относительно координат экрана
Скажите пожалуйста. Можно ли как-то размещать спрайты исспользуя координаты экрана? Например что бы спрайт рисовался на удалении 10 пунктов от камеры и его центр был бы расположен как бы в координатах например х-500 и у-600 экрана?
Просто делаю меню боя аля FF8, drawimage не подходит так как меню должна быть одного и того же размера и в одном и том же месте независимо от разрешения, а при скейлинге изображения маска ломается, некоторые пиксели маски слегка меняют цвет и становятся видемы.( Или может можно как-то избежать искажения маски при растягивании и уменьшении изображения?
|
(Offline)
|
|
14.03.2010, 14:45
|
#2
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
Может стоит использовать FastImage?
|
(Offline)
|
|
14.03.2010, 14:57
|
#3
|
Разработчик
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений (для 329 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
нужно разместить спрайт на расстояние 1 от камеры и отмасштабировать в зависимости от соотношения разрешения
__________________
299 792 458
|
(Offline)
|
|
14.03.2010, 14:59
|
#4
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
;Функция создает квад под размер экрана
;параметры: сурфейс, зум камеры, фокусное расстояние до квада
Function CreateCamQuad(surf%, zoom# = 1.0, near# = 1.0)
Local xscr%, yscr%, xcnt%, ycnt%, xpos#, ypos#, i%[4]
;размеры экрана
xscr = GraphicsWidth()
yscr = GraphicsHeight()
;координаты центра экрана
xcnt = xscr Shr 1
ycnt = yscr Shr 1
;проекция левого верхнего угла
xpos = ( 0 - xcnt) * near / +zoom / xcnt
ypos = ( 0 - ycnt) * near / -zoom / xcnt
i[0] = AddVertex(surf, xpos, ypos, 0.0, 0.0, 0.0)
;проекция правого верхнего угла
xpos = (xscr - xcnt) * near / +zoom / xcnt
ypos = ( 0 - ycnt) * near / -zoom / xcnt
i[1] = AddVertex(surf, xpos, ypos, 0.0, 0.0, 0.0)
;проекция правого нижнего угла
xpos = (xscr - xcnt) * near / +zoom / xcnt
ypos = (yscr - ycnt) * near / -zoom / xcnt
i[2] = AddVertex(surf, xpos, ypos, 0.0, 0.0, 0.0)
;проекция левого нижнего угла
xpos = ( 0 - xcnt) * near / +zoom / xcnt
ypos = (yscr - ycnt) * near / -zoom / xcnt
i[3] = AddVertex(surf, xpos, ypos, 0.0, 0.0, 0.0)
AddTriangle(surf, i[0], i[1], i[2])
AddTriangle(surf, i[2], i[3], i[0])
Return i[0]
End Function
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.03.2010, 15:00
|
#5
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Позиция спрайта относительно координат экрана
У мня понимаешь как, надо что бы при выборе пункта например "Предметы" вырисовывались спрайты в столбец на экране в зависимости от того какие есть предметы. Не очень хочется исспользовать десятые доли процента от высоты экрана длёные ещё на что-то и на это что-то сдвигать по у новый спрайт, помоему это лишняя нагрузка. А исспользовать платную либу из-за одной менюшки в боевой сцене тоже как-то не хочется. Других вариантов нет никаких? Если нет - буду делать спрайты с долями от экрана.
|
(Offline)
|
|
14.03.2010, 16:53
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
Других вариантов на чистом блице нет, т.к. в нём нет органов управления мешами без трансформации.
Поэтому либо так, через зад, либо использовать либы-врапперы DrawIndexedPrimitive, например, FastImage.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
15.03.2010, 08:37
|
#7
|
ПроЭктировщик
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений (для 53 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
Думаю всетаки можно написать функцию по отрисовке...Но легче использовать тот же FastImage..
вот так можно отрисовать спрайт на весь экран независимо от разрешения
на расстоянии (pos#) равное 10.0
pos#=10.0
s=createsprite()
positionentity s,0,0,pos#
scalesprite s,pos#,pos#
|
(Offline)
|
|
15.03.2010, 16:19
|
#8
|
ПроЭктировщик
Регистрация: 16.04.2008
Сообщений: 161
Написано 36 полезных сообщений (для 63 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
Гдето была "библа" Engine2d или как то так ,
Alpha поворот и тд
бесплатна
кому будет интересно могу поискать
__________________
форум эт вещь... и почему я раньше им не пользовался?
AMD Phenom(tm) II X6 3.20GHz 8GB GTX 550(1Gb)
|
(Offline)
|
|
15.03.2010, 21:01
|
#9
|
Бывалый
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений (для 832 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
юзай тогда Draw3d - немецкий аналог Fastimage (написан на чистом блиц + бесплатность), ссылку я где-то здесь уже выкладывал...
|
(Offline)
|
|
15.03.2010, 21:16
|
#10
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
Через чистый блиц - это "трансформация обратно", что, имхо, некошерно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
23.03.2010, 06:07
|
#11
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,358
Написано 2,472 полезных сообщений (для 6,854 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
23.03.2010, 12:08
|
#12
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Позиция спрайта относительно координат экрана
лучше Draw3D (после FastImage) не найти) Пользуйтесь ею)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:28.
|