跪求『地貌晕渲图』的实现原理方面的资料

郑大满 2004-12-21 09:25:28
做过『地貌晕渲图』的兄弟们,麻烦大家提供一点资料(比如网络资源什么的),以及实践经验。
谢谢!
...全文
176 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
syy64 2004-12-24
  • 打赏
  • 举报
回复
道理一样,就是计算设置每个像素的颜色值,不难。
郑大满 2004-12-24
  • 打赏
  • 举报
回复
to 太平洋:
十分感谢提供信息。你所提供的是用OpenGL来实现。
我现在想做的是,二维的地貌晕渲图。就是如何绘制成一副位图?
就像ArcMap里的一样。不知你是否做过?
syy64 2004-12-23
  • 打赏
  • 举报
回复
//绘制分层设色三维地形
//分层设色即根据不同的高度段用不同的颜色绘制,
//这里采用当前高程Z值与最小Z值之差,再与最大Z与最小Z之差相比求当前高程在整个高度段所占比例,
//这种方法还可根据不同喜好进行修改
void CDEMObj::MakeModelColorLevel(CSetOpenGLEnv & Env)
{
int m,n;
glDisable(GL_TEXTURE_2D);
glEnable(GL_COLOR_MATERIAL);
double dz = MaxPoint3D.z - MinPoint3D.z;
for(n=0;n<lRowDem-1;n++)
{
//使用三角形连续面片的绘制方法,设置三角形条绘制方法
glBegin (GL_TRIANGLE_STRIP);
for(m=0;m<lColDem;m++)
{
//计算当前网格点高度的颜色值
glColor3d(0.784*(pppdCoords[n+1][m][Z]-MinPoint3D.z)/dz, 0.5f+0.4*(pppdCoords[n+1][m][Z]-MinPoint3D.z)/dz, 0.0f);
//设置该网格点的平均法向量值以获得正确的光影
glNormal3fv(pppfNorVec[n+1][m]);
//确定所要绘制的网格顶点
glVertex3dv(pppdCoords[n+1][m]);
//计算下一个网格点高度的颜色值
glColor3d(0.784*(pppdCoords[n][m][Z]-MinPoint3D.z)/dz, 0.5f+0.4*(pppdCoords[n][m][Z]-MinPoint3D.z)/dz, 0.0f);
//设置下一个网格点的平均法向量
glNormal3fv(pppfNorVec[n][m]);
//确定下一个要绘制的网格顶点
glVertex3dv(pppdCoords[n][m]);
}
glEnd();
}
}
syy64 2004-12-23
  • 打赏
  • 举报
回复
void CTINObj::MakeModelColorLevel(CSetOpenGLEnv & Env)
{
int ip1,ip2,ip3;
double dz = MaxPoint3D.z - MinPoint3D.z;

glDisable(GL_TEXTURE_2D);
glEnable(GL_COLOR_MATERIAL);
for(int i=0;i<lTriNum;i++)
{
if(ppTriangle[i][6] < 0) continue;
ip1=ppTriangle[i][0];
ip2=ppTriangle[i][1];
ip3=ppTriangle[i][2];

glBegin(GL_TRIANGLES);

glNormal3fv(ppNormal[ip1]);
glColor3d(0.784*(pTinP3D[ip1].P3D[Z]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip1].P3D[Z]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip1].P3D);
glNormal3fv(ppNormal[ip2]);
glColor3d(0.784*(pTinP3D[ip2].P3D[Z]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip2].P3D[Z]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip2].P3D);
glNormal3fv(ppNormal[ip3]);
glColor3d(0.784*(pTinP3D[ip3].P3D[Z]-MinPoint3D.z)/dz, 0.5f+0.4*(pTinP3D[ip3].P3D[Z]-MinPoint3D.z)/dz, 0.0f);
glVertex3dv(pTinP3D[ip3].P3D);

glEnd();
}
}

4,499

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧