Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)
Это сообщение сгенерировано автоматически.
Ох.... Дааа.... Это называется Булева операция. В данном случае сложение или объединение, также есть вычитание, исключение, пересечение. Находятся точки пересечения, теселяцией строятся контуры треугольников с точками пересечения. Алгоритм древний как мир.
Но вот "Вставка одной поверхности в другую" это прям новаторство. Резали ножницами бумагу, резали, а теперь будем ее размножать путем деления ее общей площади острым предметом - пойду патент оформлять.
Это не совсем булева операция
И уж точно не CSG
И да, было бы здорово, если показали мне ссылочку на такой древний алгоритм (такой же как в статье), будет интересно почитать
это именно булевы операции которые еще очень коряво в 3D максе 1-2 пытались реализовать было куча глюков, тот же алгоритм я и у себя реализовывал не раз, но это так к слову...
еще раз там ссылки давать не на что, считается объект пересечения треугольников получаем контур дальше тесселяция - алгоритм известный. Вопрос только в том какую часть объекта оставлять такой результат и будет (объединение, вычитание, исключение, пересечение).
а тема такая уже обсуждалась.
как ты там все это распараллеливать пытается это все модификация.
кстати помимо реализация булевых операция с функциями в векипедии также есть ссылки на движки где это все реализовано с мешами - начиная с ogre3D.
http://www.flipcode.com/archives/Constructive_Solid_Geometry.shtml
http://steps3d.narod.ru/tutorials/csg-tutorial.html
http://www.ogre3d.org/forums/viewtopic.php?f=11&t=48028
http://www.gamedev.ru/code/forum/?id=62064
http://www.geometros.com/index.html
http://www.gamedev.ru/code/forum/?id=46493
http://www.gamedev.ru/code/forum/?id=198576
http://www.gamedev.ru/code/forum/?id=47128
http://www.gamedev.ru/code/forum/?id=82525
http://www.gamedev.ru/code/forum/?id=48935
http://www.gamedev.ru/code/forum/?id=50796
http://www.gamedev.ru/code/forum/?id=58854
http://www.gamedev.ru/code/forum/?id=54339
http://www.gamedev.ru/art/forum/?id=124821
http://kriconf.ru/2004/rec/KRI-2004.Programming_08.ogg
большинство ссылок морально устарело и умерло от старости, хотя материал используется до сих пор.
https://www.youtube.com/watch?t=6&v=kcsF_EhCVPI
http://www.meshmixer.com/forum/index.php?topic=468.0
http://www.nigels.com/research/
http://sandervanrossen.blogspot.ru/search/label/CSG
http://forum.unity3d.com/threads/boolean-mesh-project.227196/
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.3793&… &type=pdf
http://wiki.blender.org/index.php/Doc:2.4/Manual/Modifiers/Generate/Booleans
roserg
> будет интересно почитать
берешь исходный код блендера, and read read read read read.
foxes
Я уже говорил что это не булева операция и не CSG. Да, мой метод сильно напоминает вычитание или объединение, но это не то.
Все статьи что ты мне кидаешь, это по CSG.
Если тебе не интересно прочитать и разобраться в статье, то не пиши такие комменты.
1) Здесь используются только поверхности, нет объемных тел, чтобы провести CSG. Знаю, что можно в принципе обобщить CSG в некоторых случаях на тела без объема, но у меня не этот случай.
2) Вторая поверхность только деформируется. Она не изменяется никогда, количество ее полигонов и треугольников остается постоянным в не зависимости от первой поверхности.
3) Если первая поверхность плоскость, то да, мой метод даст такой же результат как и CSG.
Это по твоему CSG?
roserg
Советую обратить внимание на CAD типа SolidWorks\SolidEdge\TFlex(отечественный продукт http://www.tflexcad.ru/download/t-flex-cad-free/). Есть такое ядро Parasolid для этих дел. Не знаю, есть ли в открытом доступе дока по ядру или только для лицензиятов
innuendo
Попробую найти что-нибудь по этой теме (SolidWorks\SolidEdge\TFlex)
roserg
> 1. Нужно на исходном меше «начертить» контур врезаемого меша
> 2. Дальше выкинуть ненужные треугольники, получим два контура (один из которых выпуклый)
поиск пересечения
> 3. Нужно соединить эти два контура (триангулировать)
тесселяция одного из мешей
> 4. Добавить треугольники и вершины врезаемого меша к основному мешу.
булево сложение
> 6. Тоже самое, но нормали инвертированы
булево вычитание
https://www.youtube.com/watch?t=6&v=kcsF_EhCVPI
roserg
> Это по твоему CSG?
Это метод моделирования с использованием простых мещей и булевых операций, у тебя сложный мешь над которым выполняются булевы операции. Ни кто не говорит что в CSG нельзя использовать любой мешь - это всего лишь способ построение объекта, комбинированием других объектов. К булевым операциям имеет прямое отношение, поскольку в этом методе используется булевы операции как основной метод комбинирования объектов. Так же как и в математике базовыми операциями являются сложение, вычитание, деление, умножение. В CSG это булева операция.
берем твои объекты
делаем булево вычитание
или булево сложение
или объединение
и ищем 10 отличий. Единственное отличие это возможность растягивания одного объекта по поверхности другого - модификация булевой операции.
foxes
1) Здесь используются только поверхности, нет объемных тел, чтобы провести CSG. Знаю, что можно в принципе обобщить CSG в некоторых случаях на тела без объема, но у меня не этот случай.
2) Вторая поверхность только деформируется. Она не изменяется никогда, количество ее полигонов и треугольников остается постоянным в не зависимости от первой поверхности.
3) Если первая поверхность плоскость, то да, мой метод даст такой же результат как и CSG.
Это по твоему CSG?
Я прекрасно знаю, что такое булевы операции. Но ты похоже недопонимаешь, раз пытаешься утверждать, что то что я делаю, тоже самое что булевы операции.
foxes
> Единственное отличие это возможность растягивания одного объекта по
> поверхности другого - модификация булевой операции.
Что касается Parasolid, то сшивка листовых тел идёт как отдельная операция, а не boolean.
Берем твою картинку
берем мою
Смотрим на контур вставленного объекта.
У меня контур ровный, ни одно ребро ни разбилось. А что дает булева операция? Она не способна дать такой контур в общем случае. Потому что булевы операции работают над телами с объемом, а у меня работа именно с поверхностями. И в данном случае вторая поверхность - полусфера.
innuendo
сшивка листовых тел
У меня скорее эта операция, чем булевы операции.
foxes
> модификация булевой операции.
используй ты классический алгоритм качество было бы лучше. и не было бы искажений на краях сшивки первого объекта.
foxes
используй ты классический алгоритм качество было бы лучше
Понятие "лучше", относительно конечно, но на этих фотках булевы операции прям "уделывают" мой способ вставки и дают потрясающую топологию "на краях сшивки первого объекта":
roserg
Результат булевой операции полностью сохраняет нормали и плоскости поверхностей каждого треугольника моделей.
В твоем варианте первая модель деформируется, форма поверхности не сохраняется, как и нормали.
Тема в архиве.