У меня есть трехмерный массив (с именем V). он содержит информацию о вокселе. Где бы то ни было присутствующего воксела, значение V [i] [j] [k] равно 1. Если когда-либо нет воксела, значение V [i] [j] [k] равно 0 Я хочу визуализировать эту форму с помощью VTK.3D-форма с использованием VTK:
я написал этот код:
MyVTKPointPlotter pointPlotter;
for(int i=0;i<x_count;i++)
{
for(int j=0;j<y_count;j++)
{
for(int k=0;k<z_count;k++)
{
if(V[i][j][k] != 0)
{
pointPlotter.PlotPoint(i,j,k,128,128,128);
}
}
}
}
Примечание: функции MyVTKPointPlotter все полученные по этой ссылке: http://nawigacjarobota.googlecode.com/svn-history/r10/trunk/wykObMAT/myVTKPointPlotter.cpp
Проблема в этом коде является то, что все точки становятся построены, но рендеринг крайне медленно. Кроме того, точки являются 2 размерными точками и, следовательно, они не имеют толщины. Поэтому, когда я поворачиваю свой объект, я могу видеть точки без толщины (точки видны как диски).
Может ли кто-нибудь сказать мне, как визуализировать эту трехмерную форму?
Вместо того, чтобы использовать плоттер, вы можете просто создать экземпляр 3D-объект (как сфера) в положение каждой точки, чтобы построить ? Прежде всего, это будет трехмерное представление, и, возможно, вычисление также будет быстрее. См. Здесь, как создать экземпляр сферы: http://www.vtk.org/Wiki/VTK/Examples/Cxx/GeometricObjects/Sphere и просто измените метод setCenter(), используя на каждой итерации ваш i, j и k. –
Сфера aproach имеет недостаток в наличии актера для каждой сферы. Лучше следовать аналогичному решению: облако точек –