【发布时间】:2012-09-30 13:17:19
【问题描述】:
在 c++ (vs2008) 中使用 openGl 显示 3d 点云需要一些指导。我正在尝试使用纹理进行 3d 点云显示。我有 3 个二维数组(每个相同大小 1024x512)代表每个点的 x、y、z。我认为我在正确的轨道上
glBegin(GL_POINTS);
for(int i=0; i<1024; i++)
{
for(int j=0; j<512; j++)
{
glVertex3f(x[i][j], y[i][j], z[i][j]);
}
}
}
glEnd();
现在这会加载缓冲区中的所有顶点(我认为),但从这里开始我不确定如何继续。或者我在这里完全错。
然后我有另一个 2D 数组(大小相同),其中包含我想用作 3D 点云上的纹理并显示的颜色数据(值从 0 到 255)。
【问题讨论】:
-
我没有每个点的 RGB,所以我不能使用 glColor3*(r,g,b)。我正在尝试使用最后一个数组(具有 0-255 值)作为 3D 点云的纹理。从 glBegin(GL_POLYGON) 我认为你建议创建一个网格????同样的问题是如何从我上面的内容中取得进展。还是我走错了方向。
-
好吧,上面的代码基本上会从你的 3 个坐标数组中绘制一个点云。没有真正的“缓冲区”被填充,您直接在立即模式下绘制。对于颜色:据我了解,每个顶点都有一个无符号字节值?因此,您应该定义这些值如何表示某些颜色。您可以直接将它们用作强度,也可以使用调色板或完全不同的东西。
标签: c++ opengl 3d point-clouds