QT3D-对3D物体模型进行颜色粗糙反光设置之Qt3DExtras::QPhongMaterial

QT3D给我们提供了一些基本的3D形状,比如圆环,圆柱,球,圆台,平面,立方体等。今天我通过一个QT提供的圆环体演示一下怎么来进行Entity(物体)的光照颜色控制。

先贴上相关代码,在下面解读一下。

    //! [2]   //QPhongMaterial提供默认实现的光照效果;
    Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial();
    torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));         //原程序设置为土黄色
    // setDiffuse,setA..,setS..这3个方法可以对物体的颜色等进行设置,具体效果看测试图
//    torusMaterial->setDiffuse(QColor(QRgb(0xffffff)));               //测试1,白色D
//    torusMaterial->setAmbient(QColor(QRgb(0xffffff)));               //测试2,白色A
//    torusMaterial->setSpecular(QColor( QRgb(0xffffff)) );            //测试3,白色S
//    torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));               //测试4,土黄D
//    torusMaterial->setAmbient(QColor(QRgb(0xbeb32b)));               //测试5,土黄A
//    torusMaterial->setSpecular(QColor( QRgb(0xbeb32b)) );            //测试6,土黄S
    // setShiness()用于设置物体表面的粗糙/反光程度,float类型,数值越大越光滑
//    torusMaterial->setShininess(0.0f);                               //测试7
//    torusMaterial->setShininess(100.0f);                             //测试8
//    torusMaterial->setShininess(1000.0f);                            //测试9
    //! [2]
我new了一个QPhongMaterial对象,这是个什么东西呢?这是QT提供的一个默认的光照效果,不进行其他设置的画默认是白色半粗糙的效果。这个对象可以进行一些设置,在下面我对其属性做了一次其他的设置,我们对照着测试结果来看一下:


对照help文档的说明和测试结果,我把我对这几个方法的个人理解说一下:

Diffuse是类似漫反射,也就是粗糙表面; 

Ambient是在没有(或者说不考虑)其他光源的影响的情况下,物体本身的颜色。也就是你设置什么颜色就是什么颜色;

Specular是镜面反射,也就是说像一面镜子,你给的光什么颜色它就呈现什么颜色(已经验证过)

(所以对其设置颜色并没有用,不过设置为纯黑会有一些其他变化,比如在白光下是白色的,但是不会反射任何光线,也即看起来粗糙)

最后是一个setShininess(float xx);方法,这个是用来设置粗糙或者说反光程度的(原谅我不知道用什么专业词汇表达),对照实验结果很容易理解;

(需要补充的是,这个设置可以和上面的3者一起使用,会有很有趣的结果,具体怎么样就自己去试试吧)。

我的学习之路可能要过阵子再来写了,等真的透彻之后,免得误导了各位朋友。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值