使用POI
一个String数组:用来存储excel列的对应的model的属性
一个Map<String,Object>:key为String数据取的值,Value为对应列的值
通过BeanUtils将Map转换成Bean
1、使用反射获取model里面的属性,添加到String[]。当然model里面的字段有一些是excel里面没有的,那怎么办呢?当然是Filter,这样可以兼容所有的model,只需要根据项目情况实现自己的filter,过滤掉不想要的字段即可。这里有点要注意的,model里面的字段要跟excel里面的列的顺序一致,不然就出现张冠李戴了。
2、使用ValueConvert 进行数据类型的转换,model里面的字段不可能那么巧全都是String。所以需要一个数据类型转换类,根据业务需要作对应的转换
源码 Github
用#{}取值。
比如:select cid,cname from channel_table where cid=#{id} and cname=#{name};
id和name就是map的属性!
cubemap
先将场景环境渲染到cubemap中,可以离线渲染,也可以实时渲染。对于静态的效果,离线就可以。离线还可以使用外部资源,如拍摄的全景图生成cubemap。
想象cubemap是一个包围在场景外的立方体。通过从场景中心向其发射射线来采样上面的颜色。
反射
对于反射,想象cubmap上有一个像素发射光线到表面然后反射到眼睛中,为获取这个颜色,需要从视线方向反推出入射光线的方向,即使用视线的反方向计算出折射方向来采样cubemap上面的颜色,就是入射像素的颜色。
折射
对于折射,要根据折射定律计算出折射光线,即 n1sina = n2sinb, 其中n1,n2是两个界面的折射率,a是入射角,b是折射角。实际上经常使用n1/n2即透射比。因为入射方向已知,透射比已知,所以可以计算出折射方向。计算时同样使用视线方向作为入射方向,根据光路可逆性,使用计算出的折射方向来采样cubmap即可。
菲涅耳反射
对于菲涅耳反射
菲涅耳现象:当光线照射到物体表面上时,一部分发生反射,一部分进入物体内部,发生折射或散射。被反射的光和入射光之间存在一定的比率关系。根据观察方向,反射光的量是不同的。比如视线垂直看往水面,能看到水下的情景,此时被水面反射的光线很少,因此能看到水下物体;而看远处的水面时几乎看不见水下的情景,此时被水面反射的光线很多,因此极少有光线从水下反射回来,从而几乎看不到水下的情景。
为了模拟这个现象,采样一个近似公式去计算反射光的强度: F(v,n) ,其中v是视线方向,n是表面法线。
有多种近似公式,如Schlick菲涅耳近似等式:Fschlick(v,n) = F0 + (1-F0)(1- dot(v,n)) ^ 5
其中F0是一个用于控制菲涅耳发射强度的系数,范围0~1, 当F0为1时,没有菲涅耳效果,完全反射;当F0为0时,完全使用计算出来的反射光比例。公式计算的结果和dot(v,n)成反比,即v和n的夹角越小,反射光越弱,当v和n夹角为0时,完全没有反射光;而v和n夹角接近90度时,反射光特别强。也就是在边缘处反射光最强,从而模拟了菲涅耳现象。
根据菲涅耳近似等式计算的结果,去调节反射光的比例,从而模拟了菲涅尔现象。即在普通反射的基础上,使用fresnel值对reflection值进行调节即可。当F0为1时,物体完全反射cubemap中的图像;当F0为0时,是一个具有边缘光照效果的漫反射物体。
以上就是关于一行代码解决Excel内容转List全部的内容,包括:一行代码解决Excel内容转List、ibatis中传参数问题。parameterClass="pages",pages类中有一个map属性。sql中如何获取map键的值、Cubemap应用之反射,折射,菲涅耳反射等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)