Войти
ПрограммированиеФорумОбщее

поиск расстояния до ближайшего треугольника (2 стр)

Страницы: 1 2 3 4 Следующая »
#15

Mira
> есть ли способ найти ближайший к точке треугольник?

Решение неоднозначное.

Допустим, найдена ближайшая к точке вершина, и в ней сходятся 6 треугольников, причём расстояние от точки до любого из треугольников равно расстоянию до этой общей вершины. Какой треугольник считать ближайшим?

Или ближе всего к точке находится ребро, а ребро принадлежит двум треугольникам. Какой из них ближайший?

8 дек. 2018 (Правка: 19:21)


#16

alexzzzz
скажем 400к трианглов.
суть такая. вершин меняет свое положение , причем не интерполируется а может вообще в произволном направлении смеситься при слиянии.
ее соответственно по новой надо развесовать, и нормаль посчитать.
так так поверхность остается примерно та же, можно тупо брать ближайший трегульник проецировать на него новое положение и из барицентрика оригинала считать новые значения.
так придется пройтись по большинству вершин, может даже не по разу.

+ Показать

вот так расстояние до триангла чекаю и ClosestPoint (код не мой, может быть чтото не так)

+ Показать

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

8 дек. 2018

#17

alexzzzz
> Решение неоднозначное. Допустим, найдена ближайшая к точке вершина, и в ней
> сходятся 6 треугольников, причём расстояние от точки до любого из треугольников
> равно расстоянию до этой общей вершины. Какой треугольник считать ближайшим?
по этому надо искать ближайший треугольник а не точку!
пара треугольников на одном расстоянии окажутся вряд ли.

8 дек. 2018

#18

Polyflow3d
> купи мой ассет, там уже все сделанно , то что ты пытаешся сделать .
> Заодно исходники посмотришь )
у меня тоже это все можно =) но у меня главная цель всего этого упрощение геометрии с минимумом потерь и сохранением блендшейпов.
старый алгоритм немного кривил UV этот не искажает совсем.

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

8 дек. 2018 (Правка: 19:25)

#19

Mira
> по этому надо искать ближайший треугольник а не точку!
> пара треугольников на одном расстоянии окажутся вряд ли.

Запросто окажутся. Вот пара треугольников (вид сбоку):
tris | поиск расстояния до ближайшего треугольника
Расстояние от точки D до каждого точно равно расстоянию до общей вершины B.

8 дек. 2018

#20
+ Показать

вот результат такого подхода. но пальцы как видно почернели) что значит там собрало не верные нормали (и очевидно веса)

8 дек. 2018

#21

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

8 дек. 2018

#22

Mira
а в чем принципиальная разница перчатки от куртки?
SkinTools трансферит скиннинг с чего угодно на что угодно. Блендшейпы пока не поддерживаются.

у меня тоже это все можно =)

у тебя не может быть этого можно, потому что ты тут спрашиваешь как найти ближайший треугольник к точке .

8 дек. 2018

#23

спасибо кто подсказали)
поиск до бокса в окттри + поиск внутри бокса ближайшего триангла таки вкатило. была небольшая ошибочка с траверсом окттри =/

угадайте какая была уменьшена в 2 раза

+ Показать

8 дек. 2018

#24

Mira
> + поиск внутри бокса ближайшего триангла
Только трианглы нужно искать не в одном боксе, а в нескольких, которые подходят по условию.

8 дек. 2018

#25

MrShoor
я сделал так

 for n:=1 to 16 do begin
   searchboc.vmin:= v - CellBounds.radius * n;
   searchboc.vmax:= v + CellBounds.radius * n;
   searchboc._PrecalcVars;
   InternalNearest(0,OcttreeBounds,searchboc,v,md,result,hitPoint);
   if result<>-1 then exit;
 end;
формирую бокс вокруг точки
и чекаю этот бокс в окттри, все что насобиралось из трианглов - проверяю на расстояние.
если по каким то причинам не нашлось увеличиваю бокс и по новой) но это костыль на случай если что то пойдет не так
это не самый ровный способ конечно, но лучше я не придумал

8 дек. 2018 (Правка: 22:50)

#26

щас осталось самое сложное.
нужно какими то данным закодировать перемещение вершины.

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

8 дек. 2018 (Правка: 22:56)

#27
+ Показать

сделано!

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

10 дек. 2018

#28

Polyflow3d
С скином модель в модель все четко работает, но чота реально я проверил с одеждой, такая тема не катит, веса получаются с слишком грубыми переходами. Что по использованию трианглов, что по вершинам.

Признавайся как ты сделал плавную развесовку) просто по костям врядли.

11 дек. 2018

#29

Mira
Есть точка на которую ты хочешь перенести скинниг.
Ты нашел ближайший к ней треугольник на соурсной модели?


11 дек. 2018

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумОбщее