От POV-Ray к rgl

Я подписался на этот учебник для экспорта изображения POV-Ray в STL файл через Meshlab. Еще пробовал экспорт в формат OBJ. Кажется, все работает нормально, от создания графики POV-Ray до экспорта в Meshlab.

Но затем я попытался визуализировать графику в R с помощью функций readSTL и readOBJ пакета rgl, и проблема здесь.

Фактически экспортированный STL файл пуст:

solid STL generated by MeshLab
endsolid vcg

Итак, конечно, rgl::readSTL ничего не отображает в R.

Файл OBJ не пустой, но он не содержит граней (только вершины и нормали вершин):

####
#
# OBJ File Generated by Meshlab
#
####
# Object blob.obj
#
# Vertices: 8437
# Faces: 0
#
####
vn -0.900372 -0.267658 -0.343060
v -4.000525 2.600000 -0.833225
......

После запуска rgl::readOBJ в R рендеринг представляет собой просто белую сцену, ничего. Даже если нет лица, мы могли рассчитывать получить несколько очков.

Может я ошибаюсь на одном этапе процедуры. Есть ли у вас какие-либо представления о:

  • как экспортировать в непустой STL файл в Meshlab?

  • как получить очки с readOBJ в R?

  • как получить лица в OBJ файле при экспорте из Meshlab?

  • знаете ли вы другой способ перейти от POV-Ray к rgl, если возможно, сохранив цвета?

Обновлять

Я нашел способ получить лица в файле OBJ: вместо выполнения экранированной реконструкции поверхности Пуассона в Meshlab, как сказано в туто, я выполняю Реконструкция поверхности: вращение шара .

Но тогда rgl::readOBJ генерирует эту ошибку:

Error in order(vlinks[[i]][, 2]) : argument 1 is not a vector

Эта же процедура позволяет экспортировать непустой STL файл. Но тогда rgl::readSTL генерирует эту ошибку:

Error in matrix(NA, 3 * n, 3) : invalid 'nrow' value (too large or NA)
In addition: Warning message:
In matrix(NA, 3 * n, 3) : NAs introduced by coercion to integer range

person Stéphane Laurent    schedule 25.03.2018    source источник


Ответы (1)


Хорошо, нашел.

  • Следуйте инструкциям по ссылке, чтобы создать файл blob.asc в POV-Ray.

  • В Meshlab откройте этот файл и выполните Реконструкция поверхности: вращение шара в меню Фильтры -> Повторное создание сетки, упрощение и реконструкция. Возможно, раньше нужно было выполнить экранированную реконструкцию пуассоновской поверхности, я не знаю.

  • Экспортируйте файл как STL. Установите флажок «Двоичная кодировка» (вариант по умолчанию), поскольку rgl::readSTL читает только двоичные STL файлы, а не файлы ASCII.

  • В R теперь можно делать rgl::readSTL. И это работает:

введите здесь описание изображения

person Stéphane Laurent    schedule 25.03.2018
comment
readSTL имеет ascii аргумент, который по умолчанию равен FALSE. Может быть, если вы установите это значение TRUE, он будет читать текстовый формат? - person user2554330; 25.03.2018
comment
@ user2554330, из кода: if (ascii) stop("ASCII input not yet supported") - person Stéphane Laurent; 25.03.2018
comment
@ user2554330 В любом случае двоичный формат лучше. Файл меньше, и свойства материала могут быть интегрированы, в отличие от формата ASCII. Но пока rgl не читает материальные свойства STL двоичного файла. - person Stéphane Laurent; 25.03.2018