Быстрое чтение облака точек XYZ и рендеринг анимированных точек в Unity - PullRequest
0 голосов
/ 10 марта 2019

У меня есть приложение в Unity, которое в настоящее время считывает десятки тысяч точек из текстового файла, содержащего координаты x, y и z для облака точек. Как можно себе представить, это займет много времени.

Я не знаком с системами частиц в Unity и ищу предложения о том, как ускорить этот процесс. Я пытался использовать объект ParticleSystem, но, похоже, я не могу связать его с чтением текстового файла с координатами XYZ. Я также попытался преобразовать текстовый файл в .obj и импортировать его как модель в Unity. Хотя модель .obj появляется в Blender и Meshlab, она не отображается в Unity, так как я считаю, что ей не хватает «меша».

Кроме того, точки должны быть "анимированными". Это означает, что у меня есть текстовый файл с координатами XYZ, который отображается. Этот текстовый файл затем заменяется другими координатами XYZ, а затем снова визуализируется, таким образом, «оживляя» облако точек. Это делает скорость рендеринга основным требованием. Первоначально я решил использовать обновленную модель .obj, однако, как упоминалось выше, это не сработало.

Любая помощь приветствуется. Благодарю.

1 Ответ

0 голосов
/ 11 марта 2019

Я бы порекомендовал преобразовать файл xyz в двоичный файл.Это будет читать это намного быстрее.По какой-то причине Unity очень медленно читает текстовые файлы.Поэтому я бы порекомендовал создать консольное приложение C # или C ++ для этой задачи.

Затем вы можете импортировать этот двоичный файл в Unity и создавать сетки в Unity без триангуляции, как сделано здесь , или вы можетеиспользуйте систему частиц, как вы сказали.

Я выполнил аналогичную задачу, но я изменил инструмент просмотра Free Point Cloud, потому что он позволяет создавать сетки с пределом 65535, а у меня было облако точек с около 1 миллиона точек.Я преобразовал это в двоичный файл, и это занимает 3 4 секунды, чтобы импортировать это в Unity с созданием мешей и всего остального.Десятки тысяч очков вообще не будут проблемой.

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

Обратите внимание: При чтении текста в Unity старайтесь избегать string.split.Насколько я заметил, это узкое место.Я бы порекомендовал создавать файлы, которые не требуют операции разделения.

...