forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Позиция спрайта относительно координат экрана (http://forum.boolean.name/showthread.php?t=12183)

battou 14.03.2010 14:12

Позиция спрайта относительно координат экрана
 
Скажите пожалуйста. Можно ли как-то размещать спрайты исспользуя координаты экрана? Например что бы спрайт рисовался на удалении 10 пунктов от камеры и его центр был бы расположен как бы в координатах например х-500 и у-600 экрана?

Просто делаю меню боя аля FF8, drawimage не подходит так как меню должна быть одного и того же размера и в одном и том же месте независимо от разрешения, а при скейлинге изображения маска ломается, некоторые пиксели маски слегка меняют цвет и становятся видемы.( Или может можно как-то избежать искажения маски при растягивании и уменьшении изображения?

Nex 14.03.2010 14:45

Ответ: Позиция спрайта относительно координат экрана
 
Может стоит использовать FastImage?

DeeJex 14.03.2010 14:57

Ответ: Позиция спрайта относительно координат экрана
 
нужно разместить спрайт на расстояние 1 от камеры и отмасштабировать в зависимости от соотношения разрешения

H@NON 14.03.2010 14:59

Ответ: Позиция спрайта относительно координат экрана
 
Код:

;Функция создает квад под размер экрана
;параметры: сурфейс, зум камеры, фокусное расстояние до квада
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


battou 14.03.2010 15:00

Re: Позиция спрайта относительно координат экрана
 
У мня понимаешь как, надо что бы при выборе пункта например "Предметы" вырисовывались спрайты в столбец на экране в зависимости от того какие есть предметы. Не очень хочется исспользовать десятые доли процента от высоты экрана длёные ещё на что-то и на это что-то сдвигать по у новый спрайт, помоему это лишняя нагрузка. А исспользовать платную либу из-за одной менюшки в боевой сцене тоже как-то не хочется. Других вариантов нет никаких? Если нет - буду делать спрайты с долями от экрана.

ABTOMAT 14.03.2010 16:53

Ответ: Позиция спрайта относительно координат экрана
 
Других вариантов на чистом блице нет, т.к. в нём нет органов управления мешами без трансформации.
Поэтому либо так, через зад, либо использовать либы-врапперы DrawIndexedPrimitive, например, FastImage.

SKA_DIMKA 15.03.2010 08:37

Ответ: Позиция спрайта относительно координат экрана
 
Думаю всетаки можно написать функцию по отрисовке...Но легче использовать тот же FastImage..

вот так можно отрисовать спрайт на весь экран независимо от разрешения
на расстоянии (pos#) равное 10.0


pos#=10.0
s=createsprite()
positionentity s,0,0,pos#
scalesprite s,pos#,pos#

Spy4433 15.03.2010 16:19

Ответ: Позиция спрайта относительно координат экрана
 
Гдето была "библа" Engine2d или как то так ,
Alpha поворот и тд
бесплатна :)
кому будет интересно могу поискать

L.D.M.T. 15.03.2010 21:01

Ответ: Позиция спрайта относительно координат экрана
 
юзай тогда Draw3d - немецкий аналог Fastimage (написан на чистом блиц + бесплатность), ссылку я где-то здесь уже выкладывал...

ABTOMAT 15.03.2010 21:16

Ответ: Позиция спрайта относительно координат экрана
 
Через чистый блиц - это "трансформация обратно", что, имхо, некошерно.

Randomize 23.03.2010 06:07

Ответ: Позиция спрайта относительно координат экрана
 
http://www.blitzbasic.com/Community/...hp?topic=75362
Тыц.
Есть ещё такие пироги:
http://homepage.ntlworld.com/config/...itecontrol.htm
Там есть все ответы на твои вопросы.

H@NON 23.03.2010 12:08

Ответ: Позиция спрайта относительно координат экрана
 
лучше Draw3D (после FastImage) не найти) Пользуйтесь ею)


Часовой пояс GMT +4, время: 21:25.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot