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

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

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

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

Ответ
 
Опции темы
Старый 17.01.2012, 22:30   #16
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Как сделать правильнее

буду изучать говнорисование в текстуру
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 17.01.2012, 23:08   #17
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Как сделать правильнее

да это вообще беспонтовый способ, т.к. текстур не напасёшься на весь уровень.
я делал декали аля хл2, остался код на ксорсе/с++, но он слишком уж говнокод, так что смысла постить его особо нет, в теории работало так:


- мы выстрелили в объект, у нас есть позиция появления декали и нормаль поверхности в этом месте/альтернативно это может быть нормаль полёта пули.
- представляем 4 бесконечных плоскости, равноудалённые от позиции дырки и образующие квадрат размером с декаль, если смотреть в направлении нормали. т.е. по сути это квадрат в пространстве нормали, но вытянутый в глубину бесконечно.
- находим все треугольника объекта, попадающие внутрь этих плоскостей, по дистанции и разнице нормалей ещё можно отсеять повернутые обратной стороной трианглы или слишком далёкие от точки попадания.
- обрезаем найденные трианглы нашими 4мя плоскостями и отодвигаем их чуть-чуть в направлении их нормалей (чтобы избежать z-fighting)
- в пространстве нормали считаем планарные UV на трианглы (там тупо U=X, V=Y + нормализация)
- рисуем полученный меш

- можно объединять все декали одного типа на одном объекте в один меш
- можно не обрезать трианглы и не считать UV, а получать UV в пиксельном шейдере + юзать режим аддресации BORDER, но это потенциально ведёт к overdraw + не особо позволяет сфигачить кучу декалей в 1 меш.

- можно юзать deferred decals (?? не пробовал)

- вышенаписанная фигня про треугольники можнт звучать МЕДЛЕННО, но на практике работало, и я не замечал снижения фпс ваще.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
Colossus (18.01.2012), H@NON (19.01.2012), Harter (18.01.2012), Платон Александрович (19.01.2012)
Старый 19.01.2012, 09:09   #18
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Как сделать правильнее

дабы не постить 100500 тем, спрошу сдесь же - как можно увеличить громкость 3dsound в блице? а то сделал 3д звук, а он какой то тихи даже вблизи... не я конечно знаю о команде
SoundVolume
но все равно тихо, что посоветуете?
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 19.01.2012, 12:03   #19
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Как сделать правильнее

интересная тема

Mr_F_ +1

метод с рендером в текстуру может подойти только для специфичных случаем
ибо кроме проблем с уникальными текстурами для декалей (и их большими разрешениями), еще не забывайте что в блице всего два набора текстурных координат, и если первый для [цвета,спекуляра,нормали], а второй например для лайтмапы, то для декалей не остается
юзать первый набор - не факт что развертка равномерная, декали могут деформироваться, как впрочем и для развертки лайтмапы.

слышал про вариант с использованием стенсил-буфера для "обрезки" висячих частей, но думаю это тоже геморно (еще и потому что надо будет очередной DLL-костыль писать)

кстати по поводу способа с копированием и обрезкой геометрии, там тоже проблем полно, например

есть два пересекающихся бокса (два этажа например, соответственно горизонтальный бокс - пол, вертикальный - стена)
зеленым цветом - точка пика и бокс декаля для обрезки
черным цветом - выбраные для обрезки треугольники
после обрезки
синим цветом - нужные треугольники
красным цветом - ненужные треугольники

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

ЗЫ
представляем 4 бесконечных плоскости, равноудалённые от позиции дырки и образующие квадрат
кстати по рисунку также можно понять почему резать лучше боксом, а не квадратом
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (19.01.2012)
Старый 19.01.2012, 14:15   #20
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Как сделать правильнее

Сообщение от Colossus Посмотреть сообщение
как можно увеличить громкость 3dsound в блице? а то сделал 3д звук, а он какой то тихи даже вблизи... не я конечно знаю о команде
SoundVolume
но все равно тихо, что посоветуете?
1. - изменить сам файл.
2. - поиграться с параметрами CreateListener
(Offline)
 
Ответить с цитированием
Старый 19.01.2012, 14:30   #21
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Как сделать правильнее

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

а насчёт обозначенной на картинке проблемы - да, не подумал о таком.
интересно найти решение.
в голову приходит только безумный вариант - т.к. проблема аналогична проблеме освещения при отсутствии теней, можно в крохотном разрешении (типа 32х32) растеризовать все отобранные треугольники с позиции прожектора декали, рисуя в 2д массив глубину (как при software occlusion culling) и потом сравнить все трианглы с записанной глубиной, узнав, есть ли перекрытие (отсеяв то, что у тебя на картинке красное).
но это чёто уже черезчур тормозно звучит)
(Offline)
 
Ответить с цитированием
Старый 19.01.2012, 16:15   #22
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Как сделать правильнее

Сообщение от Mr_F_ Посмотреть сообщение
ээ я не очень понял. у тебя картинка вроде сбоку?
Ага, сбоку
Сообщение от Mr_F_ Посмотреть сообщение
т.е. декаль как бы там проецируется сверху слева вниз вправо?
Вообще только сверху (пикнули в зеленой точке и проекция по нормали пола), но т.к. декаль заходит частично на стену, то и на нее нужно тоже.
Сообщение от Mr_F_ Посмотреть сообщение
короче оно бы и квадратом так же обрезалось бы.
Не, тогда бы по вертикали скопировалась вся стена (плоскости же бесконечны по нормали), вот примерно как на картинке, в 3д лучше будет видно
так же как и на предыдущей картинке точка пика, 4 плоскости квадрата в пространстве нормали и получаемые вертексы

а если боксом, то стена и по вертикали обрежется как раз по размеру декаля
Хотя может лучше тогда брать плоскости по вектору пика? Но опять таки если пикнем сверху получим такую же картину
Сообщение от Mr_F_ Посмотреть сообщение
в голову приходит только безумный вариант - т.к. проблема аналогична проблеме освещения при отсутствии теней, можно в крохотном разрешении (типа 32х32) растеризовать все отобранные треугольники с позиции прожектора декали, рисуя в 2д массив глубину (как при software occlusion culling) и потом сравнить все трианглы с записанной глубиной, узнав, есть ли перекрытие (отсеяв то, что у тебя на картинке красное).
но это чёто уже черезчур тормозно звучит)
Ну тогда уж volume декали юзать кажись у Хумуса эту технику видел. Только вот к блицу это не применимо к сожалению, надо как-то по другому извращаться
ЗЫ
Точно у хумуса, третья снизу
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (19.01.2012)
Старый 19.01.2012, 20:13   #23
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Как сделать правильнее

гляжу, в UE тоже боксом:
http://udn.epicgames.com/Three/UsingDecals.html

думаю дальше по поводу проблемы с декалированием левых мест. что если
- определяем все точки пересечения меша с боксом
- если у нас есть точки с одинаковым XY но разной глубиной в пространстве прожектора - оставляем только самые ближние. это должно выкинуть точки пересечения с низом вертикальной стены и даже низом горизонтальной (не требуется проверка по нормали)
- находим треугольники, которым принадлежат оставшиеся точки пересечения
- обрезаем, делаем UV итд
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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