Прилипание частей 2 объектов

22 ноября 2017 07:38
Подскажите решение, есть 2 кухонные тубмы, в самих тумбах все детали объедененны, то есть тумба как один объект что бы интерактивность не распространялась на ее части а на всю ее целиком.И детали тумбы по прежнему имеют имена при их выделении в блендере. Пытаюсь решить задачу что бы при приближении 2 тумб их столешницы склеивались гранями на определенной дистанции. Это реально ???
22 ноября 2017 14:25
Что означает "склеивались гранями"? Вы хотите склеить две столешницы в один объект? Или достаточно просто изменение положения перетаскиваемой тумбы в стыкс другой? Если интересен второй вариант, то можно использовать баундинг боксы для рассчета необходимых координат смещения. Т.к. вы используете шейпкеи, то после изменения шэйпкея не забудьте вызвать update_boundings. Метод с баундинг боксами будет работать если у вас объекты прямоугольные и все грани сонаправлены с осями координат.
Александр (команда Blend4Web)
twitter
22 ноября 2017 21:44
Да ,Роман, перетаскивая тумбу по сцене и приближая ее к другой столешницы должны даже на небольшом расстоянии как бы склеится в ОДИН объект к которому потом с api можно обращаться как к единому
23 ноября 2017 01:11
С шепкейс я могу поработать но на сколько реально объединить на уровне кода части объектов…. И если можно подскажите я где то у вас видел сцену на ней круглая плоскость в качестве пола, так вот края этой плоскости плавно размывались и сливались по цвету с окружением, очень здорово но не могу найти нигде описание как такое реализовать может подскажите если не сложно
23 ноября 2017 18:19
Ответ на сообщение пользователя tropic.r
Да ,Роман, перетаскивая тумбу по сцене и приближая ее к другой столешницы должны даже на небольшом расстоянии как бы склеится в ОДИН объект к которому потом с api можно обращаться как к единому

На Романа я редко откликаюсь.

В явном виде объединять объекты нельзя.
Что вы собираетесь делать с такими склеинными объектами? В зависимости от этого необходимо придумывать решение.
Рассмотрите ограничители объектов. Можно было бы жестко прикрепить некую дочернюю часть к родительской и перемещать родительскую. В таком случае дочерняя часть перемещалась бы автоматически. Если кликнули на дочернюю часть находить родительскую и перемещать родительскую. Таким образом две части будут иметь поведение единого целого.
Александр (команда Blend4Web)
twitter
23 ноября 2017 20:43
Да…. спать иногда надо… Простите за такую тупость ))) даже имя прочитать не смог я критин
08 декабря 2017 10:16
Привет! Имею подобную задачу. Необходимо реализовать стыковку двух модулей диванов в определенных точках.
Думал на счет динамического пивота у объекта, но не знаю, как им управлять в b4w.
Вообще есть такая идея - К объекту крепятся пустышки в точки зацепа. Пустышки двух типов - левые, правые. Когда двигаем модуль мы просчитываем расстояние до нужных нам пустышек другого модуля. Если расстояние минимальное, то происходит стыковка.
Сложность этого метода в том, что бы перемещать пивот объекта в нужные точки. Что бы его перемещать точно, куда нам нужно. Ну и сложность в нахождении других пустышек, ибо их в сцене может быть много. Нужно будет либо проверять дистанцию к каждой пустышке, либо создавать триггеры.

Интересно, каким методом реализовано это в примере - http://mff.ru/public/3D/?model=Edinburg_04
Это как раз то, что мне нужно.
http://vg3d.ru
08 декабря 2017 10:37
Вообще есть такая идея - К объекту крепятся пустышки в точки зацепа. Пустышки двух типов - левые, правые. Когда двигаем модуль мы просчитываем расстояние до нужных нам пустышек другого модуля. Если расстояние минимальное, то происходит стыковка.

Хорошая идея. И если например учитывать поворот пустышки, то при наличии фиксированной вертикальной оси можно так сцеплять детали не только с прямыми углами.


Сложность этого метода в том, что бы перемещать пивот объекта в нужные точки. Что бы его перемещать точно, куда нам нужно.
В b4w нет явного понятия пивота. Но его можно симулировать путем добавления констрейнтов например функцией append_stiff.


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

Если вы не рассчитываете симуляцию взаимодействия частиц где-то больше чем 100, и при этом не рассчитываете квадратный корень, а к примеру используете норму вида delta_x^2+delta_y^2, то все будет работать довольно быстро при попарной проверке дистанций. Можно вообще взять норму вида |delta_x| + |delta_y| будет работать еще быстрее.
Александр (команда Blend4Web)
twitter
08 декабря 2017 10:37
О констрейнтах подробнее тут
Александр (команда Blend4Web)
twitter
08 декабря 2017 11:58
Ответ на сообщение пользователя Александр Романов
О констрейнтах подробнее тут

О, спасибо. На первый взгляд это то, что нужно.
http://vg3d.ru
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.