Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)

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

Поделиться
Страницы: 1 2 Следующая »
rosergПостоялецwww2 окт. 201515:02#0
Вставка одной поверхности в другую (многопоточный алгоритм) (комментарии)
Это сообщение сгенерировано автоматически.
foxesПостоялецwww2 окт. 201519:44#1
Ох.... Дааа.... Это называется Булева операция. В данном случае сложение или объединение, также есть вычитание, исключение, пересечение. Находятся точки пересечения, теселяцией строятся контуры треугольников с точками пересечения. Алгоритм древний как мир.
Но вот "Вставка одной поверхности в другую" это прям новаторство. Резали ножницами бумагу, резали, а теперь будем ее размножать путем деления ее общей площади острым предметом - пойду патент оформлять.

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

rosergПостоялецwww2 окт. 201523:16#2
Это не совсем булева операция
И уж точно не CSG
И да, было бы здорово, если показали мне ссылочку на такой древний алгоритм (такой же как в статье), будет интересно почитать
foxesПостоялецwww3 окт. 20151:01#3
это именно булевы операции которые еще очень коряво в 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.

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

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

innuendoПостоялецwww3 окт. 20159:25#5
roserg

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

rosergПостоялецwww3 окт. 20159:30#6
innuendo
Попробую найти что-нибудь по этой теме (SolidWorks\SolidEdge\TFlex)
foxesПостоялецwww3 окт. 201511:33#7
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 отличий. Единственное отличие это возможность растягивания одного объекта по поверхности другого - модификация булевой операции.

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

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

foxesПостоялецwww3 окт. 201512:11#9
foxes
> Единственное отличие это возможность растягивания одного объекта по
> поверхности другого - модификация булевой операции.
innuendoПостоялецwww3 окт. 201512:11#10
Что касается Parasolid, то сшивка листовых тел идёт как отдельная операция, а не boolean.
rosergПостоялецwww3 окт. 201512:16#11
Берем твою картинку
Изображение
берем мою
Изображение
Смотрим на контур вставленного объекта.
У меня контур ровный, ни одно ребро ни разбилось. А что дает булева операция? Она не способна дать такой контур в общем случае. Потому что булевы операции работают над телами с объемом, а у меня работа именно с поверхностями. И в данном случае вторая поверхность - полусфера.


innuendo

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

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

foxesПостоялецwww3 окт. 201512:36#12
foxes
> модификация булевой операции.
используй ты классический алгоритм качество было бы лучше. и не было бы искажений на краях сшивки первого объекта.
rosergПостоялецwww3 окт. 201512:52#13
foxes
используй ты классический алгоритм качество было бы лучше

Понятие "лучше", относительно конечно, но на этих фотках булевы операции прям "уделывают" мой способ вставки и дают потрясающую топологию "на краях сшивки первого объекта":
Изображение
Изображение
foxesПостоялецwww4 окт. 201511:04#14
roserg
Результат булевой операции полностью сохраняет нормали и плоскости поверхностей каждого треугольника моделей.
В твоем варианте первая модель деформируется, форма поверхности не сохраняется, как и нормали.
Страницы: 1 2 Следующая »

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

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

2001—2017 © GameDev.ru — Разработка игр