www.demoscene.ruenglish version
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
boolean на произвольных полигональных объектах
На страницу Пред.  1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Пт Янв 10, 2014 20:52    Заголовок сообщения: Ответить с цитатой

у меня вообще ощущение, что булеаны и полигоны - вещи из разных опер. В реймаршах всяческих несопоставимо проще оно делается.
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пт Янв 10, 2014 20:57    Заголовок сообщения: Ответить с цитатой

f0x писал(а):
у меня вообще ощущение, что булеаны и полигоны - вещи из разных опер. В реймаршах всяческих несопоставимо проще оно делается.


Ну дык... Smile Но с рэймарчингом у тебя будут другие проблемы ) С моделингом особо не разгуляешься ) Придётся всё строить из дистантфиелдов )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Пт Янв 10, 2014 21:55    Заголовок сообщения: Ответить с цитатой

ну вобщем поэтому туда и не лезу пока, нагулялся по шейдертою
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пт Янв 10, 2014 22:28    Заголовок сообщения: Ответить с цитатой

f0x писал(а):

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


страшно Smile

проводим линию от точки которую надо проверить к точке которая заведомо находится внутри меша. Считаем
кол-во пересечений с гранями меша.

Если количество пересечений четное (0 тоже чётное) - точка лежит внутри, если нечетное - точка снаружи.

Или наоборот, берём точку снаружи меша, считаем
количество пересечений, если нечетное то внутри, четное - значит снаружи.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Пт Янв 10, 2014 23:10    Заголовок сообщения: Ответить с цитатой

на одну точку перебор всех граней. без тестов могу сказать, что на сетке 512х512 машинка умрет
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
san



Зарегистрирован: 11.10.2007
Сообщения: 18


СообщениеДобавлено: Пт Янв 10, 2014 23:17    Заголовок сообщения: Ответить с цитатой

Если в конечном итоге результат будет выводиться на экран, то однозначно надо юзать CSG.
Работа с stencil & z-буфером не так ударит по производительности, как это сделает расчет пересечения на CPU. Да и вообще, это будет очень быстро (проверено на практике). Плюс ко всему, сложность вычислений при таком подходе не будет зависеть от числа полигонов/вершин.
Вспомнилось на эту же тему. Когда-то у меня была близкая задача - найти пересечение луча и полигональной геометрии (для того, чтобы выбирать объекты мышкой). В конечном итоге проще и быстрее всего оказалось рендерить каждый объект своим цветом (не выводя на экран) и потом читать пиксель из back buffer. Получилось очень точно и быстро.
Так что вовсе не обязательно решать задачу самым очевидным способом Smile

Если все-таки нужна "честная" геометрия, то нужно искать пересечения полигонов между объектами. Тут может помочь bsp (и аналогичные техники).
Но все же честный boolean это сложно, ресурсоемко и иногда глючно. Тот же 3ds max при расчете пересечений иногда выдает кривой результат в зависимости от сложности топологии и числа полигонов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Пт Янв 10, 2014 23:35    Заголовок сообщения: Ответить с цитатой

f0x писал(а):
на одну точку перебор всех граней. без тестов могу сказать, что на сетке 512х512 машинка умрет


почему всех, если только пересекающихся с отрезком?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Сб Янв 11, 2014 07:37    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):

почему всех, если только пересекающихся с отрезком?


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

san писал(а):

Если в конечном итоге результат будет выводиться на экран, то однозначно надо юзать CSG.

идея в том чтобы дальше работать с моделью...

а селектор объектов тоже делал как тыSmile
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Сб Янв 11, 2014 11:45    Заголовок сообщения: Ответить с цитатой

f0x писал(а):

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


методов много,

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

Ну и в конце концов, если мы имеем оба первоначальных объекта на моменте прекалсинга, то наверное сможем построить разные полезные таблицы заранее...
Ну, так то ваще, мы могли бы сразу воксели в прекалсе создать, а в рантайме уже совокуплять их друг с другом и шарашить Маршинг кубесом меш. Тогда мы сможем в реалтайме дырявить и откусывать один объект другим, и даже модифицировать воксельные объекты нам ничто не мешает (например "откусить", сохранить результат, далее работать с уже "откушенным"). Вопрос в том - чего мы хотим? Да, моделить чёткие объекты с острыми контурами так не получится.



ЗЫ:а почему бы тебе не довольствоваться твоими привычными модификаторами, и вместо булевых операций просто "вминать" одну 3д-фигуру другой? Ну да, нужно заведомо много поликов. Но зато проще и понятнее в реализации.


Последний раз редактировалось: BiTL (Сб Янв 11, 2014 12:07), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Сб Янв 11, 2014 12:04    Заголовок сообщения: Ответить с цитатой

f0x писал(а):

идея в том чтобы дальше работать с моделью...


в реалтайме? Тоесть это такой супер-эффект, где нужно применять каждый кадр булевские операции, а потом ещё что-то делать с мешем?

Прям любопытно, для чего же это может понадобиться? Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Сб Янв 11, 2014 17:33    Заголовок сообщения: Ответить с цитатой

видимо так и придется сделать - загнать в модификаторы некоторые простые фигуры.
а рилтайм - это идет от архитектуры двигла в целом
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Сб Янв 11, 2014 17:54    Заголовок сообщения: Ответить с цитатой

f0x писал(а):

а рилтайм - это идет от архитектуры двигла в целом


ох, набахаешь ты опять тяжеленного монстра Smile

А когда интру с Дихальта-лайт зарелизишь?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
f0x



Зарегистрирован: 23.09.2007
Сообщения: 498


СообщениеДобавлено: Сб Янв 11, 2014 18:01    Заголовок сообщения: Ответить с цитатой

у меня бардак сейчас только в интерфейсном коде, и то более-менее контролируемый.
в рантаймовую часть можно впихивать что угодно, архитектура все стерпитSmile))

про дихалт, думал орги выложат. в итоге решили подправить косячки и пересобрать, я как раз баги зафиксил. думаю, завтра все будет. а может и сегодня, как настроение будет.
_________________
кто сделал демку тот и выигралSmile (с) uncle night (?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
BiTL
DOS lover


Зарегистрирован: 22.09.2007
Сообщения: 2950


СообщениеДобавлено: Сб Янв 11, 2014 18:05    Заголовок сообщения: Ответить с цитатой

f0x писал(а):
у меня бардак сейчас только в интерфейсном коде, и то более-менее контролируемый.
в рантаймовую часть можно впихивать что угодно, архитектура все стерпитSmile))


Возможность написания плагинов не рассматривается?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Manwe
Администратор сайта


Зарегистрирован: 21.09.2007
Сообщения: 1424


СообщениеДобавлено: Сб Янв 11, 2014 18:23    Заголовок сообщения: Ответить с цитатой

BiTL писал(а):
Возможность написания плагинов не рассматривается?

Так шейдеры внешние - чем не плагины?
_________________
Manwe/SandS
www.manwe.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов DemoScene.Ru -> Программирование Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3, 4  След.
Страница 2 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах