Opengl如何给一个有发向量的三角片,前景后景色分别着不同的颜色显示

zhanghaowow 2011-03-11 05:39:40
Opengl如何给一个有法向量的三角片,前景后景色分别着不同的颜色显示,请高手帮忙
glBegin(GL_TRIANGLES);
glVertex3f(fisp->x,fisp->y,fisp->z);
glVertex3f(secp->x,secp->y,secp->z);
glVertex3f(thdp->x,thdp->y,thdp->z);
glEnd();

麻烦写个代码,给前面和后面着不同颜色,大虾快帮忙,求救!!!
...全文
270 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhw978 2011-05-18
  • 打赏
  • 举报
回复
我在自己的衣服仿真软件里是这样做的,分享。
lhw978 2011-05-18
  • 打赏
  • 举报
回复
//绑定当前面片的纹理;没有纹理时,则使用颜色
if (NULL != pFaceFrag->m_pMaterial
&& 0 != pFaceFrag->m_pMaterial->texture.m_uID
&& k != 22)
{
glEnable (GL_TEXTURE_2D);
pFaceFrag->m_pMaterial->texture.BindTexture();

glColor3f (1.0f, 1.0f, 1.0f); //设置面片底色
}
else
{
glDisable (GL_TEXTURE_2D);
glColor3f (m_defaultColor.m_fX, m_defaultColor.m_fY,
m_defaultColor.m_fZ); //设置面片没有纹理时的默认色
}

//若当前面片和视线方向相反,则设置面片背面色
if (CVector3::DotMultiply(pFaceFrag->m_Normal, rcViewOritation) < 0.0f)
{
glDisable (GL_TEXTURE_2D);
glColor3f (0.0f, 0.0f, 1.0f); 设置面片背面色
}


//绘制面片
zhanghaowow 2011-03-15
  • 打赏
  • 举报
回复
在反成熟的反求软件中,STL打开后显示的是两面更具法向量确定的正反面是被渲染成不同颜色的,他们是怎么做的哪。。。大家有解决这个问题的思路么。。说来听听
ryfdizuo 2011-03-14
  • 打赏
  • 举报
回复
这个不可以的。
opengl只能控制背面是否剔除,
edgarliaohs 2011-03-13
  • 打赏
  • 举报
回复
唉……你就别纠结了,不同颜色是没办法在同一个三角面片两面着的,除非就是像之前所说的根据法向判断后,再定颜色……即使有光照模型,也只是因为光照不同而导致两面出现光暗不同罢了,不会像你说的那样显示不同颜色的
zhanghaowow 2011-03-11
  • 打赏
  • 举报
回复
真的没有办法解决么./

我是用点云生成了一个.STL格式的三角网格,用于进行仿真加工;

STL的文件在Surfacer和GMagicStudio中打开时可以更具三角片的法向量正面个背面不同颜色显示的,当然如楼上所说是有光照模型的。

难道真的不可以么,应该是行的吧,就算和楼上说的一样需要光照模型又该怎么做哪?CSDN的大神出现吧!!
edgarliaohs 2011-03-11
  • 打赏
  • 举报
回复
不知道楼主讲的三角面片是不是指的基本图元?
基本图元是由点组成的,所以,在定色的时候,opengl是没有为前后两面分别用不同颜色的。
有提到前后颜色的时候是在有光照等情况的时候,前后由于光照不同而可能产生不一样的颜色。
在glsl中专门有gl_FrontColor和gl_BackColor定义,不过在最后显示的时候,由于是三角面片,只会显示一面,也就只有一个颜色会被利用。
不管怎样,反正只有一面会被利用,楼主就直接画一个吧,然后通过位置以及法向判断是正面还是反面,然后画一个那种颜色的三角吧……

4,499

社区成员

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

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