R: contour3d добавить сетку на 3D-дисплей - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь использовать contour3D на изображении мозга в примере с помощью brainR на https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4911196/, но я хотел добавить сетку для контура 3D.

Вот воспроизводимый пример:

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
        package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 0.1, draw = TRUE)

Теперь я хотел бы нарисовать рамку вокруг дисплея и сетку для этой рамки. Как мне это сделать? Я пытался добавить коробку, но даже addbox = T, похоже, ничего не делает? Какие-либо предложения? Большое спасибо заранее!

1 Ответ

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

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

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
                                  package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 1, draw = TRUE)
decorate3d()
grid3d(c("x-", "x+", "y-", "y+", "z-", "z+"))

Это приводит к получению этого результата после небольшого поворота:

screenshot

Отредактировано в ответ на комментарии:

Чтобы отобразить кадр без галочек и цифр, используйте box3d() вместо decorate3d().

Добавление цвета фона в куб можно выполнить с помощью функции bbox3d(). По умолчанию это др aws только 3 стороны куба: я считаю этот вид некрасивым, но ваш вкус может отличаться. Я предпочитаю видеть это с фронтальными сторонами, показывающими; это может быть 3, 4 или 5 лиц. Вот код:

require(brainR)
# Template from MNI152 from McGill
template <- readNIfTI(system.file("MNI152_T1_2mm_brain.nii.gz",
                                  package="brainR"), reorient=FALSE)
contour3d(template, level = 4500, alpha = 1, draw = TRUE)
box3d()
grid3d(c("x-", "x+", "y-", "y+", "z-", "z+"))
bbox3d(col="cyan", alpha = c(0.5, 0), shininess = 100,
       draw_front = TRUE, front = "culled")

Вот что вы получаете с кодом выше:

screenshot

Оставьте два последних аргумента bbox3d вызов для 3-стороннего дисплея. При этой ориентации он будет выглядеть одинаково, но при повороте дисплея он будет другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...