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

Colossus 17.01.2012 03:36

Как сделать правильнее
 
делал на досуге "декали" дырок от попадания пуль в обьект, и столкнулся с проблемой - когда попадаешь в ребро модели так сказать, то спрайт как бы торчит из нее:


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

если кому не лень накатайте примерчик чтоли:)

заранее благодарен

ABTOMAT 17.01.2012 03:49

Ответ: Как сделать правильнее
 
По-хорошему деколь копирует часть поверхности, на которой лежит.
Так что тебе придётся брать треугольник, на который попала декаль и проверять, не выходит ли декаль за его пределы. Если выходит - обрезать.
Другой вариант - сразу копировать треугольники, которые "попадают" под деколь и обрезать их, формируя из них саму деколь.
Примерчик сложно и долго.

Ну естественно можно придумать и другие способы, менее качественные, но более простые :)

Colossus 17.01.2012 03:58

Ответ: Как сделать правильнее
 
вот мне желательно попроще бы ))

Crayzi 17.01.2012 09:08

Ответ: Как сделать правильнее
 
А пробовал попытатся на текстуре рисовать? Мож так проще... Это так, мысли вслух)

SBJoker 17.01.2012 11:07

Ответ: Как сделать правильнее
 
В Half-Life 2 декали рисовались так чтобы не попадать на изломы поверхности. Т.е. при стрельбе точно в угол здания деколь рисовалась на одной из сторон угла на расстоянии от угла так чтобы она сама не вылезала за стену. Если же места для размещения деколи недостаточно (например небольшая полоска стены между трубами) то там деколь не создаётся.

Вот так было сделано в одной из лучших игр, думайте сами надо ли вам делать деколи честнее.

Crayzi 17.01.2012 11:35

Ответ: Как сделать правильнее
 
Цитата:

Сообщение от SBJoker (Сообщение 217030)
В Half-Life 2 декали рисовались так чтобы не попадать на изломы поверхности. Т.е. при стрельбе точно в угол здания деколь рисовалась на одной из сторон угла на расстоянии от угла так чтобы она сама не вылезала за стену. Если же места для размещения деколи недостаточно (например небольшая полоска стены между трубами) то там деколь не создаётся.

Вот так было сделано в одной из лучших игр, думайте сами надо ли вам делать деколи честнее.

Я тоже думал посоветовать чтобы либо при попадении в угол не рисовал ничего, либо смещал туда где эффект поместится... только вот незнаю как такое реализовать, посему посоветовал нассчет текстур помутить ))

Colossus 17.01.2012 12:01

Ответ: Как сделать правильнее
 
тогда как узнать можно ли рисовать декаль или нельзя? тоесть как узнать как близко до "излома" чтобы было условие - рисовать\не рисовать декаль

ABTOMAT 17.01.2012 12:37

Ответ: Как сделать правильнее
 
Тоже хотел предложить, но
Цитата:

Сообщение от SBJoker (Сообщение 217030)
Т.е. при стрельбе точно в угол здания деколь рисовалась на одной из сторон угла на расстоянии от угла так чтобы она сама не вылезала за стену.

О, рилли? В самой лучшей игре делали как раз как положено.

Непосредственно Half-Life 2 на компе не оказалось, но в CS:S деколи точно такие же.
Кстати то, что ты говоришь, по-моему, было в Hlaf-Life 1

ABTOMAT 17.01.2012 12:42

Ответ: Как сделать правильнее
 
Цитата:

Сообщение от Colossus (Сообщение 217033)
тогда как узнать можно ли рисовать декаль или нельзя? тоесть как узнать как близко до "излома" чтобы было условие - рисовать\не рисовать декаль

Перевести треугольник, на который попала деколь, в систему координат его нормали. Перевести в неё же деколь (её два треугольника). Проверить, не пересекает ли хоть 1 линия деколи хоть 1 линию треугольника. Пересекает = будет вылезать за пределы. На этом можно остановиться и просто не рисовать деколь.
Можно пойти дальше, и сдвинуть деколь перпендикулярно пересекаемой линии на длину наиболее выступающего участка (тригонометрия во все поля).
Сделать такую же проверку после этого. Если он пересекает теперь уже что-то другое, то не создавать.

Colossus 17.01.2012 15:15

Ответ: Как сделать правильнее
 
то что ты написал, для меня все равно что букварь на японском...

MadMedic 17.01.2012 15:55

Re: Ответ: Как сделать правильнее
 
Цитата:

то что ты написал, для меня все равно что букварь на японском...
Оставь как делал раньше и не парься:
Цитата:

делал на досуге "декали" дырок от попадания пуль в обьект, и столкнулся с проблемой - когда попадаешь в ребро модели так сказать, то спрайт как бы торчит из нее:

reumep 17.01.2012 16:34

Ответ: Re: Ответ: Как сделать правильнее
 
Цитата:

Свойства изображения: 1.4МБ
я опять скачал дискету

SBJoker 17.01.2012 18:31

Ответ: Как сделать правильнее
 
Цитата:

Сообщение от ABTOMAT (Сообщение 217035)
Тоже хотел предложить, но

О, рилли? В самой лучшей игре делали как раз как положено.

Непосредственно Half-Life 2 на компе не оказалось, но в CS:S деколи точно такие же.
Кстати то, что ты говоришь, по-моему, было в Hlaf-Life 1

В тот время когда я играл в half-Life 2, на уровне про тюрьму, наблюдал такое поведение воочию чем долго развлекался.
Возможжно с других версиях игры или модах пофиксили.

Кроме того в Unreal Tournament 2004 аналогично. Хотя там декали умели иногда завернуть за угол. Принцип изменения поведения неизучен. Скорее всего для заворачивающих декалей кое где используется мультитекстурирование с занесением в текстуру соответствующих изображений. И эти спец слои предусмотрены не везде. Кстати возможно и в халве так же, гдето на видном месте заворачивают, а где то нет.

ABTOMAT 17.01.2012 18:49

Ответ: Как сделать правильнее
 
Вложений: 1
Цитата:

Сообщение от SBJoker (Сообщение 217078)
В тот время когда я играл в half-Life 2, на уровне про тюрьму, наблюдал такое поведение воочию чем долго развлекался.
Возможжно с других версиях игры или модах пофиксили.

Кроме того в Unreal Tournament 2004 аналогично. Хотя там декали умели иногда завернуть за угол. Принцип изменения поведения неизучен. Скорее всего для заворачивающих декалей кое где используется мультитекстурирование с занесением в текстуру соответствующих изображений. И эти спец слои предусмотрены не везде. Кстати возможно и в халве так же, гдето на видном месте заворачивают, а где то нет.

Ок, вот вам скрин из HL2, из уровня Nova Prospect. Проблемы?

SBJoker 17.01.2012 20:31

Ответ: Как сделать правильнее
 
Действительно установил запутсил всё ок. Значит то я ещё в бету играл.


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

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