本文主要是介绍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~255,150为半透明。
经过这2步就能在代码上实现模型的半透明,并且透明度可以调节,不要求模型具有透明度,但是对模型有如下要求:
不能有纯色。因为所有的纯色都会被上一步中的所设置颜色覆盖,模型上的贴图和纯色经过ofSetColor(155, 155, 155, 150)处理的方式是不同的,贴图部分是将贴图乘以所设置颜色的亮度,纯色则直接被所设颜色覆盖。因此,要把模型上的不同的颜色做成图片材质贴上去。
可以只处理外壳上可见部分颜色,这样工作量少一些。
这篇关于openframeworks加载半透明模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!