Найти соседние вершины вершины - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над проектом, чтобы найти соседние вершины вершины, например, в прямоугольнике angular me sh для конкретной вершины (Xi, Yj, Zk) соседние вершины будут

Xi+1 , Yj , Zk (right vertex)
Xi-1 , Yj , Zk (left vertex)
Xi , Yj+1 , Zk (top vertex)
Xi , Yj-1 , Zk (bottom vertex)
Xi , Yj , Zk+1 (front vertex)
Xi , Yj , Zk-1 (back vertex)

Но как их найти за три angular меня sh. Имеется ли какой-либо код для поиска вершин рядом с ними или в определенном диапазоне.

В настоящее время я работаю со скриптом js, в частности с тремя. js скрипт Я загрузил 3d-модель obj, которая будет геометрия буфера. Затем я получил вершины me sh, используя его атрибуты геометрии. Теперь для каждой вершины я хотел найти связанные с ней вершины ... Хотелось бы найти вершины, с которыми данная вершина разделяет свои ребра. Любая небольшая цитата была бы очень полезна. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Существует ли какой-либо код для поиска вершин рядом с ними или в определенном диапазоне.

Нет, по крайней мере, в хранилище. Однако вы можете самостоятельно реализовать базовое решение c. Идея состоит в том, чтобы создать экземпляр THREE.Sphere для представления концепции окрестности . Свойство center будет вашей вершиной, а свойство radius будет вашим диапазоном. Затем вы можете перебрать все остальные вершины и вызвать THREE.Sphere.containsPoint () , чтобы проверить, находится ли вершина в определенной окрестности.

three.js R115

0 голосов
/ 17 апреля 2020

Три. js не имеет чего-то нестандартного, но есть сценарий, который вы можете изменить, чтобы получить желаемый результат.

SubdivisionModifier необходимо сравнивать соседние позиции вершин для вычисления средних значений позиций. Для достижения этого он преобразует BufferGeometry в Geometry с

geometry = new THREE.Geometry().fromBufferGeometry( geometry );

Затем он использует каждое ребро, чтобы посмотреть, какие два треугольника (грани) подключен к этому краю. Вы можете увидеть это в исходном коде , строка 216 . Если вы скопируете и вставите этот скрипт в свой исходный код, вы можете внести изменения, чтобы сделать то, что вы хотите:

  1. Искать только ребра, которые связаны с вашей вершиной.
  2. Возвращать вершины, которые находятся на другой стороне этих ребер.

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

...