ПрограммированиеФорумГрафика

Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)

Страницы: 1 2 Следующая »
#0
15:02, 2 окт 2015

Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)

Это сообщение сгенерировано автоматически.

#1
19:44, 2 окт 2015

Ох.... Дааа.... Это называется Булева операция. В данном случае сложение или объединение, также есть вычитание, исключение, пересечение. Находятся точки пересечения, теселяцией строятся контуры треугольников с точками пересечения. Алгоритм древний как мир.
Но вот "Вставка одной поверхности в другую" это прям новаторство. Резали ножницами бумагу, резали, а теперь будем ее размножать путем деления ее общей площади острым предметом - пойду патент оформлять.

Конструктивная сплошная геометрия

#2
23:16, 2 окт 2015

Это не совсем булева операция
И уж точно не CSG
И да, было бы здорово, если показали мне ссылочку на такой древний алгоритм (такой же как в статье), будет интересно почитать

#3
1:01, 3 окт 2015

это именно булевы операции которые еще очень коряво в 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.

#4
8:58, 3 окт 2015

foxes
Я уже говорил что это не булева операция и не CSG. Да, мой метод сильно напоминает вычитание или объединение, но это не то.
Все статьи что ты мне кидаешь, это по CSG.
Если тебе не интересно прочитать и разобраться в статье, то не пиши такие комменты.

1) Здесь используются только поверхности, нет объемных тел, чтобы провести CSG. Знаю, что можно в принципе обобщить CSG в некоторых случаях на тела без объема, но у меня не этот случай.
2) Вторая поверхность только деформируется. Она не изменяется никогда, количество ее полигонов и треугольников остается постоянным в не зависимости от первой поверхности.
3) Если первая поверхность плоскость, то да, мой метод даст такой же результат как и CSG.
Это по твоему CSG?

#5
9:25, 3 окт 2015

roserg

Советую обратить внимание на CAD типа SolidWorks\SolidEdge\TFlex(отечественный продукт http://www.tflexcad.ru/download/t-flex-cad-free/). Есть такое ядро Parasolid для этих дел. Не знаю, есть ли в открытом доступе дока по ядру или только для лицензиятов

#6
9:30, 3 окт 2015

innuendo
Попробую найти что-нибудь по этой теме (SolidWorks\SolidEdge\TFlex)

#7
11:33, 3 окт 2015

roserg
> 1. Нужно на исходном меше «начертить» контур врезаемого меша
> 2. Дальше выкинуть ненужные треугольники, получим два контура (один из которых выпуклый)
поиск пересечения
> 3. Нужно соединить эти два контура (триангулировать)
тесселяция одного из мешей
> 4. Добавить треугольники и вершины врезаемого меша к основному мешу.
булево сложение
> 6. Тоже самое, но нормали инвертированы
булево вычитание
https://www.youtube.com/watch?t=6&v=kcsF_EhCVPI

roserg
> Это по твоему CSG?
Это метод моделирования с использованием простых мещей и булевых операций, у тебя сложный мешь над которым выполняются булевы операции. Ни кто не говорит что в CSG нельзя использовать любой мешь - это всего лишь способ построение объекта, комбинированием других объектов. К булевым операциям имеет прямое отношение, поскольку в этом методе используется булевы операции как основной метод комбинирования объектов. Так же как и в математике базовыми операциями являются сложение, вычитание, деление, умножение. В CSG это булева операция.

boolean0001 | Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)

берем твои объекты
boolean0002 | Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)
делаем булево вычитание
boolean0003 | Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)
или булево сложение
boolean0004 | Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)
или объединение

и ищем 10 отличий. Единственное отличие это возможность растягивания одного объекта по поверхности другого - модификация булевой операции.

#8
12:09, 3 окт 2015

foxes
1) Здесь используются только поверхности, нет объемных тел, чтобы провести CSG. Знаю, что можно в принципе обобщить CSG в некоторых случаях на тела без объема, но у меня не этот случай.
2) Вторая поверхность только деформируется. Она не изменяется никогда, количество ее полигонов и треугольников остается постоянным в не зависимости от первой поверхности.
3) Если первая поверхность плоскость, то да, мой метод даст такой же результат как и CSG.
Это по твоему CSG?

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

#9
12:11, 3 окт 2015

foxes
> Единственное отличие это возможность растягивания одного объекта по
> поверхности другого - модификация булевой операции.

#10
12:11, 3 окт 2015

Что касается Parasolid, то сшивка листовых тел идёт как отдельная операция, а не boolean.

#11
12:16, 3 окт 2015

Берем твою картинку
Изображение
берем мою
Изображение
Смотрим на контур вставленного объекта.
У меня контур ровный, ни одно ребро ни разбилось. А что дает булева операция? Она не способна дать такой контур в общем случае. Потому что булевы операции работают над телами с объемом, а у меня работа именно с поверхностями. И в данном случае вторая поверхность - полусфера.


innuendo

сшивка листовых тел

У меня скорее эта операция, чем булевы операции.

#12
12:36, 3 окт 2015

foxes
> модификация булевой операции.
используй ты классический алгоритм качество было бы лучше. и не было бы искажений на краях сшивки первого объекта.

#13
12:52, 3 окт 2015

foxes

используй ты классический алгоритм качество было бы лучше

Понятие "лучше", относительно конечно, но на этих фотках булевы операции прям "уделывают" мой способ вставки и дают потрясающую топологию "на краях сшивки первого объекта":
Изображение
Изображение

#14
11:04, 4 окт 2015

roserg
Результат булевой операции полностью сохраняет нормали и плоскости поверхностей каждого треугольника моделей.
В твоем варианте первая модель деформируется, форма поверхности не сохраняется, как и нормали.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.