Нахождение угловых точек в пространственной сетке - PullRequest
1 голос
/ 20 февраля 2020

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

Этаж я sh

Ок, просто чтобы было немного яснее. Прямо сейчас у меня есть это Я sh. (треугольники, вершины и нормали). Я хочу создать плоскость или что-то похожее, чтобы покрыть это я sh для представления пола (поскольку этот этаж не такой плоский, как должен быть фактический этаж).

Это должно создать 1 или несколько плоскостей для покрытия инкапсулированной области

Я знаю, какую библиотеку использовать, чтобы вычислить, какая область должна быть основана на некоторых ключевых точках. Поэтому, если бы я мог получить, например, эти очки от меня sh (см. Ниже), он создал бы следующие объекты (см. Далее ниже). Это также даст мне желаемый результат.

ниже еще ниже

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

1 Ответ

1 голос
/ 20 февраля 2020

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

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

Простейший маршрут: Вы знаете, что в данном случае это пол, поэтому вы можете предположить, что нормальный ve c вверх (т. е. Vector3.up), поэтому шаг 1 должен был бы оценить координату z вашей плоскости. Самый простой способ сделать это - усреднить все или некоторые координаты z точек в вашем облаке точек.

Теперь вам нужно найти координаты x и y для углов вашей плоскости. Абсолютно простое решение состоит в том, чтобы предположить, что большинство комнат имеют прямоугольную форму angular, и поэтому вы работаете с ними. Затем вы можете найти самую дальнюю точку в любом направлении (направления x и y) и создать прямоугольную плоскость angular, используя эти точки.

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

...