openframeworks加载半透明模型

openframeworks提供的assimpExample可以用来加载主流的3D模型如.3ds   .dae   .x等文件,但是模型无法半透明。

传说,绘制前调用glDepthMask(GL_FALSE)(或者glDisable(GL_DEPTH_TEST)),打开alpha blend,绘制完后在glDepthMask(GL_TRUE)可以实现模型半透明,这个只是在OPENGL中手动绘制物件时有效,但是加载完整的模型文件却是无用的。

so,要使加载的模型文件实现半透明要怎么办?

注意到ofSetColor()这个函数是可以调透明度的。

实现模型半透明方法2个步骤:

1,将模型加载进来后关闭灯光,去掉light.enable()ofEnableSeparateSpecularLight()函数,灯光打开是无法实现半透明的。

2,在model.drawFaces()之前调用ofSetColor(155, 155, 155, 150),该函数的前3个值是设置RGB值,最后一个是透明度。只有关闭灯光这个函数才能在模型上生效,这样设置的作用是给模型乘上一个中性色(灰色,白色可调节),并改变了模型的透明度,透明度范围为0~255150为半透明。

经过这2步就能在代码上实现模型的半透明,并且透明度可以调节,不要求模型具有透明度,但是对模型有如下要求:

不能有纯色。因为所有的纯色都会被上一步中的所设置颜色覆盖,模型上的贴图和纯色经过ofSetColor(155, 155, 155, 150)处理的方式是不同的,贴图部分是将贴图乘以所设置颜色的亮度,纯色则直接被所设颜色覆盖。因此,要把模型上的不同的颜色做成图片材质贴上去。

 

可以只处理外壳上可见部分颜色,这样工作量少一些。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值