★各位用过OPENGL 或 GLScene的前辈,请看看下面这个问题??? 以前也问过,但没解决,哈哈,重新再来

Gold2000 2005-01-20 10:34:51
前段时间,我看了一下OPENGL,简单的东西也会做(光照、纹理帖图等),

但是,想直接使用OPENGL提供的工具,实现一个东西却挺困难,不知道

GLScene能不能解决下面这个问题:

画一个简单的房子,有四面墙、屋顶、地板,(前面这些都不难,下面就难罗),

四面墙上个画1个窗户,需要透过这些窗户看到房子里面!??

(这个场景中,窗户是透明的,其他为不透明)

┏━━━━━━━━━━━━━━━━━━━━━┓
┃ ┊ ┊ ┃
┃ ┊ 墙 ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┏━━━━━━━━━━━━┓ ┃
┃ ┃ ┃ ┃
┃ ┃ 窗 户 ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┗━━━━━━━━━━━━┛ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
...全文
153 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gold2000 2005-01-21
  • 打赏
  • 举报
回复
OK,多谢多谢!
chijingde 2005-01-21
  • 打赏
  • 举报
回复
由于两个L型是对称的,就可以用一个函数来画了
到时候旋转一下坐标轴(Z轴),然后画一个同样的就行了
这样就把步骤给简化了(也可能感觉更复杂了,呵呵)
chijingde 2005-01-21
  • 打赏
  • 举报
回复
当然在划分上可以精简一下

比如说你的这个图形就可以把四个矩形精简成两个L型的多边形
chijingde 2005-01-21
  • 打赏
  • 举报
回复
呵呵

一般来说,复杂的场景都是直接导入模型的,自己建太繁琐了

像你说的这种情况,可以自己写个公共函数封装一下,就不会那么麻烦了(不过总的来说还是很麻烦)

因为归根结底还是要一个个的去画:(

Gold2000 2005-01-21
  • 打赏
  • 举报
回复
To: chijingde() ,再次谢谢你的回复!希望以后能继续向你讨教!

我清楚你的意思了,我原来也这样想(你看我上面画的图就知道),
但是,不瞒你说,由于我不是非常的熟识OPENGL,我总企图找到更好的办法,哈哈。


因为象这种做法,你想,如果一面墙只有一个窗户还好说,不是非常麻烦,
共需要画5个面,但是,有2个窗户的话,要画9个面,有更多的话,哈哈,
不是说不能做,但是,处理起来相当麻烦!

墙、屋顶、地板、窗户等对象都不是静态的,其数量、坐标都是会变化的。
chijingde 2005-01-21
  • 打赏
  • 举报
回复
我说的第二种有窗户的那种

墙壁+窗户就是5个面,到时候把窗户那个面弄成透明的就行了
chijingde 2005-01-21
  • 打赏
  • 举报
回复
┏━━━━━━━━━━━━━━━━━━━━━┓
┃ ┊ ┊ ┃
┃ ┊ 墙 ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┏━━━━━━━━━━━━┓ ┃
┃ ┃ ┃ ┃
┃ ┃ 窗 户 ┃ ┃
┃ ┃ ┃ ┃
┃ ┃ ┃ ┃
┃ ┗━━━━━━━━━━━━┛ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┃ ┊ ┊ ┃
┗━━━━━━━━━━━━━━━━━━━━━┛

就拿你画的这个图形来说,看没看到墙壁被你分成了四个矩形?
画四个矩形就行了

如果墙壁不是规整的图形,还可以进一步划分,用三角形,四边形都行
只要能拼出你的图形来就行了

至于纹理,把各个顶点的纹理坐标搞正确就行了
Gold2000 2005-01-21
  • 打赏
  • 举报
回复
To: chijingde() ,谢谢你的回复!

“如果要有玻璃效果,那就是两个面,窗户的那个面是透明的罢了”
==========================================================

如果画了墙,然后想在墙上画一个透明的窗,那是做不到的,因为此墙已经着住了透明的视线了!!!


“那就是画一个回字形的平面阿,窗户部分是空的”
==========================================================
不太理解你的意思,能否再讲清楚点!
而且,OPENGL只允许画凸面的,不可能画凹面。
Allblus 2005-01-20
  • 打赏
  • 举报
回复
帮顶
chijingde 2005-01-20
  • 打赏
  • 举报
回复
很明显窗户跟墙是分开的

如果不追求窗户玻璃效果的话

那就是画一个回字形的平面阿,窗户部分是空的

如果要有玻璃效果,那就是两个面,窗户的那个面是透明的罢了

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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