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=1259)

New 07.08.2006 15:09

Декали (дыры от пуль, кровь...)
 
Здарова!!! Вот уже где то 2 месяца у меня это проблема! Уже несколько раз на форумах была эта тема, но я так и непонял двух вещей!
1) Если рисовать декаль (дырку от пули) на текстуре, то как сделать что бы она не ресовалась по 100 раз, т.е. только единожды когда текстура повтаряется!
2) Если делать спрайтами (т.е. определять то место где колизит пуля со стеной и там создавать спрайт...), то как сделать что бы та часть спрайта каторая свисает не рисовалась (т.е. допустим когда в край стены стреляешь....)

Пожалуйста помогите!!! :dontknow: Если кто-то вопроса непонял, я попробую обьяснить еще раз. Спасибо!!!

SubZer0 07.08.2006 15:28

Re: Декали (дыры от пуль, кровь...)
 
хммм... насколько я помню текстуры там можно накладывать в разные слои... затекстурировать объект... и наложить в другой слой большую текстуру, чтоб она не повторялась и на ней рисовать дырки... (поправьте меня если я в чем ошибся)

(как вариант замутить неповторяющююся текстуру...)

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

:)

New 07.08.2006 15:50

Re: Декали (дыры от пуль, кровь...)
 
SubZero Сасибо тебе конечно!!! Но ты можешь обьяснить поподробнее про текстуру??? :SOS: Немнога непонял. А спрайты я небуду нарное юзать так как тормозовая штука )))

New 07.08.2006 15:53

Re: Декали (дыры от пуль, кровь...)
 
SubZero P.S. а как сделать что бы текстура (2-ая) не повторялась, и как воопще применять это к *b3d мешам? (ScaleTexture texture,TextureWidht(),TextureHeight()????

impersonalis 07.08.2006 16:11

Re: Декали (дыры от пуль, кровь...)
 
Декали всегда делались спрайтами.
Делай меньше размер спрайта. Незабывай его выранивать по нормали колиизии + минмальный сдвиг вперёд

New 07.08.2006 18:58

Re: Декали (дыры от пуль, кровь...)
 
Цитата:

декали всегда делались спрайтами
а как же тогда боротся с тем что бы они не свисали при попадании в край стены? метод сетки мне ненравится, очень памяти надо много!

tormoz 07.08.2006 19:17

Re: Декали (дыры от пуль, кровь...)
 
1 вариант - делаешь унврап развертку на 2 слой уровня, накладываешь пустую текстуру с тщательно подогнанными координатами (очень сложно, но теоретически реально) потом рисуешь в эту текстуру (расчитав предварительно в какое место рисовать)
Преимущества - следы будут на любом месте уровня, независимо от углов и тд.
Недостатки - очень трудоемко и сложно реализовать

2 вариант: созаешь 100 - 200 квадов с наложенной текстурой декали в составе одного меша. При попадании, изменением координат вершин квада ставишь его в нужное место , а изменением альфы вертексов - проявляешь.
При превышении количества "заготовок", просто берешь переставляешь самый первый.
Для проверки выхода за угол можно написать спец функцию и сдвигать квад. чтобы не вылазил.
Преимущества - хорошее быстродействие (всего 400-500 треугольников), легкость реализации.
Недостатки - некоторая "неточность" следов, одинаковый внешний вид

New 08.08.2006 00:23

Re: Декали (дыры от пуль, кровь...)
 
tormaz спасибо за инфо, но ПОЖАЛУЙСТА скажите мне, КАКОЙ ЛУЧШЕ СПОСОБ? Какой способ менее тормозной а какой более производительней!!! Что бы я точно знал над чем мудится!:''((

New 08.08.2006 00:25

Re: Декали (дыры от пуль, кровь...)
 
tormoz а помойму в халфе первом чтото подобное да?!

tormoz 08.08.2006 02:55

Re: Декали (дыры от пуль, кровь...)
 
В шуттерах как правило используют первый способ.
Нужен уровень. смоделенный по определенным правилам (только не спрашивайте - каким, я так этот саособ до ума и не довел, моделить не умею настолько хорошо)
Использовал второй - шустро бегает.
Функция определения "края" объекта - самое сложное тут.

New 08.08.2006 07:43

Re: Декали (дыры от пуль, кровь...)
 
Блин, юзаю второй способ!!! че то невыходит!!!!! :wallbash: Квады ето я так понял плоский меш формы прямоугольника так? И куда их лепить, сразу в картостройке сделать? Мляяяя!!! :dontknow: tormoz если я тебе еще ненадоел, то можешь разжувать еще раз второй метод!!! Если можно то попроще! А то я воще дырявый блин, нех... недоганяю!!! А штука мине оч нужная, в бущем оч пригадится!!! Pleaseeeee!!!!!

P.S. Взаимно помогу всем кто поможет ( и помог) с Музыкой и Звуком для игр!!! (я Музыкант... )) ) Кому надо обращайтесь!!!

Diplomat 08.08.2006 12:13

Re: Декали (дыры от пуль, кровь...)
 
2Tormoz:
Цитата:

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

2New: Меш квадов создается в Блице повертексно.

New 08.08.2006 17:39

Re: Декали (дыры от пуль, кровь...)
 
Diplomat ну а как ето повертексно??!!! Это что, нужно делать меш (AddVertex, AddTriangle... и т.д.) в виде сетки и рааставлять там где может быть столкновение???!!! или как??!!! Если так то расставлять не сразу а когда произойдет столкновение в координатах CollX,CollY и т.д.??!!!?? Блин че то непойму!! :dontknow: тогдаже можно юзать терраин...!!
Или просто я непойму четакое квадра...!!!...

New 08.08.2006 17:46

Re: Декали (дыры от пуль, кровь...)
 
Вот нашел функцию создания квада:

Код:

Function CreateQuad()
    sprite=CreateMesh()
    he=CreateBrush(255,255,255)
    v=CreateSurface(sprite,he)
    FreeBrush he
    AddVertex ( v,-3,3,0,1,0)  ; top left 0,1;1,0
    AddVertex ( v,3,3,0,0,0)  ; top right 1,1;1,1
    AddVertex ( v,-3,-3,0,1,1) ; bottom left 0,0;,0,0
    AddVertex ( v,3,-3,0,0,1)  ; bottom right 1,0;0,1
    AddTriangle( v,0,1,2)
    AddTriangle( v,3,2,1)
    FlipMesh(sprite)
    HideEntity(sprite)
    Return sprite
End Function

... Что мне дальше с ней делать???

tormoz 08.08.2006 19:48

Re: Декали (дыры от пуль, кровь...)
 
Мдя.
Судя по всему тебе весь код писать придеться :)
Увы. нет времени.
Алгоритм тебе дали.
Объединяй все созданные квады в один меш. создавай тип в виртуальными квадами.
А потом высчитывай положение каждого вертекса.
Математика.


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

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